@typescript-eslint/eslint-plugin 8.8.2-alpha.0 → 8.8.2-alpha.10

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 (307) hide show
  1. package/dist/configs/eslint-recommended-raw.js +2 -2
  2. package/dist/configs/eslint-recommended-raw.js.map +1 -1
  3. package/dist/index.js +23 -21
  4. package/dist/index.js.map +1 -1
  5. package/dist/rules/adjacent-overload-signatures.js +7 -7
  6. package/dist/rules/adjacent-overload-signatures.js.map +1 -1
  7. package/dist/rules/array-type.js +6 -6
  8. package/dist/rules/array-type.js.map +1 -1
  9. package/dist/rules/await-thenable.js +3 -3
  10. package/dist/rules/await-thenable.js.map +1 -1
  11. package/dist/rules/ban-ts-comment.js +19 -19
  12. package/dist/rules/ban-ts-comment.js.map +1 -1
  13. package/dist/rules/ban-tslint-comment.js +2 -2
  14. package/dist/rules/ban-tslint-comment.js.map +1 -1
  15. package/dist/rules/class-literal-property-style.js +2 -2
  16. package/dist/rules/class-literal-property-style.js.map +1 -1
  17. package/dist/rules/class-methods-use-this.js +23 -23
  18. package/dist/rules/class-methods-use-this.js.map +1 -1
  19. package/dist/rules/consistent-generic-constructors.js +3 -3
  20. package/dist/rules/consistent-generic-constructors.js.map +1 -1
  21. package/dist/rules/consistent-indexed-object-style.js +6 -6
  22. package/dist/rules/consistent-indexed-object-style.js.map +1 -1
  23. package/dist/rules/consistent-return.js +6 -6
  24. package/dist/rules/consistent-return.js.map +1 -1
  25. package/dist/rules/consistent-type-assertions.js +13 -13
  26. package/dist/rules/consistent-type-assertions.js.map +1 -1
  27. package/dist/rules/consistent-type-definitions.js +1 -1
  28. package/dist/rules/consistent-type-definitions.js.map +1 -1
  29. package/dist/rules/consistent-type-exports.js +8 -8
  30. package/dist/rules/consistent-type-exports.js.map +1 -1
  31. package/dist/rules/consistent-type-imports.js +17 -17
  32. package/dist/rules/consistent-type-imports.js.map +1 -1
  33. package/dist/rules/default-param-last.js +1 -1
  34. package/dist/rules/default-param-last.js.map +1 -1
  35. package/dist/rules/dot-notation.js +16 -16
  36. package/dist/rules/dot-notation.js.map +1 -1
  37. package/dist/rules/explicit-function-return-type.js +28 -28
  38. package/dist/rules/explicit-function-return-type.js.map +1 -1
  39. package/dist/rules/explicit-member-accessibility.js +22 -22
  40. package/dist/rules/explicit-member-accessibility.js.map +1 -1
  41. package/dist/rules/explicit-module-boundary-types.js +17 -17
  42. package/dist/rules/explicit-module-boundary-types.js.map +1 -1
  43. package/dist/rules/index.js +2 -2
  44. package/dist/rules/index.js.map +1 -1
  45. package/dist/rules/init-declarations.js +1 -1
  46. package/dist/rules/init-declarations.js.map +1 -1
  47. package/dist/rules/max-params.js +9 -9
  48. package/dist/rules/max-params.js.map +1 -1
  49. package/dist/rules/member-ordering.js +24 -23
  50. package/dist/rules/member-ordering.js.map +1 -1
  51. package/dist/rules/method-signature-style.js.map +1 -1
  52. package/dist/rules/naming-convention-utils/format.js +3 -3
  53. package/dist/rules/naming-convention-utils/format.js.map +1 -1
  54. package/dist/rules/naming-convention-utils/index.js +3 -3
  55. package/dist/rules/naming-convention-utils/index.js.map +1 -1
  56. package/dist/rules/naming-convention-utils/parse-options.js +14 -14
  57. package/dist/rules/naming-convention-utils/parse-options.js.map +1 -1
  58. package/dist/rules/naming-convention-utils/schema.js +54 -54
  59. package/dist/rules/naming-convention-utils/schema.js.map +1 -1
  60. package/dist/rules/naming-convention-utils/shared.js +1 -1
  61. package/dist/rules/naming-convention-utils/shared.js.map +1 -1
  62. package/dist/rules/naming-convention-utils/validator.js +26 -26
  63. package/dist/rules/naming-convention-utils/validator.js.map +1 -1
  64. package/dist/rules/naming-convention.js +133 -133
  65. package/dist/rules/naming-convention.js.map +1 -1
  66. package/dist/rules/no-array-constructor.js +1 -1
  67. package/dist/rules/no-array-constructor.js.map +1 -1
  68. package/dist/rules/no-array-delete.js +1 -1
  69. package/dist/rules/no-array-delete.js.map +1 -1
  70. package/dist/rules/no-base-to-string.js +6 -6
  71. package/dist/rules/no-base-to-string.js.map +1 -1
  72. package/dist/rules/no-confusing-non-null-assertion.js +2 -2
  73. package/dist/rules/no-confusing-non-null-assertion.js.map +1 -1
  74. package/dist/rules/no-confusing-void-expression.js +10 -10
  75. package/dist/rules/no-confusing-void-expression.js.map +1 -1
  76. package/dist/rules/no-deprecated.js +3 -3
  77. package/dist/rules/no-deprecated.js.map +1 -1
  78. package/dist/rules/no-dupe-class-members.js +1 -1
  79. package/dist/rules/no-dupe-class-members.js.map +1 -1
  80. package/dist/rules/no-duplicate-enum-values.js.map +1 -1
  81. package/dist/rules/no-duplicate-type-constituents.js +8 -8
  82. package/dist/rules/no-duplicate-type-constituents.js.map +1 -1
  83. package/dist/rules/no-dynamic-delete.js +4 -4
  84. package/dist/rules/no-dynamic-delete.js.map +1 -1
  85. package/dist/rules/no-empty-function.js +2 -2
  86. package/dist/rules/no-empty-function.js.map +1 -1
  87. package/dist/rules/no-empty-interface.js +3 -3
  88. package/dist/rules/no-empty-interface.js.map +1 -1
  89. package/dist/rules/no-empty-object-type.js +11 -11
  90. package/dist/rules/no-empty-object-type.js.map +1 -1
  91. package/dist/rules/no-explicit-any.js +9 -9
  92. package/dist/rules/no-explicit-any.js.map +1 -1
  93. package/dist/rules/no-extra-non-null-assertion.js +3 -3
  94. package/dist/rules/no-extra-non-null-assertion.js.map +1 -1
  95. package/dist/rules/no-extraneous-class.js +9 -9
  96. package/dist/rules/no-extraneous-class.js.map +1 -1
  97. package/dist/rules/no-floating-promises.js +14 -14
  98. package/dist/rules/no-floating-promises.js.map +1 -1
  99. package/dist/rules/no-for-in-array.js +1 -1
  100. package/dist/rules/no-for-in-array.js.map +1 -1
  101. package/dist/rules/no-implied-eval.js +6 -6
  102. package/dist/rules/no-implied-eval.js.map +1 -1
  103. package/dist/rules/no-import-type-side-effects.js.map +1 -1
  104. package/dist/rules/no-inferrable-types.js +7 -7
  105. package/dist/rules/no-inferrable-types.js.map +1 -1
  106. package/dist/rules/no-invalid-this.js +7 -7
  107. package/dist/rules/no-invalid-this.js.map +1 -1
  108. package/dist/rules/no-invalid-void-type.js +12 -12
  109. package/dist/rules/no-invalid-void-type.js.map +1 -1
  110. package/dist/rules/no-loop-func.js +137 -118
  111. package/dist/rules/no-loop-func.js.map +1 -1
  112. package/dist/rules/no-loss-of-precision.js +1 -1
  113. package/dist/rules/no-loss-of-precision.js.map +1 -1
  114. package/dist/rules/no-magic-numbers.js +11 -11
  115. package/dist/rules/no-magic-numbers.js.map +1 -1
  116. package/dist/rules/no-meaningless-void-operator.js +2 -2
  117. package/dist/rules/no-meaningless-void-operator.js.map +1 -1
  118. package/dist/rules/no-misused-new.js +11 -11
  119. package/dist/rules/no-misused-new.js.map +1 -1
  120. package/dist/rules/no-misused-promises.js +29 -29
  121. package/dist/rules/no-misused-promises.js.map +1 -1
  122. package/dist/rules/no-mixed-enums.js +2 -2
  123. package/dist/rules/no-mixed-enums.js.map +1 -1
  124. package/dist/rules/no-namespace.js +3 -3
  125. package/dist/rules/no-namespace.js.map +1 -1
  126. package/dist/rules/no-non-null-asserted-nullish-coalescing.js +1 -1
  127. package/dist/rules/no-non-null-asserted-nullish-coalescing.js.map +1 -1
  128. package/dist/rules/no-non-null-assertion.js.map +1 -1
  129. package/dist/rules/no-redeclare.js +25 -25
  130. package/dist/rules/no-redeclare.js.map +1 -1
  131. package/dist/rules/no-redundant-type-constituents.js +20 -20
  132. package/dist/rules/no-redundant-type-constituents.js.map +1 -1
  133. package/dist/rules/no-require-imports.js +5 -5
  134. package/dist/rules/no-require-imports.js.map +1 -1
  135. package/dist/rules/no-restricted-imports.js +20 -20
  136. package/dist/rules/no-restricted-imports.js.map +1 -1
  137. package/dist/rules/no-restricted-types.js +9 -9
  138. package/dist/rules/no-restricted-types.js.map +1 -1
  139. package/dist/rules/no-shadow.js +27 -27
  140. package/dist/rules/no-shadow.js.map +1 -1
  141. package/dist/rules/no-this-alias.js +6 -6
  142. package/dist/rules/no-this-alias.js.map +1 -1
  143. package/dist/rules/no-type-alias.js +19 -19
  144. package/dist/rules/no-type-alias.js.map +1 -1
  145. package/dist/rules/no-unnecessary-boolean-literal-compare.js +29 -29
  146. package/dist/rules/no-unnecessary-boolean-literal-compare.js.map +1 -1
  147. package/dist/rules/no-unnecessary-condition.js +27 -27
  148. package/dist/rules/no-unnecessary-condition.js.map +1 -1
  149. package/dist/rules/no-unnecessary-parameter-property-assignment.js +19 -19
  150. package/dist/rules/no-unnecessary-parameter-property-assignment.js.map +1 -1
  151. package/dist/rules/no-unnecessary-qualifier.js +13 -13
  152. package/dist/rules/no-unnecessary-qualifier.js.map +1 -1
  153. package/dist/rules/no-unnecessary-template-expression.js +3 -3
  154. package/dist/rules/no-unnecessary-template-expression.js.map +1 -1
  155. package/dist/rules/no-unnecessary-type-arguments.js +1 -1
  156. package/dist/rules/no-unnecessary-type-arguments.js.map +1 -1
  157. package/dist/rules/no-unnecessary-type-assertion.js +44 -44
  158. package/dist/rules/no-unnecessary-type-assertion.js.map +1 -1
  159. package/dist/rules/no-unnecessary-type-constraint.js +6 -6
  160. package/dist/rules/no-unnecessary-type-constraint.js.map +1 -1
  161. package/dist/rules/no-unnecessary-type-parameters.js +8 -12
  162. package/dist/rules/no-unnecessary-type-parameters.js.map +1 -1
  163. package/dist/rules/no-unsafe-argument.js +16 -16
  164. package/dist/rules/no-unsafe-argument.js.map +1 -1
  165. package/dist/rules/no-unsafe-assignment.js +12 -12
  166. package/dist/rules/no-unsafe-assignment.js.map +1 -1
  167. package/dist/rules/no-unsafe-call.js.map +1 -1
  168. package/dist/rules/no-unsafe-declaration-merging.js.map +1 -1
  169. package/dist/rules/no-unsafe-enum-comparison.js +3 -3
  170. package/dist/rules/no-unsafe-enum-comparison.js.map +1 -1
  171. package/dist/rules/no-unsafe-function-type.js.map +1 -1
  172. package/dist/rules/no-unsafe-member-access.js +3 -3
  173. package/dist/rules/no-unsafe-member-access.js.map +1 -1
  174. package/dist/rules/no-unsafe-return.js +4 -4
  175. package/dist/rules/no-unsafe-return.js.map +1 -1
  176. package/dist/rules/no-unsafe-unary-minus.js +1 -1
  177. package/dist/rules/no-unsafe-unary-minus.js.map +1 -1
  178. package/dist/rules/no-unused-expressions.js +2 -2
  179. package/dist/rules/no-unused-expressions.js.map +1 -1
  180. package/dist/rules/no-unused-vars.js +40 -36
  181. package/dist/rules/no-unused-vars.js.map +1 -1
  182. package/dist/rules/no-use-before-define.js +20 -20
  183. package/dist/rules/no-use-before-define.js.map +1 -1
  184. package/dist/rules/no-useless-constructor.js +2 -2
  185. package/dist/rules/no-useless-constructor.js.map +1 -1
  186. package/dist/rules/no-useless-empty-export.js +3 -3
  187. package/dist/rules/no-useless-empty-export.js.map +1 -1
  188. package/dist/rules/no-var-requires.js +4 -4
  189. package/dist/rules/no-var-requires.js.map +1 -1
  190. package/dist/rules/no-wrapper-object-types.js +3 -3
  191. package/dist/rules/no-wrapper-object-types.js.map +1 -1
  192. package/dist/rules/non-nullable-type-assertion-style.js +3 -3
  193. package/dist/rules/non-nullable-type-assertion-style.js.map +1 -1
  194. package/dist/rules/only-throw-error.js +8 -8
  195. package/dist/rules/only-throw-error.js.map +1 -1
  196. package/dist/rules/parameter-properties.js +9 -9
  197. package/dist/rules/parameter-properties.js.map +1 -1
  198. package/dist/rules/prefer-as-const.js +5 -5
  199. package/dist/rules/prefer-as-const.js.map +1 -1
  200. package/dist/rules/prefer-destructuring.js +13 -13
  201. package/dist/rules/prefer-destructuring.js.map +1 -1
  202. package/dist/rules/prefer-find.js +3 -3
  203. package/dist/rules/prefer-find.js.map +1 -1
  204. package/dist/rules/prefer-for-of.js.map +1 -1
  205. package/dist/rules/prefer-function-type.js +9 -9
  206. package/dist/rules/prefer-function-type.js.map +1 -1
  207. package/dist/rules/prefer-includes.js +6 -6
  208. package/dist/rules/prefer-includes.js.map +1 -1
  209. package/dist/rules/prefer-literal-enum-member.js +8 -5
  210. package/dist/rules/prefer-literal-enum-member.js.map +1 -1
  211. package/dist/rules/prefer-nullish-coalescing.js +9 -9
  212. package/dist/rules/prefer-nullish-coalescing.js.map +1 -1
  213. package/dist/rules/prefer-optional-chain-utils/analyzeChain.js +4 -4
  214. package/dist/rules/prefer-optional-chain-utils/analyzeChain.js.map +1 -1
  215. package/dist/rules/prefer-optional-chain-utils/checkNullishAndReport.js.map +1 -1
  216. package/dist/rules/prefer-optional-chain-utils/compareNodes.js.map +1 -1
  217. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js +9 -9
  218. package/dist/rules/prefer-optional-chain-utils/gatherLogicalOperands.js.map +1 -1
  219. package/dist/rules/prefer-optional-chain.js +42 -42
  220. package/dist/rules/prefer-optional-chain.js.map +1 -1
  221. package/dist/rules/prefer-promise-reject-errors.js +6 -6
  222. package/dist/rules/prefer-promise-reject-errors.js.map +1 -1
  223. package/dist/rules/prefer-readonly-parameter-types.js +6 -6
  224. package/dist/rules/prefer-readonly-parameter-types.js.map +1 -1
  225. package/dist/rules/prefer-readonly.js +60 -60
  226. package/dist/rules/prefer-readonly.js.map +1 -1
  227. package/dist/rules/prefer-reduce-type-parameter.js +2 -2
  228. package/dist/rules/prefer-reduce-type-parameter.js.map +1 -1
  229. package/dist/rules/prefer-regexp-exec.js +5 -5
  230. package/dist/rules/prefer-regexp-exec.js.map +1 -1
  231. package/dist/rules/prefer-return-this-type.js +2 -2
  232. package/dist/rules/prefer-return-this-type.js.map +1 -1
  233. package/dist/rules/prefer-string-starts-ends-with.js +6 -6
  234. package/dist/rules/prefer-string-starts-ends-with.js.map +1 -1
  235. package/dist/rules/prefer-ts-expect-error.js +1 -1
  236. package/dist/rules/prefer-ts-expect-error.js.map +1 -1
  237. package/dist/rules/promise-function-async.js +12 -12
  238. package/dist/rules/promise-function-async.js.map +1 -1
  239. package/dist/rules/require-array-sort-compare.js +6 -6
  240. package/dist/rules/require-array-sort-compare.js.map +1 -1
  241. package/dist/rules/require-await.js +12 -12
  242. package/dist/rules/require-await.js.map +1 -1
  243. package/dist/rules/restrict-plus-operands.js +17 -17
  244. package/dist/rules/restrict-plus-operands.js.map +1 -1
  245. package/dist/rules/restrict-template-expressions.js +4 -4
  246. package/dist/rules/restrict-template-expressions.js.map +1 -1
  247. package/dist/rules/return-await.js +36 -37
  248. package/dist/rules/return-await.js.map +1 -1
  249. package/dist/rules/sort-type-constituents.js +16 -16
  250. package/dist/rules/sort-type-constituents.js.map +1 -1
  251. package/dist/rules/strict-boolean-expressions.js +101 -101
  252. package/dist/rules/strict-boolean-expressions.js.map +1 -1
  253. package/dist/rules/switch-exhaustiveness-check.js +14 -14
  254. package/dist/rules/switch-exhaustiveness-check.js.map +1 -1
  255. package/dist/rules/triple-slash-reference.js +12 -12
  256. package/dist/rules/triple-slash-reference.js.map +1 -1
  257. package/dist/rules/typedef.js +9 -9
  258. package/dist/rules/typedef.js.map +1 -1
  259. package/dist/rules/unbound-method.js +6 -6
  260. package/dist/rules/unbound-method.js.map +1 -1
  261. package/dist/rules/unified-signatures.js +22 -22
  262. package/dist/rules/unified-signatures.js.map +1 -1
  263. package/dist/rules/use-unknown-in-catch-callback-variable.js +10 -10
  264. package/dist/rules/use-unknown-in-catch-callback-variable.js.map +1 -1
  265. package/dist/util/assertionFunctionUtils.js +4 -4
  266. package/dist/util/assertionFunctionUtils.js.map +1 -1
  267. package/dist/util/astUtils.js +2 -2
  268. package/dist/util/astUtils.js.map +1 -1
  269. package/dist/util/collectUnusedVariables.js +87 -87
  270. package/dist/util/collectUnusedVariables.js.map +1 -1
  271. package/dist/util/explicitReturnTypeUtils.js +1 -1
  272. package/dist/util/explicitReturnTypeUtils.js.map +1 -1
  273. package/dist/util/getFixOrSuggest.js +1 -1
  274. package/dist/util/getFixOrSuggest.js.map +1 -1
  275. package/dist/util/getForStatementHeadLoc.js +1 -1
  276. package/dist/util/getForStatementHeadLoc.js.map +1 -1
  277. package/dist/util/getFunctionHeadLoc.js +1 -1
  278. package/dist/util/getFunctionHeadLoc.js.map +1 -1
  279. package/dist/util/getMemberHeadLoc.js +2 -2
  280. package/dist/util/getMemberHeadLoc.js.map +1 -1
  281. package/dist/util/getOperatorPrecedence.js +60 -60
  282. package/dist/util/getOperatorPrecedence.js.map +1 -1
  283. package/dist/util/getStaticStringValue.js.map +1 -1
  284. package/dist/util/getThisExpression.js.map +1 -1
  285. package/dist/util/getWrappingFixer.js +2 -2
  286. package/dist/util/getWrappingFixer.js.map +1 -1
  287. package/dist/util/index.js +6 -6
  288. package/dist/util/index.js.map +1 -1
  289. package/dist/util/isArrayMethodCallWithPredicate.js +1 -1
  290. package/dist/util/isArrayMethodCallWithPredicate.js.map +1 -1
  291. package/dist/util/isAssignee.js.map +1 -1
  292. package/dist/util/isNodeEqual.js.map +1 -1
  293. package/dist/util/isNullLiteral.js.map +1 -1
  294. package/dist/util/isStartOfExpressionStatement.js.map +1 -1
  295. package/dist/util/isTypeImport.js.map +1 -1
  296. package/dist/util/isUndefinedIdentifier.js.map +1 -1
  297. package/dist/util/misc.js +8 -11
  298. package/dist/util/misc.js.map +1 -1
  299. package/dist/util/needsPrecedingSemiColon.js +1 -1
  300. package/dist/util/needsPrecedingSemiColon.js.map +1 -1
  301. package/dist/util/rangeToLoc.js +1 -1
  302. package/dist/util/rangeToLoc.js.map +1 -1
  303. package/dist/util/referenceContainsTypeQuery.js.map +1 -1
  304. package/docs/rules/no-unsafe-call.mdx +18 -1
  305. package/eslint-recommended-raw.d.ts +5 -0
  306. package/package.json +8 -7
  307. package/rules.d.ts +13 -4
@@ -13,11 +13,131 @@ exports.default = (0, util_1.createRule)({
13
13
  extendsBaseRule: true,
14
14
  },
15
15
  hasSuggestions: baseRule.meta.hasSuggestions,
16
- schema: [],
17
16
  messages: baseRule.meta.messages,
17
+ schema: [],
18
18
  },
19
19
  defaultOptions: [],
20
20
  create(context) {
21
+ const SKIPPED_IIFE_NODES = new Set();
22
+ /**
23
+ * Gets the containing loop node of a specified node.
24
+ *
25
+ * We don't need to check nested functions, so this ignores those.
26
+ * `Scope.through` contains references of nested functions.
27
+ *
28
+ * @param node An AST node to get.
29
+ * @returns The containing loop node of the specified node, or `null`.
30
+ */
31
+ function getContainingLoopNode(node) {
32
+ for (let currentNode = node; currentNode.parent; currentNode = currentNode.parent) {
33
+ const parent = currentNode.parent;
34
+ switch (parent.type) {
35
+ case utils_1.AST_NODE_TYPES.WhileStatement:
36
+ case utils_1.AST_NODE_TYPES.DoWhileStatement:
37
+ return parent;
38
+ case utils_1.AST_NODE_TYPES.ForStatement:
39
+ // `init` is outside of the loop.
40
+ if (parent.init !== currentNode) {
41
+ return parent;
42
+ }
43
+ break;
44
+ case utils_1.AST_NODE_TYPES.ForInStatement:
45
+ case utils_1.AST_NODE_TYPES.ForOfStatement:
46
+ // `right` is outside of the loop.
47
+ if (parent.right !== currentNode) {
48
+ return parent;
49
+ }
50
+ break;
51
+ case utils_1.AST_NODE_TYPES.ArrowFunctionExpression:
52
+ case utils_1.AST_NODE_TYPES.FunctionExpression:
53
+ case utils_1.AST_NODE_TYPES.FunctionDeclaration:
54
+ // We don't need to check nested functions.
55
+ // We need to check nested functions only in case of IIFE.
56
+ if (SKIPPED_IIFE_NODES.has(parent)) {
57
+ break;
58
+ }
59
+ return null;
60
+ default:
61
+ break;
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ /**
67
+ * Gets the containing loop node of a given node.
68
+ * If the loop was nested, this returns the most outer loop.
69
+ * @param node A node to get. This is a loop node.
70
+ * @param excludedNode A node that the result node should not include.
71
+ * @returns The most outer loop node.
72
+ */
73
+ function getTopLoopNode(node, excludedNode) {
74
+ const border = excludedNode ? excludedNode.range[1] : 0;
75
+ let retv = node;
76
+ let containingLoopNode = node;
77
+ while (containingLoopNode && containingLoopNode.range[0] >= border) {
78
+ retv = containingLoopNode;
79
+ containingLoopNode = getContainingLoopNode(containingLoopNode);
80
+ }
81
+ return retv;
82
+ }
83
+ /**
84
+ * Checks whether a given reference which refers to an upper scope's variable is
85
+ * safe or not.
86
+ * @param loopNode A containing loop node.
87
+ * @param reference A reference to check.
88
+ * @returns `true` if the reference is safe or not.
89
+ */
90
+ function isSafe(loopNode, reference) {
91
+ const variable = reference.resolved;
92
+ const definition = variable?.defs[0];
93
+ const declaration = definition?.parent;
94
+ const kind = declaration?.type === utils_1.AST_NODE_TYPES.VariableDeclaration
95
+ ? declaration.kind
96
+ : '';
97
+ // type references are all safe
98
+ // this only really matters for global types that haven't been configured
99
+ if (reference.isTypeReference) {
100
+ return true;
101
+ }
102
+ // Variables which are declared by `const` is safe.
103
+ if (kind === 'const') {
104
+ return true;
105
+ }
106
+ /*
107
+ * Variables which are declared by `let` in the loop is safe.
108
+ * It's a different instance from the next loop step's.
109
+ */
110
+ if (kind === 'let' &&
111
+ declaration &&
112
+ declaration.range[0] > loopNode.range[0] &&
113
+ declaration.range[1] < loopNode.range[1]) {
114
+ return true;
115
+ }
116
+ /*
117
+ * WriteReferences which exist after this border are unsafe because those
118
+ * can modify the variable.
119
+ */
120
+ const border = getTopLoopNode(loopNode, kind === 'let' ? declaration : null).range[0];
121
+ /**
122
+ * Checks whether a given reference is safe or not.
123
+ * The reference is every reference of the upper scope's variable we are
124
+ * looking now.
125
+ *
126
+ * It's safe if the reference matches one of the following condition.
127
+ * - is readonly.
128
+ * - doesn't exist inside a local function and after the border.
129
+ *
130
+ * @param upperRef A reference to check.
131
+ * @returns `true` if the reference is safe.
132
+ */
133
+ function isSafeReference(upperRef) {
134
+ const id = upperRef.identifier;
135
+ return (!upperRef.isWrite() ||
136
+ (variable?.scope.variableScope === upperRef.from.variableScope &&
137
+ id.range[0] < border));
138
+ }
139
+ return variable?.references.every(isSafeReference) ?? false;
140
+ }
21
141
  /**
22
142
  * Reports functions which match the following condition:
23
143
  * - has a loop node in ancestors.
@@ -31,8 +151,19 @@ exports.default = (0, util_1.createRule)({
31
151
  return;
32
152
  }
33
153
  const references = context.sourceCode.getScope(node).through;
154
+ if (!(node.async || node.generator) && isIIFE(node)) {
155
+ const isFunctionExpression = node.type === utils_1.AST_NODE_TYPES.FunctionExpression;
156
+ // Check if the function is referenced elsewhere in the code
157
+ const isFunctionReferenced = isFunctionExpression && node.id
158
+ ? references.some(r => r.identifier.name === node.id?.name)
159
+ : false;
160
+ if (!isFunctionReferenced) {
161
+ SKIPPED_IIFE_NODES.add(node);
162
+ return;
163
+ }
164
+ }
34
165
  const unsafeRefs = references
35
- .filter(r => !isSafe(loopNode, r))
166
+ .filter(r => r.resolved && !isSafe(loopNode, r))
36
167
  .map(r => r.identifier.name);
37
168
  if (unsafeRefs.length > 0) {
38
169
  context.report({
@@ -44,125 +175,13 @@ exports.default = (0, util_1.createRule)({
44
175
  }
45
176
  return {
46
177
  ArrowFunctionExpression: checkForLoops,
47
- FunctionExpression: checkForLoops,
48
178
  FunctionDeclaration: checkForLoops,
179
+ FunctionExpression: checkForLoops,
49
180
  };
50
181
  },
51
182
  });
52
- /**
53
- * Gets the containing loop node of a specified node.
54
- *
55
- * We don't need to check nested functions, so this ignores those.
56
- * `Scope.through` contains references of nested functions.
57
- *
58
- * @param node An AST node to get.
59
- * @returns The containing loop node of the specified node, or `null`.
60
- */
61
- function getContainingLoopNode(node) {
62
- for (let currentNode = node; currentNode.parent; currentNode = currentNode.parent) {
63
- const parent = currentNode.parent;
64
- switch (parent.type) {
65
- case utils_1.AST_NODE_TYPES.WhileStatement:
66
- case utils_1.AST_NODE_TYPES.DoWhileStatement:
67
- return parent;
68
- case utils_1.AST_NODE_TYPES.ForStatement:
69
- // `init` is outside of the loop.
70
- if (parent.init !== currentNode) {
71
- return parent;
72
- }
73
- break;
74
- case utils_1.AST_NODE_TYPES.ForInStatement:
75
- case utils_1.AST_NODE_TYPES.ForOfStatement:
76
- // `right` is outside of the loop.
77
- if (parent.right !== currentNode) {
78
- return parent;
79
- }
80
- break;
81
- case utils_1.AST_NODE_TYPES.ArrowFunctionExpression:
82
- case utils_1.AST_NODE_TYPES.FunctionExpression:
83
- case utils_1.AST_NODE_TYPES.FunctionDeclaration:
84
- // We don't need to check nested functions.
85
- return null;
86
- default:
87
- break;
88
- }
89
- }
90
- return null;
91
- }
92
- /**
93
- * Gets the containing loop node of a given node.
94
- * If the loop was nested, this returns the most outer loop.
95
- * @param node A node to get. This is a loop node.
96
- * @param excludedNode A node that the result node should not include.
97
- * @returns The most outer loop node.
98
- */
99
- function getTopLoopNode(node, excludedNode) {
100
- const border = excludedNode ? excludedNode.range[1] : 0;
101
- let retv = node;
102
- let containingLoopNode = node;
103
- while (containingLoopNode && containingLoopNode.range[0] >= border) {
104
- retv = containingLoopNode;
105
- containingLoopNode = getContainingLoopNode(containingLoopNode);
106
- }
107
- return retv;
108
- }
109
- /**
110
- * Checks whether a given reference which refers to an upper scope's variable is
111
- * safe or not.
112
- * @param loopNode A containing loop node.
113
- * @param reference A reference to check.
114
- * @returns `true` if the reference is safe or not.
115
- */
116
- function isSafe(loopNode, reference) {
117
- const variable = reference.resolved;
118
- const definition = variable?.defs[0];
119
- const declaration = definition?.parent;
120
- const kind = declaration?.type === utils_1.AST_NODE_TYPES.VariableDeclaration
121
- ? declaration.kind
122
- : '';
123
- // type references are all safe
124
- // this only really matters for global types that haven't been configured
125
- if (reference.isTypeReference) {
126
- return true;
127
- }
128
- // Variables which are declared by `const` is safe.
129
- if (kind === 'const') {
130
- return true;
131
- }
132
- /*
133
- * Variables which are declared by `let` in the loop is safe.
134
- * It's a different instance from the next loop step's.
135
- */
136
- if (kind === 'let' &&
137
- declaration &&
138
- declaration.range[0] > loopNode.range[0] &&
139
- declaration.range[1] < loopNode.range[1]) {
140
- return true;
141
- }
142
- /*
143
- * WriteReferences which exist after this border are unsafe because those
144
- * can modify the variable.
145
- */
146
- const border = getTopLoopNode(loopNode, kind === 'let' ? declaration : null)
147
- .range[0];
148
- /**
149
- * Checks whether a given reference is safe or not.
150
- * The reference is every reference of the upper scope's variable we are
151
- * looking now.
152
- *
153
- * It's safe if the reference matches one of the following condition.
154
- * - is readonly.
155
- * - doesn't exist inside a local function and after the border.
156
- *
157
- * @param upperRef A reference to check.
158
- * @returns `true` if the reference is safe.
159
- */
160
- function isSafeReference(upperRef) {
161
- const id = upperRef.identifier;
162
- return (!upperRef.isWrite() ||
163
- (variable?.scope.variableScope === upperRef.from.variableScope &&
164
- id.range[0] < border));
165
- }
166
- return variable?.references.every(isSafeReference) ?? false;
183
+ function isIIFE(node) {
184
+ return (node.parent.type === utils_1.AST_NODE_TYPES.CallExpression &&
185
+ node.parent.callee === node);
167
186
  }
168
187
  //# sourceMappingURL=no-loop-func.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-loop-func.js","sourceRoot":"","sources":["../../src/rules/no-loop-func.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-loop-func.js","sourceRoot":"","sources":["../../src/rules/no-loop-func.ts"],"names":[],"mappings":";;AAEA,oDAA0D;AAO1D,kCAAqC;AACrC,iEAA8D;AAE9D,MAAM,QAAQ,GAAG,IAAA,qCAAiB,EAAC,cAAc,CAAC,CAAC;AAKnD,kBAAe,IAAA,iBAAU,EAAsB;IAC7C,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,sFAAsF;YACxF,eAAe,EAAE,IAAI;SACtB;QACD,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;QAC5C,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;QAChC,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAI/B,CAAC;QAEJ;;;;;;;;WAQG;QACH,SAAS,qBAAqB,CAAC,IAAmB;YAChD,KACE,IAAI,WAAW,GAAG,IAAI,EACtB,WAAW,CAAC,MAAM,EAClB,WAAW,GAAG,WAAW,CAAC,MAAM,EAChC,CAAC;gBACD,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAElC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;oBACpB,KAAK,sBAAc,CAAC,cAAc,CAAC;oBACnC,KAAK,sBAAc,CAAC,gBAAgB;wBAClC,OAAO,MAAM,CAAC;oBAEhB,KAAK,sBAAc,CAAC,YAAY;wBAC9B,iCAAiC;wBACjC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;4BAChC,OAAO,MAAM,CAAC;wBAChB,CAAC;wBACD,MAAM;oBAER,KAAK,sBAAc,CAAC,cAAc,CAAC;oBACnC,KAAK,sBAAc,CAAC,cAAc;wBAChC,kCAAkC;wBAClC,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;4BACjC,OAAO,MAAM,CAAC;wBAChB,CAAC;wBACD,MAAM;oBAER,KAAK,sBAAc,CAAC,uBAAuB,CAAC;oBAC5C,KAAK,sBAAc,CAAC,kBAAkB,CAAC;oBACvC,KAAK,sBAAc,CAAC,mBAAmB;wBACrC,2CAA2C;wBAE3C,0DAA0D;wBAC1D,IAAI,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;4BACnC,MAAM;wBACR,CAAC;wBACD,OAAO,IAAI,CAAC;oBAEd;wBACE,MAAM;gBACV,CAAC;YACH,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;;;;;WAMG;QACH,SAAS,cAAc,CACrB,IAAmB,EACnB,YAA8C;YAE9C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,IAAI,kBAAkB,GAAyB,IAAI,CAAC;YAEpD,OAAO,kBAAkB,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;gBACnE,IAAI,GAAG,kBAAkB,CAAC;gBAC1B,kBAAkB,GAAG,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;;;;;WAMG;QACH,SAAS,MAAM,CACb,QAAuB,EACvB,SAAmC;YAEnC,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;YACpC,MAAM,UAAU,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,WAAW,GAAG,UAAU,EAAE,MAAM,CAAC;YACvC,MAAM,IAAI,GACR,WAAW,EAAE,IAAI,KAAK,sBAAc,CAAC,mBAAmB;gBACtD,CAAC,CAAC,WAAW,CAAC,IAAI;gBAClB,CAAC,CAAC,EAAE,CAAC;YAET,+BAA+B;YAC/B,yEAAyE;YACzE,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;gBAC9B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,mDAAmD;YACnD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;YAED;;;eAGG;YACH,IACE,IAAI,KAAK,KAAK;gBACd,WAAW;gBACX,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EACxC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED;;;eAGG;YACH,MAAM,MAAM,GAAG,cAAc,CAC3B,QAAQ,EACR,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACpC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEX;;;;;;;;;;;eAWG;YACH,SAAS,eAAe,CAAC,QAAkC;gBACzD,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;gBAE/B,OAAO,CACL,CAAC,QAAQ,CAAC,OAAO,EAAE;oBACnB,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,IAAI,CAAC,aAAa;wBAC5D,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CACxB,CAAC;YACJ,CAAC;YAED,OAAO,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,KAAK,CAAC;QAC9D,CAAC;QAED;;;;;;WAMG;QACH,SAAS,aAAa,CACpB,IAG+B;YAE/B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAE7D,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,oBAAoB,GACxB,IAAI,CAAC,IAAI,KAAK,sBAAc,CAAC,kBAAkB,CAAC;gBAElD,4DAA4D;gBAC5D,MAAM,oBAAoB,GACxB,oBAAoB,IAAI,IAAI,CAAC,EAAE;oBAC7B,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC;oBAC3D,CAAC,CAAC,KAAK,CAAC;gBAEZ,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBAC1B,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC7B,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,UAAU;iBAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC/C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE/B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI;oBACJ,SAAS,EAAE,YAAY;oBACvB,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;iBACnD,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO;YACL,uBAAuB,EAAE,aAAa;YACtC,mBAAmB,EAAE,aAAa;YAClC,kBAAkB,EAAE,aAAa;SAClC,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,SAAS,MAAM,CACb,IAG+B;IAE/B,OAAO,CACL,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,cAAc;QAClD,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAC5B,CAAC;AACJ,CAAC"}
@@ -13,8 +13,8 @@ exports.default = (0, util_1.createRule)({
13
13
  extendsBaseRule: true,
14
14
  },
15
15
  hasSuggestions: baseRule.meta.hasSuggestions,
16
- schema: [],
17
16
  messages: baseRule.meta.messages,
17
+ schema: [],
18
18
  },
19
19
  defaultOptions: [],
20
20
  create(context) {
@@ -1 +1 @@
1
- {"version":3,"file":"no-loss-of-precision.js","sourceRoot":"","sources":["../../src/rules/no-loss-of-precision.ts"],"names":[],"mappings":";;AAIA,kCAAqC;AACrC,iEAA8D;AAE9D,MAAM,QAAQ,GAAG,IAAA,qCAAiB,EAAC,sBAAsB,CAAC,CAAC;AAK3D,kBAAe,IAAA,iBAAU,EAAsB;IAC7C,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE;YACJ,WAAW,EAAE,8CAA8C;YAC3D,eAAe,EAAE,IAAI;SACtB;QACD,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;QAC5C,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;KACjC;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"no-loss-of-precision.js","sourceRoot":"","sources":["../../src/rules/no-loss-of-precision.ts"],"names":[],"mappings":";;AAKA,kCAAqC;AACrC,iEAA8D;AAE9D,MAAM,QAAQ,GAAG,IAAA,qCAAiB,EAAC,sBAAsB,CAAC,CAAC;AAK3D,kBAAe,IAAA,iBAAU,EAAsB;IAC7C,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE;YACJ,WAAW,EAAE,8CAA8C;YAC3D,eAAe,EAAE,IAAI;SACtB;QACD,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;QAC5C,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ;QAChC,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACF,CAAC,CAAC"}
@@ -11,21 +11,21 @@ Array.isArray(baseRule.meta.schema)
11
11
  ? baseRule.meta.schema[0]
12
12
  : baseRule.meta.schema, {
13
13
  properties: {
14
- ignoreNumericLiteralTypes: {
15
- description: 'Whether numbers used in TypeScript numeric literal types are considered okay.',
16
- type: 'boolean',
17
- },
18
14
  ignoreEnums: {
15
+ type: 'boolean',
19
16
  description: 'Whether enums used in TypeScript are considered okay.',
17
+ },
18
+ ignoreNumericLiteralTypes: {
20
19
  type: 'boolean',
20
+ description: 'Whether numbers used in TypeScript numeric literal types are considered okay.',
21
21
  },
22
22
  ignoreReadonlyClassProperties: {
23
- description: 'Whether `readonly` class properties are considered okay.',
24
23
  type: 'boolean',
24
+ description: 'Whether `readonly` class properties are considered okay.',
25
25
  },
26
26
  ignoreTypeIndexes: {
27
- description: 'Whether numbers used to index types are okay.',
28
27
  type: 'boolean',
28
+ description: 'Whether numbers used to index types are okay.',
29
29
  },
30
30
  },
31
31
  });
@@ -37,17 +37,17 @@ exports.default = (0, util_1.createRule)({
37
37
  description: 'Disallow magic numbers',
38
38
  extendsBaseRule: true,
39
39
  },
40
- schema: [schema],
41
40
  messages: baseRule.meta.messages,
41
+ schema: [schema],
42
42
  },
43
43
  defaultOptions: [
44
44
  {
45
+ detectObjects: false,
46
+ enforceConst: false,
45
47
  ignore: [],
46
48
  ignoreArrayIndexes: false,
47
- enforceConst: false,
48
- detectObjects: false,
49
- ignoreNumericLiteralTypes: false,
50
49
  ignoreEnums: false,
50
+ ignoreNumericLiteralTypes: false,
51
51
  ignoreReadonlyClassProperties: false,
52
52
  ignoreTypeIndexes: false,
53
53
  },
@@ -102,8 +102,8 @@ exports.default = (0, util_1.createRule)({
102
102
  raw = `${node.parent.operator}${node.raw}`;
103
103
  }
104
104
  context.report({
105
- messageId: 'noMagic',
106
105
  node: fullNumberNode,
106
+ messageId: 'noMagic',
107
107
  data: { raw },
108
108
  });
109
109
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"no-magic-numbers.js","sourceRoot":"","sources":["../../src/rules/no-magic-numbers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-magic-numbers.js","sourceRoot":"","sources":["../../src/rules/no-magic-numbers.ts"],"names":[],"mappings":"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"}
@@ -45,14 +45,14 @@ exports.default = (0, util_1.createRule)({
45
45
  schema: [
46
46
  {
47
47
  type: 'object',
48
+ additionalProperties: false,
48
49
  properties: {
49
50
  checkNever: {
50
- description: 'Whether to suggest removing `void` when the argument has type `never`.',
51
51
  type: 'boolean',
52
52
  default: false,
53
+ description: 'Whether to suggest removing `void` when the argument has type `never`.',
53
54
  },
54
55
  },
55
- additionalProperties: false,
56
56
  },
57
57
  ],
58
58
  },
@@ -1 +1 @@
1
- {"version":3,"file":"no-meaningless-void-operator.js","sourceRoot":"","sources":["../../src/rules/no-meaningless-void-operator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,oDAAuD;AACvD,sDAAwC;AACxC,+CAAiC;AAEjC,kCAAqC;AAQrC,kBAAe,IAAA,iBAAU,EAAoD;IAC3E,IAAI,EAAE,8BAA8B;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,kEAAkE;YACpE,WAAW,EAAE,QAAQ;YACrB,oBAAoB,EAAE,IAAI;SAC3B;QACD,OAAO,EAAE,MAAM;QACf,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,uBAAuB,EACrB,oGAAoG;YACtG,UAAU,EAAE,eAAe;SAC5B;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV,WAAW,EACT,wEAAwE;wBAC1E,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,KAAK;qBACf;iBACF;gBACD,oBAAoB,EAAE,KAAK;aAC5B;SACF;KACF;IACD,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAEvC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,mBAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAElD,OAAO;YACL,kCAAkC,CAAC,IAA8B;gBAC/D,MAAM,GAAG,GAAG,CAAC,KAAyB,EAAoB,EAAE;oBAC1D,OAAO,KAAK,CAAC,WAAW,CAAC;wBACvB,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC9C,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC/C,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBACnD,IACE,UAAU,CAAC,KAAK,CACd,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAClE,EACD,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,yBAAyB;wBACpC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;wBAC7C,GAAG;qBACJ,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,UAAU;oBACV,UAAU,CAAC,KAAK,CACd,IAAI,CAAC,EAAE,CACL,IAAI,CAAC,KAAK;wBACV,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CACpE,EACD,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,yBAAyB;wBACpC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;wBAC7C,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;qBAC5C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"no-meaningless-void-operator.js","sourceRoot":"","sources":["../../src/rules/no-meaningless-void-operator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,oDAAuD;AACvD,sDAAwC;AACxC,+CAAiC;AAEjC,kCAAqC;AAQrC,kBAAe,IAAA,iBAAU,EAAoD;IAC3E,IAAI,EAAE,8BAA8B;IACpC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE;YACJ,WAAW,EACT,kEAAkE;YACpE,WAAW,EAAE,QAAQ;YACrB,oBAAoB,EAAE,IAAI;SAC3B;QACD,OAAO,EAAE,MAAM;QACf,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE;YACR,uBAAuB,EACrB,oGAAoG;YACtG,UAAU,EAAE,eAAe;SAC5B;QACD,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,QAAQ;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,UAAU,EAAE;oBACV,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,KAAK;wBACd,WAAW,EACT,wEAAwE;qBAC3E;iBACF;aACF;SACF;KACF;IACD,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAEvC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,mBAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;QAElD,OAAO;YACL,kCAAkC,CAAC,IAA8B;gBAC/D,MAAM,GAAG,GAAG,CAAC,KAAyB,EAAoB,EAAE;oBAC1D,OAAO,KAAK,CAAC,WAAW,CAAC;wBACvB,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;wBAC9C,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC/C,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBACnD,IACE,UAAU,CAAC,KAAK,CACd,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAClE,EACD,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,yBAAyB;wBACpC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;wBAC7C,GAAG;qBACJ,CAAC,CAAC;gBACL,CAAC;qBAAM,IACL,UAAU;oBACV,UAAU,CAAC,KAAK,CACd,IAAI,CAAC,EAAE,CACL,IAAI,CAAC,KAAK;wBACV,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CACpE,EACD,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,yBAAyB;wBACpC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;wBAC7C,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;qBAC5C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -10,11 +10,11 @@ exports.default = (0, util_1.createRule)({
10
10
  description: 'Enforce valid definition of `new` and `constructor`',
11
11
  recommended: 'recommended',
12
12
  },
13
- schema: [],
14
13
  messages: {
15
- errorMessageInterface: 'Interfaces cannot be constructed, only classes.',
16
14
  errorMessageClass: 'Class cannot have method named `new`.',
15
+ errorMessageInterface: 'Interfaces cannot be constructed, only classes.',
17
16
  },
17
+ schema: [],
18
18
  },
19
19
  defaultOptions: [],
20
20
  create(context) {
@@ -52,6 +52,15 @@ exports.default = (0, util_1.createRule)({
52
52
  return false;
53
53
  }
54
54
  return {
55
+ "ClassBody > MethodDefinition[key.name='new']"(node) {
56
+ if (node.value.type === utils_1.AST_NODE_TYPES.TSEmptyBodyFunctionExpression &&
57
+ isMatchingParentType(node.parent.parent, node.value.returnType)) {
58
+ context.report({
59
+ node,
60
+ messageId: 'errorMessageClass',
61
+ });
62
+ }
63
+ },
55
64
  'TSInterfaceBody > TSConstructSignatureDeclaration'(node) {
56
65
  if (isMatchingParentType(node.parent.parent, node.returnType)) {
57
66
  // constructor
@@ -67,15 +76,6 @@ exports.default = (0, util_1.createRule)({
67
76
  messageId: 'errorMessageInterface',
68
77
  });
69
78
  },
70
- "ClassBody > MethodDefinition[key.name='new']"(node) {
71
- if (node.value.type === utils_1.AST_NODE_TYPES.TSEmptyBodyFunctionExpression &&
72
- isMatchingParentType(node.parent.parent, node.value.returnType)) {
73
- context.report({
74
- node,
75
- messageId: 'errorMessageClass',
76
- });
77
- }
78
- },
79
79
  };
80
80
  },
81
81
  });
@@ -1 +1 @@
1
- {"version":3,"file":"no-misused-new.js","sourceRoot":"","sources":["../../src/rules/no-misused-new.ts"],"names":[],"mappings":";;AACA,oDAA0D;AAE1D,kCAAqC;AAErC,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,qDAAqD;YAClE,WAAW,EAAE,aAAa;SAC3B;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,qBAAqB,EAAE,iDAAiD;YACxE,iBAAiB,EAAE,uCAAuC;SAC3D;KACF;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ;;;WAGG;QACH,SAAS,oBAAoB,CAC3B,IAIa;YAEb,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,KAAK,sBAAc,CAAC,gBAAgB;wBAClC,OAAO,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACnD,KAAK,sBAAc,CAAC,eAAe;wBACjC,OAAO,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7C,KAAK,sBAAc,CAAC,UAAU;wBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC;oBACnB;wBACE,MAAM;gBACV,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;;WAGG;QACH,SAAS,oBAAoB,CAC3B,MAKa,EACb,UAAiD;YAEjD,IACE,MAAM;gBACN,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;oBAC9C,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe;oBAC9C,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,sBAAsB,CAAC;gBACxD,MAAM,CAAC,EAAE,EACT,CAAC;gBACD,OAAO,oBAAoB,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO;YACL,mDAAmD,CACjD,IAA8C;gBAE9C,IACE,oBAAoB,CAClB,IAAI,CAAC,MAAM,CAAC,MAAyC,EACrD,IAAI,CAAC,UAAU,CAChB,EACD,CAAC;oBACD,cAAc;oBACd,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,uBAAuB;qBACnC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,2CAA2C,CACzC,IAAgC;gBAEhC,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI;oBACJ,SAAS,EAAE,uBAAuB;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,8CAA8C,CAC5C,IAA+B;gBAE/B,IACE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,6BAA6B;oBAChE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC/D,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,mBAAmB;qBAC/B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"no-misused-new.js","sourceRoot":"","sources":["../../src/rules/no-misused-new.ts"],"names":[],"mappings":";;AAEA,oDAA0D;AAE1D,kCAAqC;AAErC,kBAAe,IAAA,iBAAU,EAAC;IACxB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,qDAAqD;YAClE,WAAW,EAAE,aAAa;SAC3B;QACD,QAAQ,EAAE;YACR,iBAAiB,EAAE,uCAAuC;YAC1D,qBAAqB,EAAE,iDAAiD;SACzE;QACD,MAAM,EAAE,EAAE;KACX;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ;;;WAGG;QACH,SAAS,oBAAoB,CAC3B,IAIa;YAEb,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,KAAK,sBAAc,CAAC,gBAAgB;wBAClC,OAAO,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBACnD,KAAK,sBAAc,CAAC,eAAe;wBACjC,OAAO,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC7C,KAAK,sBAAc,CAAC,UAAU;wBAC5B,OAAO,IAAI,CAAC,IAAI,CAAC;oBACnB;wBACE,MAAM;gBACV,CAAC;YACH,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED;;;WAGG;QACH,SAAS,oBAAoB,CAC3B,MAKa,EACb,UAAiD;YAEjD,IACE,MAAM;gBACN,CAAC,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,gBAAgB;oBAC9C,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,eAAe;oBAC9C,MAAM,CAAC,IAAI,KAAK,sBAAc,CAAC,sBAAsB,CAAC;gBACxD,MAAM,CAAC,EAAE,EACT,CAAC;gBACD,OAAO,oBAAoB,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO;YACL,8CAA8C,CAC5C,IAA+B;gBAE/B,IACE,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,sBAAc,CAAC,6BAA6B;oBAChE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAC/D,CAAC;oBACD,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,mBAAmB;qBAC/B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,mDAAmD,CACjD,IAA8C;gBAE9C,IACE,oBAAoB,CAClB,IAAI,CAAC,MAAM,CAAC,MAAyC,EACrD,IAAI,CAAC,UAAU,CAChB,EACD,CAAC;oBACD,cAAc;oBACd,OAAO,CAAC,MAAM,CAAC;wBACb,IAAI;wBACJ,SAAS,EAAE,uBAAuB;qBACnC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YACD,2CAA2C,CACzC,IAAgC;gBAEhC,OAAO,CAAC,MAAM,CAAC;oBACb,IAAI;oBACJ,SAAS,EAAE,uBAAuB;iBACnC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}