eslint 8.18.0 → 8.21.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 (299) hide show
  1. package/README.md +3 -9
  2. package/lib/config/default-config.js +16 -7
  3. package/lib/config/flat-config-array.js +41 -2
  4. package/lib/config/flat-config-helpers.js +9 -1
  5. package/lib/eslint/eslint-helpers.js +621 -0
  6. package/lib/eslint/flat-eslint.js +1164 -0
  7. package/lib/eslint/index.js +3 -1
  8. package/lib/linter/linter.js +72 -4
  9. package/lib/rule-tester/flat-rule-tester.js +41 -38
  10. package/lib/rule-tester/rule-tester.js +42 -0
  11. package/lib/rules/accessor-pairs.js +1 -1
  12. package/lib/rules/array-bracket-newline.js +1 -1
  13. package/lib/rules/array-bracket-spacing.js +1 -1
  14. package/lib/rules/array-callback-return.js +1 -1
  15. package/lib/rules/array-element-newline.js +1 -1
  16. package/lib/rules/arrow-body-style.js +1 -1
  17. package/lib/rules/arrow-parens.js +1 -1
  18. package/lib/rules/arrow-spacing.js +1 -1
  19. package/lib/rules/block-scoped-var.js +1 -1
  20. package/lib/rules/block-spacing.js +1 -1
  21. package/lib/rules/brace-style.js +1 -1
  22. package/lib/rules/callback-return.js +1 -1
  23. package/lib/rules/camelcase.js +1 -1
  24. package/lib/rules/capitalized-comments.js +1 -1
  25. package/lib/rules/class-methods-use-this.js +1 -1
  26. package/lib/rules/comma-dangle.js +1 -1
  27. package/lib/rules/comma-spacing.js +36 -42
  28. package/lib/rules/comma-style.js +1 -1
  29. package/lib/rules/complexity.js +1 -1
  30. package/lib/rules/computed-property-spacing.js +1 -1
  31. package/lib/rules/consistent-return.js +1 -1
  32. package/lib/rules/consistent-this.js +1 -1
  33. package/lib/rules/constructor-super.js +1 -1
  34. package/lib/rules/curly.js +1 -1
  35. package/lib/rules/default-case-last.js +1 -1
  36. package/lib/rules/default-case.js +1 -1
  37. package/lib/rules/default-param-last.js +1 -1
  38. package/lib/rules/dot-location.js +1 -1
  39. package/lib/rules/dot-notation.js +1 -1
  40. package/lib/rules/eol-last.js +1 -1
  41. package/lib/rules/eqeqeq.js +1 -1
  42. package/lib/rules/for-direction.js +1 -1
  43. package/lib/rules/func-call-spacing.js +1 -1
  44. package/lib/rules/func-name-matching.js +1 -1
  45. package/lib/rules/func-names.js +1 -1
  46. package/lib/rules/func-style.js +1 -1
  47. package/lib/rules/function-call-argument-newline.js +1 -1
  48. package/lib/rules/function-paren-newline.js +1 -1
  49. package/lib/rules/generator-star-spacing.js +1 -1
  50. package/lib/rules/getter-return.js +1 -1
  51. package/lib/rules/global-require.js +1 -1
  52. package/lib/rules/grouped-accessor-pairs.js +1 -1
  53. package/lib/rules/guard-for-in.js +1 -1
  54. package/lib/rules/handle-callback-err.js +1 -1
  55. package/lib/rules/id-blacklist.js +1 -1
  56. package/lib/rules/id-denylist.js +1 -1
  57. package/lib/rules/id-length.js +1 -1
  58. package/lib/rules/id-match.js +1 -1
  59. package/lib/rules/implicit-arrow-linebreak.js +1 -1
  60. package/lib/rules/indent-legacy.js +1 -1
  61. package/lib/rules/indent.js +3 -3
  62. package/lib/rules/init-declarations.js +1 -1
  63. package/lib/rules/jsx-quotes.js +1 -1
  64. package/lib/rules/key-spacing.js +5 -2
  65. package/lib/rules/keyword-spacing.js +1 -1
  66. package/lib/rules/line-comment-position.js +1 -1
  67. package/lib/rules/linebreak-style.js +1 -1
  68. package/lib/rules/lines-around-comment.js +12 -5
  69. package/lib/rules/lines-around-directive.js +1 -1
  70. package/lib/rules/lines-between-class-members.js +1 -1
  71. package/lib/rules/max-classes-per-file.js +1 -1
  72. package/lib/rules/max-depth.js +1 -1
  73. package/lib/rules/max-len.js +1 -1
  74. package/lib/rules/max-lines-per-function.js +1 -1
  75. package/lib/rules/max-lines.js +1 -1
  76. package/lib/rules/max-nested-callbacks.js +1 -1
  77. package/lib/rules/max-params.js +1 -1
  78. package/lib/rules/max-statements-per-line.js +1 -1
  79. package/lib/rules/max-statements.js +1 -1
  80. package/lib/rules/multiline-comment-style.js +1 -1
  81. package/lib/rules/multiline-ternary.js +1 -1
  82. package/lib/rules/new-cap.js +1 -1
  83. package/lib/rules/new-parens.js +1 -1
  84. package/lib/rules/newline-after-var.js +1 -1
  85. package/lib/rules/newline-before-return.js +1 -1
  86. package/lib/rules/newline-per-chained-call.js +1 -1
  87. package/lib/rules/no-alert.js +1 -1
  88. package/lib/rules/no-array-constructor.js +1 -1
  89. package/lib/rules/no-async-promise-executor.js +1 -1
  90. package/lib/rules/no-await-in-loop.js +1 -1
  91. package/lib/rules/no-bitwise.js +1 -1
  92. package/lib/rules/no-buffer-constructor.js +1 -1
  93. package/lib/rules/no-caller.js +1 -1
  94. package/lib/rules/no-case-declarations.js +1 -1
  95. package/lib/rules/no-catch-shadow.js +1 -1
  96. package/lib/rules/no-class-assign.js +1 -1
  97. package/lib/rules/no-compare-neg-zero.js +1 -1
  98. package/lib/rules/no-cond-assign.js +1 -1
  99. package/lib/rules/no-confusing-arrow.js +1 -1
  100. package/lib/rules/no-console.js +1 -1
  101. package/lib/rules/no-const-assign.js +1 -1
  102. package/lib/rules/no-constant-binary-expression.js +1 -1
  103. package/lib/rules/no-constant-condition.js +1 -1
  104. package/lib/rules/no-constructor-return.js +1 -1
  105. package/lib/rules/no-continue.js +1 -1
  106. package/lib/rules/no-control-regex.js +1 -1
  107. package/lib/rules/no-debugger.js +1 -1
  108. package/lib/rules/no-delete-var.js +1 -1
  109. package/lib/rules/no-div-regex.js +1 -1
  110. package/lib/rules/no-dupe-args.js +1 -1
  111. package/lib/rules/no-dupe-class-members.js +1 -1
  112. package/lib/rules/no-dupe-else-if.js +1 -1
  113. package/lib/rules/no-dupe-keys.js +1 -1
  114. package/lib/rules/no-duplicate-case.js +1 -1
  115. package/lib/rules/no-duplicate-imports.js +1 -1
  116. package/lib/rules/no-else-return.js +1 -1
  117. package/lib/rules/no-empty-character-class.js +1 -1
  118. package/lib/rules/no-empty-function.js +1 -1
  119. package/lib/rules/no-empty-pattern.js +1 -1
  120. package/lib/rules/no-empty.js +1 -1
  121. package/lib/rules/no-eq-null.js +1 -1
  122. package/lib/rules/no-eval.js +1 -1
  123. package/lib/rules/no-ex-assign.js +1 -1
  124. package/lib/rules/no-extend-native.js +1 -1
  125. package/lib/rules/no-extra-bind.js +1 -1
  126. package/lib/rules/no-extra-boolean-cast.js +1 -1
  127. package/lib/rules/no-extra-label.js +1 -1
  128. package/lib/rules/no-extra-parens.js +1 -1
  129. package/lib/rules/no-extra-semi.js +1 -1
  130. package/lib/rules/no-fallthrough.js +1 -1
  131. package/lib/rules/no-floating-decimal.js +1 -1
  132. package/lib/rules/no-func-assign.js +1 -1
  133. package/lib/rules/no-global-assign.js +1 -1
  134. package/lib/rules/no-implicit-coercion.js +1 -1
  135. package/lib/rules/no-implicit-globals.js +1 -1
  136. package/lib/rules/no-implied-eval.js +1 -1
  137. package/lib/rules/no-import-assign.js +1 -1
  138. package/lib/rules/no-inline-comments.js +1 -1
  139. package/lib/rules/no-inner-declarations.js +1 -1
  140. package/lib/rules/no-invalid-regexp.js +1 -1
  141. package/lib/rules/no-invalid-this.js +1 -1
  142. package/lib/rules/no-irregular-whitespace.js +1 -1
  143. package/lib/rules/no-iterator.js +1 -1
  144. package/lib/rules/no-label-var.js +1 -1
  145. package/lib/rules/no-labels.js +1 -1
  146. package/lib/rules/no-lone-blocks.js +1 -1
  147. package/lib/rules/no-lonely-if.js +1 -1
  148. package/lib/rules/no-loop-func.js +1 -1
  149. package/lib/rules/no-loss-of-precision.js +1 -1
  150. package/lib/rules/no-magic-numbers.js +1 -1
  151. package/lib/rules/no-misleading-character-class.js +1 -1
  152. package/lib/rules/no-mixed-operators.js +1 -1
  153. package/lib/rules/no-mixed-requires.js +1 -1
  154. package/lib/rules/no-mixed-spaces-and-tabs.js +1 -1
  155. package/lib/rules/no-multi-assign.js +1 -1
  156. package/lib/rules/no-multi-spaces.js +1 -1
  157. package/lib/rules/no-multi-str.js +1 -1
  158. package/lib/rules/no-multiple-empty-lines.js +1 -1
  159. package/lib/rules/no-native-reassign.js +1 -1
  160. package/lib/rules/no-negated-condition.js +1 -1
  161. package/lib/rules/no-negated-in-lhs.js +1 -1
  162. package/lib/rules/no-nested-ternary.js +1 -1
  163. package/lib/rules/no-new-func.js +1 -1
  164. package/lib/rules/no-new-object.js +1 -1
  165. package/lib/rules/no-new-require.js +1 -1
  166. package/lib/rules/no-new-symbol.js +1 -1
  167. package/lib/rules/no-new-wrappers.js +1 -1
  168. package/lib/rules/no-new.js +1 -1
  169. package/lib/rules/no-nonoctal-decimal-escape.js +1 -1
  170. package/lib/rules/no-obj-calls.js +1 -1
  171. package/lib/rules/no-octal-escape.js +1 -1
  172. package/lib/rules/no-octal.js +1 -1
  173. package/lib/rules/no-param-reassign.js +1 -1
  174. package/lib/rules/no-path-concat.js +1 -1
  175. package/lib/rules/no-plusplus.js +1 -1
  176. package/lib/rules/no-process-env.js +1 -1
  177. package/lib/rules/no-process-exit.js +1 -1
  178. package/lib/rules/no-promise-executor-return.js +1 -1
  179. package/lib/rules/no-proto.js +1 -1
  180. package/lib/rules/no-prototype-builtins.js +1 -1
  181. package/lib/rules/no-redeclare.js +1 -1
  182. package/lib/rules/no-regex-spaces.js +1 -1
  183. package/lib/rules/no-restricted-exports.js +1 -1
  184. package/lib/rules/no-restricted-globals.js +1 -1
  185. package/lib/rules/no-restricted-imports.js +77 -12
  186. package/lib/rules/no-restricted-modules.js +1 -1
  187. package/lib/rules/no-restricted-properties.js +1 -1
  188. package/lib/rules/no-restricted-syntax.js +1 -1
  189. package/lib/rules/no-return-assign.js +1 -1
  190. package/lib/rules/no-return-await.js +1 -1
  191. package/lib/rules/no-script-url.js +1 -1
  192. package/lib/rules/no-self-assign.js +1 -1
  193. package/lib/rules/no-self-compare.js +1 -1
  194. package/lib/rules/no-sequences.js +1 -1
  195. package/lib/rules/no-setter-return.js +1 -1
  196. package/lib/rules/no-shadow-restricted-names.js +1 -1
  197. package/lib/rules/no-shadow.js +1 -1
  198. package/lib/rules/no-spaced-func.js +1 -1
  199. package/lib/rules/no-sparse-arrays.js +1 -1
  200. package/lib/rules/no-sync.js +1 -1
  201. package/lib/rules/no-tabs.js +1 -1
  202. package/lib/rules/no-template-curly-in-string.js +1 -1
  203. package/lib/rules/no-ternary.js +1 -1
  204. package/lib/rules/no-this-before-super.js +1 -1
  205. package/lib/rules/no-throw-literal.js +1 -1
  206. package/lib/rules/no-trailing-spaces.js +1 -1
  207. package/lib/rules/no-undef-init.js +1 -1
  208. package/lib/rules/no-undef.js +1 -1
  209. package/lib/rules/no-undefined.js +1 -1
  210. package/lib/rules/no-underscore-dangle.js +1 -1
  211. package/lib/rules/no-unexpected-multiline.js +1 -1
  212. package/lib/rules/no-unmodified-loop-condition.js +1 -1
  213. package/lib/rules/no-unneeded-ternary.js +1 -1
  214. package/lib/rules/no-unreachable-loop.js +1 -1
  215. package/lib/rules/no-unreachable.js +1 -1
  216. package/lib/rules/no-unsafe-finally.js +1 -1
  217. package/lib/rules/no-unsafe-negation.js +1 -1
  218. package/lib/rules/no-unsafe-optional-chaining.js +1 -1
  219. package/lib/rules/no-unused-expressions.js +1 -1
  220. package/lib/rules/no-unused-labels.js +1 -1
  221. package/lib/rules/no-unused-private-class-members.js +1 -1
  222. package/lib/rules/no-unused-vars.js +1 -1
  223. package/lib/rules/no-use-before-define.js +1 -1
  224. package/lib/rules/no-useless-backreference.js +1 -1
  225. package/lib/rules/no-useless-call.js +1 -1
  226. package/lib/rules/no-useless-catch.js +1 -1
  227. package/lib/rules/no-useless-computed-key.js +1 -1
  228. package/lib/rules/no-useless-concat.js +1 -1
  229. package/lib/rules/no-useless-constructor.js +1 -1
  230. package/lib/rules/no-useless-escape.js +1 -1
  231. package/lib/rules/no-useless-rename.js +1 -1
  232. package/lib/rules/no-useless-return.js +1 -1
  233. package/lib/rules/no-var.js +1 -1
  234. package/lib/rules/no-void.js +1 -1
  235. package/lib/rules/no-warning-comments.js +27 -41
  236. package/lib/rules/no-whitespace-before-property.js +1 -1
  237. package/lib/rules/no-with.js +1 -1
  238. package/lib/rules/nonblock-statement-body-position.js +1 -1
  239. package/lib/rules/object-curly-newline.js +1 -1
  240. package/lib/rules/object-curly-spacing.js +1 -1
  241. package/lib/rules/object-property-newline.js +1 -1
  242. package/lib/rules/object-shorthand.js +1 -1
  243. package/lib/rules/one-var-declaration-per-line.js +1 -1
  244. package/lib/rules/one-var.js +1 -1
  245. package/lib/rules/operator-assignment.js +1 -1
  246. package/lib/rules/operator-linebreak.js +1 -1
  247. package/lib/rules/padded-blocks.js +1 -1
  248. package/lib/rules/padding-line-between-statements.js +1 -1
  249. package/lib/rules/prefer-arrow-callback.js +1 -1
  250. package/lib/rules/prefer-const.js +1 -1
  251. package/lib/rules/prefer-destructuring.js +1 -1
  252. package/lib/rules/prefer-exponentiation-operator.js +1 -1
  253. package/lib/rules/prefer-named-capture-group.js +1 -1
  254. package/lib/rules/prefer-numeric-literals.js +1 -1
  255. package/lib/rules/prefer-object-has-own.js +1 -1
  256. package/lib/rules/prefer-object-spread.js +1 -1
  257. package/lib/rules/prefer-promise-reject-errors.js +1 -1
  258. package/lib/rules/prefer-reflect.js +1 -1
  259. package/lib/rules/prefer-regex-literals.js +1 -1
  260. package/lib/rules/prefer-rest-params.js +1 -1
  261. package/lib/rules/prefer-spread.js +1 -1
  262. package/lib/rules/prefer-template.js +1 -1
  263. package/lib/rules/quote-props.js +1 -1
  264. package/lib/rules/quotes.js +1 -1
  265. package/lib/rules/radix.js +1 -1
  266. package/lib/rules/require-atomic-updates.js +1 -1
  267. package/lib/rules/require-await.js +1 -1
  268. package/lib/rules/require-jsdoc.js +1 -1
  269. package/lib/rules/require-unicode-regexp.js +1 -1
  270. package/lib/rules/require-yield.js +1 -1
  271. package/lib/rules/rest-spread-spacing.js +1 -1
  272. package/lib/rules/semi-spacing.js +1 -1
  273. package/lib/rules/semi-style.js +1 -1
  274. package/lib/rules/semi.js +1 -1
  275. package/lib/rules/sort-imports.js +1 -1
  276. package/lib/rules/sort-keys.js +44 -1
  277. package/lib/rules/sort-vars.js +1 -1
  278. package/lib/rules/space-before-blocks.js +1 -1
  279. package/lib/rules/space-before-function-paren.js +1 -1
  280. package/lib/rules/space-in-parens.js +1 -1
  281. package/lib/rules/space-infix-ops.js +1 -1
  282. package/lib/rules/space-unary-ops.js +1 -1
  283. package/lib/rules/spaced-comment.js +1 -1
  284. package/lib/rules/strict.js +1 -1
  285. package/lib/rules/switch-colon-spacing.js +1 -1
  286. package/lib/rules/symbol-description.js +1 -1
  287. package/lib/rules/template-curly-spacing.js +1 -1
  288. package/lib/rules/template-tag-spacing.js +1 -1
  289. package/lib/rules/unicode-bom.js +1 -1
  290. package/lib/rules/use-isnan.js +1 -1
  291. package/lib/rules/valid-jsdoc.js +1 -1
  292. package/lib/rules/valid-typeof.js +1 -1
  293. package/lib/rules/vars-on-top.js +1 -1
  294. package/lib/rules/wrap-iife.js +1 -1
  295. package/lib/rules/wrap-regex.js +1 -1
  296. package/lib/rules/yield-star-spacing.js +1 -1
  297. package/lib/rules/yoda.js +1 -1
  298. package/lib/unsupported-api.js +4 -0
  299. package/package.json +13 -10
@@ -11,7 +11,7 @@ module.exports = {
11
11
  type: "suggestion",
12
12
 
13
13
  docs: {
14
- description: "enforce default parameters to be last",
14
+ description: "Enforce default parameters to be last",
15
15
  recommended: false,
16
16
  url: "https://eslint.org/docs/rules/default-param-last"
17
17
  },
@@ -17,7 +17,7 @@ module.exports = {
17
17
  type: "layout",
18
18
 
19
19
  docs: {
20
- description: "enforce consistent newlines before and after dots",
20
+ description: "Enforce consistent newlines before and after dots",
21
21
  recommended: false,
22
22
  url: "https://eslint.org/docs/rules/dot-location"
23
23
  },
@@ -26,7 +26,7 @@ module.exports = {
26
26
  type: "suggestion",
27
27
 
28
28
  docs: {
29
- description: "enforce dot notation whenever possible",
29
+ description: "Enforce dot notation whenever possible",
30
30
  recommended: false,
31
31
  url: "https://eslint.org/docs/rules/dot-notation"
32
32
  },
@@ -14,7 +14,7 @@ module.exports = {
14
14
  type: "layout",
15
15
 
16
16
  docs: {
17
- description: "require or disallow newline at the end of files",
17
+ description: "Require or disallow newline at the end of files",
18
18
  recommended: false,
19
19
  url: "https://eslint.org/docs/rules/eol-last"
20
20
  },
@@ -21,7 +21,7 @@ module.exports = {
21
21
  type: "suggestion",
22
22
 
23
23
  docs: {
24
- description: "require the use of `===` and `!==`",
24
+ description: "Require the use of `===` and `!==`",
25
25
  recommended: false,
26
26
  url: "https://eslint.org/docs/rules/eqeqeq"
27
27
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "problem",
16
16
 
17
17
  docs: {
18
- description: "enforce \"for\" loop update clause moving the counter in the right direction.",
18
+ description: "Enforce \"for\" loop update clause moving the counter in the right direction.",
19
19
  recommended: true,
20
20
  url: "https://eslint.org/docs/rules/for-direction"
21
21
  },
@@ -21,7 +21,7 @@ module.exports = {
21
21
  type: "layout",
22
22
 
23
23
  docs: {
24
- description: "require or disallow spacing between function identifiers and their invocations",
24
+ description: "Require or disallow spacing between function identifiers and their invocations",
25
25
  recommended: false,
26
26
  url: "https://eslint.org/docs/rules/func-call-spacing"
27
27
  },
@@ -74,7 +74,7 @@ module.exports = {
74
74
  type: "suggestion",
75
75
 
76
76
  docs: {
77
- description: "require function names to match the name of the variable or property to which they are assigned",
77
+ description: "Require function names to match the name of the variable or property to which they are assigned",
78
78
  recommended: false,
79
79
  url: "https://eslint.org/docs/rules/func-name-matching"
80
80
  },
@@ -30,7 +30,7 @@ module.exports = {
30
30
  type: "suggestion",
31
31
 
32
32
  docs: {
33
- description: "require or disallow named `function` expressions",
33
+ description: "Require or disallow named `function` expressions",
34
34
  recommended: false,
35
35
  url: "https://eslint.org/docs/rules/func-names"
36
36
  },
@@ -14,7 +14,7 @@ module.exports = {
14
14
  type: "suggestion",
15
15
 
16
16
  docs: {
17
- description: "enforce the consistent use of either `function` declarations or expressions",
17
+ description: "Enforce the consistent use of either `function` declarations or expressions",
18
18
  recommended: false,
19
19
  url: "https://eslint.org/docs/rules/func-style"
20
20
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "layout",
16
16
 
17
17
  docs: {
18
- description: "enforce line breaks between arguments of a function call",
18
+ description: "Enforce line breaks between arguments of a function call",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/function-call-argument-newline"
21
21
  },
@@ -20,7 +20,7 @@ module.exports = {
20
20
  type: "layout",
21
21
 
22
22
  docs: {
23
- description: "enforce consistent line breaks inside function parentheses",
23
+ description: "Enforce consistent line breaks inside function parentheses",
24
24
  recommended: false,
25
25
  url: "https://eslint.org/docs/rules/function-paren-newline"
26
26
  },
@@ -31,7 +31,7 @@ module.exports = {
31
31
  type: "layout",
32
32
 
33
33
  docs: {
34
- description: "enforce consistent spacing around `*` operators in generator functions",
34
+ description: "Enforce consistent spacing around `*` operators in generator functions",
35
35
  recommended: false,
36
36
  url: "https://eslint.org/docs/rules/generator-star-spacing"
37
37
  },
@@ -35,7 +35,7 @@ module.exports = {
35
35
  type: "problem",
36
36
 
37
37
  docs: {
38
- description: "enforce `return` statements in getters",
38
+ description: "Enforce `return` statements in getters",
39
39
  recommended: true,
40
40
  url: "https://eslint.org/docs/rules/getter-return"
41
41
  },
@@ -58,7 +58,7 @@ module.exports = {
58
58
  type: "suggestion",
59
59
 
60
60
  docs: {
61
- description: "require `require()` calls to be placed at top-level module scope",
61
+ description: "Require `require()` calls to be placed at top-level module scope",
62
62
  recommended: false,
63
63
  url: "https://eslint.org/docs/rules/global-require"
64
64
  },
@@ -96,7 +96,7 @@ module.exports = {
96
96
  type: "suggestion",
97
97
 
98
98
  docs: {
99
- description: "require grouped accessor pairs in object literals and classes",
99
+ description: "Require grouped accessor pairs in object literals and classes",
100
100
  recommended: false,
101
101
  url: "https://eslint.org/docs/rules/grouped-accessor-pairs"
102
102
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "require `for-in` loops to include an `if` statement",
18
+ description: "Require `for-in` loops to include an `if` statement",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/guard-for-in"
21
21
  },
@@ -20,7 +20,7 @@ module.exports = {
20
20
  type: "suggestion",
21
21
 
22
22
  docs: {
23
- description: "require error handling in callbacks",
23
+ description: "Require error handling in callbacks",
24
24
  recommended: false,
25
25
  url: "https://eslint.org/docs/rules/handle-callback-err"
26
26
  },
@@ -119,7 +119,7 @@ module.exports = {
119
119
  type: "suggestion",
120
120
 
121
121
  docs: {
122
- description: "disallow specified identifiers",
122
+ description: "Disallow specified identifiers",
123
123
  recommended: false,
124
124
  url: "https://eslint.org/docs/rules/id-blacklist"
125
125
  },
@@ -99,7 +99,7 @@ module.exports = {
99
99
  type: "suggestion",
100
100
 
101
101
  docs: {
102
- description: "disallow specified identifiers",
102
+ description: "Disallow specified identifiers",
103
103
  recommended: false,
104
104
  url: "https://eslint.org/docs/rules/id-denylist"
105
105
  },
@@ -16,7 +16,7 @@ module.exports = {
16
16
  type: "suggestion",
17
17
 
18
18
  docs: {
19
- description: "enforce minimum and maximum identifier lengths",
19
+ description: "Enforce minimum and maximum identifier lengths",
20
20
  recommended: false,
21
21
  url: "https://eslint.org/docs/rules/id-length"
22
22
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "require identifiers to match a specified regular expression",
18
+ description: "Require identifiers to match a specified regular expression",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/id-match"
21
21
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "layout",
16
16
 
17
17
  docs: {
18
- description: "enforce the location of arrow function bodies",
18
+ description: "Enforce the location of arrow function bodies",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/implicit-arrow-linebreak"
21
21
  },
@@ -26,7 +26,7 @@ module.exports = {
26
26
  type: "layout",
27
27
 
28
28
  docs: {
29
- description: "enforce consistent indentation",
29
+ description: "Enforce consistent indentation",
30
30
  recommended: false,
31
31
  url: "https://eslint.org/docs/rules/indent-legacy"
32
32
  },
@@ -500,7 +500,7 @@ module.exports = {
500
500
  type: "layout",
501
501
 
502
502
  docs: {
503
- description: "enforce consistent indentation",
503
+ description: "Enforce consistent indentation",
504
504
  recommended: false,
505
505
  url: "https://eslint.org/docs/rules/indent"
506
506
  },
@@ -1211,7 +1211,7 @@ module.exports = {
1211
1211
  }
1212
1212
  },
1213
1213
 
1214
- "DoWhileStatement, WhileStatement, ForInStatement, ForOfStatement": node => addBlocklessNodeIndent(node.body),
1214
+ "DoWhileStatement, WhileStatement, ForInStatement, ForOfStatement, WithStatement": node => addBlocklessNodeIndent(node.body),
1215
1215
 
1216
1216
  ExportNamedDeclaration(node) {
1217
1217
  if (node.declaration === null) {
@@ -1268,7 +1268,7 @@ module.exports = {
1268
1268
  *
1269
1269
  * Traversal into the node sets indentation of the semicolon, so we need to override it on exit.
1270
1270
  */
1271
- ":matches(DoWhileStatement, ForStatement, ForInStatement, ForOfStatement, IfStatement, WhileStatement):exit"(node) {
1271
+ ":matches(DoWhileStatement, ForStatement, ForInStatement, ForOfStatement, IfStatement, WhileStatement, WithStatement):exit"(node) {
1272
1272
  let nodesToCheck;
1273
1273
 
1274
1274
  if (node.type === "IfStatement") {
@@ -48,7 +48,7 @@ module.exports = {
48
48
  type: "suggestion",
49
49
 
50
50
  docs: {
51
- description: "require or disallow initialization in variable declarations",
51
+ description: "Require or disallow initialization in variable declarations",
52
52
  recommended: false,
53
53
  url: "https://eslint.org/docs/rules/init-declarations"
54
54
  },
@@ -42,7 +42,7 @@ module.exports = {
42
42
  type: "layout",
43
43
 
44
44
  docs: {
45
- description: "enforce the consistent use of either double or single quotes in JSX attributes",
45
+ description: "Enforce the consistent use of either double or single quotes in JSX attributes",
46
46
  recommended: false,
47
47
  url: "https://eslint.org/docs/rules/jsx-quotes"
48
48
  },
@@ -9,6 +9,9 @@
9
9
  //------------------------------------------------------------------------------
10
10
 
11
11
  const astUtils = require("./utils/ast-utils");
12
+ const GraphemeSplitter = require("grapheme-splitter");
13
+
14
+ const splitter = new GraphemeSplitter();
12
15
 
13
16
  //------------------------------------------------------------------------------
14
17
  // Helpers
@@ -139,7 +142,7 @@ module.exports = {
139
142
  type: "layout",
140
143
 
141
144
  docs: {
142
- description: "enforce consistent spacing between keys and values in object literal properties",
145
+ description: "Enforce consistent spacing between keys and values in object literal properties",
143
146
  recommended: false,
144
147
  url: "https://eslint.org/docs/rules/key-spacing"
145
148
  },
@@ -508,7 +511,7 @@ module.exports = {
508
511
  const startToken = sourceCode.getFirstToken(property);
509
512
  const endToken = getLastTokenBeforeColon(property.key);
510
513
 
511
- return endToken.range[1] - startToken.range[0];
514
+ return splitter.countGraphemes(sourceCode.getText().slice(startToken.range[0], endToken.range[1]));
512
515
  }
513
516
 
514
517
  /**
@@ -67,7 +67,7 @@ module.exports = {
67
67
  type: "layout",
68
68
 
69
69
  docs: {
70
- description: "enforce consistent spacing before and after keywords",
70
+ description: "Enforce consistent spacing before and after keywords",
71
71
  recommended: false,
72
72
  url: "https://eslint.org/docs/rules/keyword-spacing"
73
73
  },
@@ -16,7 +16,7 @@ module.exports = {
16
16
  type: "layout",
17
17
 
18
18
  docs: {
19
- description: "enforce position of line comments",
19
+ description: "Enforce position of line comments",
20
20
  recommended: false,
21
21
  url: "https://eslint.org/docs/rules/line-comment-position"
22
22
  },
@@ -21,7 +21,7 @@ module.exports = {
21
21
  type: "layout",
22
22
 
23
23
  docs: {
24
- description: "enforce consistent linebreak style",
24
+ description: "Enforce consistent linebreak style",
25
25
  recommended: false,
26
26
  url: "https://eslint.org/docs/rules/linebreak-style"
27
27
  },
@@ -55,7 +55,7 @@ module.exports = {
55
55
  type: "layout",
56
56
 
57
57
  docs: {
58
- description: "require empty lines around comments",
58
+ description: "Require empty lines around comments",
59
59
  recommended: false,
60
60
  url: "https://eslint.org/docs/rules/lines-around-comment"
61
61
  },
@@ -231,9 +231,15 @@ module.exports = {
231
231
  const parent = getParentNodeOfToken(token);
232
232
 
233
233
  if (parent && isParentNodeType(parent, nodeType)) {
234
- const parentStartNodeOrToken = parent.type === "StaticBlock"
235
- ? sourceCode.getFirstToken(parent, { skip: 1 }) // opening brace of the static block
236
- : parent;
234
+ let parentStartNodeOrToken = parent;
235
+
236
+ if (parent.type === "StaticBlock") {
237
+ parentStartNodeOrToken = sourceCode.getFirstToken(parent, { skip: 1 }); // opening brace of the static block
238
+ } else if (parent.type === "SwitchStatement") {
239
+ parentStartNodeOrToken = sourceCode.getTokenAfter(parent.discriminant, {
240
+ filter: astUtils.isOpeningBraceToken
241
+ }); // opening brace of the switch statement
242
+ }
237
243
 
238
244
  return token.loc.start.line - parentStartNodeOrToken.loc.start.line === 1;
239
245
  }
@@ -264,7 +270,8 @@ module.exports = {
264
270
  isCommentAtParentStart(token, "ClassBody") ||
265
271
  isCommentAtParentStart(token, "BlockStatement") ||
266
272
  isCommentAtParentStart(token, "StaticBlock") ||
267
- isCommentAtParentStart(token, "SwitchCase")
273
+ isCommentAtParentStart(token, "SwitchCase") ||
274
+ isCommentAtParentStart(token, "SwitchStatement")
268
275
  );
269
276
  }
270
277
 
@@ -18,7 +18,7 @@ module.exports = {
18
18
  type: "layout",
19
19
 
20
20
  docs: {
21
- description: "require or disallow newlines around directives",
21
+ description: "Require or disallow newlines around directives",
22
22
  recommended: false,
23
23
  url: "https://eslint.org/docs/rules/lines-around-directive"
24
24
  },
@@ -20,7 +20,7 @@ module.exports = {
20
20
  type: "layout",
21
21
 
22
22
  docs: {
23
- description: "require or disallow an empty line between class members",
23
+ description: "Require or disallow an empty line between class members",
24
24
  recommended: false,
25
25
  url: "https://eslint.org/docs/rules/lines-between-class-members"
26
26
  },
@@ -19,7 +19,7 @@ module.exports = {
19
19
  type: "suggestion",
20
20
 
21
21
  docs: {
22
- description: "enforce a maximum number of classes per file",
22
+ description: "Enforce a maximum number of classes per file",
23
23
  recommended: false,
24
24
  url: "https://eslint.org/docs/rules/max-classes-per-file"
25
25
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "enforce a maximum depth that blocks can be nested",
18
+ description: "Enforce a maximum depth that blocks can be nested",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/max-depth"
21
21
  },
@@ -69,7 +69,7 @@ module.exports = {
69
69
  type: "layout",
70
70
 
71
71
  docs: {
72
- description: "enforce a maximum line length",
72
+ description: "Enforce a maximum line length",
73
73
  recommended: false,
74
74
  url: "https://eslint.org/docs/rules/max-len"
75
75
  },
@@ -71,7 +71,7 @@ module.exports = {
71
71
  type: "suggestion",
72
72
 
73
73
  docs: {
74
- description: "enforce a maximum number of lines of code in a function",
74
+ description: "Enforce a maximum number of lines of code in a function",
75
75
  recommended: false,
76
76
  url: "https://eslint.org/docs/rules/max-lines-per-function"
77
77
  },
@@ -34,7 +34,7 @@ module.exports = {
34
34
  type: "suggestion",
35
35
 
36
36
  docs: {
37
- description: "enforce a maximum number of lines per file",
37
+ description: "Enforce a maximum number of lines per file",
38
38
  recommended: false,
39
39
  url: "https://eslint.org/docs/rules/max-lines"
40
40
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "enforce a maximum depth that callbacks can be nested",
18
+ description: "Enforce a maximum depth that callbacks can be nested",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/max-nested-callbacks"
21
21
  },
@@ -22,7 +22,7 @@ module.exports = {
22
22
  type: "suggestion",
23
23
 
24
24
  docs: {
25
- description: "enforce a maximum number of parameters in function definitions",
25
+ description: "Enforce a maximum number of parameters in function definitions",
26
26
  recommended: false,
27
27
  url: "https://eslint.org/docs/rules/max-params"
28
28
  },
@@ -20,7 +20,7 @@ module.exports = {
20
20
  type: "layout",
21
21
 
22
22
  docs: {
23
- description: "enforce a maximum number of statements allowed per line",
23
+ description: "Enforce a maximum number of statements allowed per line",
24
24
  recommended: false,
25
25
  url: "https://eslint.org/docs/rules/max-statements-per-line"
26
26
  },
@@ -22,7 +22,7 @@ module.exports = {
22
22
  type: "suggestion",
23
23
 
24
24
  docs: {
25
- description: "enforce a maximum number of statements allowed in function blocks",
25
+ description: "Enforce a maximum number of statements allowed in function blocks",
26
26
  recommended: false,
27
27
  url: "https://eslint.org/docs/rules/max-statements"
28
28
  },
@@ -16,7 +16,7 @@ module.exports = {
16
16
  type: "suggestion",
17
17
 
18
18
  docs: {
19
- description: "enforce a particular style for multiline comments",
19
+ description: "Enforce a particular style for multiline comments",
20
20
  recommended: false,
21
21
  url: "https://eslint.org/docs/rules/multiline-comment-style"
22
22
  },
@@ -17,7 +17,7 @@ module.exports = {
17
17
  type: "layout",
18
18
 
19
19
  docs: {
20
- description: "enforce newlines between operands of ternary expressions",
20
+ description: "Enforce newlines between operands of ternary expressions",
21
21
  recommended: false,
22
22
  url: "https://eslint.org/docs/rules/multiline-ternary"
23
23
  },
@@ -82,7 +82,7 @@ module.exports = {
82
82
  type: "suggestion",
83
83
 
84
84
  docs: {
85
- description: "require constructor names to begin with a capital letter",
85
+ description: "Require constructor names to begin with a capital letter",
86
86
  recommended: false,
87
87
  url: "https://eslint.org/docs/rules/new-cap"
88
88
  },
@@ -25,7 +25,7 @@ module.exports = {
25
25
  type: "layout",
26
26
 
27
27
  docs: {
28
- description: "enforce or disallow parentheses when invoking a constructor with no arguments",
28
+ description: "Enforce or disallow parentheses when invoking a constructor with no arguments",
29
29
  recommended: false,
30
30
  url: "https://eslint.org/docs/rules/new-parens"
31
31
  },
@@ -22,7 +22,7 @@ module.exports = {
22
22
  type: "layout",
23
23
 
24
24
  docs: {
25
- description: "require or disallow an empty line after variable declarations",
25
+ description: "Require or disallow an empty line after variable declarations",
26
26
  recommended: false,
27
27
  url: "https://eslint.org/docs/rules/newline-after-var"
28
28
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "layout",
16
16
 
17
17
  docs: {
18
- description: "require an empty line before `return` statements",
18
+ description: "Require an empty line before `return` statements",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/newline-before-return"
21
21
  },
@@ -18,7 +18,7 @@ module.exports = {
18
18
  type: "layout",
19
19
 
20
20
  docs: {
21
- description: "require a newline after each call in a method chain",
21
+ description: "Require a newline after each call in a method chain",
22
22
  recommended: false,
23
23
  url: "https://eslint.org/docs/rules/newline-per-chained-call"
24
24
  },
@@ -88,7 +88,7 @@ module.exports = {
88
88
  type: "suggestion",
89
89
 
90
90
  docs: {
91
- description: "disallow the use of `alert`, `confirm`, and `prompt`",
91
+ description: "Disallow the use of `alert`, `confirm`, and `prompt`",
92
92
  recommended: false,
93
93
  url: "https://eslint.org/docs/rules/no-alert"
94
94
  },
@@ -15,7 +15,7 @@ module.exports = {
15
15
  type: "suggestion",
16
16
 
17
17
  docs: {
18
- description: "disallow `Array` constructors",
18
+ description: "Disallow `Array` constructors",
19
19
  recommended: false,
20
20
  url: "https://eslint.org/docs/rules/no-array-constructor"
21
21
  },
@@ -14,7 +14,7 @@ module.exports = {
14
14
  type: "problem",
15
15
 
16
16
  docs: {
17
- description: "disallow using an async function as a Promise executor",
17
+ description: "Disallow using an async function as a Promise executor",
18
18
  recommended: true,
19
19
  url: "https://eslint.org/docs/rules/no-async-promise-executor"
20
20
  },
@@ -59,7 +59,7 @@ module.exports = {
59
59
  type: "problem",
60
60
 
61
61
  docs: {
62
- description: "disallow `await` inside of loops",
62
+ description: "Disallow `await` inside of loops",
63
63
  recommended: false,
64
64
  url: "https://eslint.org/docs/rules/no-await-in-loop"
65
65
  },
@@ -26,7 +26,7 @@ module.exports = {
26
26
  type: "suggestion",
27
27
 
28
28
  docs: {
29
- description: "disallow bitwise operators",
29
+ description: "Disallow bitwise operators",
30
30
  recommended: false,
31
31
  url: "https://eslint.org/docs/rules/no-bitwise"
32
32
  },