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

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 +31 -23
  484. package/rules.d.ts +46 -0
@@ -25,7 +25,7 @@ type OrderConfig = MemberType[] | SortedOrderConfig | 'never';
25
25
  interface SortedOrderConfig {
26
26
  memberTypes?: MemberType[] | 'never';
27
27
  optionalityOrder?: 'optional-first' | 'required-first';
28
- order:
28
+ order?:
29
29
  | 'alphabetically'
30
30
  | 'alphabetically-case-insensitive'
31
31
  | 'as-written'
@@ -80,145 +80,178 @@ The default configuration looks as follows:
80
80
 
81
81
  ```jsonc
82
82
  {
83
- "default": [
84
- // Index signature
85
- "signature",
86
- "call-signature",
83
+ "default": {
84
+ "memberTypes": [
85
+ // Index signature
86
+ "signature",
87
+ "call-signature",
87
88
 
88
- // Fields
89
- "public-static-field",
90
- "protected-static-field",
91
- "private-static-field",
92
- "#private-static-field",
89
+ // Fields
90
+ "public-static-field",
91
+ "protected-static-field",
92
+ "private-static-field",
93
+ "#private-static-field",
93
94
 
94
- "public-decorated-field",
95
- "protected-decorated-field",
96
- "private-decorated-field",
95
+ "public-decorated-field",
96
+ "protected-decorated-field",
97
+ "private-decorated-field",
97
98
 
98
- "public-instance-field",
99
- "protected-instance-field",
100
- "private-instance-field",
101
- "#private-instance-field",
99
+ "public-instance-field",
100
+ "protected-instance-field",
101
+ "private-instance-field",
102
+ "#private-instance-field",
102
103
 
103
- "public-abstract-field",
104
- "protected-abstract-field",
104
+ "public-abstract-field",
105
+ "protected-abstract-field",
105
106
 
106
- "public-field",
107
- "protected-field",
108
- "private-field",
109
- "#private-field",
107
+ "public-field",
108
+ "protected-field",
109
+ "private-field",
110
+ "#private-field",
110
111
 
111
- "static-field",
112
- "instance-field",
113
- "abstract-field",
112
+ "static-field",
113
+ "instance-field",
114
+ "abstract-field",
114
115
 
115
- "decorated-field",
116
+ "decorated-field",
116
117
 
117
- "field",
118
+ "field",
118
119
 
119
- // Static initialization
120
- "static-initialization",
120
+ // Static initialization
121
+ "static-initialization",
121
122
 
122
- // Constructors
123
- "public-constructor",
124
- "protected-constructor",
125
- "private-constructor",
123
+ // Constructors
124
+ "public-constructor",
125
+ "protected-constructor",
126
+ "private-constructor",
126
127
 
127
- "constructor",
128
+ "constructor",
128
129
 
129
- // Getters
130
- "public-static-get",
131
- "protected-static-get",
132
- "private-static-get",
133
- "#private-static-get",
130
+ // Accessors
131
+ "public-static-accessor",
132
+ "protected-static-accessor",
133
+ "private-static-accessor",
134
+ "#private-static-accessor",
134
135
 
135
- "public-decorated-get",
136
- "protected-decorated-get",
137
- "private-decorated-get",
136
+ "public-decorated-accessor",
137
+ "protected-decorated-accessor",
138
+ "private-decorated-accessor",
138
139
 
139
- "public-instance-get",
140
- "protected-instance-get",
141
- "private-instance-get",
142
- "#private-instance-get",
140
+ "public-instance-accessor",
141
+ "protected-instance-accessor",
142
+ "private-instance-accessor",
143
+ "#private-instance-accessor",
143
144
 
144
- "public-abstract-get",
145
- "protected-abstract-get",
145
+ "public-abstract-accessor",
146
+ "protected-abstract-accessor",
146
147
 
147
- "public-get",
148
- "protected-get",
149
- "private-get",
150
- "#private-get",
148
+ "public-accessor",
149
+ "protected-accessor",
150
+ "private-accessor",
151
+ "#private-accessor",
151
152
 
152
- "static-get",
153
- "instance-get",
154
- "abstract-get",
153
+ "static-accessor",
154
+ "instance-accessor",
155
+ "abstract-accessor",
155
156
 
156
- "decorated-get",
157
+ "decorated-accessor",
157
158
 
158
- "get",
159
+ "accessor",
159
160
 
160
- // Setters
161
- "public-static-set",
162
- "protected-static-set",
163
- "private-static-set",
164
- "#private-static-set",
161
+ // Getters
162
+ "public-static-get",
163
+ "protected-static-get",
164
+ "private-static-get",
165
+ "#private-static-get",
165
166
 
166
- "public-decorated-set",
167
- "protected-decorated-set",
168
- "private-decorated-set",
167
+ "public-decorated-get",
168
+ "protected-decorated-get",
169
+ "private-decorated-get",
169
170
 
170
- "public-instance-set",
171
- "protected-instance-set",
172
- "private-instance-set",
173
- "#private-instance-set",
171
+ "public-instance-get",
172
+ "protected-instance-get",
173
+ "private-instance-get",
174
+ "#private-instance-get",
174
175
 
175
- "public-abstract-set",
176
- "protected-abstract-set",
176
+ "public-abstract-get",
177
+ "protected-abstract-get",
177
178
 
178
- "public-set",
179
- "protected-set",
180
- "private-set",
181
- "#private-set",
179
+ "public-get",
180
+ "protected-get",
181
+ "private-get",
182
+ "#private-get",
182
183
 
183
- "static-set",
184
- "instance-set",
185
- "abstract-set",
184
+ "static-get",
185
+ "instance-get",
186
+ "abstract-get",
186
187
 
187
- "decorated-set",
188
+ "decorated-get",
188
189
 
189
- "set",
190
+ "get",
190
191
 
191
- // Methods
192
- "public-static-method",
193
- "protected-static-method",
194
- "private-static-method",
195
- "#private-static-method",
192
+ // Setters
193
+ "public-static-set",
194
+ "protected-static-set",
195
+ "private-static-set",
196
+ "#private-static-set",
196
197
 
197
- "public-decorated-method",
198
- "protected-decorated-method",
199
- "private-decorated-method",
198
+ "public-decorated-set",
199
+ "protected-decorated-set",
200
+ "private-decorated-set",
200
201
 
201
- "public-instance-method",
202
- "protected-instance-method",
203
- "private-instance-method",
204
- "#private-instance-method",
202
+ "public-instance-set",
203
+ "protected-instance-set",
204
+ "private-instance-set",
205
+ "#private-instance-set",
205
206
 
206
- "public-abstract-method",
207
- "protected-abstract-method",
207
+ "public-abstract-set",
208
+ "protected-abstract-set",
208
209
 
209
- "public-method",
210
- "protected-method",
211
- "private-method",
212
- "#private-method",
210
+ "public-set",
211
+ "protected-set",
212
+ "private-set",
213
+ "#private-set",
213
214
 
214
- "static-method",
215
- "instance-method",
216
- "abstract-method",
215
+ "static-set",
216
+ "instance-set",
217
+ "abstract-set",
217
218
 
218
- "decorated-method",
219
+ "decorated-set",
219
220
 
220
- "method"
221
- ]
221
+ "set",
222
+
223
+ // Methods
224
+ "public-static-method",
225
+ "protected-static-method",
226
+ "private-static-method",
227
+ "#private-static-method",
228
+
229
+ "public-decorated-method",
230
+ "protected-decorated-method",
231
+ "private-decorated-method",
232
+
233
+ "public-instance-method",
234
+ "protected-instance-method",
235
+ "private-instance-method",
236
+ "#private-instance-method",
237
+
238
+ "public-abstract-method",
239
+ "protected-abstract-method",
240
+
241
+ "public-method",
242
+ "protected-method",
243
+ "private-method",
244
+ "#private-method",
245
+
246
+ "static-method",
247
+ "instance-method",
248
+ "abstract-method",
249
+
250
+ "decorated-method",
251
+
252
+ "method",
253
+ ],
254
+ },
222
255
  }
223
256
  ```
224
257
 
@@ -246,9 +279,9 @@ It also ignores accessibility and scope.
246
279
  "rules": {
247
280
  "@typescript-eslint/member-ordering": [
248
281
  "error",
249
- { "default": ["signature", "method", "constructor", "field"] }
250
- ]
251
- }
282
+ { "default": ["signature", "method", "constructor", "field"] },
283
+ ],
284
+ },
252
285
  }
253
286
  ```
254
287
 
@@ -256,7 +289,7 @@ It also ignores accessibility and scope.
256
289
 
257
290
  #### ❌ Incorrect
258
291
 
259
- ```ts
292
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
260
293
  interface Foo {
261
294
  B: string; // -> field
262
295
 
@@ -268,7 +301,7 @@ interface Foo {
268
301
  }
269
302
  ```
270
303
 
271
- ```ts
304
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
272
305
  type Foo = {
273
306
  B: string; // -> field
274
307
 
@@ -280,7 +313,7 @@ type Foo = {
280
313
  };
281
314
  ```
282
315
 
283
- ```ts
316
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
284
317
  class Foo {
285
318
  private C: string; // -> field
286
319
  public D: string; // -> field
@@ -295,7 +328,7 @@ class Foo {
295
328
  }
296
329
  ```
297
330
 
298
- ```ts
331
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
299
332
  const Foo = class {
300
333
  private C: string; // -> field
301
334
  public D: string; // -> field
@@ -313,7 +346,7 @@ const Foo = class {
313
346
 
314
347
  #### ✅ Correct
315
348
 
316
- ```ts
349
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
317
350
  interface Foo {
318
351
  [Z: string]: any; // -> signature
319
352
 
@@ -325,7 +358,7 @@ interface Foo {
325
358
  }
326
359
  ```
327
360
 
328
- ```ts
361
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
329
362
  type Foo = {
330
363
  // no signature
331
364
 
@@ -337,7 +370,7 @@ type Foo = {
337
370
  };
338
371
  ```
339
372
 
340
- ```ts
373
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
341
374
  class Foo {
342
375
  [Z: string]: any; // -> signature
343
376
 
@@ -352,7 +385,7 @@ class Foo {
352
385
  }
353
386
  ```
354
387
 
355
- ```ts
388
+ ```ts option='{ "default": ["signature", "method", "constructor", "field"] }'
356
389
  const Foo = class {
357
390
  [Z: string]: any; // -> signature
358
391
 
@@ -381,9 +414,9 @@ It doesn't apply to interfaces or type literals as accessibility and scope are n
381
414
  "rules": {
382
415
  "@typescript-eslint/member-ordering": [
383
416
  "error",
384
- { "default": ["public-instance-method", "public-static-field"] }
385
- ]
386
- }
417
+ { "default": ["public-instance-method", "public-static-field"] },
418
+ ],
419
+ },
387
420
  }
388
421
  ```
389
422
 
@@ -391,7 +424,7 @@ It doesn't apply to interfaces or type literals as accessibility and scope are n
391
424
 
392
425
  ##### ❌ Incorrect
393
426
 
394
- ```ts
427
+ ```ts option='{ "default": ["public-instance-method", "public-static-field"] }'
395
428
  class Foo {
396
429
  private C: string; // (irrelevant)
397
430
 
@@ -409,7 +442,7 @@ class Foo {
409
442
  }
410
443
  ```
411
444
 
412
- ```ts
445
+ ```ts option='{ "default": ["public-instance-method", "public-static-field"] }'
413
446
  const Foo = class {
414
447
  private C: string; // (irrelevant)
415
448
 
@@ -429,7 +462,7 @@ const Foo = class {
429
462
 
430
463
  ##### ✅ Correct
431
464
 
432
- ```ts
465
+ ```ts option='{ "default": ["public-instance-method", "public-static-field"] }'
433
466
  class Foo {
434
467
  public B(): void {} // -> public instance method
435
468
 
@@ -447,7 +480,7 @@ class Foo {
447
480
  }
448
481
  ```
449
482
 
450
- ```ts
483
+ ```ts option='{ "default": ["public-instance-method", "public-static-field"] }'
451
484
  const Foo = class {
452
485
  public B(): void {} // -> public instance method
453
486
 
@@ -475,9 +508,9 @@ It doesn't apply to interfaces or type literals as accessibility and scope are n
475
508
  "rules": {
476
509
  "@typescript-eslint/member-ordering": [
477
510
  "error",
478
- { "default": ["public-static-field", "static-field", "instance-field"] }
479
- ]
480
- }
511
+ { "default": ["public-static-field", "static-field", "instance-field"] },
512
+ ],
513
+ },
481
514
  }
482
515
  ```
483
516
 
@@ -485,7 +518,7 @@ It doesn't apply to interfaces or type literals as accessibility and scope are n
485
518
 
486
519
  ##### ❌ Incorrect
487
520
 
488
- ```ts
521
+ ```ts option='{ "default": ["public-static-field", "static-field", "instance-field"] }'
489
522
  class Foo {
490
523
  private E: string; // -> instance field
491
524
 
@@ -499,7 +532,7 @@ class Foo {
499
532
  }
500
533
  ```
501
534
 
502
- ```ts
535
+ ```ts option='{ "default": ["public-static-field", "static-field", "instance-field"] }'
503
536
  const foo = class {
504
537
  public T(): void {} // method (irrelevant)
505
538
 
@@ -520,7 +553,7 @@ const foo = class {
520
553
 
521
554
  ##### ✅ Correct
522
555
 
523
- ```ts
556
+ ```ts option='{ "default": ["public-static-field", "static-field", "instance-field"] }'
524
557
  class Foo {
525
558
  public static A: string; // -> public static field
526
559
 
@@ -534,7 +567,7 @@ class Foo {
534
567
  }
535
568
  ```
536
569
 
537
- ```ts
570
+ ```ts option='{ "default": ["public-static-field", "static-field", "instance-field"] }'
538
571
  const foo = class {
539
572
  [Z: string]: any; // -> signature (irrelevant)
540
573
 
@@ -564,9 +597,9 @@ Default settings will be used for class declarations and all other syntax constr
564
597
  "rules": {
565
598
  "@typescript-eslint/member-ordering": [
566
599
  "error",
567
- { "classes": ["method", "constructor", "field"] }
568
- ]
569
- }
600
+ { "classes": ["method", "constructor", "field"] },
601
+ ],
602
+ },
570
603
  }
571
604
  ```
572
605
 
@@ -574,7 +607,7 @@ Default settings will be used for class declarations and all other syntax constr
574
607
 
575
608
  ##### ❌ Incorrect
576
609
 
577
- ```ts
610
+ ```ts option='{ "classes": ["method", "constructor", "field"] }'
578
611
  class Foo {
579
612
  private C: string; // -> field
580
613
  public D: string; // -> field
@@ -589,7 +622,7 @@ class Foo {
589
622
 
590
623
  ##### ✅ Correct
591
624
 
592
- ```ts
625
+ ```ts option='{ "classes": ["method", "constructor", "field"] }'
593
626
  class Foo {
594
627
  public static A(): void {} // -> method
595
628
  public B(): void {} // -> method
@@ -614,9 +647,9 @@ Default settings will be used for class declarations and all other syntax constr
614
647
  "rules": {
615
648
  "@typescript-eslint/member-ordering": [
616
649
  "error",
617
- { "classExpressions": ["method", "constructor", "field"] }
618
- ]
619
- }
650
+ { "classExpressions": ["method", "constructor", "field"] },
651
+ ],
652
+ },
620
653
  }
621
654
  ```
622
655
 
@@ -624,7 +657,7 @@ Default settings will be used for class declarations and all other syntax constr
624
657
 
625
658
  ##### ❌ Incorrect
626
659
 
627
- ```ts
660
+ ```ts option='{ "classExpressions": ["method", "constructor", "field"] }'
628
661
  const foo = class {
629
662
  private C: string; // -> field
630
663
  public D: string; // -> field
@@ -639,7 +672,7 @@ const foo = class {
639
672
 
640
673
  ##### ✅ Correct
641
674
 
642
- ```ts
675
+ ```ts option='{ "classExpressions": ["method", "constructor", "field"] }'
643
676
  const foo = class {
644
677
  public static A(): void {} // -> method
645
678
  public B(): void {} // -> method
@@ -668,9 +701,9 @@ These member types are the only ones allowed for `interfaces`.
668
701
  "rules": {
669
702
  "@typescript-eslint/member-ordering": [
670
703
  "error",
671
- { "interfaces": ["signature", "method", "constructor", "field"] }
672
- ]
673
- }
704
+ { "interfaces": ["signature", "method", "constructor", "field"] },
705
+ ],
706
+ },
674
707
  }
675
708
  ```
676
709
 
@@ -678,7 +711,7 @@ These member types are the only ones allowed for `interfaces`.
678
711
 
679
712
  #### ❌ Incorrect
680
713
 
681
- ```ts
714
+ ```ts option='{ "interfaces": ["signature", "method", "constructor", "field"] }'
682
715
  interface Foo {
683
716
  B: string; // -> field
684
717
 
@@ -692,7 +725,7 @@ interface Foo {
692
725
 
693
726
  #### ✅ Correct
694
727
 
695
- ```ts
728
+ ```ts option='{ "interfaces": ["signature", "method", "constructor", "field"] }'
696
729
  interface Foo {
697
730
  [Z: string]: any; // -> signature
698
731
 
@@ -720,9 +753,9 @@ These member types are the only ones allowed for `typeLiterals`.
720
753
  "rules": {
721
754
  "@typescript-eslint/member-ordering": [
722
755
  "error",
723
- { "typeLiterals": ["signature", "method", "constructor", "field"] }
724
- ]
725
- }
756
+ { "typeLiterals": ["signature", "method", "constructor", "field"] },
757
+ ],
758
+ },
726
759
  }
727
760
  ```
728
761
 
@@ -730,7 +763,7 @@ These member types are the only ones allowed for `typeLiterals`.
730
763
 
731
764
  #### ❌ Incorrect
732
765
 
733
- ```ts
766
+ ```ts option='{ "typeLiterals": ["signature", "method", "constructor", "field"] }'
734
767
  type Foo = {
735
768
  B: string; // -> field
736
769
 
@@ -744,7 +777,7 @@ type Foo = {
744
777
 
745
778
  #### ✅ Correct
746
779
 
747
- ```ts
780
+ ```ts option='{ "typeLiterals": ["signature", "method", "constructor", "field"] }'
748
781
  type Foo = {
749
782
  [Z: string]: any; // -> signature
750
783
 
@@ -761,7 +794,8 @@ type Foo = {
761
794
  #### Sorting Alphabetically Within Member Groups
762
795
 
763
796
  This config specifies that within each `memberTypes` group, members are in an alphabetic case-sensitive order.
764
- You can copy and paste the default order from [Default Configuration](#default-configuration).
797
+ The default member order will be applied if `memberTypes` is not specified.
798
+ You can see the default order in [Default Configuration](#default-configuration).
765
799
 
766
800
  ```jsonc
767
801
  // .eslintrc.json
@@ -771,14 +805,11 @@ You can copy and paste the default order from [Default Configuration](#default-c
771
805
  "error",
772
806
  {
773
807
  "default": {
774
- "memberTypes": [
775
- /* <Default Order> */
776
- ],
777
- "order": "alphabetically"
778
- }
779
- }
780
- ]
781
- }
808
+ "order": "alphabetically",
809
+ },
810
+ },
811
+ ],
812
+ },
782
813
  }
783
814
  ```
784
815
 
@@ -786,7 +817,7 @@ You can copy and paste the default order from [Default Configuration](#default-c
786
817
 
787
818
  ##### ❌ Incorrect
788
819
 
789
- ```ts
820
+ ```ts option='{"default":{"order":"alphabetically"}}'
790
821
  interface Foo {
791
822
  a: x;
792
823
  B: x;
@@ -800,7 +831,7 @@ interface Foo {
800
831
 
801
832
  ##### ✅ Correct
802
833
 
803
- ```ts
834
+ ```ts option='{"default":{"order":"alphabetically"}}'
804
835
  interface Foo {
805
836
  B: x;
806
837
  a: x;
@@ -812,10 +843,62 @@ interface Foo {
812
843
  }
813
844
  ```
814
845
 
846
+ #### Sorting Alphabetically Within Custom Member Groups
847
+
848
+ This config specifies that within each custom `memberTypes` group, members are in an alphabetic case-sensitive order.
849
+
850
+ ```jsonc
851
+ // .eslintrc.json
852
+ {
853
+ "rules": {
854
+ "@typescript-eslint/member-ordering": [
855
+ "error",
856
+ {
857
+ "default": {
858
+ "memberTypes": ["method", "field"],
859
+ "order": "alphabetically",
860
+ },
861
+ },
862
+ ],
863
+ },
864
+ }
865
+ ```
866
+
867
+ <!--tabs-->
868
+
869
+ ##### ❌ Incorrect
870
+
871
+ ```ts option='{"default":{"memberTypes":["method","field"],"order":"alphabetically"}}'
872
+ interface Foo {
873
+ B(): void;
874
+ c(): void;
875
+ a(): void;
876
+
877
+ a: x;
878
+ B: x;
879
+ c: x;
880
+ }
881
+ ```
882
+
883
+ ##### ✅ Correct
884
+
885
+ ```ts option='{"default":{"memberTypes":["method","field"],"order":"alphabetically"}}'
886
+ interface Foo {
887
+ B(): void;
888
+ a(): void;
889
+ c(): void;
890
+
891
+ B: x;
892
+ a: x;
893
+ c: x;
894
+ }
895
+ ```
896
+
815
897
  #### Sorting Alphabetically Case Insensitive Within Member Groups
816
898
 
817
- This config specifies that within each `memberTypes` group, members are in an alphabetic case-sensitive order.
818
- You can copy and paste the default order from [Default Configuration](#default-configuration).
899
+ This config specifies that within each `memberTypes` group, members are in an alphabetic case-insensitive order.
900
+ The default member order will be applied if `memberTypes` is not specified.
901
+ You can see the default order in [Default Configuration](#default-configuration).
819
902
 
820
903
  ```jsonc
821
904
  // .eslintrc.json
@@ -825,14 +908,11 @@ You can copy and paste the default order from [Default Configuration](#default-c
825
908
  "error",
826
909
  {
827
910
  "default": {
828
- "memberTypes": [
829
- /* <Default Order> */
830
- ],
831
- "order": "alphabetically-case-insensitive"
832
- }
833
- }
834
- ]
835
- }
911
+ "order": "alphabetically-case-insensitive",
912
+ },
913
+ },
914
+ ],
915
+ },
836
916
  }
837
917
  ```
838
918
 
@@ -840,7 +920,7 @@ You can copy and paste the default order from [Default Configuration](#default-c
840
920
 
841
921
  ##### ❌ Incorrect
842
922
 
843
- ```ts
923
+ ```ts option='{"default":{"order":"alphabetically-case-insensitive"}}'
844
924
  interface Foo {
845
925
  B: x;
846
926
  a: x;
@@ -854,7 +934,7 @@ interface Foo {
854
934
 
855
935
  ##### ✅ Correct
856
936
 
857
- ```ts
937
+ ```ts option='{"default":{"order":"alphabetically-case-insensitive"}}'
858
938
  interface Foo {
859
939
  a: x;
860
940
  B: x;
@@ -877,9 +957,9 @@ It ignores any member group types completely by specifying `"never"` for `member
877
957
  "rules": {
878
958
  "@typescript-eslint/member-ordering": [
879
959
  "error",
880
- { "default": { "memberTypes": "never", "order": "alphabetically" } }
881
- ]
882
- }
960
+ { "default": { "memberTypes": "never", "order": "alphabetically" } },
961
+ ],
962
+ },
883
963
  }
884
964
  ```
885
965
 
@@ -887,9 +967,8 @@ It ignores any member group types completely by specifying `"never"` for `member
887
967
 
888
968
  ##### ❌ Incorrect
889
969
 
890
- ```ts
970
+ ```ts option='{ "default": { "memberTypes": "never", "order": "alphabetically" } }'
891
971
  interface Foo {
892
- static c = 0;
893
972
  b(): void;
894
973
  a: boolean;
895
974
 
@@ -901,11 +980,10 @@ interface Foo {
901
980
 
902
981
  ##### ✅ Correct
903
982
 
904
- ```ts
983
+ ```ts option='{ "default": { "memberTypes": "never", "order": "alphabetically" } }'
905
984
  interface Foo {
906
985
  a: boolean;
907
986
  b(): void;
908
- static c = 0;
909
987
 
910
988
  [a: string]: number; // Order doesn't matter (no sortable identifier)
911
989
  new (): Bar; // Order doesn't matter (no sortable identifier)
@@ -928,11 +1006,11 @@ This config places all optional members before all required members:
928
1006
  {
929
1007
  "default": {
930
1008
  "optionalityOrder": "optional-first",
931
- "order": "alphabetically"
932
- }
933
- }
934
- ]
935
- }
1009
+ "order": "alphabetically",
1010
+ },
1011
+ },
1012
+ ],
1013
+ },
936
1014
  }
937
1015
  ```
938
1016
 
@@ -940,7 +1018,7 @@ This config places all optional members before all required members:
940
1018
 
941
1019
  ##### ❌ Incorrect
942
1020
 
943
- ```ts
1021
+ ```ts option='{ "default": { "optionalityOrder": "optional-first", "order": "alphabetically" } }'
944
1022
  interface Foo {
945
1023
  a: boolean;
946
1024
  b?: number;
@@ -950,7 +1028,7 @@ interface Foo {
950
1028
 
951
1029
  ##### ✅ Correct
952
1030
 
953
- ```ts
1031
+ ```ts option='{ "default": { "optionalityOrder": "optional-first", "order": "alphabetically" } }'
954
1032
  interface Foo {
955
1033
  b?: number;
956
1034
  a: boolean;
@@ -971,11 +1049,11 @@ This config places all required members before all optional members:
971
1049
  {
972
1050
  "default": {
973
1051
  "optionalityOrder": "required-first",
974
- "order": "alphabetically"
975
- }
976
- }
977
- ]
978
- }
1052
+ "order": "alphabetically",
1053
+ },
1054
+ },
1055
+ ],
1056
+ },
979
1057
  }
980
1058
  ```
981
1059
 
@@ -983,7 +1061,7 @@ This config places all required members before all optional members:
983
1061
 
984
1062
  ##### ❌ Incorrect
985
1063
 
986
- ```ts
1064
+ ```ts option='{ "default": { "optionalityOrder": "required-first", "order": "alphabetically" } }'
987
1065
  interface Foo {
988
1066
  a: boolean;
989
1067
  b?: number;
@@ -993,7 +1071,7 @@ interface Foo {
993
1071
 
994
1072
  ##### ✅ Correct
995
1073
 
996
- ```ts
1074
+ ```ts option='{ "default": { "optionalityOrder": "required-first", "order": "alphabetically" } }'
997
1075
  interface Foo {
998
1076
  a: boolean;
999
1077
  c: string;
@@ -1193,7 +1271,7 @@ It is also possible to group member types by their accessibility (`static`, `ins
1193
1271
  // Methods
1194
1272
  "public-method", // = ["public-static-method", "public-instance-method"]
1195
1273
  "protected-method", // = ["protected-static-method", "protected-instance-method"]
1196
- "private-method" // = ["private-static-method", "private-instance-method"]
1274
+ "private-method", // = ["private-static-method", "private-instance-method"]
1197
1275
  ]
1198
1276
  ```
1199
1277
 
@@ -1239,7 +1317,7 @@ their accessibility.
1239
1317
  "protected-decorated-method",
1240
1318
  "private-decorated-method",
1241
1319
 
1242
- "decorated-method" // = ["public-decorated-method", "protected-decorated-method", "private-decorated-method"]
1320
+ "decorated-method", // = ["public-decorated-method", "protected-decorated-method", "private-decorated-method"]
1243
1321
  ]
1244
1322
  ```
1245
1323
 
@@ -1276,7 +1354,7 @@ Another option is to group the member types by their scope (`public`, `protected
1276
1354
  // Methods
1277
1355
  "static-method", // = ["public-static-method", "protected-static-method", "private-static-method"]
1278
1356
  "instance-method", // = ["public-instance-method", "protected-instance-method", "private-instance-method"]
1279
- "abstract-method" // = ["public-abstract-method", "protected-abstract-method"]
1357
+ "abstract-method", // = ["public-abstract-method", "protected-abstract-method"]
1280
1358
  ]
1281
1359
  ```
1282
1360
 
@@ -1308,7 +1386,7 @@ The third grouping option is to ignore both scope and accessibility.
1308
1386
  // "public-abstract-set", "protected-abstract-set"]
1309
1387
 
1310
1388
  // Methods
1311
- "method" // = ["public-static-method", "protected-static-method", "private-static-method", "public-instance-method", "protected-instance-method", "private-instance-method",
1389
+ "method", // = ["public-static-method", "protected-static-method", "private-static-method", "public-instance-method", "protected-instance-method", "private-instance-method",
1312
1390
  // "public-abstract-method", "protected-abstract-method"]
1313
1391
  ]
1314
1392
  ```
@@ -1325,7 +1403,7 @@ It is possible to group fields by their `readonly` modifiers.
1325
1403
 
1326
1404
  // Fields
1327
1405
  "readonly-field", // = ["public-static-readonly-field", "protected-static-readonly-field", "private-static-readonly-field", "public-instance-readonly-field", "protected-instance-readonly-field", "private-instance-readonly-field", "public-abstract-readonly-field", "protected-abstract-readonly-field"]
1328
- "field" // = ["public-static-field", "protected-static-field", "private-static-field", "public-instance-field", "protected-instance-field", "private-instance-field", "public-abstract-field", "protected-abstract-field"]
1406
+ "field", // = ["public-static-field", "protected-static-field", "private-static-field", "public-instance-field", "protected-instance-field", "private-instance-field", "public-abstract-field", "protected-abstract-field"]
1329
1407
  ]
1330
1408
  ```
1331
1409
 
@@ -1351,7 +1429,7 @@ It is also possible to group different member types at the same rank.
1351
1429
  ["get", "set"],
1352
1430
 
1353
1431
  // Methods
1354
- "method"
1432
+ "method",
1355
1433
  ]
1356
1434
  ```
1357
1435