@typescript-eslint/eslint-plugin 7.0.0-alpha.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/dist/configs/all.js +12 -40
  2. package/dist/configs/all.js.map +1 -1
  3. package/dist/configs/base.js +0 -6
  4. package/dist/configs/base.js.map +1 -1
  5. package/dist/configs/disable-type-checked.js +7 -1
  6. package/dist/configs/disable-type-checked.js.map +1 -1
  7. package/dist/configs/eslint-recommended-raw.js +40 -0
  8. package/dist/configs/eslint-recommended-raw.js.map +1 -0
  9. package/dist/configs/eslint-recommended.js +10 -27
  10. package/dist/configs/eslint-recommended.js.map +1 -1
  11. package/dist/configs/recommended-type-checked.js.map +1 -1
  12. package/dist/configs/recommended.js.map +1 -1
  13. package/dist/configs/strict-type-checked.js +4 -0
  14. package/dist/configs/strict-type-checked.js.map +1 -1
  15. package/dist/configs/strict.js.map +1 -1
  16. package/dist/configs/stylistic-type-checked.js.map +1 -1
  17. package/dist/configs/stylistic.js.map +1 -1
  18. package/dist/index.js +6 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/rules/adjacent-overload-signatures.js +31 -60
  21. package/dist/rules/adjacent-overload-signatures.js.map +1 -1
  22. package/dist/rules/array-type.js +7 -32
  23. package/dist/rules/array-type.js.map +1 -1
  24. package/dist/rules/await-thenable.js +15 -4
  25. package/dist/rules/await-thenable.js.map +1 -1
  26. package/dist/rules/ban-ts-comment.js +32 -34
  27. package/dist/rules/ban-ts-comment.js.map +1 -1
  28. package/dist/rules/ban-tslint-comment.js +5 -29
  29. package/dist/rules/ban-tslint-comment.js.map +1 -1
  30. package/dist/rules/ban-types.js +4 -27
  31. package/dist/rules/ban-types.js.map +1 -1
  32. package/dist/rules/block-spacing.js +11 -34
  33. package/dist/rules/block-spacing.js.map +1 -1
  34. package/dist/rules/brace-style.js +10 -9
  35. package/dist/rules/brace-style.js.map +1 -1
  36. package/dist/rules/class-literal-property-style.js +20 -31
  37. package/dist/rules/class-literal-property-style.js.map +1 -1
  38. package/dist/rules/class-methods-use-this.js +209 -0
  39. package/dist/rules/class-methods-use-this.js.map +1 -0
  40. package/dist/rules/comma-dangle.js +11 -31
  41. package/dist/rules/comma-dangle.js.map +1 -1
  42. package/dist/rules/comma-spacing.js +11 -12
  43. package/dist/rules/comma-spacing.js.map +1 -1
  44. package/dist/rules/consistent-generic-constructors.js +23 -25
  45. package/dist/rules/consistent-generic-constructors.js.map +1 -1
  46. package/dist/rules/consistent-indexed-object-style.js +10 -14
  47. package/dist/rules/consistent-indexed-object-style.js.map +1 -1
  48. package/dist/rules/consistent-type-assertions.js +36 -21
  49. package/dist/rules/consistent-type-assertions.js.map +1 -1
  50. package/dist/rules/consistent-type-definitions.js +14 -40
  51. package/dist/rules/consistent-type-definitions.js.map +1 -1
  52. package/dist/rules/consistent-type-exports.js +19 -39
  53. package/dist/rules/consistent-type-exports.js.map +1 -1
  54. package/dist/rules/consistent-type-imports.js +88 -101
  55. package/dist/rules/consistent-type-imports.js.map +1 -1
  56. package/dist/rules/default-param-last.js +1 -1
  57. package/dist/rules/default-param-last.js.map +1 -1
  58. package/dist/rules/dot-notation.js.map +1 -1
  59. package/dist/rules/enum-utils/shared.js +57 -6
  60. package/dist/rules/enum-utils/shared.js.map +1 -1
  61. package/dist/rules/explicit-function-return-type.js +6 -31
  62. package/dist/rules/explicit-function-return-type.js.map +1 -1
  63. package/dist/rules/explicit-member-accessibility.js +8 -32
  64. package/dist/rules/explicit-member-accessibility.js.map +1 -1
  65. package/dist/rules/explicit-module-boundary-types.js +11 -35
  66. package/dist/rules/explicit-module-boundary-types.js.map +1 -1
  67. package/dist/rules/func-call-spacing.js +12 -35
  68. package/dist/rules/func-call-spacing.js.map +1 -1
  69. package/dist/rules/indent.js +18 -42
  70. package/dist/rules/indent.js.map +1 -1
  71. package/dist/rules/index.js +16 -0
  72. package/dist/rules/index.js.map +1 -1
  73. package/dist/rules/init-declarations.js.map +1 -1
  74. package/dist/rules/key-spacing.js +27 -59
  75. package/dist/rules/key-spacing.js.map +1 -1
  76. package/dist/rules/keyword-spacing.js +9 -31
  77. package/dist/rules/keyword-spacing.js.map +1 -1
  78. package/dist/rules/lines-around-comment.js +24 -48
  79. package/dist/rules/lines-around-comment.js.map +1 -1
  80. package/dist/rules/lines-between-class-members.js +5 -26
  81. package/dist/rules/lines-between-class-members.js.map +1 -1
  82. package/dist/rules/max-params.js +67 -0
  83. package/dist/rules/max-params.js.map +1 -0
  84. package/dist/rules/member-delimiter-style.js +12 -34
  85. package/dist/rules/member-delimiter-style.js.map +1 -1
  86. package/dist/rules/member-ordering.js +48 -40
  87. package/dist/rules/member-ordering.js.map +1 -1
  88. package/dist/rules/method-signature-style.js +14 -38
  89. package/dist/rules/method-signature-style.js.map +1 -1
  90. package/dist/rules/naming-convention-utils/enums.js +13 -5
  91. package/dist/rules/naming-convention-utils/enums.js.map +1 -1
  92. package/dist/rules/naming-convention-utils/format.js.map +1 -1
  93. package/dist/rules/naming-convention-utils/parse-options.js +3 -25
  94. package/dist/rules/naming-convention-utils/parse-options.js.map +1 -1
  95. package/dist/rules/naming-convention-utils/schema.js +8 -33
  96. package/dist/rules/naming-convention-utils/schema.js.map +1 -1
  97. package/dist/rules/naming-convention-utils/validator.js +3 -26
  98. package/dist/rules/naming-convention-utils/validator.js.map +1 -1
  99. package/dist/rules/naming-convention.js +59 -60
  100. package/dist/rules/naming-convention.js.map +1 -1
  101. package/dist/rules/no-array-constructor.js +4 -27
  102. package/dist/rules/no-array-constructor.js.map +1 -1
  103. package/dist/rules/no-array-delete.js +81 -0
  104. package/dist/rules/no-array-delete.js.map +1 -0
  105. package/dist/rules/no-base-to-string.js +7 -7
  106. package/dist/rules/no-base-to-string.js.map +1 -1
  107. package/dist/rules/no-confusing-non-null-assertion.js +5 -30
  108. package/dist/rules/no-confusing-non-null-assertion.js.map +1 -1
  109. package/dist/rules/no-confusing-void-expression.js +33 -20
  110. package/dist/rules/no-confusing-void-expression.js.map +1 -1
  111. package/dist/rules/no-dupe-class-members.js +3 -37
  112. package/dist/rules/no-dupe-class-members.js.map +1 -1
  113. package/dist/rules/no-duplicate-enum-values.js +2 -25
  114. package/dist/rules/no-duplicate-enum-values.js.map +1 -1
  115. package/dist/rules/no-duplicate-type-constituents.js +7 -31
  116. package/dist/rules/no-duplicate-type-constituents.js.map +1 -1
  117. package/dist/rules/no-dynamic-delete.js +4 -5
  118. package/dist/rules/no-dynamic-delete.js.map +1 -1
  119. package/dist/rules/no-empty-function.js +9 -32
  120. package/dist/rules/no-empty-function.js.map +1 -1
  121. package/dist/rules/no-empty-interface.js +8 -33
  122. package/dist/rules/no-empty-interface.js.map +1 -1
  123. package/dist/rules/no-explicit-any.js +12 -36
  124. package/dist/rules/no-explicit-any.js.map +1 -1
  125. package/dist/rules/no-extra-non-null-assertion.js +2 -25
  126. package/dist/rules/no-extra-non-null-assertion.js.map +1 -1
  127. package/dist/rules/no-extra-parens.js +47 -86
  128. package/dist/rules/no-extra-parens.js.map +1 -1
  129. package/dist/rules/no-extra-semi.js +5 -37
  130. package/dist/rules/no-extra-semi.js.map +1 -1
  131. package/dist/rules/no-extraneous-class.js +2 -25
  132. package/dist/rules/no-extraneous-class.js.map +1 -1
  133. package/dist/rules/no-floating-promises.js +137 -54
  134. package/dist/rules/no-floating-promises.js.map +1 -1
  135. package/dist/rules/no-for-in-array.js +6 -6
  136. package/dist/rules/no-for-in-array.js.map +1 -1
  137. package/dist/rules/no-implied-eval.js +7 -7
  138. package/dist/rules/no-implied-eval.js.map +1 -1
  139. package/dist/rules/no-import-type-side-effects.js +4 -28
  140. package/dist/rules/no-import-type-side-effects.js.map +1 -1
  141. package/dist/rules/no-inferrable-types.js +12 -36
  142. package/dist/rules/no-inferrable-types.js.map +1 -1
  143. package/dist/rules/no-invalid-this.js +2 -10
  144. package/dist/rules/no-invalid-this.js.map +1 -1
  145. package/dist/rules/no-invalid-void-type.js +6 -30
  146. package/dist/rules/no-invalid-void-type.js.map +1 -1
  147. package/dist/rules/no-loop-func.js +4 -28
  148. package/dist/rules/no-loop-func.js.map +1 -1
  149. package/dist/rules/no-loss-of-precision.js +5 -32
  150. package/dist/rules/no-loss-of-precision.js.map +1 -1
  151. package/dist/rules/no-magic-numbers.js +5 -28
  152. package/dist/rules/no-magic-numbers.js.map +1 -1
  153. package/dist/rules/no-meaningless-void-operator.js +4 -5
  154. package/dist/rules/no-meaningless-void-operator.js.map +1 -1
  155. package/dist/rules/no-misused-new.js +2 -25
  156. package/dist/rules/no-misused-new.js.map +1 -1
  157. package/dist/rules/no-misused-promises.js +5 -5
  158. package/dist/rules/no-misused-promises.js.map +1 -1
  159. package/dist/rules/no-mixed-enums.js +6 -7
  160. package/dist/rules/no-mixed-enums.js.map +1 -1
  161. package/dist/rules/no-namespace.js +4 -29
  162. package/dist/rules/no-namespace.js.map +1 -1
  163. package/dist/rules/no-non-null-asserted-nullish-coalescing.js +5 -29
  164. package/dist/rules/no-non-null-asserted-nullish-coalescing.js.map +1 -1
  165. package/dist/rules/no-non-null-asserted-optional-chain.js +2 -25
  166. package/dist/rules/no-non-null-asserted-optional-chain.js.map +1 -1
  167. package/dist/rules/no-non-null-assertion.js +20 -46
  168. package/dist/rules/no-non-null-assertion.js.map +1 -1
  169. package/dist/rules/no-redeclare.js +7 -31
  170. package/dist/rules/no-redeclare.js.map +1 -1
  171. package/dist/rules/no-redundant-type-constituents.js +12 -13
  172. package/dist/rules/no-redundant-type-constituents.js.map +1 -1
  173. package/dist/rules/no-require-imports.js +30 -4
  174. package/dist/rules/no-require-imports.js.map +1 -1
  175. package/dist/rules/no-restricted-imports.js +100 -77
  176. package/dist/rules/no-restricted-imports.js.map +1 -1
  177. package/dist/rules/no-shadow.js +30 -56
  178. package/dist/rules/no-shadow.js.map +1 -1
  179. package/dist/rules/no-this-alias.js +2 -25
  180. package/dist/rules/no-this-alias.js.map +1 -1
  181. package/dist/rules/no-throw-literal.js +6 -36
  182. package/dist/rules/no-throw-literal.js.map +1 -1
  183. package/dist/rules/no-type-alias.js +2 -25
  184. package/dist/rules/no-type-alias.js.map +1 -1
  185. package/dist/rules/no-unnecessary-boolean-literal-compare.js +6 -7
  186. package/dist/rules/no-unnecessary-boolean-literal-compare.js.map +1 -1
  187. package/dist/rules/no-unnecessary-condition.js +62 -22
  188. package/dist/rules/no-unnecessary-condition.js.map +1 -1
  189. package/dist/rules/no-unnecessary-qualifier.js +8 -7
  190. package/dist/rules/no-unnecessary-qualifier.js.map +1 -1
  191. package/dist/rules/no-unnecessary-type-arguments.js +5 -6
  192. package/dist/rules/no-unnecessary-type-arguments.js.map +1 -1
  193. package/dist/rules/no-unnecessary-type-assertion.js +37 -32
  194. package/dist/rules/no-unnecessary-type-assertion.js.map +1 -1
  195. package/dist/rules/no-unnecessary-type-constraint.js +18 -6
  196. package/dist/rules/no-unnecessary-type-constraint.js.map +1 -1
  197. package/dist/rules/no-unsafe-argument.js +11 -11
  198. package/dist/rules/no-unsafe-argument.js.map +1 -1
  199. package/dist/rules/no-unsafe-assignment.js +15 -17
  200. package/dist/rules/no-unsafe-assignment.js.map +1 -1
  201. package/dist/rules/no-unsafe-call.js +5 -6
  202. package/dist/rules/no-unsafe-call.js.map +1 -1
  203. package/dist/rules/no-unsafe-declaration-merging.js +4 -27
  204. package/dist/rules/no-unsafe-declaration-merging.js.map +1 -1
  205. package/dist/rules/no-unsafe-enum-comparison.js +94 -45
  206. package/dist/rules/no-unsafe-enum-comparison.js.map +1 -1
  207. package/dist/rules/no-unsafe-member-access.js +8 -10
  208. package/dist/rules/no-unsafe-member-access.js.map +1 -1
  209. package/dist/rules/no-unsafe-return.js +15 -15
  210. package/dist/rules/no-unsafe-return.js.map +1 -1
  211. package/dist/rules/no-unsafe-unary-minus.js +68 -0
  212. package/dist/rules/no-unsafe-unary-minus.js.map +1 -0
  213. package/dist/rules/no-unused-expressions.js +10 -25
  214. package/dist/rules/no-unused-expressions.js.map +1 -1
  215. package/dist/rules/no-unused-vars.js +37 -79
  216. package/dist/rules/no-unused-vars.js.map +1 -1
  217. package/dist/rules/no-use-before-define.js +8 -35
  218. package/dist/rules/no-use-before-define.js.map +1 -1
  219. package/dist/rules/no-useless-constructor.js +3 -27
  220. package/dist/rules/no-useless-constructor.js.map +1 -1
  221. package/dist/rules/no-useless-empty-export.js +18 -36
  222. package/dist/rules/no-useless-empty-export.js.map +1 -1
  223. package/dist/rules/no-useless-template-literals.js +138 -0
  224. package/dist/rules/no-useless-template-literals.js.map +1 -0
  225. package/dist/rules/no-var-requires.js +36 -39
  226. package/dist/rules/no-var-requires.js.map +1 -1
  227. package/dist/rules/non-nullable-type-assertion-style.js +9 -8
  228. package/dist/rules/non-nullable-type-assertion-style.js.map +1 -1
  229. package/dist/rules/object-curly-spacing.js +20 -19
  230. package/dist/rules/object-curly-spacing.js.map +1 -1
  231. package/dist/rules/padding-line-between-statements.js +28 -54
  232. package/dist/rules/padding-line-between-statements.js.map +1 -1
  233. package/dist/rules/parameter-properties.js +4 -29
  234. package/dist/rules/parameter-properties.js.map +1 -1
  235. package/dist/rules/prefer-as-const.js +2 -25
  236. package/dist/rules/prefer-as-const.js.map +1 -1
  237. package/dist/rules/prefer-destructuring.js +200 -0
  238. package/dist/rules/prefer-destructuring.js.map +1 -0
  239. package/dist/rules/prefer-enum-initializers.js +3 -27
  240. package/dist/rules/prefer-enum-initializers.js.map +1 -1
  241. package/dist/rules/prefer-find.js +237 -0
  242. package/dist/rules/prefer-find.js.map +1 -0
  243. package/dist/rules/prefer-for-of.js +7 -32
  244. package/dist/rules/prefer-for-of.js.map +1 -1
  245. package/dist/rules/prefer-function-type.js +9 -32
  246. package/dist/rules/prefer-function-type.js.map +1 -1
  247. package/dist/rules/prefer-includes.js +2 -2
  248. package/dist/rules/prefer-includes.js.map +1 -1
  249. package/dist/rules/prefer-literal-enum-member.js.map +1 -1
  250. package/dist/rules/prefer-namespace-keyword.js +4 -28
  251. package/dist/rules/prefer-namespace-keyword.js.map +1 -1
  252. package/dist/rules/prefer-nullish-coalescing.js +42 -30
  253. package/dist/rules/prefer-nullish-coalescing.js.map +1 -1
  254. package/dist/rules/prefer-optional-chain-utils/analyzeChain.js +20 -22
  255. package/dist/rules/prefer-optional-chain-utils/analyzeChain.js.map +1 -1
  256. package/dist/rules/prefer-optional-chain-utils/compareNodes.js.map +1 -1
  257. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js +8 -10
  258. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js.map +1 -1
  259. package/dist/rules/prefer-optional-chain.js +9 -11
  260. package/dist/rules/prefer-optional-chain.js.map +1 -1
  261. package/dist/rules/prefer-promise-reject-errors.js +108 -0
  262. package/dist/rules/prefer-promise-reject-errors.js.map +1 -0
  263. package/dist/rules/prefer-readonly-parameter-types.js +8 -31
  264. package/dist/rules/prefer-readonly-parameter-types.js.map +1 -1
  265. package/dist/rules/prefer-readonly.js +61 -17
  266. package/dist/rules/prefer-readonly.js.map +1 -1
  267. package/dist/rules/prefer-reduce-type-parameter.js +6 -32
  268. package/dist/rules/prefer-reduce-type-parameter.js.map +1 -1
  269. package/dist/rules/prefer-regexp-exec.js +8 -10
  270. package/dist/rules/prefer-regexp-exec.js.map +1 -1
  271. package/dist/rules/prefer-return-this-type.js +2 -4
  272. package/dist/rules/prefer-return-this-type.js.map +1 -1
  273. package/dist/rules/prefer-string-starts-ends-with.js +44 -26
  274. package/dist/rules/prefer-string-starts-ends-with.js.map +1 -1
  275. package/dist/rules/prefer-ts-expect-error.js +3 -27
  276. package/dist/rules/prefer-ts-expect-error.js.map +1 -1
  277. package/dist/rules/promise-function-async.js +11 -12
  278. package/dist/rules/promise-function-async.js.map +1 -1
  279. package/dist/rules/quotes.js +5 -26
  280. package/dist/rules/quotes.js.map +1 -1
  281. package/dist/rules/require-array-sort-compare.js +17 -39
  282. package/dist/rules/require-array-sort-compare.js.map +1 -1
  283. package/dist/rules/require-await.js +22 -50
  284. package/dist/rules/require-await.js.map +1 -1
  285. package/dist/rules/restrict-plus-operands.js +7 -7
  286. package/dist/rules/restrict-plus-operands.js.map +1 -1
  287. package/dist/rules/restrict-template-expressions.js +11 -11
  288. package/dist/rules/restrict-template-expressions.js.map +1 -1
  289. package/dist/rules/return-await.js +12 -15
  290. package/dist/rules/return-await.js.map +1 -1
  291. package/dist/rules/semi.js +4 -25
  292. package/dist/rules/semi.js.map +1 -1
  293. package/dist/rules/sort-type-constituents.js +5 -30
  294. package/dist/rules/sort-type-constituents.js.map +1 -1
  295. package/dist/rules/space-before-blocks.js +8 -31
  296. package/dist/rules/space-before-blocks.js.map +1 -1
  297. package/dist/rules/space-before-function-paren.js +14 -39
  298. package/dist/rules/space-before-function-paren.js.map +1 -1
  299. package/dist/rules/space-infix-ops.js +18 -40
  300. package/dist/rules/space-infix-ops.js.map +1 -1
  301. package/dist/rules/strict-boolean-expressions.js +94 -85
  302. package/dist/rules/strict-boolean-expressions.js.map +1 -1
  303. package/dist/rules/switch-exhaustiveness-check.js +153 -50
  304. package/dist/rules/switch-exhaustiveness-check.js.map +1 -1
  305. package/dist/rules/triple-slash-reference.js +3 -27
  306. package/dist/rules/triple-slash-reference.js.map +1 -1
  307. package/dist/rules/type-annotation-spacing.js +17 -46
  308. package/dist/rules/type-annotation-spacing.js.map +1 -1
  309. package/dist/rules/typedef.js +6 -30
  310. package/dist/rules/typedef.js.map +1 -1
  311. package/dist/rules/unbound-method.js +21 -61
  312. package/dist/rules/unbound-method.js.map +1 -1
  313. package/dist/rules/unified-signatures.js +12 -37
  314. package/dist/rules/unified-signatures.js.map +1 -1
  315. package/dist/util/astUtils.js +4 -4
  316. package/dist/util/astUtils.js.map +1 -1
  317. package/dist/util/collectUnusedVariables.js +8 -9
  318. package/dist/util/collectUnusedVariables.js.map +1 -1
  319. package/dist/util/explicitReturnTypeUtils.js +43 -34
  320. package/dist/util/explicitReturnTypeUtils.js.map +1 -1
  321. package/dist/util/getESLintCoreRule.js +3 -31
  322. package/dist/util/getESLintCoreRule.js.map +1 -1
  323. package/dist/util/getFunctionHeadLoc.js +146 -36
  324. package/dist/util/getFunctionHeadLoc.js.map +1 -1
  325. package/dist/util/getOperatorPrecedence.js +1 -0
  326. package/dist/util/getOperatorPrecedence.js.map +1 -1
  327. package/dist/util/getStaticStringValue.js +46 -0
  328. package/dist/util/getStaticStringValue.js.map +1 -0
  329. package/dist/util/getStringLength.js.map +1 -1
  330. package/dist/util/getThisExpression.js +1 -1
  331. package/dist/util/getThisExpression.js.map +1 -1
  332. package/dist/util/getWrappedCode.js +8 -0
  333. package/dist/util/getWrappedCode.js.map +1 -0
  334. package/dist/util/getWrappingFixer.js +19 -5
  335. package/dist/util/getWrappingFixer.js.map +1 -1
  336. package/dist/util/index.js +1 -0
  337. package/dist/util/index.js.map +1 -1
  338. package/dist/util/isNodeEqual.js.map +1 -1
  339. package/dist/util/misc.js +5 -7
  340. package/dist/util/misc.js.map +1 -1
  341. package/dist/util/objectIterators.js.map +1 -1
  342. package/docs/rules/README.md +44 -7
  343. package/docs/rules/TEMPLATE.md +5 -1
  344. package/docs/rules/adjacent-overload-signatures.md +7 -1
  345. package/docs/rules/array-type.md +14 -6
  346. package/docs/rules/await-thenable.md +3 -1
  347. package/docs/rules/ban-ts-comment.md +12 -9
  348. package/docs/rules/ban-tslint-comment.md +3 -3
  349. package/docs/rules/ban-types.md +11 -62
  350. package/docs/rules/block-spacing.md +0 -2
  351. package/docs/rules/brace-style.md +0 -2
  352. package/docs/rules/camelcase.md +5 -2
  353. package/docs/rules/class-literal-property-style.md +5 -14
  354. package/docs/rules/class-methods-use-this.md +96 -0
  355. package/docs/rules/comma-dangle.md +0 -2
  356. package/docs/rules/comma-spacing.md +0 -2
  357. package/docs/rules/consistent-generic-constructors.md +7 -4
  358. package/docs/rules/consistent-indexed-object-style.md +12 -12
  359. package/docs/rules/consistent-type-assertions.md +27 -22
  360. package/docs/rules/consistent-type-definitions.md +12 -13
  361. package/docs/rules/consistent-type-exports.md +9 -4
  362. package/docs/rules/consistent-type-imports.md +9 -6
  363. package/docs/rules/default-param-last.md +16 -6
  364. package/docs/rules/dot-notation.md +10 -5
  365. package/docs/rules/explicit-function-return-type.md +31 -30
  366. package/docs/rules/explicit-member-accessibility.md +49 -36
  367. package/docs/rules/explicit-module-boundary-types.md +30 -31
  368. package/docs/rules/func-call-spacing.md +0 -2
  369. package/docs/rules/indent.md +0 -2
  370. package/docs/rules/init-declarations.md +0 -2
  371. package/docs/rules/key-spacing.md +1 -3
  372. package/docs/rules/keyword-spacing.md +1 -3
  373. package/docs/rules/lines-around-comment.md +0 -2
  374. package/docs/rules/lines-between-class-members.md +2 -10
  375. package/docs/rules/max-params.md +10 -0
  376. package/docs/rules/member-delimiter-style.md +4 -1
  377. package/docs/rules/member-ordering.md +278 -200
  378. package/docs/rules/method-signature-style.md +7 -4
  379. package/docs/rules/naming-convention.md +31 -16
  380. package/docs/rules/no-array-constructor.md +0 -6
  381. package/docs/rules/no-array-delete.md +40 -0
  382. package/docs/rules/no-base-to-string.md +2 -2
  383. package/docs/rules/no-confusing-void-expression.md +3 -3
  384. package/docs/rules/no-dupe-class-members.md +3 -1
  385. package/docs/rules/no-duplicate-enum-values.md +8 -0
  386. package/docs/rules/no-duplicate-imports.md +5 -2
  387. package/docs/rules/no-duplicate-type-constituents.md +7 -2
  388. package/docs/rules/no-dynamic-delete.md +1 -1
  389. package/docs/rules/no-empty-function.md +13 -9
  390. package/docs/rules/no-empty-interface.md +2 -13
  391. package/docs/rules/no-explicit-any.md +28 -34
  392. package/docs/rules/no-extra-non-null-assertion.md +2 -0
  393. package/docs/rules/no-extra-parens.md +0 -2
  394. package/docs/rules/no-extra-semi.md +2 -2
  395. package/docs/rules/no-extraneous-class.md +10 -9
  396. package/docs/rules/no-floating-promises.md +24 -6
  397. package/docs/rules/no-for-in-array.md +13 -8
  398. package/docs/rules/no-implied-eval.md +2 -1
  399. package/docs/rules/no-import-type-side-effects.md +1 -2
  400. package/docs/rules/no-inferrable-types.md +4 -4
  401. package/docs/rules/no-invalid-this.md +3 -1
  402. package/docs/rules/no-invalid-void-type.md +5 -6
  403. package/docs/rules/no-loop-func.md +0 -2
  404. package/docs/rules/no-loss-of-precision.md +0 -2
  405. package/docs/rules/no-magic-numbers.md +14 -26
  406. package/docs/rules/no-meaningless-void-operator.md +6 -0
  407. package/docs/rules/no-misused-new.md +2 -1
  408. package/docs/rules/no-misused-promises.md +14 -13
  409. package/docs/rules/no-namespace.md +9 -7
  410. package/docs/rules/no-non-null-asserted-nullish-coalescing.md +5 -0
  411. package/docs/rules/no-non-null-asserted-optional-chain.md +5 -0
  412. package/docs/rules/no-non-null-assertion.md +2 -2
  413. package/docs/rules/no-parameter-properties.md +12 -0
  414. package/docs/rules/no-redeclare.md +5 -3
  415. package/docs/rules/no-redundant-type-constituents.md +14 -0
  416. package/docs/rules/no-require-imports.md +24 -1
  417. package/docs/rules/no-restricted-imports.md +24 -16
  418. package/docs/rules/no-shadow.md +15 -11
  419. package/docs/rules/no-this-alias.md +73 -3
  420. package/docs/rules/no-throw-literal.md +9 -11
  421. package/docs/rules/no-type-alias.md +55 -48
  422. package/docs/rules/no-unnecessary-boolean-literal-compare.md +5 -5
  423. package/docs/rules/no-unnecessary-condition.md +18 -2
  424. package/docs/rules/no-unnecessary-qualifier.md +1 -1
  425. package/docs/rules/no-unnecessary-type-arguments.md +7 -1
  426. package/docs/rules/no-unnecessary-type-assertion.md +2 -2
  427. package/docs/rules/no-unnecessary-type-constraint.md +1 -1
  428. package/docs/rules/no-unsafe-argument.md +12 -2
  429. package/docs/rules/no-unsafe-assignment.md +11 -1
  430. package/docs/rules/no-unsafe-call.md +10 -0
  431. package/docs/rules/no-unsafe-declaration-merging.md +5 -0
  432. package/docs/rules/no-unsafe-enum-comparison.md +15 -10
  433. package/docs/rules/no-unsafe-member-access.md +11 -1
  434. package/docs/rules/no-unsafe-return.md +11 -1
  435. package/docs/rules/no-unsafe-unary-minus.md +52 -0
  436. package/docs/rules/no-unused-expressions.md +0 -2
  437. package/docs/rules/no-unused-vars.md +17 -2
  438. package/docs/rules/no-use-before-define.md +4 -14
  439. package/docs/rules/no-useless-constructor.md +0 -2
  440. package/docs/rules/no-useless-empty-export.md +4 -0
  441. package/docs/rules/no-useless-template-literals.md +57 -0
  442. package/docs/rules/no-var-requires.md +24 -1
  443. package/docs/rules/non-nullable-type-assertion-style.md +1 -1
  444. package/docs/rules/object-curly-spacing.md +0 -2
  445. package/docs/rules/padding-line-between-statements.md +3 -5
  446. package/docs/rules/parameter-properties.md +22 -19
  447. package/docs/rules/prefer-as-const.md +4 -1
  448. package/docs/rules/prefer-destructuring.md +91 -0
  449. package/docs/rules/prefer-enum-initializers.md +1 -1
  450. package/docs/rules/prefer-find.md +39 -0
  451. package/docs/rules/prefer-for-of.md +3 -5
  452. package/docs/rules/prefer-function-type.md +1 -1
  453. package/docs/rules/prefer-includes.md +1 -3
  454. package/docs/rules/prefer-literal-enum-member.md +6 -4
  455. package/docs/rules/prefer-namespace-keyword.md +1 -1
  456. package/docs/rules/prefer-nullish-coalescing.md +27 -15
  457. package/docs/rules/prefer-optional-chain.md +18 -17
  458. package/docs/rules/prefer-promise-reject-errors.md +50 -0
  459. package/docs/rules/prefer-readonly-parameter-types.md +58 -32
  460. package/docs/rules/prefer-readonly.md +19 -4
  461. package/docs/rules/prefer-reduce-type-parameter.md +3 -1
  462. package/docs/rules/prefer-string-starts-ends-with.md +2 -1
  463. package/docs/rules/prefer-ts-expect-error.md +1 -0
  464. package/docs/rules/promise-function-async.md +73 -0
  465. package/docs/rules/quotes.md +0 -2
  466. package/docs/rules/require-array-sort-compare.md +7 -7
  467. package/docs/rules/require-await.md +2 -2
  468. package/docs/rules/restrict-plus-operands.md +16 -16
  469. package/docs/rules/restrict-template-expressions.md +11 -7
  470. package/docs/rules/return-await.md +8 -8
  471. package/docs/rules/semi.md +0 -4
  472. package/docs/rules/sort-type-constituents.md +62 -0
  473. package/docs/rules/space-before-blocks.md +5 -4
  474. package/docs/rules/space-before-function-paren.md +0 -2
  475. package/docs/rules/strict-boolean-expressions.md +7 -0
  476. package/docs/rules/switch-exhaustiveness-check.md +127 -8
  477. package/docs/rules/triple-slash-reference.md +76 -25
  478. package/docs/rules/type-annotation-spacing.md +8 -8
  479. package/docs/rules/typedef.md +19 -19
  480. package/docs/rules/unbound-method.md +4 -2
  481. package/docs/rules/unified-signatures.md +11 -2
  482. package/index.d.ts +6 -2
  483. package/package.json +32 -24
  484. package/rules.d.ts +46 -0
@@ -67,14 +67,14 @@ Examples of code with `{ "arrayDestructuring": true }`:
67
67
 
68
68
  #### ❌ Incorrect
69
69
 
70
- ```ts
70
+ ```ts option='{ "arrayDestructuring": true }'
71
71
  const [a] = [1];
72
72
  const [b, c] = [1, 2];
73
73
  ```
74
74
 
75
75
  #### ✅ Correct
76
76
 
77
- ```ts
77
+ ```ts option='{ "arrayDestructuring": true }'
78
78
  const [a]: number[] = [1];
79
79
  const [b]: [number] = [2];
80
80
  const [c, d]: [boolean, string] = [true, 'text'];
@@ -93,7 +93,7 @@ Examples of code with `{ "arrowParameter": true }`:
93
93
 
94
94
  #### ❌ Incorrect
95
95
 
96
- ```ts
96
+ ```ts option='{ "arrowParameter": true }'
97
97
  const logsSize = size => console.log(size);
98
98
 
99
99
  ['hello', 'world'].map(text => text.length);
@@ -105,7 +105,7 @@ const mapper = {
105
105
 
106
106
  #### ✅ Correct
107
107
 
108
- ```ts
108
+ ```ts option='{ "arrowParameter": true }'
109
109
  const logsSize = (size: number) => console.log(size);
110
110
 
111
111
  ['hello', 'world'].map((text: string) => text.length);
@@ -125,7 +125,7 @@ Examples of code with `{ "memberVariableDeclaration": true }`:
125
125
 
126
126
  #### ❌ Incorrect
127
127
 
128
- ```ts
128
+ ```ts option='{ "memberVariableDeclaration": true }'
129
129
  class ContainsText {
130
130
  delayedText;
131
131
  immediateTextImplicit = 'text';
@@ -134,7 +134,7 @@ class ContainsText {
134
134
 
135
135
  #### ✅ Correct
136
136
 
137
- ```ts
137
+ ```ts option='{ "memberVariableDeclaration": true }'
138
138
  class ContainsText {
139
139
  delayedText: string;
140
140
  immediateTextImplicit: string = 'text';
@@ -151,14 +151,14 @@ Examples of code with `{ "objectDestructuring": true }`:
151
151
 
152
152
  #### ❌ Incorrect
153
153
 
154
- ```ts
154
+ ```ts option='{ "objectDestructuring": true }'
155
155
  const { length } = 'text';
156
156
  const [b, c] = Math.random() ? [1, 2] : [3, 4];
157
157
  ```
158
158
 
159
159
  #### ✅ Correct
160
160
 
161
- ```ts
161
+ ```ts option='{ "objectDestructuring": true }'
162
162
  const { length }: { length: number } = 'text';
163
163
  const [b, c]: [number, number] = Math.random() ? [1, 2] : [3, 4];
164
164
 
@@ -176,7 +176,7 @@ Examples of code with `{ "parameter": true }`:
176
176
 
177
177
  #### ❌ Incorrect
178
178
 
179
- ```ts
179
+ ```ts option='{ "parameter": true }'
180
180
  function logsSize(size): void {
181
181
  console.log(size);
182
182
  }
@@ -204,7 +204,7 @@ class Logger {
204
204
 
205
205
  #### ✅ Correct
206
206
 
207
- ```ts
207
+ ```ts option='{ "parameter": true }'
208
208
  function logsSize(size: number): void {
209
209
  console.log(size);
210
210
  }
@@ -240,7 +240,7 @@ Examples of code with `{ "propertyDeclaration": true }`:
240
240
 
241
241
  #### ❌ Incorrect
242
242
 
243
- ```ts
243
+ ```ts option='{ "propertyDeclaration": true }'
244
244
  type Members = {
245
245
  member;
246
246
  otherMember;
@@ -249,7 +249,7 @@ type Members = {
249
249
 
250
250
  #### ✅ Correct
251
251
 
252
- ```ts
252
+ ```ts option='{ "propertyDeclaration": true }'
253
253
  type Members = {
254
254
  member: boolean;
255
255
  otherMember: string;
@@ -266,7 +266,7 @@ Examples of code with `{ "variableDeclaration": true }`:
266
266
 
267
267
  #### ❌ Incorrect
268
268
 
269
- ```ts
269
+ ```ts option='{ "variableDeclaration": true }'
270
270
  const text = 'text';
271
271
  let initialText = 'text';
272
272
  let delayedText;
@@ -274,7 +274,7 @@ let delayedText;
274
274
 
275
275
  #### ✅ Correct
276
276
 
277
- ```ts
277
+ ```ts option='{ "variableDeclaration": true }'
278
278
  const text: string = 'text';
279
279
  let initialText: string = 'text';
280
280
  let delayedText: string;
@@ -290,21 +290,21 @@ Examples of code with `{ "variableDeclaration": true, "variableDeclarationIgnore
290
290
 
291
291
  #### ❌ Incorrect
292
292
 
293
- ```ts
293
+ ```ts option='{ "variableDeclaration": true, "variableDeclarationIgnoreFunction": true }'
294
294
  const text = 'text';
295
295
  ```
296
296
 
297
297
  #### ✅ Correct
298
298
 
299
- ```ts
299
+ ```ts option='{ "variableDeclaration": true, "variableDeclarationIgnoreFunction": true }'
300
300
  const a = (): void => {};
301
- const b = function (): void => {};
301
+ const b = function (): void {};
302
302
  const c: () => void = (): void => {};
303
303
 
304
304
  class Foo {
305
305
  a = (): void => {};
306
- b = function (): void => {};
307
- c = () => void = (): void => {};
306
+ b = function (): void {};
307
+ c: () => void = (): void => {};
308
308
  }
309
309
  ```
310
310
 
@@ -83,7 +83,7 @@ const { double } = arith;
83
83
 
84
84
  Examples of **correct** code for this rule with `{ ignoreStatic: true }`:
85
85
 
86
- ```ts
86
+ ```ts option='{ "ignoreStatic": true }' showPlaygroundButton
87
87
  class OtherClass {
88
88
  static log() {
89
89
  console.log(OtherClass);
@@ -98,6 +98,8 @@ log();
98
98
 
99
99
  ## When Not To Use It
100
100
 
101
- If your code intentionally waits to bind methods after use, such as by passing a `scope: this` along with the method, you can disable this rule.
101
+ If your project dynamically changes `this` scopes around in a way TypeScript has difficulties modeling, this rule may not be viable to use.
102
+ One likely difficult pattern is if your code intentionally waits to bind methods after use, such as by passing a `scope: this` along with the method.
103
+ You might consider using [ESLint disable comments](https://eslint.org/docs/latest/use/configure/rules#using-configuration-comments-1) for those specific situations instead of completely disabling this rule.
102
104
 
103
105
  If you're wanting to use `toBeCalled` and similar matches in `jest` tests, you can disable this rule for your test files in favor of [`eslint-plugin-jest`'s version of this rule](https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/unbound-method.md).
@@ -55,14 +55,23 @@ Examples of code for this rule with `ignoreDifferentlyNamedParameters`:
55
55
 
56
56
  ### ❌ Incorrect
57
57
 
58
- ```ts
58
+ ```ts option='{ "ignoreDifferentlyNamedParameters": true }'
59
59
  function f(a: number): void;
60
60
  function f(a: string): void;
61
61
  ```
62
62
 
63
63
  ### ✅ Correct
64
64
 
65
- ```ts
65
+ ```ts option='{ "ignoreDifferentlyNamedParameters": true }'
66
66
  function f(a: number): void;
67
67
  function f(b: string): void;
68
68
  ```
69
+
70
+ ## When Not To Use It
71
+
72
+ This is purely a stylistic rule to help with readability of function signature overloads.
73
+ You can turn it off if you don't want to consistently keep them next to each other and unified.
74
+
75
+ ## Related To
76
+
77
+ - [`adjacent-overload-signatures`](./adjacent-overload-signatures.md)
package/index.d.ts CHANGED
@@ -1,9 +1,13 @@
1
- import type { TSESLint } from '@typescript-eslint/utils';
1
+ import type {
2
+ ClassicConfig,
3
+ FlatConfig,
4
+ } from '@typescript-eslint/utils/ts-eslint';
2
5
 
3
6
  import type rules from './rules';
4
7
 
5
8
  declare const cjsExport: {
6
- configs: Record<string, TSESLint.Linter.Config>;
9
+ configs: Record<string, ClassicConfig.Config>;
10
+ meta: FlatConfig.PluginMeta;
7
11
  rules: typeof rules;
8
12
  };
9
13
  export = cjsExport;
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@typescript-eslint/eslint-plugin",
3
- "version": "7.0.0-alpha.0+6ae1fa74b",
3
+ "version": "7.0.1",
4
4
  "description": "TypeScript plugin for ESLint",
5
5
  "files": [
6
6
  "dist",
7
7
  "docs",
8
8
  "index.d.ts",
9
+ "rules.d.ts",
9
10
  "package.json",
10
11
  "README.md",
11
12
  "LICENSE"
@@ -20,6 +21,10 @@
20
21
  "./use-at-your-own-risk/rules": {
21
22
  "types": "./rules.d.ts",
22
23
  "default": "./dist/rules/index.js"
24
+ },
25
+ "./use-at-your-own-risk/eslint-recommended-raw": {
26
+ "types": "./eslint-recommended-raw.d.ts",
27
+ "default": "./dist/configs/eslint-recommended-raw.js"
23
28
  }
24
29
  },
25
30
  "engines": {
@@ -48,47 +53,51 @@
48
53
  "postclean": "rimraf dist && rimraf coverage",
49
54
  "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore",
50
55
  "generate:breaking-changes": "yarn tsx tools/generate-breaking-changes.mts",
51
- "generate:configs": "yarn tsx tools/generate-configs.ts",
52
- "lint": "nx lint",
53
- "test": "jest --coverage",
54
- "test-single": "jest --no-coverage",
56
+ "generate:configs": "npx nx run repo-tools:generate-configs",
57
+ "lint": "npx nx lint",
58
+ "test": "cross-env NODE_OPTIONS=\"--experimental-vm-modules\" jest --coverage --logHeapUsage",
59
+ "test-single": "cross-env NODE_OPTIONS=\"--experimental-vm-modules\" jest --no-coverage",
55
60
  "typecheck": "tsc -p tsconfig.json --noEmit"
56
61
  },
57
62
  "dependencies": {
58
- "@eslint-community/regexpp": "^4.5.0",
59
- "@typescript-eslint/scope-manager": "7.0.0-alpha.0+6ae1fa74b",
60
- "@typescript-eslint/type-utils": "7.0.0-alpha.0+6ae1fa74b",
61
- "@typescript-eslint/utils": "7.0.0-alpha.0+6ae1fa74b",
62
- "@typescript-eslint/visitor-keys": "7.0.0-alpha.0+6ae1fa74b",
63
+ "@eslint-community/regexpp": "^4.5.1",
64
+ "@typescript-eslint/scope-manager": "7.0.1",
65
+ "@typescript-eslint/type-utils": "7.0.1",
66
+ "@typescript-eslint/utils": "7.0.1",
67
+ "@typescript-eslint/visitor-keys": "7.0.1",
63
68
  "debug": "^4.3.4",
64
- "grapheme-splitter": "^1.0.4",
65
69
  "graphemer": "^1.4.0",
66
70
  "ignore": "^5.2.4",
67
71
  "natural-compare": "^1.4.0",
68
- "natural-compare-lite": "^1.4.0",
69
- "semver": "^7.5.0",
72
+ "semver": "^7.5.4",
70
73
  "ts-api-utils": "^1.0.1"
71
74
  },
72
75
  "devDependencies": {
73
76
  "@types/debug": "*",
74
77
  "@types/marked": "*",
75
78
  "@types/natural-compare": "*",
76
- "@types/prettier": "*",
77
- "@typescript-eslint/rule-schema-to-typescript-types": "6.0.0",
78
- "@typescript-eslint/rule-tester": "7.0.0-alpha.0+6ae1fa74b",
79
- "chalk": "^5.0.1",
79
+ "@typescript-eslint/rule-schema-to-typescript-types": "7.0.1",
80
+ "@typescript-eslint/rule-tester": "7.0.1",
81
+ "ajv": "^6.12.6",
82
+ "chalk": "^5.3.0",
83
+ "cross-env": "^7.0.3",
80
84
  "cross-fetch": "*",
81
- "jest-specific-snapshot": "*",
85
+ "eslint": "*",
86
+ "grapheme-splitter": "^1.0.4",
87
+ "jest": "29.7.0",
88
+ "jest-specific-snapshot": "^8.0.0",
82
89
  "json-schema": "*",
83
90
  "markdown-table": "^3.0.3",
84
- "marked": "^4.3.0",
85
- "prettier": "*",
91
+ "marked": "^5.1.1",
92
+ "prettier": "^3.0.3",
93
+ "rimraf": "*",
86
94
  "title-case": "^3.0.3",
95
+ "tsx": "*",
87
96
  "typescript": "*"
88
97
  },
89
98
  "peerDependencies": {
90
- "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
91
- "eslint": "^7.0.0 || ^8.0.0"
99
+ "@typescript-eslint/parser": "^7.0.0",
100
+ "eslint": "^8.56.0"
92
101
  },
93
102
  "peerDependenciesMeta": {
94
103
  "typescript": {
@@ -98,6 +107,5 @@
98
107
  "funding": {
99
108
  "type": "opencollective",
100
109
  "url": "https://opencollective.com/typescript-eslint"
101
- },
102
- "gitHead": "6ae1fa74b18af8a2d4baa0d3d4b43997cf9a9781"
110
+ }
103
111
  }
package/rules.d.ts ADDED
@@ -0,0 +1,46 @@
1
+ /*
2
+ We purposely don't generate types for our plugin because TL;DR:
3
+ 1) there's no real reason that anyone should do a typed import of our rules,
4
+ 2) it would require us to change our code so there aren't as many inferred types
5
+
6
+ This type declaration exists as a hacky way to add a type to the export for our
7
+ internal packages that require it.
8
+
9
+ *** Long reason ***
10
+
11
+ When you turn on declaration files, TS requires all types to be "fully resolvable"
12
+ without changes to the code.
13
+ All of our lint rules `export default createRule(...)`, which means they all
14
+ implicitly reference the `TSESLint.Rule` type for the export.
15
+
16
+ TS wants to transpile each rule file to this `.d.ts` file:
17
+
18
+ ```ts
19
+ import type { TSESLint } from '@typescript-eslint/utils';
20
+ declare const _default: TSESLint.RuleModule<TMessageIds, TOptions, TSESLint.RuleListener>;
21
+ export default _default;
22
+ ```
23
+
24
+ Because we don't import `TSESLint` in most files, it means that TS would have to
25
+ insert a new import during the declaration emit to make this work.
26
+ However TS wants to avoid adding new imports to the file because a new module
27
+ could have type side-effects (like global augmentation) which could cause weird
28
+ type side-effects in the decl file that wouldn't exist in source TS file.
29
+
30
+ So TS errors on most of our rules with the following error:
31
+ ```
32
+ The inferred type of 'default' cannot be named without a reference to
33
+ '../../../../node_modules/@typescript-eslint/utils/src/ts-eslint/Rule'.
34
+ This is likely not portable. A type annotation is necessary. ts(2742)
35
+ ```
36
+ */
37
+
38
+ import type { RuleModule } from '@typescript-eslint/utils/ts-eslint';
39
+
40
+ export type TypeScriptESLintRules = Record<
41
+ string,
42
+ RuleModule<string, unknown[]>
43
+ >;
44
+ declare const rules: TypeScriptESLintRules;
45
+ // eslint-disable-next-line import/no-default-export
46
+ export default rules;