xo 0.50.0 → 0.52.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 (365) hide show
  1. package/cli.js +1 -1
  2. package/index.js +7 -2
  3. package/lib/options-manager.js +89 -6
  4. package/lib/report.js +3 -1
  5. package/node_modules/@typescript-eslint/eslint-plugin/README.md +2 -146
  6. package/node_modules/@typescript-eslint/eslint-plugin/dist/configs/all.js +1 -0
  7. package/node_modules/@typescript-eslint/eslint-plugin/dist/configs/all.js.map +1 -1
  8. package/node_modules/@typescript-eslint/eslint-plugin/dist/configs/strict.js +1 -0
  9. package/node_modules/@typescript-eslint/eslint-plugin/dist/configs/strict.js.map +1 -1
  10. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/array-type.js +21 -8
  11. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/array-type.js.map +1 -1
  12. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/ban-ts-comment.js +37 -31
  13. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/ban-ts-comment.js.map +1 -1
  14. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/comma-dangle.js +10 -10
  15. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/comma-dangle.js.map +1 -1
  16. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/consistent-generic-constructors.js +100 -0
  17. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/consistent-generic-constructors.js.map +1 -0
  18. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/consistent-indexed-object-style.js +1 -1
  19. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/consistent-indexed-object-style.js.map +1 -1
  20. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-function-return-type.js +14 -8
  21. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-function-return-type.js.map +1 -1
  22. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-member-accessibility.js +133 -43
  23. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-member-accessibility.js.map +1 -1
  24. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-module-boundary-types.js +12 -1
  25. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/explicit-module-boundary-types.js.map +1 -1
  26. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/index.js +2 -0
  27. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/index.js.map +1 -1
  28. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-ordering.js +9 -2
  29. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/member-ordering.js.map +1 -1
  30. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-base-to-string.js +1 -1
  31. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-base-to-string.js.map +1 -1
  32. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-duplicate-enum-values.js +1 -1
  33. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-duplicate-enum-values.js.map +1 -1
  34. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-empty-interface.js +0 -1
  35. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-empty-interface.js.map +1 -1
  36. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-explicit-any.js +2 -1
  37. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-explicit-any.js.map +1 -1
  38. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extra-parens.js +8 -2
  39. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extra-parens.js.map +1 -1
  40. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extraneous-class.js +4 -0
  41. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-extraneous-class.js.map +1 -1
  42. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-floating-promises.js +8 -3
  43. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-floating-promises.js.map +1 -1
  44. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-implicit-any-catch.js +1 -1
  45. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-implicit-any-catch.js.map +1 -1
  46. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-inferrable-types.js +9 -1
  47. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-inferrable-types.js.map +1 -1
  48. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-meaningless-void-operator.js +0 -1
  49. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-meaningless-void-operator.js.map +1 -1
  50. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-namespace.js +2 -0
  51. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-namespace.js.map +1 -1
  52. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-non-null-asserted-optional-chain.js +0 -1
  53. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-non-null-asserted-optional-chain.js.map +1 -1
  54. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-non-null-assertion.js +0 -1
  55. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-non-null-assertion.js.map +1 -1
  56. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-shadow.js +38 -8
  57. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-shadow.js.map +1 -1
  58. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-this-alias.js +2 -0
  59. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-this-alias.js.map +1 -1
  60. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-type-alias.js +8 -0
  61. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-type-alias.js.map +1 -1
  62. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-boolean-literal-compare.js +2 -0
  63. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-boolean-literal-compare.js.map +1 -1
  64. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-condition.js +2 -0
  65. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-condition.js.map +1 -1
  66. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-type-assertion.js +1 -0
  67. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-type-assertion.js.map +1 -1
  68. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-type-constraint.js +3 -1
  69. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unnecessary-type-constraint.js.map +1 -1
  70. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unsafe-argument.js +1 -1
  71. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unsafe-argument.js.map +1 -1
  72. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unused-vars.js +4 -3
  73. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-unused-vars.js.map +1 -1
  74. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-use-before-define.js +42 -12
  75. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-use-before-define.js.map +1 -1
  76. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-useless-constructor.js +6 -3
  77. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-useless-constructor.js.map +1 -1
  78. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-useless-empty-export.js +1 -2
  79. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/no-useless-empty-export.js.map +1 -1
  80. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/non-nullable-type-assertion-style.js +0 -1
  81. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/non-nullable-type-assertion-style.js.map +1 -1
  82. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/object-curly-spacing.js +1 -0
  83. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/object-curly-spacing.js.map +1 -1
  84. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/padding-line-between-statements.js +5 -5
  85. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/padding-line-between-statements.js.map +1 -1
  86. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/parameter-properties.js +31 -23
  87. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/parameter-properties.js.map +1 -1
  88. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-as-const.js +5 -1
  89. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-as-const.js.map +1 -1
  90. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-enum-initializers.js +0 -1
  91. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-enum-initializers.js.map +1 -1
  92. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-nullish-coalescing.js +133 -4
  93. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-nullish-coalescing.js.map +1 -1
  94. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-optional-chain.js +166 -86
  95. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/prefer-optional-chain.js.map +1 -1
  96. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/promise-function-async.js +2 -0
  97. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/promise-function-async.js.map +1 -1
  98. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-array-sort-compare.js +1 -0
  99. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-array-sort-compare.js.map +1 -1
  100. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-await.js +1 -1
  101. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/require-await.js.map +1 -1
  102. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/restrict-plus-operands.js +2 -0
  103. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/restrict-plus-operands.js.map +1 -1
  104. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/restrict-template-expressions.js +20 -5
  105. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/restrict-template-expressions.js.map +1 -1
  106. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/return-await.js +1 -1
  107. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/return-await.js.map +1 -1
  108. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/sort-type-union-intersection-members.js +3 -0
  109. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/sort-type-union-intersection-members.js.map +1 -1
  110. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/space-infix-ops.js +16 -30
  111. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/space-infix-ops.js.map +1 -1
  112. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/switch-exhaustiveness-check.js +0 -1
  113. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/switch-exhaustiveness-check.js.map +1 -1
  114. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/typedef.js +3 -1
  115. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/typedef.js.map +1 -1
  116. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unbound-method.js +1 -0
  117. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unbound-method.js.map +1 -1
  118. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unified-signatures.js +1 -0
  119. package/node_modules/@typescript-eslint/eslint-plugin/dist/rules/unified-signatures.js.map +1 -1
  120. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/index.js +3 -0
  121. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/index.js.map +1 -1
  122. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/isNodeEqual.js +27 -0
  123. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/isNodeEqual.js.map +1 -0
  124. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/isNullLiteral.js +9 -0
  125. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/isNullLiteral.js.map +1 -0
  126. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/isUndefinedIdentifier.js +9 -0
  127. package/node_modules/@typescript-eslint/eslint-plugin/dist/util/isUndefinedIdentifier.js.map +1 -0
  128. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/README.md +3 -138
  129. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/TEMPLATE.md +3 -30
  130. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/adjacent-overload-signatures.md +6 -19
  131. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/array-type.md +6 -25
  132. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/await-thenable.md +6 -19
  133. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-ts-comment.md +30 -25
  134. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-tslint-comment.md +6 -15
  135. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/ban-types.md +74 -99
  136. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/brace-style.md +6 -22
  137. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/camelcase.md +3 -1
  138. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/class-literal-property-style.md +9 -5
  139. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/comma-dangle.md +10 -28
  140. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/comma-spacing.md +6 -22
  141. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-generic-constructors.md +73 -0
  142. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-indexed-object-style.md +19 -21
  143. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-assertions.md +9 -26
  144. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-definitions.md +15 -22
  145. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-exports.md +9 -16
  146. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/consistent-type-imports.md +9 -19
  147. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/default-param-last.md +8 -24
  148. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/dot-notation.md +10 -22
  149. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-function-return-type.md +7 -33
  150. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-member-accessibility.md +7 -30
  151. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/explicit-module-boundary-types.md +10 -47
  152. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/func-call-spacing.md +6 -22
  153. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/indent.md +11 -23
  154. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/init-declarations.md +6 -22
  155. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/keyword-spacing.md +6 -22
  156. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/lines-between-class-members.md +8 -24
  157. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-delimiter-style.md +6 -2
  158. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/member-ordering.md +34 -13
  159. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/method-signature-style.md +6 -2
  160. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/naming-convention.md +6 -2
  161. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-array-constructor.md +6 -22
  162. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-base-to-string.md +7 -11
  163. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-confusing-non-null-assertion.md +6 -15
  164. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-confusing-void-expression.md +6 -42
  165. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-dupe-class-members.md +6 -22
  166. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-enum-values.md +10 -19
  167. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-duplicate-imports.md +8 -28
  168. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-dynamic-delete.md +6 -19
  169. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-function.md +6 -29
  170. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-empty-interface.md +6 -6
  171. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-explicit-any.md +6 -22
  172. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-non-null-assertion.md +6 -15
  173. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-parens.md +6 -22
  174. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extra-semi.md +6 -22
  175. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-extraneous-class.md +6 -28
  176. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-floating-promises.md +6 -19
  177. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-for-in-array.md +6 -21
  178. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-implicit-any-catch.md +11 -20
  179. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-implied-eval.md +6 -18
  180. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-inferrable-types.md +11 -31
  181. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-invalid-this.md +6 -26
  182. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-invalid-void-type.md +6 -18
  183. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-loop-func.md +6 -22
  184. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-loss-of-precision.md +6 -19
  185. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-magic-numbers.md +6 -24
  186. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-meaningless-void-operator.md +6 -2
  187. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-new.md +6 -19
  188. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-misused-promises.md +6 -2
  189. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-namespace.md +10 -17
  190. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-asserted-nullish-coalescing.md +6 -15
  191. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-asserted-optional-chain.md +6 -15
  192. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-non-null-assertion.md +6 -19
  193. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-parameter-properties.md +11 -6
  194. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-redeclare.md +6 -19
  195. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-redundant-type-constituents.md +6 -15
  196. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-require-imports.md +6 -19
  197. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-restricted-imports.md +6 -13
  198. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-shadow.md +6 -19
  199. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-this-alias.md +24 -42
  200. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-throw-literal.md +25 -29
  201. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-type-alias.md +6 -18
  202. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-boolean-literal-compare.md +6 -26
  203. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-condition.md +6 -16
  204. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-qualifier.md +6 -19
  205. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-arguments.md +6 -19
  206. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-assertion.md +8 -8
  207. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unnecessary-type-constraint.md +6 -15
  208. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-argument.md +6 -16
  209. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-assignment.md +6 -16
  210. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-call.md +6 -16
  211. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-member-access.md +6 -16
  212. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unsafe-return.md +6 -16
  213. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unused-expressions.md +6 -22
  214. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-unused-vars.md +6 -22
  215. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-use-before-define.md +6 -23
  216. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-useless-constructor.md +7 -23
  217. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-useless-empty-export.md +6 -15
  218. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/no-var-requires.md +6 -19
  219. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/non-nullable-type-assertion-style.md +6 -15
  220. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/object-curly-spacing.md +6 -22
  221. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/padding-line-between-statements.md +10 -31
  222. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/parameter-properties.md +6 -6
  223. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-as-const.md +6 -15
  224. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-enum-initializers.md +6 -15
  225. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-for-of.md +6 -19
  226. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-function-type.md +6 -19
  227. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-includes.md +6 -15
  228. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-literal-enum-member.md +6 -2
  229. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-namespace-keyword.md +6 -19
  230. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-nullish-coalescing.md +48 -2
  231. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-optional-chain.md +18 -17
  232. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-readonly-parameter-types.md +6 -15
  233. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-readonly.md +6 -8
  234. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-reduce-type-parameter.md +6 -15
  235. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-regexp-exec.md +6 -15
  236. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-return-this-type.md +6 -15
  237. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-string-starts-ends-with.md +6 -16
  238. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/prefer-ts-expect-error.md +6 -15
  239. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/promise-function-async.md +6 -35
  240. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/quotes.md +6 -22
  241. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-array-sort-compare.md +6 -18
  242. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/require-await.md +6 -20
  243. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/restrict-plus-operands.md +6 -28
  244. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/restrict-template-expressions.md +6 -27
  245. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/return-await.md +6 -12
  246. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/semi.md +6 -22
  247. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/sort-type-union-intersection-members.md +6 -45
  248. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-before-blocks.md +10 -22
  249. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-before-function-paren.md +6 -22
  250. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/space-infix-ops.md +7 -23
  251. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/strict-boolean-expressions.md +6 -26
  252. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/switch-exhaustiveness-check.md +6 -15
  253. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/triple-slash-reference.md +9 -24
  254. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/type-annotation-spacing.md +8 -18
  255. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/typedef.md +12 -32
  256. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unbound-method.md +7 -27
  257. package/node_modules/@typescript-eslint/eslint-plugin/docs/rules/unified-signatures.md +11 -21
  258. package/node_modules/@typescript-eslint/eslint-plugin/package.json +5 -5
  259. package/node_modules/@typescript-eslint/parser/README.md +1 -1
  260. package/node_modules/@typescript-eslint/parser/package.json +6 -5
  261. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts +2 -0
  262. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.d.ts.map +1 -1
  263. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js +12 -4
  264. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/ClassVisitor.js.map +1 -1
  265. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts +1 -0
  266. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.d.ts.map +1 -1
  267. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js +4 -0
  268. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/Referencer.js.map +1 -1
  269. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/TypeVisitor.d.ts.map +1 -1
  270. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/TypeVisitor.js +13 -7
  271. package/node_modules/@typescript-eslint/scope-manager/dist/referencer/TypeVisitor.js.map +1 -1
  272. package/node_modules/@typescript-eslint/scope-manager/dist/scope/ClassStaticBlockScope.d.ts +1 -1
  273. package/node_modules/@typescript-eslint/scope-manager/dist/scope/ClassStaticBlockScope.d.ts.map +1 -1
  274. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  275. package/node_modules/@typescript-eslint/type-utils/package.json +4 -4
  276. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts +22 -20
  277. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.d.ts.map +1 -1
  278. package/node_modules/@typescript-eslint/types/dist/generated/ast-spec.js.map +1 -1
  279. package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts +1 -0
  280. package/node_modules/@typescript-eslint/types/dist/parser-options.d.ts.map +1 -1
  281. package/node_modules/@typescript-eslint/types/package.json +3 -2
  282. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.d.ts.map +1 -1
  283. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js +9 -2
  284. package/node_modules/@typescript-eslint/typescript-estree/dist/convert.js.map +1 -1
  285. package/node_modules/@typescript-eslint/typescript-estree/dist/node-utils.d.ts +3 -0
  286. package/node_modules/@typescript-eslint/typescript-estree/dist/node-utils.d.ts.map +1 -1
  287. package/node_modules/@typescript-eslint/typescript-estree/dist/node-utils.js +21 -1
  288. package/node_modules/@typescript-eslint/typescript-estree/dist/node-utils.js.map +1 -1
  289. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts +1 -1
  290. package/node_modules/@typescript-eslint/typescript-estree/dist/ts-estree/estree-to-ts-node-types.d.ts.map +1 -1
  291. package/node_modules/@typescript-eslint/typescript-estree/package.json +6 -5
  292. package/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.d.ts.map +1 -1
  293. package/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js +2 -1
  294. package/node_modules/@typescript-eslint/utils/dist/eslint-utils/RuleCreator.js.map +1 -1
  295. package/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.d.ts.map +1 -1
  296. package/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js +3 -4
  297. package/node_modules/@typescript-eslint/utils/dist/eslint-utils/getParserServices.js.map +1 -1
  298. package/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts +4 -0
  299. package/node_modules/@typescript-eslint/utils/dist/ts-eslint/Rule.d.ts.map +1 -1
  300. package/node_modules/@typescript-eslint/utils/dist/ts-eslint/SourceCode.d.ts +1 -1
  301. package/node_modules/@typescript-eslint/utils/dist/ts-eslint/SourceCode.d.ts.map +1 -1
  302. package/node_modules/@typescript-eslint/utils/package.json +5 -5
  303. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js +1 -1
  304. package/node_modules/@typescript-eslint/visitor-keys/dist/visitor-keys.js.map +1 -1
  305. package/node_modules/@typescript-eslint/visitor-keys/package.json +4 -3
  306. package/node_modules/eslint-config-xo-typescript/index.js +27 -11
  307. package/node_modules/eslint-config-xo-typescript/package.json +5 -4
  308. package/package.json +10 -10
  309. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/containsAllTypesByName.d.ts +0 -8
  310. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/getConstrainedTypeAtLocation.d.ts +0 -6
  311. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/getContextualType.d.ts +0 -8
  312. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/getDeclaration.d.ts +0 -6
  313. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/getSourceFileOfNode.d.ts +0 -6
  314. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/getTokenAtPosition.d.ts +0 -3
  315. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/getTypeArguments.d.ts +0 -3
  316. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/getTypeName.d.ts +0 -8
  317. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/index.d.ts +0 -15
  318. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/isTypeReadonly.d.ts +0 -20
  319. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/isUnsafeAssignment.d.ts +0 -17
  320. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/predicates.d.ts +0 -52
  321. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/propertyTypes.d.ts +0 -4
  322. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/requiresQuoting.d.ts +0 -4
  323. package/node_modules/@typescript-eslint/type-utils/_ts3.4/dist/typeFlagUtils.d.ts +0 -11
  324. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/eslint-utils/PatternMatcher.d.ts +0 -48
  325. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/eslint-utils/ReferenceTracker.d.ts +0 -76
  326. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/eslint-utils/astUtilities.d.ts +0 -76
  327. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/eslint-utils/index.d.ts +0 -6
  328. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/eslint-utils/predicates.d.ts +0 -32
  329. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/eslint-utils/scopeAnalysis.d.ts +0 -18
  330. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/helpers.d.ts +0 -47
  331. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/index.d.ts +0 -5
  332. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/misc.d.ts +0 -8
  333. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ast-utils/predicates.d.ts +0 -180
  334. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/InferTypesFromRule.d.ts +0 -11
  335. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/RuleCreator.d.ts +0 -35
  336. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/RuleTester.d.ts +0 -18
  337. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/applyDefault.d.ts +0 -10
  338. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/batchedSingleLineTests.d.ts +0 -24
  339. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/deepMerge.d.ts +0 -17
  340. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/getParserServices.d.ts +0 -8
  341. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/index.d.ts +0 -9
  342. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/eslint-utils/nullThrows.d.ts +0 -14
  343. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/index.d.ts +0 -8
  344. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/json-schema.d.ts +0 -2
  345. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/AST.d.ts +0 -9
  346. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/CLIEngine.d.ts +0 -137
  347. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/ESLint.d.ts +0 -376
  348. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/Linter.d.ts +0 -326
  349. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/ParserOptions.d.ts +0 -2
  350. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/Rule.d.ts +0 -389
  351. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/RuleTester.d.ts +0 -154
  352. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/Scope.d.ts +0 -44
  353. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/SourceCode.d.ts +0 -342
  354. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint/index.d.ts +0 -10
  355. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/Definition.d.ts +0 -19
  356. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/Options.d.ts +0 -15
  357. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/PatternVisitor.d.ts +0 -25
  358. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/Reference.d.ts +0 -28
  359. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/Referencer.d.ts +0 -55
  360. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/Scope.d.ts +0 -103
  361. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/ScopeManager.d.ts +0 -50
  362. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/Variable.d.ts +0 -17
  363. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/analyze.d.ts +0 -16
  364. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-eslint-scope/index.d.ts +0 -11
  365. package/node_modules/@typescript-eslint/utils/_ts3.4/dist/ts-estree.d.ts +0 -3
@@ -1,8 +1,12 @@
1
- # `ban-types`
1
+ ---
2
+ description: 'Disallow certain types.'
3
+ ---
2
4
 
3
- Disallows certain types.
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/ban-types** for documentation.
4
8
 
5
- Some builtin types have aliases, some types are considered dangerous or harmful.
9
+ Some built-in types have aliases, while some types are considered dangerous or harmful.
6
10
  It's often a good idea to ban certain types to help with consistency and safety.
7
11
 
8
12
  ## Rule Details
@@ -10,72 +14,53 @@ It's often a good idea to ban certain types to help with consistency and safety.
10
14
  This rule bans specific types and can suggest alternatives.
11
15
  Note that it does not ban the corresponding runtime objects from being used.
12
16
 
13
- ## Options
14
-
15
- ```ts
16
- type Options = {
17
- types?: {
18
- [typeName: string]:
19
- | false
20
- | string
21
- | {
22
- message: string;
23
- fixWith?: string;
24
- };
25
- };
26
- extendDefaults?: boolean;
27
- };
28
- ```
29
-
30
- The rule accepts a single object as options.
31
-
32
- ### `types`
17
+ Examples of code with the default options:
33
18
 
34
- An object whose keys are the types you want to ban, and the values are error messages.
19
+ <!--tabs-->
35
20
 
36
- The type can either be a type name literal (`Foo`), a type name with generic parameter instantiation(s) (`Foo<Bar>`), the empty object literal (`{}`), or the empty tuple type (`[]`).
21
+ ### Incorrect
37
22
 
38
- The values can be:
23
+ ```ts
24
+ // use lower-case primitives for consistency
25
+ const str: String = 'foo';
26
+ const bool: Boolean = true;
27
+ const num: Number = 1;
28
+ const symb: Symbol = Symbol('foo');
29
+ const bigInt: BigInt = 1n;
39
30
 
40
- - A string, which is the error message to be reported; or
41
- - `false` to specifically un-ban this type (useful when you are using `extendDefaults`); or
42
- - An object with the following properties:
43
- - `message: string` - the message to display when the type is matched.
44
- - `fixWith?: string` - a string to replace the banned type with when the fixer is run. If this is omitted, no fix will be done.
31
+ // use a proper function type
32
+ const func: Function = () => 1;
45
33
 
46
- ### `extendDefaults`
34
+ // use safer object types
35
+ const lowerObj: Object = {};
36
+ const capitalObj: Object = { a: 'string' };
47
37
 
48
- If you're specifying custom `types`, you can set this to `true` to extend the default `types` configuration. This is a convenience option to save you copying across the defaults when adding another type.
38
+ const curly1: {} = 1;
39
+ const curly2: {} = { a: 'string' };
40
+ ```
49
41
 
50
- If this is `false`, the rule will _only_ use the types defined in your configuration.
42
+ ### Correct
51
43
 
52
- Example configuration:
44
+ ```ts
45
+ // use lower-case primitives for consistency
46
+ const str: string = 'foo';
47
+ const bool: boolean = true;
48
+ const num: number = 1;
49
+ const symb: symbol = Symbol('foo');
50
+ const bigInt: bigint = 1n;
53
51
 
54
- ```jsonc
55
- {
56
- "@typescript-eslint/ban-types": [
57
- "error",
58
- {
59
- "types": {
60
- // add a custom message to help explain why not to use it
61
- "Foo": "Don't use Foo because it is unsafe",
52
+ // use a proper function type
53
+ const func: () => number = () => 1;
62
54
 
63
- // add a custom message, AND tell the plugin how to fix it
64
- "OldAPI": {
65
- "message": "Use NewAPI instead",
66
- "fixWith": "NewAPI"
67
- },
55
+ // use safer object types
56
+ const lowerObj: object = {};
57
+ const capitalObj: { a: string } = { a: 'string' };
68
58
 
69
- // un-ban a type that's banned by default
70
- "{}": false
71
- },
72
- "extendDefaults": true
73
- }
74
- ]
75
- }
59
+ const curly1: number = 1;
60
+ const curly2: Record<'a', string> = { a: 'string' };
76
61
  ```
77
62
 
78
- ### Default Options
63
+ ## Options
79
64
 
80
65
  The default options provide a set of "best practices", intended to provide safety and standardization in your codebase:
81
66
 
@@ -118,7 +103,6 @@ const defaultTypes = {
118
103
  message: 'Use bigint instead',
119
104
  fixWith: 'bigint',
120
105
  },
121
-
122
106
  Function: {
123
107
  message: [
124
108
  'The `Function` type accepts any function-like value.',
@@ -127,7 +111,6 @@ const defaultTypes = {
127
111
  'If you are expecting the function to accept certain arguments, you should explicitly define the function shape.',
128
112
  ].join('\n'),
129
113
  },
130
-
131
114
  // object typing
132
115
  Object: {
133
116
  message: [
@@ -148,56 +131,48 @@ const defaultTypes = {
148
131
 
149
132
  </details>
150
133
 
151
- ### Examples
152
-
153
- Examples of code with the default options:
154
-
155
- <!--tabs-->
134
+ ### `types`
156
135
 
157
- #### Incorrect
136
+ An object whose keys are the types you want to ban, and the values are error messages.
158
137
 
159
- ```ts
160
- // use lower-case primitives for consistency
161
- const str: String = 'foo';
162
- const bool: Boolean = true;
163
- const num: Number = 1;
164
- const symb: Symbol = Symbol('foo');
165
- const bigInt: BigInt = 1n;
138
+ The type can either be a type name literal (`Foo`), a type name with generic parameter instantiation(s) (`Foo<Bar>`), the empty object literal (`{}`), or the empty tuple type (`[]`).
166
139
 
167
- // use a proper function type
168
- const func: Function = () => 1;
140
+ The values can be:
169
141
 
170
- // use safer object types
171
- const capitalObj1: Object = 1;
172
- const capitalObj2: Object = { a: 'string' };
142
+ - A string, which is the error message to be reported; or
143
+ - `false` to specifically un-ban this type (useful when you are using `extendDefaults`); or
144
+ - An object with the following properties:
145
+ - `message: string` - the message to display when the type is matched.
146
+ - `fixWith?: string` - a string to replace the banned type with when the fixer is run. If this is omitted, no fix will be done.
173
147
 
174
- const curly1: {} = 1;
175
- const curly2: {} = { a: 'string' };
176
- ```
148
+ ### `extendDefaults`
177
149
 
178
- #### Correct
150
+ If you're specifying custom `types`, you can set this to `true` to extend the default `types` configuration. This is a convenience option to save you copying across the defaults when adding another type.
179
151
 
180
- ```ts
181
- // use lower-case primitives for consistency
182
- const str: string = 'foo';
183
- const bool: boolean = true;
184
- const num: number = 1;
185
- const symb: symbol = Symbol('foo');
186
- const bigInt: bigint = 1n;
152
+ If this is `false`, the rule will _only_ use the types defined in your configuration.
187
153
 
188
- // use a proper function type
189
- const func: () => number = () => 1;
154
+ Example configuration:
190
155
 
191
- // use safer object types
192
- const lowerObj: object = {};
156
+ ```jsonc
157
+ {
158
+ "@typescript-eslint/ban-types": [
159
+ "error",
160
+ {
161
+ "types": {
162
+ // add a custom message to help explain why not to use it
163
+ "Foo": "Don't use Foo because it is unsafe",
193
164
 
194
- const capitalObj1: number = 1;
195
- const capitalObj2: { a: string } = { a: 'string' };
165
+ // add a custom message, AND tell the plugin how to fix it
166
+ "OldAPI": {
167
+ "message": "Use NewAPI instead",
168
+ "fixWith": "NewAPI"
169
+ },
196
170
 
197
- const curly1: number = 1;
198
- const curly2: Record<'a', string> = { a: 'string' };
171
+ // un-ban a type that's banned by default
172
+ "{}": false
173
+ },
174
+ "extendDefaults": true
175
+ }
176
+ ]
177
+ }
199
178
  ```
200
-
201
- ## Related To
202
-
203
- - TSLint: [ban-types](https://palantir.github.io/tslint/rules/ban-types)
@@ -1,28 +1,12 @@
1
- # `brace-style`
1
+ ---
2
+ description: 'Enforce consistent brace style for blocks.'
3
+ ---
2
4
 
3
- Enforces consistent brace style for blocks.
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/brace-style** for documentation.
4
8
 
5
9
  ## Rule Details
6
10
 
7
11
  This rule extends the base [`eslint/brace-style`](https://eslint.org/docs/rules/brace-style) rule.
8
12
  It adds support for `enum`, `interface`, `namespace` and `module` declarations.
9
-
10
- ## How to Use
11
-
12
- ```jsonc
13
- {
14
- // note you must disable the base rule as it can report incorrect errors
15
- "brace-style": "off",
16
- "@typescript-eslint/brace-style": ["error"]
17
- }
18
- ```
19
-
20
- ## Options
21
-
22
- See [`eslint/brace-style` options](https://eslint.org/docs/rules/brace-style#options).
23
-
24
- <sup>
25
-
26
- Taken with ❤️ [from ESLint core](https://github.com/eslint/eslint/blob/main/docs/rules/brace-style.md)
27
-
28
- </sup>
@@ -1,7 +1,9 @@
1
- ## DEPRECATED
1
+ :::danger Deprecated
2
2
 
3
3
  This rule has been deprecated in favour of the [`naming-convention`](./naming-convention.md) rule.
4
4
 
5
+ :::
6
+
5
7
  <!--
6
8
  This doc file has been left on purpose because `camelcase` is a core eslint rule.
7
9
  This exists to help direct people to the replacement rule.
@@ -1,11 +1,15 @@
1
- # `class-literal-property-style`
1
+ ---
2
+ description: 'Enforce that literals on classes are exposed in a consistent style.'
3
+ ---
2
4
 
3
- Enforces that literals on classes are exposed in a consistent style.
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/class-literal-property-style** for documentation.
4
8
 
5
9
  When writing TypeScript applications, it's typically safe to store literal values on classes using fields with the `readonly` modifier to prevent them from being reassigned.
6
10
  When writing TypeScript libraries that could be used by JavaScript users however, it's typically safer to expose these literals using `getter`s, since the `readonly` modifier is enforced at compile type.
7
11
 
8
- ## Rule Details
12
+ ## Options
9
13
 
10
14
  This rule aims to ensure that literals exposed by classes are done so consistently, in one of the two style described above.
11
15
  By default this rule prefers the `fields` style as it means JS doesn't have to setup & teardown a function closure.
@@ -17,7 +21,7 @@ This is because these types can be mutated and carry with them more complex impl
17
21
 
18
22
  :::
19
23
 
20
- ### The `fields` style
24
+ ### `"fields"`
21
25
 
22
26
  This style checks for any getter methods that return literal values, and requires them to be defined using fields with the `readonly` modifier instead.
23
27
 
@@ -60,7 +64,7 @@ class Mx {
60
64
  }
61
65
  ```
62
66
 
63
- ### The `getters` style
67
+ ### `"getters"`
64
68
 
65
69
  This style checks for any `readonly` fields that are assigned literal values, and requires them to be defined as getters instead.
66
70
  This style pairs well with the [`@typescript-eslint/prefer-readonly`](prefer-readonly.md) rule,
@@ -1,6 +1,10 @@
1
- # `comma-dangle`
1
+ ---
2
+ description: 'Require or disallow trailing commas.'
3
+ ---
2
4
 
3
- Requires or disallows trailing commas.
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/comma-dangle** for documentation.
4
8
 
5
9
  ## Rule Details
6
10
 
@@ -9,32 +13,10 @@ It adds support for TypeScript syntax.
9
13
 
10
14
  See the [ESLint documentation](https://eslint.org/docs/rules/comma-dangle) for more details on the `comma-dangle` rule.
11
15
 
12
- ## Rule Changes
13
-
14
- ```jsonc
15
- {
16
- // note you must disable the base rule as it can report incorrect errors
17
- "comma-dangle": "off",
18
- "@typescript-eslint/comma-dangle": ["error"]
19
- }
20
- ```
16
+ ## How to Use
21
17
 
22
18
  In addition to the options supported by the `comma-dangle` rule in ESLint core, the rule adds the following options:
23
19
 
24
- ## Options
25
-
26
- This rule has a string option and an object option.
27
-
28
- - Object option:
29
-
30
- - `"enums"` is for trailing comma in enum. (e.g. `enum Foo = {Bar,}`)
31
- - `"generics"` is for trailing comma in generic. (e.g. `function foo<T,>() {}`)
32
- - `"tuples"` is for trailing comma in tuple. (e.g. `type Foo = [string,]`)
33
-
34
- - [See the other options allowed](https://eslint.org/docs/rules/comma-dangle#options)
35
-
36
- <sup>
37
-
38
- Taken with ❤️ [from ESLint core](https://github.com/eslint/eslint/blob/main/docs/rules/comma-dangle.md)
39
-
40
- </sup>
20
+ - `"enums"` is for trailing comma in enum. (e.g. `enum Foo = {Bar,}`)
21
+ - `"generics"` is for trailing comma in generic. (e.g. `function foo<T,>() {}`)
22
+ - `"tuples"` is for trailing comma in tuple. (e.g. `type Foo = [string,]`)
@@ -1,28 +1,12 @@
1
- # `comma-spacing`
1
+ ---
2
+ description: 'Enforce consistent spacing before and after commas.'
3
+ ---
2
4
 
3
- Enforces consistent spacing before and after commas.
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/comma-spacing** for documentation.
4
8
 
5
9
  ## Rule Details
6
10
 
7
11
  This rule extends the base [`eslint/comma-spacing`](https://eslint.org/docs/rules/comma-spacing) rule.
8
12
  It adds support for trailing comma in a types parameters list.
9
-
10
- ## How to Use
11
-
12
- ```jsonc
13
- {
14
- // note you must disable the base rule as it can report incorrect errors
15
- "comma-spacing": "off",
16
- "@typescript-eslint/comma-spacing": ["error"]
17
- }
18
- ```
19
-
20
- ## Options
21
-
22
- See [`eslint/comma-spacing` options](https://eslint.org/docs/rules/comma-spacing#options).
23
-
24
- <sup>
25
-
26
- Taken with ❤️ [from ESLint core](https://github.com/eslint/eslint/blob/main/docs/rules/comma-spacing.md)
27
-
28
- </sup>
@@ -0,0 +1,73 @@
1
+ ---
2
+ description: 'Enforce specifying generic type arguments on type annotation or constructor name of a constructor call.'
3
+ ---
4
+
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/consistent-generic-constructors** for documentation.
8
+
9
+ When constructing a generic class, you can specify the type arguments on either the left-hand side (as a type annotation) or the right-hand side (as part of the constructor call):
10
+
11
+ ```ts
12
+ // Left-hand side
13
+ const map: Map<string, number> = new Map();
14
+
15
+ // Right-hand side
16
+ const map = new Map<string, number>();
17
+ ```
18
+
19
+ This rule ensures that type arguments appear consistently on one side of the declaration.
20
+
21
+ ## Rule Details
22
+
23
+ The rule never reports when there are type parameters on both sides, or neither sides of the declaration. It also doesn't report if the names of the type annotation and the constructor don't match.
24
+
25
+ ## Options
26
+
27
+ - `constructor` _(default)_: type arguments that **only** appear on the type annotation are disallowed.
28
+ - `type-annotation`: type arguments that **only** appear on the constructor are disallowed.
29
+
30
+ ### `constructor`
31
+
32
+ <!--tabs-->
33
+
34
+ #### ❌ Incorrect
35
+
36
+ ```ts
37
+ const map: Map<string, number> = new Map();
38
+ const set: Set<string> = new Set();
39
+ ```
40
+
41
+ #### ✅ Correct
42
+
43
+ ```ts
44
+ const map = new Map<string, number>();
45
+ const map: Map<string, number> = new MyMap();
46
+ const set = new Set<string>();
47
+ const set = new Set();
48
+ const set: Set<string> = new Set<string>();
49
+ ```
50
+
51
+ ### `type-annotation`
52
+
53
+ <!--tabs-->
54
+
55
+ #### ❌ Incorrect
56
+
57
+ ```ts
58
+ const map = new Map<string, number>();
59
+ const set = new Set<string>();
60
+ ```
61
+
62
+ #### ✅ Correct
63
+
64
+ ```ts
65
+ const map: Map<string, number> = new Map();
66
+ const set: Set<string> = new Set();
67
+ const set = new Set();
68
+ const set: Set<string> = new Set<string>();
69
+ ```
70
+
71
+ ## When Not To Use It
72
+
73
+ You can turn this rule off if you don't want to enforce one kind of generic constructor style over the other.
@@ -1,6 +1,10 @@
1
- # `consistent-indexed-object-style`
1
+ ---
2
+ description: 'Require or disallow the `Record` type.'
3
+ ---
2
4
 
3
- Requires or disallows the `Record` type.
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/consistent-indexed-object-style** for documentation.
4
8
 
5
9
  TypeScript supports defining object show keys can be flexible using an index signature. TypeScript also has a builtin type named `Record` to create an empty object defining only an index signature. For example, the following types are equal:
6
10
 
@@ -16,34 +20,24 @@ type Foo = {
16
20
  type Foo = Record<string, unknown>;
17
21
  ```
18
22
 
19
- ## Options
20
-
21
- - `"record"`: Set to `"record"` to only allow the `Record` type. Set to `"index-signature"` to only allow index signatures. (Defaults to `"record"`)
22
-
23
- For example:
24
-
25
- ```json
26
- {
27
- "@typescript-eslint/consistent-indexed-object-style": [
28
- "error",
29
- "index-signature"
30
- ]
31
- }
32
- ```
33
-
34
23
  ## Rule Details
35
24
 
36
25
  This rule enforces a consistent way to define records.
37
26
 
38
- ### `record`
27
+ ## Options
28
+
29
+ - `"record"` _(default)_: only allow the `Record` type.
30
+ - `"index-signature"`: only allow index signatures.
39
31
 
40
- Examples of code with `record` option.
32
+ ### `record`
41
33
 
42
34
  <!--tabs-->
43
35
 
44
36
  #### ❌ Incorrect
45
37
 
46
38
  ```ts
39
+ /* eslint @typescript-eslint/consistent-indexed-object-style: ["error", "record"] */
40
+
47
41
  interface Foo {
48
42
  [key: string]: unknown;
49
43
  }
@@ -56,24 +50,28 @@ type Foo = {
56
50
  #### ✅ Correct
57
51
 
58
52
  ```ts
53
+ /* eslint @typescript-eslint/consistent-indexed-object-style: ["error", "record"] */
54
+
59
55
  type Foo = Record<string, unknown>;
60
56
  ```
61
57
 
62
58
  ### `index-signature`
63
59
 
64
- Examples of code with `index-signature` option.
65
-
66
60
  <!--tabs-->
67
61
 
68
62
  #### ❌ Incorrect
69
63
 
70
64
  ```ts
65
+ /* eslint @typescript-eslint/consistent-indexed-object-style: ["error", "index-signature"] */
66
+
71
67
  type Foo = Record<string, unknown>;
72
68
  ```
73
69
 
74
70
  #### ✅ Correct
75
71
 
76
72
  ```ts
73
+ /* eslint @typescript-eslint/consistent-indexed-object-style: ["error", "index-signature"] */
74
+
77
75
  interface Foo {
78
76
  [key: string]: unknown;
79
77
  }
@@ -1,6 +1,10 @@
1
- # `consistent-type-assertions`
1
+ ---
2
+ description: 'Enforce consistent usage of type assertions.'
3
+ ---
2
4
 
3
- Enforces consistent usage of type assertions.
5
+ > 🛑 This file is source code, not the primary documentation location! 🛑
6
+ >
7
+ > See **https://typescript-eslint.io/rules/consistent-type-assertions** for documentation.
4
8
 
5
9
  ## Rule Details
6
10
 
@@ -10,26 +14,10 @@ Type assertions are also commonly referred as "type casting" in TypeScript (even
10
14
 
11
15
  In addition to ensuring that type assertions are written in a consistent way, this rule also helps make your codebase more type-safe.
12
16
 
13
- `const` assertions, [introduced in TypeScript 3.4](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions), is always allowed by this rule. Examples of it include `let x = "hello" as const;` and `let x = <const>"hello";`.
17
+ [`const` assertions](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-4.html#const-assertions) are always allowed by this rule. Examples of them include `let x = "hello" as const;` and `let x = <const>"hello";`.
14
18
 
15
19
  ## Options
16
20
 
17
- ```ts
18
- type Options =
19
- | {
20
- assertionStyle: 'as' | 'angle-bracket';
21
- objectLiteralTypeAssertions: 'allow' | 'allow-as-parameter' | 'never';
22
- }
23
- | {
24
- assertionStyle: 'never';
25
- };
26
-
27
- const defaultOptions: Options = {
28
- assertionStyle: 'as',
29
- objectLiteralTypeAssertions: 'allow',
30
- };
31
- ```
32
-
33
21
  ### `assertionStyle`
34
22
 
35
23
  This option defines the expected assertion style. Valid values for `assertionStyle` are:
@@ -52,7 +40,7 @@ The const assertion `const x = { foo: 1 } as const`, introduced in TypeScript 3.
52
40
 
53
41
  Assertions to `any` are also ignored by this option.
54
42
 
55
- Examples of code for `{ assertionStyle: 'as', objectLiteralTypeAssertions: 'never' }`
43
+ Examples of code for `{ assertionStyle: 'as', objectLiteralTypeAssertions: 'never' }`:
56
44
 
57
45
  <!--tabs-->
58
46
 
@@ -80,7 +68,7 @@ function foo(): T {
80
68
 
81
69
  <!--/tabs-->
82
70
 
83
- Examples of code for `{ assertionStyle: 'as', objectLiteralTypeAssertions: 'allow-as-parameter' }`
71
+ Examples of code for `{ assertionStyle: 'as', objectLiteralTypeAssertions: 'allow-as-parameter' }`:
84
72
 
85
73
  <!--tabs-->
86
74
 
@@ -111,8 +99,3 @@ const foo = <Foo props={{ ... } as Bar}/>;
111
99
  ## When Not To Use It
112
100
 
113
101
  If you do not want to enforce consistent type assertions.
114
-
115
- ## Related To
116
-
117
- - TSLint: [no-angle-bracket-type-assertion](https://palantir.github.io/tslint/rules/no-angle-bracket-type-assertion/)
118
- - TSLint: [no-object-literal-type-assertion](https://palantir.github.io/tslint/rules/no-object-literal-type-assertion/)