.eslintrc.json 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. {
  2. "env": {
  3. "es2017": true,
  4. "node": true
  5. },
  6. "extends": [],
  7. "parser": "@typescript-eslint/parser",
  8. "parserOptions": {
  9. "ecmaVersion": "latest",
  10. "sourceType": "module",
  11. "project": "tsconfig.json"
  12. },
  13. "plugins": [
  14. "@typescript-eslint"
  15. ],
  16. "rules": {
  17. "indent": [
  18. "error",
  19. 2
  20. ],
  21. "quotes": [
  22. "error",
  23. "single"
  24. ],
  25. "semi": [
  26. "error",
  27. "always"
  28. ],
  29. "max-lines": [
  30. "warn", 2000
  31. ],
  32. "max-lines-per-function": [
  33. "warn", 50
  34. ],
  35. "complexity": [
  36. "warn", 20
  37. ],
  38. "max-depth": [
  39. "warn", 4
  40. ],
  41. "@typescript-eslint/array-type": [
  42. "error",
  43. {
  44. "options":
  45. "array"
  46. }
  47. ],
  48. "@typescript-eslint/prefer-as-const": [
  49. "error"
  50. ],
  51. "@typescript-eslint/no-inferrable-types": [
  52. "error",
  53. {
  54. "ignoreParameters": false,
  55. "ignoreProperties": false
  56. }
  57. ],
  58. "@typescript-eslint/method-signature-style": ["error", "method"],
  59. "@typescript-eslint/naming-convention": [ "error",
  60. {
  61. "selector": "default",
  62. "format": [ "camelCase" ],
  63. "leadingUnderscore": "forbid",
  64. "trailingUnderscore": "forbid"
  65. },
  66. {
  67. "selector": "variable",
  68. "modifiers": ["const"],
  69. "format": [ "camelCase", "UPPER_CASE" ],
  70. "leadingUnderscore": "forbid",
  71. "trailingUnderscore": "forbid"
  72. },
  73. {
  74. "selector": "memberLike",
  75. "modifiers": ["static", "readonly"],
  76. "format": [ "UPPER_CASE" ],
  77. "leadingUnderscore": "forbid",
  78. "trailingUnderscore": "forbid"
  79. },
  80. {
  81. "selector": "typeLike",
  82. "format": [ "PascalCase" ]
  83. }
  84. ],
  85. "@typescript-eslint/no-base-to-string": [
  86. "error",
  87. {
  88. "ignoredTypeNames": ["RegExp"]
  89. }
  90. ],
  91. "@typescript-eslint/no-confusing-non-null-assertion": ["error"],
  92. "@typescript-eslint/no-dynamic-delete": ["error"],
  93. "@typescript-eslint/no-empty-interface": ["error"],
  94. "@typescript-eslint/no-explicit-any": [
  95. "error",
  96. {
  97. "fixToUnknown": false,
  98. "ignoreRestArgs": false
  99. }
  100. ],
  101. "@typescript-eslint/no-extra-non-null-assertion": ["error"],
  102. "@typescript-eslint/no-floating-promises": [
  103. "error",
  104. {
  105. "ignoreVoid": true,
  106. "ignoreIIFE": false
  107. }
  108. ],
  109. "@typescript-eslint/no-for-in-array": ["error"],
  110. "@typescript-eslint/no-meaningless-void-operator": [
  111. "error",
  112. {
  113. "checkNever": false
  114. }
  115. ],
  116. "@typescript-eslint/no-invalid-void-type": [
  117. "error",
  118. {
  119. "allowInGenericTypeArguments": true,
  120. "allowAsThisParameter": false
  121. }
  122. ],
  123. "@typescript-eslint/prefer-readonly": ["error"],
  124. "@typescript-eslint/prefer-string-starts-ends-with": ["error"],
  125. "@typescript-eslint/prefer-ts-expect-error": ["error"],
  126. "@typescript-eslint/promise-function-async": ["error"],
  127. "@typescript-eslint/require-array-sort-compare": ["error"],
  128. "@typescript-eslint/restrict-plus-operands": ["error"],
  129. "@typescript-eslint/restrict-template-expressions": ["error"],
  130. "@typescript-eslint/strict-boolean-expressions": ["error"],
  131. "@typescript-eslint/triple-slash-reference": ["error"],
  132. "@typescript-eslint/type-annotation-spacing": ["error"],
  133. "@typescript-eslint/unbound-method": ["error"],
  134. "@typescript-eslint/unified-signatures": ["error"],
  135. "@typescript-eslint/no-unsafe-argument":["error"],
  136. "@typescript-eslint/no-unsafe-assignment":["error"],
  137. "@typescript-eslint/no-unsafe-call":["error"],
  138. "@typescript-eslint/no-unsafe-member-access":["error"],
  139. "@typescript-eslint/no-unsafe-return":["error"],
  140. "@typescript-eslint/no-var-requires":["error"],
  141. "@typescript-eslint/non-nullable-type-assertion-style":["error"],
  142. "@typescript-eslint/prefer-for-of":["error"],
  143. "@typescript-eslint/prefer-literal-enum-member":["error"],
  144. "@typescript-eslint/prefer-optional-chain":["error"],
  145. "@typescript-eslint/no-misused-new": ["error"],
  146. "@typescript-eslint/no-misused-promises": [
  147. "error",
  148. {
  149. "checksConditionals": true,
  150. "checksVoidReturn": true
  151. }
  152. ],
  153. "@typescript-eslint/no-namespace": [
  154. "error",
  155. {
  156. "allowDeclarations": false,
  157. "allowDefinitionFiles": true
  158. }
  159. ],
  160. "@typescript-eslint/no-non-null-asserted-nullish-coalescing":["error"],
  161. "@typescript-eslint/no-non-null-asserted-optional-chain":["error"],
  162. "@typescript-eslint/no-non-null-assertion":["error"],
  163. "@typescript-eslint/no-parameter-properties":["error"],
  164. "@typescript-eslint/no-require-imports":["error"],
  165. "@typescript-eslint/no-this-alias":["error"],
  166. "@typescript-eslint/no-type-alias":["error"],
  167. "@typescript-eslint/no-unnecessary-boolean-literal-compare":["error"],
  168. "@typescript-eslint/no-unnecessary-condition":["error"],
  169. "@typescript-eslint/no-unnecessary-qualifier":["error"],
  170. "@typescript-eslint/no-unnecessary-type-arguments":["error"],
  171. "@typescript-eslint/no-unnecessary-type-assertion":["error"],
  172. "@typescript-eslint/no-unnecessary-type-constraint":["error"],
  173. "@typescript-eslint/adjacent-overload-signatures": ["error"],
  174. "@typescript-eslint/await-thenable": ["error"],
  175. "@typescript-eslint/ban-ts-comment":[
  176. "error",
  177. {
  178. "ts-expect-error": true,
  179. "ts-ignore": true,
  180. "ts-nocheck": true,
  181. "ts-check": true
  182. }
  183. ],
  184. "@typescript-eslint/ban-tslint-comment": "error",
  185. "@typescript-eslint/ban-types": [
  186. "error",
  187. {
  188. "types": {
  189. "Array": {
  190. "message": "Use [] instead",
  191. "fixWith": "[]"
  192. },
  193. "Boolean": {
  194. "message": "Use boolean instead",
  195. "fixWith": "boolean"
  196. },
  197. "Number": {
  198. "message": "Use number instead",
  199. "fixWith": "number"
  200. },
  201. "function": "Do not use Function",
  202. "String": {
  203. "message": "Use string instead",
  204. "fixWith": "string"
  205. },
  206. "{}": {
  207. "message": "Use object instead",
  208. "fixWith": "object"
  209. }
  210. }
  211. }
  212. ],
  213. "@typescript-eslint/consistent-indexed-object-style": [ "error", "record" ],
  214. "@typescript-eslint/explicit-function-return-type": [
  215. "error",
  216. {
  217. "allowExpressions": true,
  218. "allowTypedFunctionExpressions": true,
  219. "allowHigherOrderFunctions": false,
  220. "allowDirectConstAssertionInArrowFunctions": false,
  221. "allowConciseArrowFunctionExpressionsStartingWithVoid": false
  222. }
  223. ],
  224. "@typescript-eslint/explicit-member-accessibility": [
  225. "error",
  226. {
  227. "accessibility": "no-public"
  228. }
  229. ]
  230. }
  231. }