eslint 8.17.0 → 8.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/README.md +4 -15
  2. package/lib/linter/linter.js +55 -4
  3. package/lib/linter/timing.js +2 -1
  4. package/lib/rules/accessor-pairs.js +1 -1
  5. package/lib/rules/array-bracket-newline.js +1 -1
  6. package/lib/rules/array-bracket-spacing.js +1 -1
  7. package/lib/rules/array-callback-return.js +1 -1
  8. package/lib/rules/array-element-newline.js +1 -1
  9. package/lib/rules/arrow-body-style.js +1 -1
  10. package/lib/rules/arrow-parens.js +1 -1
  11. package/lib/rules/arrow-spacing.js +1 -1
  12. package/lib/rules/block-scoped-var.js +1 -1
  13. package/lib/rules/block-spacing.js +1 -1
  14. package/lib/rules/brace-style.js +1 -1
  15. package/lib/rules/callback-return.js +1 -1
  16. package/lib/rules/camelcase.js +1 -1
  17. package/lib/rules/capitalized-comments.js +1 -1
  18. package/lib/rules/class-methods-use-this.js +1 -1
  19. package/lib/rules/comma-dangle.js +1 -1
  20. package/lib/rules/comma-spacing.js +36 -42
  21. package/lib/rules/comma-style.js +1 -1
  22. package/lib/rules/complexity.js +1 -1
  23. package/lib/rules/computed-property-spacing.js +1 -1
  24. package/lib/rules/consistent-return.js +1 -1
  25. package/lib/rules/consistent-this.js +1 -1
  26. package/lib/rules/constructor-super.js +1 -1
  27. package/lib/rules/curly.js +1 -1
  28. package/lib/rules/default-case-last.js +1 -1
  29. package/lib/rules/default-case.js +1 -1
  30. package/lib/rules/default-param-last.js +1 -1
  31. package/lib/rules/dot-location.js +1 -1
  32. package/lib/rules/dot-notation.js +1 -1
  33. package/lib/rules/eol-last.js +1 -1
  34. package/lib/rules/eqeqeq.js +1 -1
  35. package/lib/rules/for-direction.js +1 -1
  36. package/lib/rules/func-call-spacing.js +1 -1
  37. package/lib/rules/func-name-matching.js +1 -1
  38. package/lib/rules/func-names.js +1 -1
  39. package/lib/rules/func-style.js +1 -1
  40. package/lib/rules/function-call-argument-newline.js +1 -1
  41. package/lib/rules/function-paren-newline.js +1 -1
  42. package/lib/rules/generator-star-spacing.js +1 -1
  43. package/lib/rules/getter-return.js +1 -1
  44. package/lib/rules/global-require.js +1 -1
  45. package/lib/rules/grouped-accessor-pairs.js +1 -1
  46. package/lib/rules/guard-for-in.js +1 -1
  47. package/lib/rules/handle-callback-err.js +1 -1
  48. package/lib/rules/id-blacklist.js +1 -1
  49. package/lib/rules/id-denylist.js +1 -1
  50. package/lib/rules/id-length.js +1 -1
  51. package/lib/rules/id-match.js +1 -1
  52. package/lib/rules/implicit-arrow-linebreak.js +1 -1
  53. package/lib/rules/indent-legacy.js +1 -1
  54. package/lib/rules/indent.js +3 -3
  55. package/lib/rules/init-declarations.js +1 -1
  56. package/lib/rules/jsx-quotes.js +1 -1
  57. package/lib/rules/key-spacing.js +1 -1
  58. package/lib/rules/keyword-spacing.js +1 -1
  59. package/lib/rules/line-comment-position.js +1 -1
  60. package/lib/rules/linebreak-style.js +1 -1
  61. package/lib/rules/lines-around-comment.js +1 -1
  62. package/lib/rules/lines-around-directive.js +1 -1
  63. package/lib/rules/lines-between-class-members.js +1 -1
  64. package/lib/rules/max-classes-per-file.js +1 -1
  65. package/lib/rules/max-depth.js +1 -1
  66. package/lib/rules/max-len.js +1 -1
  67. package/lib/rules/max-lines-per-function.js +1 -1
  68. package/lib/rules/max-lines.js +1 -1
  69. package/lib/rules/max-nested-callbacks.js +1 -1
  70. package/lib/rules/max-params.js +1 -1
  71. package/lib/rules/max-statements-per-line.js +1 -1
  72. package/lib/rules/max-statements.js +1 -1
  73. package/lib/rules/multiline-comment-style.js +1 -1
  74. package/lib/rules/multiline-ternary.js +1 -1
  75. package/lib/rules/new-cap.js +1 -1
  76. package/lib/rules/new-parens.js +1 -1
  77. package/lib/rules/newline-after-var.js +1 -1
  78. package/lib/rules/newline-before-return.js +1 -1
  79. package/lib/rules/newline-per-chained-call.js +1 -1
  80. package/lib/rules/no-alert.js +1 -1
  81. package/lib/rules/no-array-constructor.js +1 -1
  82. package/lib/rules/no-async-promise-executor.js +1 -1
  83. package/lib/rules/no-await-in-loop.js +1 -1
  84. package/lib/rules/no-bitwise.js +1 -1
  85. package/lib/rules/no-buffer-constructor.js +1 -1
  86. package/lib/rules/no-caller.js +1 -1
  87. package/lib/rules/no-case-declarations.js +1 -1
  88. package/lib/rules/no-catch-shadow.js +1 -1
  89. package/lib/rules/no-class-assign.js +1 -1
  90. package/lib/rules/no-compare-neg-zero.js +1 -1
  91. package/lib/rules/no-cond-assign.js +1 -1
  92. package/lib/rules/no-confusing-arrow.js +1 -1
  93. package/lib/rules/no-console.js +1 -1
  94. package/lib/rules/no-const-assign.js +1 -1
  95. package/lib/rules/no-constant-binary-expression.js +1 -1
  96. package/lib/rules/no-constant-condition.js +1 -1
  97. package/lib/rules/no-constructor-return.js +1 -1
  98. package/lib/rules/no-continue.js +1 -1
  99. package/lib/rules/no-control-regex.js +1 -1
  100. package/lib/rules/no-debugger.js +1 -1
  101. package/lib/rules/no-delete-var.js +1 -1
  102. package/lib/rules/no-div-regex.js +1 -1
  103. package/lib/rules/no-dupe-args.js +1 -1
  104. package/lib/rules/no-dupe-class-members.js +1 -1
  105. package/lib/rules/no-dupe-else-if.js +1 -1
  106. package/lib/rules/no-dupe-keys.js +1 -1
  107. package/lib/rules/no-duplicate-case.js +1 -1
  108. package/lib/rules/no-duplicate-imports.js +1 -1
  109. package/lib/rules/no-else-return.js +1 -1
  110. package/lib/rules/no-empty-character-class.js +1 -1
  111. package/lib/rules/no-empty-function.js +1 -1
  112. package/lib/rules/no-empty-pattern.js +1 -1
  113. package/lib/rules/no-empty.js +1 -1
  114. package/lib/rules/no-eq-null.js +1 -1
  115. package/lib/rules/no-eval.js +1 -1
  116. package/lib/rules/no-ex-assign.js +1 -1
  117. package/lib/rules/no-extend-native.js +1 -1
  118. package/lib/rules/no-extra-bind.js +1 -1
  119. package/lib/rules/no-extra-boolean-cast.js +1 -1
  120. package/lib/rules/no-extra-label.js +1 -1
  121. package/lib/rules/no-extra-parens.js +1 -1
  122. package/lib/rules/no-extra-semi.js +1 -1
  123. package/lib/rules/no-fallthrough.js +1 -1
  124. package/lib/rules/no-floating-decimal.js +1 -1
  125. package/lib/rules/no-func-assign.js +1 -1
  126. package/lib/rules/no-global-assign.js +1 -1
  127. package/lib/rules/no-implicit-coercion.js +1 -1
  128. package/lib/rules/no-implicit-globals.js +1 -1
  129. package/lib/rules/no-implied-eval.js +1 -1
  130. package/lib/rules/no-import-assign.js +1 -1
  131. package/lib/rules/no-inline-comments.js +1 -1
  132. package/lib/rules/no-inner-declarations.js +1 -1
  133. package/lib/rules/no-invalid-regexp.js +1 -1
  134. package/lib/rules/no-invalid-this.js +1 -1
  135. package/lib/rules/no-irregular-whitespace.js +1 -1
  136. package/lib/rules/no-iterator.js +1 -1
  137. package/lib/rules/no-label-var.js +1 -1
  138. package/lib/rules/no-labels.js +1 -1
  139. package/lib/rules/no-lone-blocks.js +1 -1
  140. package/lib/rules/no-lonely-if.js +1 -1
  141. package/lib/rules/no-loop-func.js +1 -1
  142. package/lib/rules/no-loss-of-precision.js +1 -1
  143. package/lib/rules/no-magic-numbers.js +1 -1
  144. package/lib/rules/no-misleading-character-class.js +1 -1
  145. package/lib/rules/no-mixed-operators.js +1 -1
  146. package/lib/rules/no-mixed-requires.js +1 -1
  147. package/lib/rules/no-mixed-spaces-and-tabs.js +1 -1
  148. package/lib/rules/no-multi-assign.js +1 -1
  149. package/lib/rules/no-multi-spaces.js +1 -1
  150. package/lib/rules/no-multi-str.js +1 -1
  151. package/lib/rules/no-multiple-empty-lines.js +1 -1
  152. package/lib/rules/no-native-reassign.js +1 -1
  153. package/lib/rules/no-negated-condition.js +1 -1
  154. package/lib/rules/no-negated-in-lhs.js +1 -1
  155. package/lib/rules/no-nested-ternary.js +1 -1
  156. package/lib/rules/no-new-func.js +1 -1
  157. package/lib/rules/no-new-object.js +1 -1
  158. package/lib/rules/no-new-require.js +1 -1
  159. package/lib/rules/no-new-symbol.js +1 -1
  160. package/lib/rules/no-new-wrappers.js +1 -1
  161. package/lib/rules/no-new.js +1 -1
  162. package/lib/rules/no-nonoctal-decimal-escape.js +1 -1
  163. package/lib/rules/no-obj-calls.js +1 -1
  164. package/lib/rules/no-octal-escape.js +1 -1
  165. package/lib/rules/no-octal.js +1 -1
  166. package/lib/rules/no-param-reassign.js +1 -1
  167. package/lib/rules/no-path-concat.js +1 -1
  168. package/lib/rules/no-plusplus.js +1 -1
  169. package/lib/rules/no-process-env.js +1 -1
  170. package/lib/rules/no-process-exit.js +1 -1
  171. package/lib/rules/no-promise-executor-return.js +1 -1
  172. package/lib/rules/no-proto.js +1 -1
  173. package/lib/rules/no-prototype-builtins.js +1 -1
  174. package/lib/rules/no-redeclare.js +1 -1
  175. package/lib/rules/no-regex-spaces.js +1 -1
  176. package/lib/rules/no-restricted-exports.js +1 -1
  177. package/lib/rules/no-restricted-globals.js +1 -1
  178. package/lib/rules/no-restricted-imports.js +77 -12
  179. package/lib/rules/no-restricted-modules.js +1 -1
  180. package/lib/rules/no-restricted-properties.js +1 -1
  181. package/lib/rules/no-restricted-syntax.js +1 -1
  182. package/lib/rules/no-return-assign.js +1 -1
  183. package/lib/rules/no-return-await.js +1 -1
  184. package/lib/rules/no-script-url.js +1 -1
  185. package/lib/rules/no-self-assign.js +1 -1
  186. package/lib/rules/no-self-compare.js +1 -1
  187. package/lib/rules/no-sequences.js +1 -1
  188. package/lib/rules/no-setter-return.js +1 -1
  189. package/lib/rules/no-shadow-restricted-names.js +1 -1
  190. package/lib/rules/no-shadow.js +1 -1
  191. package/lib/rules/no-spaced-func.js +1 -1
  192. package/lib/rules/no-sparse-arrays.js +1 -1
  193. package/lib/rules/no-sync.js +1 -1
  194. package/lib/rules/no-tabs.js +1 -1
  195. package/lib/rules/no-template-curly-in-string.js +1 -1
  196. package/lib/rules/no-ternary.js +1 -1
  197. package/lib/rules/no-this-before-super.js +1 -1
  198. package/lib/rules/no-throw-literal.js +1 -1
  199. package/lib/rules/no-trailing-spaces.js +1 -1
  200. package/lib/rules/no-undef-init.js +1 -1
  201. package/lib/rules/no-undef.js +1 -1
  202. package/lib/rules/no-undefined.js +1 -1
  203. package/lib/rules/no-underscore-dangle.js +1 -1
  204. package/lib/rules/no-unexpected-multiline.js +1 -1
  205. package/lib/rules/no-unmodified-loop-condition.js +1 -1
  206. package/lib/rules/no-unneeded-ternary.js +1 -1
  207. package/lib/rules/no-unreachable-loop.js +1 -1
  208. package/lib/rules/no-unreachable.js +1 -1
  209. package/lib/rules/no-unsafe-finally.js +1 -1
  210. package/lib/rules/no-unsafe-negation.js +1 -1
  211. package/lib/rules/no-unsafe-optional-chaining.js +1 -1
  212. package/lib/rules/no-unused-expressions.js +1 -1
  213. package/lib/rules/no-unused-labels.js +1 -1
  214. package/lib/rules/no-unused-private-class-members.js +1 -1
  215. package/lib/rules/no-unused-vars.js +5 -5
  216. package/lib/rules/no-use-before-define.js +1 -1
  217. package/lib/rules/no-useless-backreference.js +1 -1
  218. package/lib/rules/no-useless-call.js +1 -1
  219. package/lib/rules/no-useless-catch.js +1 -1
  220. package/lib/rules/no-useless-computed-key.js +1 -1
  221. package/lib/rules/no-useless-concat.js +1 -1
  222. package/lib/rules/no-useless-constructor.js +1 -1
  223. package/lib/rules/no-useless-escape.js +1 -1
  224. package/lib/rules/no-useless-rename.js +1 -1
  225. package/lib/rules/no-useless-return.js +1 -1
  226. package/lib/rules/no-var.js +1 -1
  227. package/lib/rules/no-void.js +1 -1
  228. package/lib/rules/no-warning-comments.js +27 -41
  229. package/lib/rules/no-whitespace-before-property.js +1 -1
  230. package/lib/rules/no-with.js +1 -1
  231. package/lib/rules/nonblock-statement-body-position.js +1 -1
  232. package/lib/rules/object-curly-newline.js +1 -1
  233. package/lib/rules/object-curly-spacing.js +1 -1
  234. package/lib/rules/object-property-newline.js +1 -1
  235. package/lib/rules/object-shorthand.js +1 -1
  236. package/lib/rules/one-var-declaration-per-line.js +1 -1
  237. package/lib/rules/one-var.js +1 -1
  238. package/lib/rules/operator-assignment.js +1 -1
  239. package/lib/rules/operator-linebreak.js +1 -1
  240. package/lib/rules/padded-blocks.js +1 -1
  241. package/lib/rules/padding-line-between-statements.js +1 -1
  242. package/lib/rules/prefer-arrow-callback.js +1 -1
  243. package/lib/rules/prefer-const.js +1 -1
  244. package/lib/rules/prefer-destructuring.js +1 -1
  245. package/lib/rules/prefer-exponentiation-operator.js +1 -1
  246. package/lib/rules/prefer-named-capture-group.js +1 -1
  247. package/lib/rules/prefer-numeric-literals.js +1 -1
  248. package/lib/rules/prefer-object-has-own.js +1 -1
  249. package/lib/rules/prefer-object-spread.js +1 -1
  250. package/lib/rules/prefer-promise-reject-errors.js +1 -1
  251. package/lib/rules/prefer-reflect.js +1 -1
  252. package/lib/rules/prefer-regex-literals.js +1 -1
  253. package/lib/rules/prefer-rest-params.js +1 -1
  254. package/lib/rules/prefer-spread.js +1 -1
  255. package/lib/rules/prefer-template.js +1 -1
  256. package/lib/rules/quote-props.js +1 -1
  257. package/lib/rules/quotes.js +1 -1
  258. package/lib/rules/radix.js +1 -1
  259. package/lib/rules/require-atomic-updates.js +1 -1
  260. package/lib/rules/require-await.js +1 -1
  261. package/lib/rules/require-jsdoc.js +1 -1
  262. package/lib/rules/require-unicode-regexp.js +1 -1
  263. package/lib/rules/require-yield.js +1 -1
  264. package/lib/rules/rest-spread-spacing.js +1 -1
  265. package/lib/rules/semi-spacing.js +1 -1
  266. package/lib/rules/semi-style.js +1 -1
  267. package/lib/rules/semi.js +1 -1
  268. package/lib/rules/sort-imports.js +1 -1
  269. package/lib/rules/sort-keys.js +1 -1
  270. package/lib/rules/sort-vars.js +1 -1
  271. package/lib/rules/space-before-blocks.js +1 -1
  272. package/lib/rules/space-before-function-paren.js +1 -1
  273. package/lib/rules/space-in-parens.js +1 -1
  274. package/lib/rules/space-infix-ops.js +1 -1
  275. package/lib/rules/space-unary-ops.js +1 -1
  276. package/lib/rules/spaced-comment.js +1 -1
  277. package/lib/rules/strict.js +1 -1
  278. package/lib/rules/switch-colon-spacing.js +1 -1
  279. package/lib/rules/symbol-description.js +1 -1
  280. package/lib/rules/template-curly-spacing.js +1 -1
  281. package/lib/rules/template-tag-spacing.js +1 -1
  282. package/lib/rules/unicode-bom.js +1 -1
  283. package/lib/rules/use-isnan.js +1 -1
  284. package/lib/rules/valid-jsdoc.js +1 -1
  285. package/lib/rules/valid-typeof.js +1 -1
  286. package/lib/rules/vars-on-top.js +1 -1
  287. package/lib/rules/wrap-iife.js +1 -1
  288. package/lib/rules/wrap-regex.js +1 -1
  289. package/lib/rules/yield-star-spacing.js +1 -1
  290. package/lib/rules/yoda.js +1 -1
  291. package/lib/shared/deprecation-warnings.js +1 -8
  292. package/package.json +5 -6
@@ -24,7 +24,7 @@ module.exports = {
24
24
  type: "problem",
25
25
 
26
26
  docs: {
27
- description: "disallow use of optional chaining in contexts where the `undefined` value is not allowed",
27
+ description: "Disallow use of optional chaining in contexts where the `undefined` value is not allowed",
28
28
  recommended: true,
29
29
  url: "https://eslint.org/docs/rules/no-unsafe-optional-chaining"
30
30
  },
@@ -30,7 +30,7 @@ module.exports = {
30
30
  type: "suggestion",
31
31
 
32
32
  docs: {
33
- description: "disallow unused expressions",
33
+ description: "Disallow unused expressions",
34
34
  recommended: false,
35
35
  url: "https://eslint.org/docs/rules/no-unused-expressions"
36
36
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "disallow unused labels",
18
+ description: "Disallow unused labels",
19
19
  recommended: true,
20
20
  url: "https://eslint.org/docs/rules/no-unused-labels"
21
21
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "problem",
16
16
 
17
17
  docs: {
18
- description: "disallow unused private class members",
18
+ description: "Disallow unused private class members",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/no-unused-private-class-members"
21
21
  },
@@ -33,7 +33,7 @@ module.exports = {
33
33
  type: "problem",
34
34
 
35
35
  docs: {
36
- description: "disallow unused variables",
36
+ description: "Disallow unused variables",
37
37
  recommended: true,
38
38
  url: "https://eslint.org/docs/rules/no-unused-vars"
39
39
  },
@@ -484,12 +484,12 @@ module.exports = {
484
484
  }
485
485
 
486
486
  /**
487
- * Determine if an identifier is used either in for-in loops.
487
+ * Determine if an identifier is used either in for-in or for-of loops.
488
488
  * @param {Reference} ref The reference to check.
489
489
  * @returns {boolean} whether reference is used in the for-in loops
490
490
  * @private
491
491
  */
492
- function isForInRef(ref) {
492
+ function isForInOfRef(ref) {
493
493
  let target = ref.identifier.parent;
494
494
 
495
495
 
@@ -498,7 +498,7 @@ module.exports = {
498
498
  target = target.parent.parent;
499
499
  }
500
500
 
501
- if (target.type !== "ForInStatement") {
501
+ if (target.type !== "ForInStatement" && target.type !== "ForOfStatement") {
502
502
  return false;
503
503
  }
504
504
 
@@ -531,7 +531,7 @@ module.exports = {
531
531
  let rhsNode = null;
532
532
 
533
533
  return variable.references.some(ref => {
534
- if (isForInRef(ref)) {
534
+ if (isForInOfRef(ref)) {
535
535
  return true;
536
536
  }
537
537
 
@@ -226,7 +226,7 @@ module.exports = {
226
226
  type: "problem",
227
227
 
228
228
  docs: {
229
- description: "disallow the use of variables before they are defined",
229
+ description: "Disallow the use of variables before they are defined",
230
230
  recommended: false,
231
231
  url: "https://eslint.org/docs/rules/no-use-before-define"
232
232
  },
@@ -64,7 +64,7 @@ module.exports = {
64
64
  type: "problem",
65
65
 
66
66
  docs: {
67
- description: "disallow useless backreferences in regular expressions",
67
+ description: "Disallow useless backreferences in regular expressions",
68
68
  recommended: true,
69
69
  url: "https://eslint.org/docs/rules/no-useless-backreference"
70
70
  },
@@ -55,7 +55,7 @@ module.exports = {
55
55
  type: "suggestion",
56
56
 
57
57
  docs: {
58
- description: "disallow unnecessary calls to `.call()` and `.apply()`",
58
+ description: "Disallow unnecessary calls to `.call()` and `.apply()`",
59
59
  recommended: false,
60
60
  url: "https://eslint.org/docs/rules/no-useless-call"
61
61
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "disallow unnecessary `catch` clauses",
18
+ description: "Disallow unnecessary `catch` clauses",
19
19
  recommended: true,
20
20
  url: "https://eslint.org/docs/rules/no-useless-catch"
21
21
  },
@@ -91,7 +91,7 @@ module.exports = {
91
91
  type: "suggestion",
92
92
 
93
93
  docs: {
94
- description: "disallow unnecessary computed property keys in objects and classes",
94
+ description: "Disallow unnecessary computed property keys in objects and classes",
95
95
  recommended: false,
96
96
  url: "https://eslint.org/docs/rules/no-useless-computed-key"
97
97
  },
@@ -70,7 +70,7 @@ module.exports = {
70
70
  type: "suggestion",
71
71
 
72
72
  docs: {
73
- description: "disallow unnecessary concatenation of literals or template literals",
73
+ description: "Disallow unnecessary concatenation of literals or template literals",
74
74
  recommended: false,
75
75
  url: "https://eslint.org/docs/rules/no-useless-concat"
76
76
  },
@@ -138,7 +138,7 @@ module.exports = {
138
138
  type: "suggestion",
139
139
 
140
140
  docs: {
141
- description: "disallow unnecessary constructors",
141
+ description: "Disallow unnecessary constructors",
142
142
  recommended: false,
143
143
  url: "https://eslint.org/docs/rules/no-useless-constructor"
144
144
  },
@@ -84,7 +84,7 @@ module.exports = {
84
84
  type: "suggestion",
85
85
 
86
86
  docs: {
87
- description: "disallow unnecessary escape characters",
87
+ description: "Disallow unnecessary escape characters",
88
88
  recommended: true,
89
89
  url: "https://eslint.org/docs/rules/no-useless-escape"
90
90
  },
@@ -21,7 +21,7 @@ module.exports = {
21
21
  type: "suggestion",
22
22
 
23
23
  docs: {
24
- description: "disallow renaming import, export, and destructured assignments to the same name",
24
+ description: "Disallow renaming import, export, and destructured assignments to the same name",
25
25
  recommended: false,
26
26
  url: "https://eslint.org/docs/rules/no-useless-rename"
27
27
  },
@@ -67,7 +67,7 @@ module.exports = {
67
67
  type: "suggestion",
68
68
 
69
69
  docs: {
70
- description: "disallow redundant return statements",
70
+ description: "Disallow redundant return statements",
71
71
  recommended: false,
72
72
  url: "https://eslint.org/docs/rules/no-useless-return"
73
73
  },
@@ -185,7 +185,7 @@ module.exports = {
185
185
  type: "suggestion",
186
186
 
187
187
  docs: {
188
- description: "require `let` or `const` instead of `var`",
188
+ description: "Require `let` or `const` instead of `var`",
189
189
  recommended: false,
190
190
  url: "https://eslint.org/docs/rules/no-var"
191
191
  },
@@ -14,7 +14,7 @@ module.exports = {
14
14
  type: "suggestion",
15
15
 
16
16
  docs: {
17
- description: "disallow `void` operators",
17
+ description: "Disallow `void` operators",
18
18
  recommended: false,
19
19
  url: "https://eslint.org/docs/rules/no-void"
20
20
  },
@@ -20,7 +20,7 @@ module.exports = {
20
20
  type: "suggestion",
21
21
 
22
22
  docs: {
23
- description: "disallow specified warning terms in comments",
23
+ description: "Disallow specified warning terms in comments",
24
24
  recommended: false,
25
25
  url: "https://eslint.org/docs/rules/no-warning-comments"
26
26
  },
@@ -64,59 +64,45 @@ module.exports = {
64
64
  */
65
65
  function convertToRegExp(term) {
66
66
  const escaped = escapeRegExp(term);
67
- const wordBoundary = "\\b";
68
- const eitherOrWordBoundary = `|${wordBoundary}`;
69
- let prefix;
70
67
 
71
68
  /*
72
- * If the term ends in a word character (a-z0-9_), ensure a word
73
- * boundary at the end, so that substrings do not get falsely
74
- * matched. eg "todo" in a string such as "mastodon".
75
- * If the term ends in a non-word character, then \b won't match on
76
- * the boundary to the next non-word character, which would likely
77
- * be a space. For example `/\bFIX!\b/.test('FIX! blah') === false`.
78
- * In these cases, use no bounding match. Same applies for the
79
- * prefix, handled below.
69
+ * When matching at the start, ignore leading whitespace, and
70
+ * there's no need to worry about word boundaries.
71
+ *
72
+ * These expressions for the prefix and suffix are designed as follows:
73
+ * ^ handles any terms at the beginning of a comment.
74
+ * e.g. terms ["TODO"] matches `//TODO something`
75
+ * $ handles any terms at the end of a comment
76
+ * e.g. terms ["TODO"] matches `// something TODO`
77
+ * \s* handles optional leading spaces (for "start" location only)
78
+ * e.g. terms ["TODO"] matches `// TODO something`
79
+ * \b handles terms preceded/followed by word boundary
80
+ * e.g. terms: ["!FIX", "FIX!"] matches `// FIX!something` or `// something!FIX`
81
+ * terms: ["FIX"] matches `// FIX!` or `// !FIX`, but not `// fixed or affix`
80
82
  */
81
- const suffix = /\w$/u.test(term) ? "\\b" : "";
83
+ const wordBoundary = "\\b";
82
84
 
83
- if (location === "start") {
85
+ let prefix = "";
84
86
 
85
- /*
86
- * When matching at the start, ignore leading whitespace, and
87
- * there's no need to worry about word boundaries.
88
- */
87
+ if (location === "start") {
89
88
  prefix = "^\\s*";
90
89
  } else if (/^\w/u.test(term)) {
91
90
  prefix = wordBoundary;
92
- } else {
93
- prefix = "";
94
91
  }
95
92
 
96
- if (location === "start") {
97
-
98
- /*
99
- * For location "start" the regex should be
100
- * ^\s*TERM\b. This checks the word boundary
101
- * at the beginning of the comment.
102
- */
103
- return new RegExp(prefix + escaped + suffix, "iu");
104
- }
93
+ const suffix = /\w$/u.test(term) ? wordBoundary : "";
94
+ const flags = "iu"; // Case-insensitive with Unicode case folding.
105
95
 
106
96
  /*
107
- * For location "anywhere" the regex should be
108
- * \bTERM\b|\bTERM\b, this checks the entire comment
109
- * for the term.
97
+ * For location "start", the typical regex is:
98
+ * /^\s*ESCAPED_TERM\b/iu.
99
+ *
100
+ * For location "anywhere" the typical regex is
101
+ * /\bESCAPED_TERM\b/iu
102
+ *
103
+ * If it starts or ends with non-word character, the prefix and suffix empty, respectively.
110
104
  */
111
- return new RegExp(
112
- prefix +
113
- escaped +
114
- suffix +
115
- eitherOrWordBoundary +
116
- term +
117
- wordBoundary,
118
- "iu"
119
- );
105
+ return new RegExp(`${prefix}${escaped}${suffix}`, flags);
120
106
  }
121
107
 
122
108
  const warningRegExps = warningTerms.map(convertToRegExp);
@@ -20,7 +20,7 @@ module.exports = {
20
20
  type: "layout",
21
21
 
22
22
  docs: {
23
- description: "disallow whitespace before properties",
23
+ description: "Disallow whitespace before properties",
24
24
  recommended: false,
25
25
  url: "https://eslint.org/docs/rules/no-whitespace-before-property"
26
26
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "disallow `with` statements",
18
+ description: "Disallow `with` statements",
19
19
  recommended: true,
20
20
  url: "https://eslint.org/docs/rules/no-with"
21
21
  },
@@ -16,7 +16,7 @@ module.exports = {
16
16
  type: "layout",
17
17
 
18
18
  docs: {
19
- description: "enforce the location of single-line statements",
19
+ description: "Enforce the location of single-line statements",
20
20
  recommended: false,
21
21
  url: "https://eslint.org/docs/rules/nonblock-statement-body-position"
22
22
  },
@@ -150,7 +150,7 @@ module.exports = {
150
150
  type: "layout",
151
151
 
152
152
  docs: {
153
- description: "enforce consistent line breaks after opening and before closing braces",
153
+ description: "Enforce consistent line breaks after opening and before closing braces",
154
154
  recommended: false,
155
155
  url: "https://eslint.org/docs/rules/object-curly-newline"
156
156
  },
@@ -16,7 +16,7 @@ module.exports = {
16
16
  type: "layout",
17
17
 
18
18
  docs: {
19
- description: "enforce consistent spacing inside braces",
19
+ description: "Enforce consistent spacing inside braces",
20
20
  recommended: false,
21
21
  url: "https://eslint.org/docs/rules/object-curly-spacing"
22
22
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "layout",
16
16
 
17
17
  docs: {
18
- description: "enforce placing object properties on separate lines",
18
+ description: "Enforce placing object properties on separate lines",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/object-property-newline"
21
21
  },
@@ -28,7 +28,7 @@ module.exports = {
28
28
  type: "suggestion",
29
29
 
30
30
  docs: {
31
- description: "require or disallow method and property shorthand syntax for object literals",
31
+ description: "Require or disallow method and property shorthand syntax for object literals",
32
32
  recommended: false,
33
33
  url: "https://eslint.org/docs/rules/object-shorthand"
34
34
  },
@@ -14,7 +14,7 @@ module.exports = {
14
14
  type: "suggestion",
15
15
 
16
16
  docs: {
17
- description: "require or disallow newlines around variable declarations",
17
+ description: "Require or disallow newlines around variable declarations",
18
18
  recommended: false,
19
19
  url: "https://eslint.org/docs/rules/one-var-declaration-per-line"
20
20
  },
@@ -34,7 +34,7 @@ module.exports = {
34
34
  type: "suggestion",
35
35
 
36
36
  docs: {
37
- description: "enforce variables to be declared either together or separately in functions",
37
+ description: "Enforce variables to be declared either together or separately in functions",
38
38
  recommended: false,
39
39
  url: "https://eslint.org/docs/rules/one-var"
40
40
  },
@@ -63,7 +63,7 @@ module.exports = {
63
63
  type: "suggestion",
64
64
 
65
65
  docs: {
66
- description: "require or disallow assignment operator shorthand where possible",
66
+ description: "Require or disallow assignment operator shorthand where possible",
67
67
  recommended: false,
68
68
  url: "https://eslint.org/docs/rules/operator-assignment"
69
69
  },
@@ -21,7 +21,7 @@ module.exports = {
21
21
  type: "layout",
22
22
 
23
23
  docs: {
24
- description: "enforce consistent linebreak style for operators",
24
+ description: "Enforce consistent linebreak style for operators",
25
25
  recommended: false,
26
26
  url: "https://eslint.org/docs/rules/operator-linebreak"
27
27
  },
@@ -21,7 +21,7 @@ module.exports = {
21
21
  type: "layout",
22
22
 
23
23
  docs: {
24
- description: "require or disallow padding within blocks",
24
+ description: "Require or disallow padding within blocks",
25
25
  recommended: false,
26
26
  url: "https://eslint.org/docs/rules/padded-blocks"
27
27
  },
@@ -431,7 +431,7 @@ module.exports = {
431
431
  type: "layout",
432
432
 
433
433
  docs: {
434
- description: "require or disallow padding lines between statements",
434
+ description: "Require or disallow padding lines between statements",
435
435
  recommended: false,
436
436
  url: "https://eslint.org/docs/rules/padding-line-between-statements"
437
437
  },
@@ -151,7 +151,7 @@ module.exports = {
151
151
  type: "suggestion",
152
152
 
153
153
  docs: {
154
- description: "require using arrow functions for callbacks",
154
+ description: "Require using arrow functions for callbacks",
155
155
  recommended: false,
156
156
  url: "https://eslint.org/docs/rules/prefer-arrow-callback"
157
157
  },
@@ -332,7 +332,7 @@ module.exports = {
332
332
  type: "suggestion",
333
333
 
334
334
  docs: {
335
- description: "require `const` declarations for variables that are never reassigned after declared",
335
+ description: "Require `const` declarations for variables that are never reassigned after declared",
336
336
  recommended: false,
337
337
  url: "https://eslint.org/docs/rules/prefer-const"
338
338
  },
@@ -26,7 +26,7 @@ module.exports = {
26
26
  type: "suggestion",
27
27
 
28
28
  docs: {
29
- description: "require destructuring from arrays and/or objects",
29
+ description: "Require destructuring from arrays and/or objects",
30
30
  recommended: false,
31
31
  url: "https://eslint.org/docs/rules/prefer-destructuring"
32
32
  },
@@ -90,7 +90,7 @@ module.exports = {
90
90
  type: "suggestion",
91
91
 
92
92
  docs: {
93
- description: "disallow the use of `Math.pow` in favor of the `**` operator",
93
+ description: "Disallow the use of `Math.pow` in favor of the `**` operator",
94
94
  recommended: false,
95
95
  url: "https://eslint.org/docs/rules/prefer-exponentiation-operator"
96
96
  },
@@ -33,7 +33,7 @@ module.exports = {
33
33
  type: "suggestion",
34
34
 
35
35
  docs: {
36
- description: "enforce using named capture group in regular expression",
36
+ description: "Enforce using named capture group in regular expression",
37
37
  recommended: false,
38
38
  url: "https://eslint.org/docs/rules/prefer-named-capture-group"
39
39
  },
@@ -45,7 +45,7 @@ module.exports = {
45
45
  type: "suggestion",
46
46
 
47
47
  docs: {
48
- description: "disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals",
48
+ description: "Disallow `parseInt()` and `Number.parseInt()` in favor of binary, octal, and hexadecimal literals",
49
49
  recommended: false,
50
50
  url: "https://eslint.org/docs/rules/prefer-numeric-literals"
51
51
  },
@@ -50,7 +50,7 @@ module.exports = {
50
50
  type: "suggestion",
51
51
  docs: {
52
52
  description:
53
- "disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`",
53
+ "Disallow use of `Object.prototype.hasOwnProperty.call()` and prefer use of `Object.hasOwn()`",
54
54
  recommended: false,
55
55
  url: "https://eslint.org/docs/rules/prefer-object-has-own"
56
56
  },
@@ -247,7 +247,7 @@ module.exports = {
247
247
 
248
248
  docs: {
249
249
  description:
250
- "disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.",
250
+ "Disallow using Object.assign with an object literal as the first argument and prefer the use of object spread instead.",
251
251
  recommended: false,
252
252
  url: "https://eslint.org/docs/rules/prefer-object-spread"
253
253
  },
@@ -16,7 +16,7 @@ module.exports = {
16
16
  type: "suggestion",
17
17
 
18
18
  docs: {
19
- description: "require using Error objects as Promise rejection reasons",
19
+ description: "Require using Error objects as Promise rejection reasons",
20
20
  recommended: false,
21
21
  url: "https://eslint.org/docs/rules/prefer-promise-reject-errors"
22
22
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "require `Reflect` methods where applicable",
18
+ description: "Require `Reflect` methods where applicable",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/prefer-reflect"
21
21
  },
@@ -123,7 +123,7 @@ module.exports = {
123
123
  type: "suggestion",
124
124
 
125
125
  docs: {
126
- description: "disallow use of the `RegExp` constructor in favor of regular expression literals",
126
+ description: "Disallow use of the `RegExp` constructor in favor of regular expression literals",
127
127
  recommended: false,
128
128
  url: "https://eslint.org/docs/rules/prefer-regex-literals"
129
129
  },
@@ -65,7 +65,7 @@ module.exports = {
65
65
  type: "suggestion",
66
66
 
67
67
  docs: {
68
- description: "require rest parameters instead of `arguments`",
68
+ description: "Require rest parameters instead of `arguments`",
69
69
  recommended: false,
70
70
  url: "https://eslint.org/docs/rules/prefer-rest-params"
71
71
  },
@@ -49,7 +49,7 @@ module.exports = {
49
49
  type: "suggestion",
50
50
 
51
51
  docs: {
52
- description: "require spread operators instead of `.apply()`",
52
+ description: "Require spread operators instead of `.apply()`",
53
53
  recommended: false,
54
54
  url: "https://eslint.org/docs/rules/prefer-spread"
55
55
  },
@@ -128,7 +128,7 @@ module.exports = {
128
128
  type: "suggestion",
129
129
 
130
130
  docs: {
131
- description: "require template literals instead of string concatenation",
131
+ description: "Require template literals instead of string concatenation",
132
132
  recommended: false,
133
133
  url: "https://eslint.org/docs/rules/prefer-template"
134
134
  },
@@ -22,7 +22,7 @@ module.exports = {
22
22
  type: "suggestion",
23
23
 
24
24
  docs: {
25
- description: "require quotes around object literal property names",
25
+ description: "Require quotes around object literal property names",
26
26
  recommended: false,
27
27
  url: "https://eslint.org/docs/rules/quote-props"
28
28
  },
@@ -80,7 +80,7 @@ module.exports = {
80
80
  type: "layout",
81
81
 
82
82
  docs: {
83
- description: "enforce the consistent use of either backticks, double, or single quotes",
83
+ description: "Enforce the consistent use of either backticks, double, or single quotes",
84
84
  recommended: false,
85
85
  url: "https://eslint.org/docs/rules/quotes"
86
86
  },
@@ -80,7 +80,7 @@ module.exports = {
80
80
  type: "suggestion",
81
81
 
82
82
  docs: {
83
- description: "enforce the consistent use of the radix argument when using `parseInt()`",
83
+ description: "Enforce the consistent use of the radix argument when using `parseInt()`",
84
84
  recommended: false,
85
85
  url: "https://eslint.org/docs/rules/radix"
86
86
  },
@@ -171,7 +171,7 @@ module.exports = {
171
171
  type: "problem",
172
172
 
173
173
  docs: {
174
- description: "disallow assignments that can lead to race conditions due to usage of `await` or `yield`",
174
+ description: "Disallow assignments that can lead to race conditions due to usage of `await` or `yield`",
175
175
  recommended: false,
176
176
  url: "https://eslint.org/docs/rules/require-atomic-updates"
177
177
  },
@@ -34,7 +34,7 @@ module.exports = {
34
34
  type: "suggestion",
35
35
 
36
36
  docs: {
37
- description: "disallow async functions which have no `await` expression",
37
+ description: "Disallow async functions which have no `await` expression",
38
38
  recommended: false,
39
39
  url: "https://eslint.org/docs/rules/require-await"
40
40
  },