eslint 8.39.0 → 8.41.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 (308) hide show
  1. package/README.md +4 -3
  2. package/lib/cli-engine/cli-engine.js +3 -1
  3. package/lib/cli.js +2 -28
  4. package/lib/config/default-config.js +1 -1
  5. package/lib/config/flat-config-schema.js +57 -35
  6. package/lib/eslint/eslint-helpers.js +8 -7
  7. package/lib/eslint/flat-eslint.js +101 -46
  8. package/lib/linter/apply-disable-directives.js +11 -1
  9. package/lib/linter/config-comment-parser.js +9 -2
  10. package/lib/linter/linter.js +20 -11
  11. package/lib/linter/report-translator.js +4 -19
  12. package/lib/rules/accessor-pairs.js +2 -2
  13. package/lib/rules/array-bracket-newline.js +2 -2
  14. package/lib/rules/array-bracket-spacing.js +2 -2
  15. package/lib/rules/array-callback-return.js +2 -2
  16. package/lib/rules/array-element-newline.js +2 -2
  17. package/lib/rules/arrow-body-style.js +2 -2
  18. package/lib/rules/arrow-parens.js +2 -2
  19. package/lib/rules/arrow-spacing.js +2 -2
  20. package/lib/rules/block-scoped-var.js +2 -2
  21. package/lib/rules/block-spacing.js +2 -2
  22. package/lib/rules/brace-style.js +2 -2
  23. package/lib/rules/callback-return.js +2 -2
  24. package/lib/rules/camelcase.js +2 -2
  25. package/lib/rules/capitalized-comments.js +2 -2
  26. package/lib/rules/class-methods-use-this.js +2 -2
  27. package/lib/rules/comma-dangle.js +2 -2
  28. package/lib/rules/comma-spacing.js +2 -2
  29. package/lib/rules/comma-style.js +2 -2
  30. package/lib/rules/complexity.js +1 -1
  31. package/lib/rules/computed-property-spacing.js +2 -2
  32. package/lib/rules/consistent-return.js +3 -3
  33. package/lib/rules/consistent-this.js +2 -2
  34. package/lib/rules/constructor-super.js +1 -1
  35. package/lib/rules/curly.js +2 -2
  36. package/lib/rules/default-case-last.js +1 -1
  37. package/lib/rules/default-case.js +2 -2
  38. package/lib/rules/default-param-last.js +1 -1
  39. package/lib/rules/dot-location.js +2 -2
  40. package/lib/rules/dot-notation.js +2 -2
  41. package/lib/rules/eol-last.js +2 -2
  42. package/lib/rules/eqeqeq.js +2 -2
  43. package/lib/rules/for-direction.js +1 -1
  44. package/lib/rules/func-call-spacing.js +2 -2
  45. package/lib/rules/func-name-matching.js +1 -1
  46. package/lib/rules/func-names.js +2 -2
  47. package/lib/rules/func-style.js +1 -1
  48. package/lib/rules/function-call-argument-newline.js +2 -2
  49. package/lib/rules/function-paren-newline.js +2 -2
  50. package/lib/rules/generator-star-spacing.js +2 -2
  51. package/lib/rules/getter-return.js +2 -2
  52. package/lib/rules/global-require.js +2 -2
  53. package/lib/rules/grouped-accessor-pairs.js +2 -2
  54. package/lib/rules/guard-for-in.js +1 -1
  55. package/lib/rules/handle-callback-err.js +2 -2
  56. package/lib/rules/id-blacklist.js +2 -2
  57. package/lib/rules/id-denylist.js +2 -2
  58. package/lib/rules/id-length.js +3 -36
  59. package/lib/rules/id-match.js +2 -2
  60. package/lib/rules/implicit-arrow-linebreak.js +2 -2
  61. package/lib/rules/indent-legacy.js +2 -2
  62. package/lib/rules/indent.js +40 -56
  63. package/lib/rules/init-declarations.js +1 -1
  64. package/lib/rules/jsx-quotes.js +1 -1
  65. package/lib/rules/key-spacing.js +4 -10
  66. package/lib/rules/keyword-spacing.js +2 -2
  67. package/lib/rules/line-comment-position.js +2 -2
  68. package/lib/rules/linebreak-style.js +2 -2
  69. package/lib/rules/lines-around-comment.js +2 -2
  70. package/lib/rules/lines-around-directive.js +2 -2
  71. package/lib/rules/lines-between-class-members.js +2 -2
  72. package/lib/rules/logical-assignment-operators.js +2 -2
  73. package/lib/rules/max-classes-per-file.js +1 -1
  74. package/lib/rules/max-depth.js +1 -1
  75. package/lib/rules/max-len.js +2 -2
  76. package/lib/rules/max-lines-per-function.js +2 -2
  77. package/lib/rules/max-lines.js +2 -2
  78. package/lib/rules/max-nested-callbacks.js +1 -1
  79. package/lib/rules/max-params.js +2 -2
  80. package/lib/rules/max-statements-per-line.js +2 -2
  81. package/lib/rules/max-statements.js +1 -1
  82. package/lib/rules/multiline-comment-style.js +2 -2
  83. package/lib/rules/multiline-ternary.js +2 -2
  84. package/lib/rules/new-cap.js +2 -2
  85. package/lib/rules/new-parens.js +2 -2
  86. package/lib/rules/newline-after-var.js +2 -2
  87. package/lib/rules/newline-before-return.js +2 -2
  88. package/lib/rules/newline-per-chained-call.js +2 -2
  89. package/lib/rules/no-alert.js +2 -2
  90. package/lib/rules/no-array-constructor.js +1 -1
  91. package/lib/rules/no-async-promise-executor.js +2 -2
  92. package/lib/rules/no-await-in-loop.js +1 -1
  93. package/lib/rules/no-bitwise.js +1 -1
  94. package/lib/rules/no-buffer-constructor.js +1 -1
  95. package/lib/rules/no-caller.js +1 -1
  96. package/lib/rules/no-case-declarations.js +1 -1
  97. package/lib/rules/no-catch-shadow.js +2 -2
  98. package/lib/rules/no-class-assign.js +2 -2
  99. package/lib/rules/no-compare-neg-zero.js +1 -1
  100. package/lib/rules/no-cond-assign.js +2 -2
  101. package/lib/rules/no-confusing-arrow.js +2 -2
  102. package/lib/rules/no-console.js +2 -2
  103. package/lib/rules/no-const-assign.js +2 -2
  104. package/lib/rules/no-constant-binary-expression.js +2 -2
  105. package/lib/rules/no-constant-condition.js +2 -2
  106. package/lib/rules/no-constructor-return.js +1 -1
  107. package/lib/rules/no-continue.js +1 -1
  108. package/lib/rules/no-control-regex.js +1 -1
  109. package/lib/rules/no-debugger.js +1 -1
  110. package/lib/rules/no-delete-var.js +1 -1
  111. package/lib/rules/no-div-regex.js +2 -2
  112. package/lib/rules/no-dupe-args.js +2 -2
  113. package/lib/rules/no-dupe-class-members.js +1 -1
  114. package/lib/rules/no-dupe-else-if.js +2 -2
  115. package/lib/rules/no-dupe-keys.js +1 -1
  116. package/lib/rules/no-duplicate-case.js +2 -2
  117. package/lib/rules/no-duplicate-imports.js +1 -1
  118. package/lib/rules/no-else-return.js +2 -2
  119. package/lib/rules/no-empty-character-class.js +1 -1
  120. package/lib/rules/no-empty-function.js +2 -2
  121. package/lib/rules/no-empty-pattern.js +1 -1
  122. package/lib/rules/no-empty-static-block.js +2 -2
  123. package/lib/rules/no-empty.js +2 -2
  124. package/lib/rules/no-eq-null.js +1 -1
  125. package/lib/rules/no-eval.js +2 -2
  126. package/lib/rules/no-ex-assign.js +2 -2
  127. package/lib/rules/no-extend-native.js +2 -2
  128. package/lib/rules/no-extra-bind.js +2 -2
  129. package/lib/rules/no-extra-boolean-cast.js +2 -2
  130. package/lib/rules/no-extra-label.js +2 -2
  131. package/lib/rules/no-extra-parens.js +2 -2
  132. package/lib/rules/no-extra-semi.js +3 -3
  133. package/lib/rules/no-fallthrough.js +3 -3
  134. package/lib/rules/no-floating-decimal.js +2 -2
  135. package/lib/rules/no-func-assign.js +2 -2
  136. package/lib/rules/no-global-assign.js +2 -2
  137. package/lib/rules/no-implicit-coercion.js +2 -2
  138. package/lib/rules/no-implicit-globals.js +2 -2
  139. package/lib/rules/no-implied-eval.js +2 -2
  140. package/lib/rules/no-import-assign.js +2 -2
  141. package/lib/rules/no-inline-comments.js +2 -2
  142. package/lib/rules/no-inner-declarations.js +1 -1
  143. package/lib/rules/no-invalid-regexp.js +1 -1
  144. package/lib/rules/no-invalid-this.js +2 -2
  145. package/lib/rules/no-irregular-whitespace.js +2 -2
  146. package/lib/rules/no-iterator.js +1 -1
  147. package/lib/rules/no-label-var.js +2 -2
  148. package/lib/rules/no-labels.js +1 -1
  149. package/lib/rules/no-lone-blocks.js +2 -2
  150. package/lib/rules/no-lonely-if.js +2 -2
  151. package/lib/rules/no-loop-func.js +2 -2
  152. package/lib/rules/no-loss-of-precision.js +1 -1
  153. package/lib/rules/no-magic-numbers.js +1 -1
  154. package/lib/rules/no-misleading-character-class.js +2 -2
  155. package/lib/rules/no-mixed-operators.js +2 -2
  156. package/lib/rules/no-mixed-requires.js +1 -1
  157. package/lib/rules/no-mixed-spaces-and-tabs.js +2 -2
  158. package/lib/rules/no-multi-assign.js +1 -1
  159. package/lib/rules/no-multi-spaces.js +2 -2
  160. package/lib/rules/no-multi-str.js +1 -1
  161. package/lib/rules/no-multiple-empty-lines.js +2 -2
  162. package/lib/rules/no-native-reassign.js +2 -2
  163. package/lib/rules/no-negated-condition.js +1 -1
  164. package/lib/rules/no-negated-in-lhs.js +1 -1
  165. package/lib/rules/no-nested-ternary.js +1 -1
  166. package/lib/rules/no-new-func.js +2 -2
  167. package/lib/rules/no-new-native-nonconstructor.js +2 -2
  168. package/lib/rules/no-new-object.js +2 -2
  169. package/lib/rules/no-new-require.js +1 -1
  170. package/lib/rules/no-new-symbol.js +2 -2
  171. package/lib/rules/no-new-wrappers.js +1 -1
  172. package/lib/rules/no-new.js +1 -1
  173. package/lib/rules/no-nonoctal-decimal-escape.js +2 -2
  174. package/lib/rules/no-obj-calls.js +2 -2
  175. package/lib/rules/no-octal-escape.js +1 -1
  176. package/lib/rules/no-octal.js +1 -1
  177. package/lib/rules/no-param-reassign.js +2 -2
  178. package/lib/rules/no-path-concat.js +1 -1
  179. package/lib/rules/no-plusplus.js +1 -1
  180. package/lib/rules/no-process-env.js +1 -1
  181. package/lib/rules/no-process-exit.js +1 -1
  182. package/lib/rules/no-promise-executor-return.js +2 -2
  183. package/lib/rules/no-proto.js +1 -1
  184. package/lib/rules/no-prototype-builtins.js +1 -1
  185. package/lib/rules/no-redeclare.js +2 -2
  186. package/lib/rules/no-regex-spaces.js +2 -2
  187. package/lib/rules/no-restricted-exports.js +2 -2
  188. package/lib/rules/no-restricted-globals.js +2 -2
  189. package/lib/rules/no-restricted-imports.js +2 -2
  190. package/lib/rules/no-restricted-modules.js +1 -1
  191. package/lib/rules/no-restricted-properties.js +1 -1
  192. package/lib/rules/no-restricted-syntax.js +1 -1
  193. package/lib/rules/no-return-assign.js +2 -2
  194. package/lib/rules/no-return-await.js +3 -3
  195. package/lib/rules/no-script-url.js +1 -1
  196. package/lib/rules/no-self-assign.js +2 -2
  197. package/lib/rules/no-self-compare.js +2 -2
  198. package/lib/rules/no-sequences.js +2 -2
  199. package/lib/rules/no-setter-return.js +2 -2
  200. package/lib/rules/no-shadow-restricted-names.js +2 -2
  201. package/lib/rules/no-shadow.js +2 -2
  202. package/lib/rules/no-spaced-func.js +2 -2
  203. package/lib/rules/no-sparse-arrays.js +1 -1
  204. package/lib/rules/no-sync.js +1 -1
  205. package/lib/rules/no-tabs.js +2 -2
  206. package/lib/rules/no-template-curly-in-string.js +1 -1
  207. package/lib/rules/no-ternary.js +1 -1
  208. package/lib/rules/no-this-before-super.js +1 -1
  209. package/lib/rules/no-throw-literal.js +1 -1
  210. package/lib/rules/no-trailing-spaces.js +2 -2
  211. package/lib/rules/no-undef-init.js +2 -2
  212. package/lib/rules/no-undef.js +2 -2
  213. package/lib/rules/no-undefined.js +2 -2
  214. package/lib/rules/no-underscore-dangle.js +2 -2
  215. package/lib/rules/no-unexpected-multiline.js +2 -2
  216. package/lib/rules/no-unmodified-loop-condition.js +2 -2
  217. package/lib/rules/no-unneeded-ternary.js +2 -2
  218. package/lib/rules/no-unreachable-loop.js +1 -1
  219. package/lib/rules/no-unreachable.js +2 -2
  220. package/lib/rules/no-unsafe-finally.js +1 -1
  221. package/lib/rules/no-unsafe-negation.js +2 -2
  222. package/lib/rules/no-unsafe-optional-chaining.js +1 -1
  223. package/lib/rules/no-unused-expressions.js +1 -1
  224. package/lib/rules/no-unused-labels.js +2 -2
  225. package/lib/rules/no-unused-private-class-members.js +1 -1
  226. package/lib/rules/no-unused-vars.js +2 -2
  227. package/lib/rules/no-use-before-define.js +2 -2
  228. package/lib/rules/no-useless-backreference.js +2 -2
  229. package/lib/rules/no-useless-call.js +2 -2
  230. package/lib/rules/no-useless-catch.js +1 -1
  231. package/lib/rules/no-useless-computed-key.js +2 -2
  232. package/lib/rules/no-useless-concat.js +2 -2
  233. package/lib/rules/no-useless-constructor.js +1 -1
  234. package/lib/rules/no-useless-escape.js +2 -2
  235. package/lib/rules/no-useless-rename.js +2 -2
  236. package/lib/rules/no-useless-return.js +2 -2
  237. package/lib/rules/no-var.js +2 -2
  238. package/lib/rules/no-void.js +1 -1
  239. package/lib/rules/no-warning-comments.js +2 -2
  240. package/lib/rules/no-whitespace-before-property.js +2 -2
  241. package/lib/rules/no-with.js +1 -1
  242. package/lib/rules/nonblock-statement-body-position.js +2 -2
  243. package/lib/rules/object-curly-newline.js +2 -2
  244. package/lib/rules/object-curly-spacing.js +4 -4
  245. package/lib/rules/object-property-newline.js +2 -2
  246. package/lib/rules/object-shorthand.js +2 -2
  247. package/lib/rules/one-var-declaration-per-line.js +1 -1
  248. package/lib/rules/one-var.js +2 -2
  249. package/lib/rules/operator-assignment.js +2 -2
  250. package/lib/rules/operator-linebreak.js +2 -2
  251. package/lib/rules/padded-blocks.js +2 -2
  252. package/lib/rules/padding-line-between-statements.js +4 -4
  253. package/lib/rules/prefer-arrow-callback.js +2 -2
  254. package/lib/rules/prefer-const.js +2 -2
  255. package/lib/rules/prefer-destructuring.js +2 -2
  256. package/lib/rules/prefer-exponentiation-operator.js +2 -2
  257. package/lib/rules/prefer-named-capture-group.js +2 -2
  258. package/lib/rules/prefer-numeric-literals.js +2 -2
  259. package/lib/rules/prefer-object-has-own.js +2 -2
  260. package/lib/rules/prefer-object-spread.js +2 -2
  261. package/lib/rules/prefer-promise-reject-errors.js +2 -2
  262. package/lib/rules/prefer-reflect.js +1 -1
  263. package/lib/rules/prefer-regex-literals.js +2 -2
  264. package/lib/rules/prefer-rest-params.js +2 -2
  265. package/lib/rules/prefer-spread.js +2 -2
  266. package/lib/rules/prefer-template.js +2 -2
  267. package/lib/rules/quote-props.js +2 -2
  268. package/lib/rules/quotes.js +2 -2
  269. package/lib/rules/radix.js +2 -2
  270. package/lib/rules/require-atomic-updates.js +2 -2
  271. package/lib/rules/require-await.js +2 -2
  272. package/lib/rules/require-jsdoc.js +2 -2
  273. package/lib/rules/require-unicode-regexp.js +2 -2
  274. package/lib/rules/require-yield.js +1 -1
  275. package/lib/rules/rest-spread-spacing.js +2 -2
  276. package/lib/rules/semi-spacing.js +2 -2
  277. package/lib/rules/semi-style.js +2 -2
  278. package/lib/rules/semi.js +30 -5
  279. package/lib/rules/sort-imports.js +2 -2
  280. package/lib/rules/sort-keys.js +2 -2
  281. package/lib/rules/sort-vars.js +2 -2
  282. package/lib/rules/space-before-blocks.js +2 -2
  283. package/lib/rules/space-before-function-paren.js +2 -2
  284. package/lib/rules/space-in-parens.js +2 -2
  285. package/lib/rules/space-infix-ops.js +2 -2
  286. package/lib/rules/space-unary-ops.js +2 -2
  287. package/lib/rules/spaced-comment.js +2 -2
  288. package/lib/rules/strict.js +1 -1
  289. package/lib/rules/switch-colon-spacing.js +2 -2
  290. package/lib/rules/symbol-description.js +2 -2
  291. package/lib/rules/template-curly-spacing.js +2 -2
  292. package/lib/rules/template-tag-spacing.js +2 -2
  293. package/lib/rules/unicode-bom.js +2 -2
  294. package/lib/rules/use-isnan.js +1 -1
  295. package/lib/rules/valid-jsdoc.js +2 -2
  296. package/lib/rules/valid-typeof.js +2 -2
  297. package/lib/rules/vars-on-top.js +1 -1
  298. package/lib/rules/wrap-iife.js +2 -2
  299. package/lib/rules/wrap-regex.js +2 -2
  300. package/lib/rules/yield-star-spacing.js +2 -2
  301. package/lib/rules/yoda.js +2 -2
  302. package/lib/shared/string-utils.js +39 -1
  303. package/lib/shared/types.js +6 -2
  304. package/lib/unsupported-api.js +2 -1
  305. package/messages/invalid-rule-options.js +17 -0
  306. package/messages/invalid-rule-severity.js +13 -0
  307. package/messages/shared.js +18 -0
  308. package/package.json +6 -7
@@ -17,7 +17,7 @@ module.exports = {
17
17
  docs: {
18
18
  description: "Require `Reflect` methods where applicable",
19
19
  recommended: false,
20
- url: "https://eslint.org/docs/rules/prefer-reflect"
20
+ url: "https://eslint.org/docs/latest/rules/prefer-reflect"
21
21
  },
22
22
 
23
23
  deprecated: true,
@@ -124,7 +124,7 @@ module.exports = {
124
124
  docs: {
125
125
  description: "Disallow use of the `RegExp` constructor in favor of regular expression literals",
126
126
  recommended: false,
127
- url: "https://eslint.org/docs/rules/prefer-regex-literals"
127
+ url: "https://eslint.org/docs/latest/rules/prefer-regex-literals"
128
128
  },
129
129
 
130
130
  hasSuggestions: true,
@@ -154,7 +154,7 @@ module.exports = {
154
154
 
155
155
  create(context) {
156
156
  const [{ disallowRedundantWrapping = false } = {}] = context.options;
157
- const sourceCode = context.getSourceCode();
157
+ const sourceCode = context.sourceCode;
158
158
 
159
159
  /**
160
160
  * Determines whether the given identifier node is a reference to a global variable.
@@ -67,7 +67,7 @@ module.exports = {
67
67
  docs: {
68
68
  description: "Require rest parameters instead of `arguments`",
69
69
  recommended: false,
70
- url: "https://eslint.org/docs/rules/prefer-rest-params"
70
+ url: "https://eslint.org/docs/latest/rules/prefer-rest-params"
71
71
  },
72
72
 
73
73
  schema: [],
@@ -79,7 +79,7 @@ module.exports = {
79
79
 
80
80
  create(context) {
81
81
 
82
- const sourceCode = context.getSourceCode();
82
+ const sourceCode = context.sourceCode;
83
83
 
84
84
  /**
85
85
  * Reports a given reference.
@@ -51,7 +51,7 @@ module.exports = {
51
51
  docs: {
52
52
  description: "Require spread operators instead of `.apply()`",
53
53
  recommended: false,
54
- url: "https://eslint.org/docs/rules/prefer-spread"
54
+ url: "https://eslint.org/docs/latest/rules/prefer-spread"
55
55
  },
56
56
 
57
57
  schema: [],
@@ -63,7 +63,7 @@ module.exports = {
63
63
  },
64
64
 
65
65
  create(context) {
66
- const sourceCode = context.getSourceCode();
66
+ const sourceCode = context.sourceCode;
67
67
 
68
68
  return {
69
69
  CallExpression(node) {
@@ -130,7 +130,7 @@ module.exports = {
130
130
  docs: {
131
131
  description: "Require template literals instead of string concatenation",
132
132
  recommended: false,
133
- url: "https://eslint.org/docs/rules/prefer-template"
133
+ url: "https://eslint.org/docs/latest/rules/prefer-template"
134
134
  },
135
135
 
136
136
  schema: [],
@@ -142,7 +142,7 @@ module.exports = {
142
142
  },
143
143
 
144
144
  create(context) {
145
- const sourceCode = context.getSourceCode();
145
+ const sourceCode = context.sourceCode;
146
146
  let done = Object.create(null);
147
147
 
148
148
  /**
@@ -24,7 +24,7 @@ module.exports = {
24
24
  docs: {
25
25
  description: "Require quotes around object literal property names",
26
26
  recommended: false,
27
- url: "https://eslint.org/docs/rules/quote-props"
27
+ url: "https://eslint.org/docs/latest/rules/quote-props"
28
28
  },
29
29
 
30
30
  schema: {
@@ -86,7 +86,7 @@ module.exports = {
86
86
  CHECK_UNNECESSARY = !context.options[1] || context.options[1].unnecessary !== false,
87
87
  NUMBERS = context.options[1] && context.options[1].numbers,
88
88
 
89
- sourceCode = context.getSourceCode();
89
+ sourceCode = context.sourceCode;
90
90
 
91
91
 
92
92
  /**
@@ -82,7 +82,7 @@ module.exports = {
82
82
  docs: {
83
83
  description: "Enforce the consistent use of either backticks, double, or single quotes",
84
84
  recommended: false,
85
- url: "https://eslint.org/docs/rules/quotes"
85
+ url: "https://eslint.org/docs/latest/rules/quotes"
86
86
  },
87
87
 
88
88
  fixable: "code",
@@ -123,7 +123,7 @@ module.exports = {
123
123
  settings = QUOTE_SETTINGS[quoteOption || "double"],
124
124
  options = context.options[1],
125
125
  allowTemplateLiterals = options && options.allowTemplateLiterals === true,
126
- sourceCode = context.getSourceCode();
126
+ sourceCode = context.sourceCode;
127
127
  let avoidEscape = options && options.avoidEscape === true;
128
128
 
129
129
  // deprecated
@@ -82,7 +82,7 @@ module.exports = {
82
82
  docs: {
83
83
  description: "Enforce the consistent use of the radix argument when using `parseInt()`",
84
84
  recommended: false,
85
- url: "https://eslint.org/docs/rules/radix"
85
+ url: "https://eslint.org/docs/latest/rules/radix"
86
86
  },
87
87
 
88
88
  hasSuggestions: true,
@@ -104,7 +104,7 @@ module.exports = {
104
104
 
105
105
  create(context) {
106
106
  const mode = context.options[0] || MODE_ALWAYS;
107
- const sourceCode = context.getSourceCode();
107
+ const sourceCode = context.sourceCode;
108
108
 
109
109
  /**
110
110
  * Checks the arguments of a given CallExpression node and reports it if it
@@ -173,7 +173,7 @@ module.exports = {
173
173
  docs: {
174
174
  description: "Disallow assignments that can lead to race conditions due to usage of `await` or `yield`",
175
175
  recommended: false,
176
- url: "https://eslint.org/docs/rules/require-atomic-updates"
176
+ url: "https://eslint.org/docs/latest/rules/require-atomic-updates"
177
177
  },
178
178
 
179
179
  fixable: null,
@@ -198,7 +198,7 @@ module.exports = {
198
198
  create(context) {
199
199
  const allowProperties = !!context.options[0] && context.options[0].allowProperties;
200
200
 
201
- const sourceCode = context.getSourceCode();
201
+ const sourceCode = context.sourceCode;
202
202
  const assignmentReferences = new Map();
203
203
  const segmentInfo = new SegmentInfo();
204
204
  let stack = null;
@@ -36,7 +36,7 @@ module.exports = {
36
36
  docs: {
37
37
  description: "Disallow async functions which have no `await` expression",
38
38
  recommended: false,
39
- url: "https://eslint.org/docs/rules/require-await"
39
+ url: "https://eslint.org/docs/latest/rules/require-await"
40
40
  },
41
41
 
42
42
  schema: [],
@@ -47,7 +47,7 @@ module.exports = {
47
47
  },
48
48
 
49
49
  create(context) {
50
- const sourceCode = context.getSourceCode();
50
+ const sourceCode = context.sourceCode;
51
51
  let scopeInfo = null;
52
52
 
53
53
  /**
@@ -13,7 +13,7 @@ module.exports = {
13
13
  docs: {
14
14
  description: "Require JSDoc comments",
15
15
  recommended: false,
16
- url: "https://eslint.org/docs/rules/require-jsdoc"
16
+ url: "https://eslint.org/docs/latest/rules/require-jsdoc"
17
17
  },
18
18
 
19
19
  schema: [
@@ -61,7 +61,7 @@ module.exports = {
61
61
  },
62
62
 
63
63
  create(context) {
64
- const source = context.getSourceCode();
64
+ const source = context.sourceCode;
65
65
  const DEFAULT_OPTIONS = {
66
66
  FunctionDeclaration: true,
67
67
  MethodDefinition: false,
@@ -30,7 +30,7 @@ module.exports = {
30
30
  docs: {
31
31
  description: "Enforce the use of `u` flag on RegExp",
32
32
  recommended: false,
33
- url: "https://eslint.org/docs/rules/require-unicode-regexp"
33
+ url: "https://eslint.org/docs/latest/rules/require-unicode-regexp"
34
34
  },
35
35
 
36
36
  hasSuggestions: true,
@@ -45,7 +45,7 @@ module.exports = {
45
45
 
46
46
  create(context) {
47
47
 
48
- const sourceCode = context.getSourceCode();
48
+ const sourceCode = context.sourceCode;
49
49
 
50
50
  return {
51
51
  "Literal[regex]"(node) {
@@ -17,7 +17,7 @@ module.exports = {
17
17
  docs: {
18
18
  description: "Require generator functions to contain `yield`",
19
19
  recommended: true,
20
- url: "https://eslint.org/docs/rules/require-yield"
20
+ url: "https://eslint.org/docs/latest/rules/require-yield"
21
21
  },
22
22
 
23
23
  schema: [],
@@ -17,7 +17,7 @@ module.exports = {
17
17
  docs: {
18
18
  description: "Enforce spacing between rest and spread operators and their expressions",
19
19
  recommended: false,
20
- url: "https://eslint.org/docs/rules/rest-spread-spacing"
20
+ url: "https://eslint.org/docs/latest/rules/rest-spread-spacing"
21
21
  },
22
22
 
23
23
  fixable: "whitespace",
@@ -35,7 +35,7 @@ module.exports = {
35
35
  },
36
36
 
37
37
  create(context) {
38
- const sourceCode = context.getSourceCode(),
38
+ const sourceCode = context.sourceCode,
39
39
  alwaysSpace = context.options[0] === "always";
40
40
 
41
41
  //--------------------------------------------------------------------------
@@ -19,7 +19,7 @@ module.exports = {
19
19
  docs: {
20
20
  description: "Enforce consistent spacing before and after semicolons",
21
21
  recommended: false,
22
- url: "https://eslint.org/docs/rules/semi-spacing"
22
+ url: "https://eslint.org/docs/latest/rules/semi-spacing"
23
23
  },
24
24
 
25
25
  fixable: "whitespace",
@@ -52,7 +52,7 @@ module.exports = {
52
52
  create(context) {
53
53
 
54
54
  const config = context.options[0],
55
- sourceCode = context.getSourceCode();
55
+ sourceCode = context.sourceCode;
56
56
  let requireSpaceBefore = false,
57
57
  requireSpaceAfter = true;
58
58
 
@@ -75,7 +75,7 @@ module.exports = {
75
75
  docs: {
76
76
  description: "Enforce location of semicolons",
77
77
  recommended: false,
78
- url: "https://eslint.org/docs/rules/semi-style"
78
+ url: "https://eslint.org/docs/latest/rules/semi-style"
79
79
  },
80
80
 
81
81
  schema: [{ enum: ["last", "first"] }],
@@ -87,7 +87,7 @@ module.exports = {
87
87
  },
88
88
 
89
89
  create(context) {
90
- const sourceCode = context.getSourceCode();
90
+ const sourceCode = context.sourceCode;
91
91
  const option = context.options[0] || "last";
92
92
 
93
93
  /**
package/lib/rules/semi.js CHANGED
@@ -23,7 +23,7 @@ module.exports = {
23
23
  docs: {
24
24
  description: "Require or disallow semicolons instead of ASI",
25
25
  recommended: false,
26
- url: "https://eslint.org/docs/rules/semi"
26
+ url: "https://eslint.org/docs/latest/rules/semi"
27
27
  },
28
28
 
29
29
  fixable: "code",
@@ -58,7 +58,8 @@ module.exports = {
58
58
  {
59
59
  type: "object",
60
60
  properties: {
61
- omitLastInOneLineBlock: { type: "boolean" }
61
+ omitLastInOneLineBlock: { type: "boolean" },
62
+ omitLastInOneLineClassBody: { type: "boolean" }
62
63
  },
63
64
  additionalProperties: false
64
65
  }
@@ -83,8 +84,9 @@ module.exports = {
83
84
  const options = context.options[1];
84
85
  const never = context.options[0] === "never";
85
86
  const exceptOneLine = Boolean(options && options.omitLastInOneLineBlock);
87
+ const exceptOneLineClassBody = Boolean(options && options.omitLastInOneLineClassBody);
86
88
  const beforeStatementContinuationChars = options && options.beforeStatementContinuationChars || "any";
87
- const sourceCode = context.getSourceCode();
89
+ const sourceCode = context.sourceCode;
88
90
 
89
91
  //--------------------------------------------------------------------------
90
92
  // Helpers
@@ -334,6 +336,27 @@ module.exports = {
334
336
  return false;
335
337
  }
336
338
 
339
+ /**
340
+ * Checks a node to see if it's the last item in a one-liner `ClassBody` node.
341
+ * ClassBody is a one-liner if its braces (and consequently everything between them) are on the same line.
342
+ * @param {ASTNode} node The node to check.
343
+ * @returns {boolean} whether the node is the last item in a one-liner ClassBody.
344
+ */
345
+ function isLastInOneLinerClassBody(node) {
346
+ const parent = node.parent;
347
+ const nextToken = sourceCode.getTokenAfter(node);
348
+
349
+ if (!nextToken || nextToken.value !== "}") {
350
+ return false;
351
+ }
352
+
353
+ if (parent.type === "ClassBody") {
354
+ return parent.loc.start.line === parent.loc.end.line;
355
+ }
356
+
357
+ return false;
358
+ }
359
+
337
360
  /**
338
361
  * Checks a node to see if it's followed by a semicolon.
339
362
  * @param {ASTNode} node The node to check.
@@ -354,10 +377,12 @@ module.exports = {
354
377
  }
355
378
  } else {
356
379
  const oneLinerBlock = (exceptOneLine && isLastInOneLinerBlock(node));
380
+ const oneLinerClassBody = (exceptOneLineClassBody && isLastInOneLinerClassBody(node));
381
+ const oneLinerBlockOrClassBody = oneLinerBlock || oneLinerClassBody;
357
382
 
358
- if (isSemi && oneLinerBlock) {
383
+ if (isSemi && oneLinerBlockOrClassBody) {
359
384
  report(node, true);
360
- } else if (!isSemi && !oneLinerBlock) {
385
+ } else if (!isSemi && !oneLinerBlockOrClassBody) {
361
386
  report(node);
362
387
  }
363
388
  }
@@ -17,7 +17,7 @@ module.exports = {
17
17
  docs: {
18
18
  description: "Enforce sorted import declarations within modules",
19
19
  recommended: false,
20
- url: "https://eslint.org/docs/rules/sort-imports"
20
+ url: "https://eslint.org/docs/latest/rules/sort-imports"
21
21
  },
22
22
 
23
23
  schema: [
@@ -71,7 +71,7 @@ module.exports = {
71
71
  ignoreMemberSort = configuration.ignoreMemberSort || false,
72
72
  memberSyntaxSortOrder = configuration.memberSyntaxSortOrder || ["none", "all", "multiple", "single"],
73
73
  allowSeparatedGroups = configuration.allowSeparatedGroups || false,
74
- sourceCode = context.getSourceCode();
74
+ sourceCode = context.sourceCode;
75
75
  let previousDeclaration = null;
76
76
 
77
77
  /**
@@ -83,7 +83,7 @@ module.exports = {
83
83
  docs: {
84
84
  description: "Require object keys to be sorted",
85
85
  recommended: false,
86
- url: "https://eslint.org/docs/rules/sort-keys"
86
+ url: "https://eslint.org/docs/latest/rules/sort-keys"
87
87
  },
88
88
 
89
89
  schema: [
@@ -135,7 +135,7 @@ module.exports = {
135
135
 
136
136
  // The stack to save the previous property's name for each object literals.
137
137
  let stack = null;
138
- const sourceCode = context.getSourceCode();
138
+ const sourceCode = context.sourceCode;
139
139
 
140
140
  return {
141
141
  ObjectExpression(node) {
@@ -17,7 +17,7 @@ module.exports = {
17
17
  docs: {
18
18
  description: "Require variables within the same declaration block to be sorted",
19
19
  recommended: false,
20
- url: "https://eslint.org/docs/rules/sort-vars"
20
+ url: "https://eslint.org/docs/latest/rules/sort-vars"
21
21
  },
22
22
 
23
23
  schema: [
@@ -44,7 +44,7 @@ module.exports = {
44
44
 
45
45
  const configuration = context.options[0] || {},
46
46
  ignoreCase = configuration.ignoreCase || false,
47
- sourceCode = context.getSourceCode();
47
+ sourceCode = context.sourceCode;
48
48
 
49
49
  return {
50
50
  VariableDeclaration(node) {
@@ -42,7 +42,7 @@ module.exports = {
42
42
  docs: {
43
43
  description: "Enforce consistent spacing before blocks",
44
44
  recommended: false,
45
- url: "https://eslint.org/docs/rules/space-before-blocks"
45
+ url: "https://eslint.org/docs/latest/rules/space-before-blocks"
46
46
  },
47
47
 
48
48
  fixable: "whitespace",
@@ -80,7 +80,7 @@ module.exports = {
80
80
 
81
81
  create(context) {
82
82
  const config = context.options[0],
83
- sourceCode = context.getSourceCode();
83
+ sourceCode = context.sourceCode;
84
84
  let alwaysFunctions = true,
85
85
  alwaysKeywords = true,
86
86
  alwaysClasses = true,
@@ -22,7 +22,7 @@ module.exports = {
22
22
  docs: {
23
23
  description: "Enforce consistent spacing before `function` definition opening parenthesis",
24
24
  recommended: false,
25
- url: "https://eslint.org/docs/rules/space-before-function-paren"
25
+ url: "https://eslint.org/docs/latest/rules/space-before-function-paren"
26
26
  },
27
27
 
28
28
  fixable: "whitespace",
@@ -59,7 +59,7 @@ module.exports = {
59
59
  },
60
60
 
61
61
  create(context) {
62
- const sourceCode = context.getSourceCode();
62
+ const sourceCode = context.sourceCode;
63
63
  const baseConfig = typeof context.options[0] === "string" ? context.options[0] : "always";
64
64
  const overrideConfig = typeof context.options[0] === "object" ? context.options[0] : {};
65
65
 
@@ -18,7 +18,7 @@ module.exports = {
18
18
  docs: {
19
19
  description: "Enforce consistent spacing inside parentheses",
20
20
  recommended: false,
21
- url: "https://eslint.org/docs/rules/space-in-parens"
21
+ url: "https://eslint.org/docs/latest/rules/space-in-parens"
22
22
  },
23
23
 
24
24
  fixable: "whitespace",
@@ -102,7 +102,7 @@ module.exports = {
102
102
  //--------------------------------------------------------------------------
103
103
  // Helpers
104
104
  //--------------------------------------------------------------------------
105
- const sourceCode = context.getSourceCode();
105
+ const sourceCode = context.sourceCode;
106
106
 
107
107
  /**
108
108
  * Determines if a token is one of the exceptions for the opener paren
@@ -18,7 +18,7 @@ module.exports = {
18
18
  docs: {
19
19
  description: "Require spacing around infix operators",
20
20
  recommended: false,
21
- url: "https://eslint.org/docs/rules/space-infix-ops"
21
+ url: "https://eslint.org/docs/latest/rules/space-infix-ops"
22
22
  },
23
23
 
24
24
  fixable: "whitespace",
@@ -43,7 +43,7 @@ module.exports = {
43
43
 
44
44
  create(context) {
45
45
  const int32Hint = context.options[0] ? context.options[0].int32Hint === true : false;
46
- const sourceCode = context.getSourceCode();
46
+ const sourceCode = context.sourceCode;
47
47
 
48
48
  /**
49
49
  * Returns the first token which violates the rule
@@ -22,7 +22,7 @@ module.exports = {
22
22
  docs: {
23
23
  description: "Enforce consistent spacing before or after unary operators",
24
24
  recommended: false,
25
- url: "https://eslint.org/docs/rules/space-unary-ops"
25
+ url: "https://eslint.org/docs/latest/rules/space-unary-ops"
26
26
  },
27
27
 
28
28
  fixable: "whitespace",
@@ -62,7 +62,7 @@ module.exports = {
62
62
  create(context) {
63
63
  const options = context.options[0] || { words: true, nonwords: false };
64
64
 
65
- const sourceCode = context.getSourceCode();
65
+ const sourceCode = context.sourceCode;
66
66
 
67
67
  //--------------------------------------------------------------------------
68
68
  // Helpers
@@ -154,7 +154,7 @@ module.exports = {
154
154
  docs: {
155
155
  description: "Enforce consistent spacing after the `//` or `/*` in a comment",
156
156
  recommended: false,
157
- url: "https://eslint.org/docs/rules/spaced-comment"
157
+ url: "https://eslint.org/docs/latest/rules/spaced-comment"
158
158
  },
159
159
 
160
160
  fixable: "whitespace",
@@ -235,7 +235,7 @@ module.exports = {
235
235
 
236
236
  create(context) {
237
237
 
238
- const sourceCode = context.getSourceCode();
238
+ const sourceCode = context.sourceCode;
239
239
 
240
240
  // Unless the first option is never, require a space
241
241
  const requireSpace = context.options[0] !== "never";
@@ -71,7 +71,7 @@ module.exports = {
71
71
  docs: {
72
72
  description: "Require or disallow strict mode directives",
73
73
  recommended: false,
74
- url: "https://eslint.org/docs/rules/strict"
74
+ url: "https://eslint.org/docs/latest/rules/strict"
75
75
  },
76
76
 
77
77
  schema: [
@@ -23,7 +23,7 @@ module.exports = {
23
23
  docs: {
24
24
  description: "Enforce spacing around colons of switch statements",
25
25
  recommended: false,
26
- url: "https://eslint.org/docs/rules/switch-colon-spacing"
26
+ url: "https://eslint.org/docs/latest/rules/switch-colon-spacing"
27
27
  },
28
28
 
29
29
  schema: [
@@ -46,7 +46,7 @@ module.exports = {
46
46
  },
47
47
 
48
48
  create(context) {
49
- const sourceCode = context.getSourceCode();
49
+ const sourceCode = context.sourceCode;
50
50
  const options = context.options[0] || {};
51
51
  const beforeSpacing = options.before === true; // false by default
52
52
  const afterSpacing = options.after !== false; // true by default
@@ -24,7 +24,7 @@ module.exports = {
24
24
  docs: {
25
25
  description: "Require symbol descriptions",
26
26
  recommended: false,
27
- url: "https://eslint.org/docs/rules/symbol-description"
27
+ url: "https://eslint.org/docs/latest/rules/symbol-description"
28
28
  },
29
29
  fixable: null,
30
30
  schema: [],
@@ -35,7 +35,7 @@ module.exports = {
35
35
 
36
36
  create(context) {
37
37
 
38
- const sourceCode = context.getSourceCode();
38
+ const sourceCode = context.sourceCode;
39
39
 
40
40
  /**
41
41
  * Reports if node does not conform the rule in case rule is set to
@@ -23,7 +23,7 @@ module.exports = {
23
23
  docs: {
24
24
  description: "Require or disallow spacing around embedded expressions of template strings",
25
25
  recommended: false,
26
- url: "https://eslint.org/docs/rules/template-curly-spacing"
26
+ url: "https://eslint.org/docs/latest/rules/template-curly-spacing"
27
27
  },
28
28
 
29
29
  fixable: "whitespace",
@@ -40,7 +40,7 @@ module.exports = {
40
40
  },
41
41
 
42
42
  create(context) {
43
- const sourceCode = context.getSourceCode();
43
+ const sourceCode = context.sourceCode;
44
44
  const always = context.options[0] === "always";
45
45
 
46
46
  /**
@@ -17,7 +17,7 @@ module.exports = {
17
17
  docs: {
18
18
  description: "Require or disallow spacing between template tags and their literals",
19
19
  recommended: false,
20
- url: "https://eslint.org/docs/rules/template-tag-spacing"
20
+ url: "https://eslint.org/docs/latest/rules/template-tag-spacing"
21
21
  },
22
22
 
23
23
  fixable: "whitespace",
@@ -33,7 +33,7 @@ module.exports = {
33
33
 
34
34
  create(context) {
35
35
  const never = context.options[0] !== "always";
36
- const sourceCode = context.getSourceCode();
36
+ const sourceCode = context.sourceCode;
37
37
 
38
38
  /**
39
39
  * Check if a space is present between a template tag and its literal
@@ -16,7 +16,7 @@ module.exports = {
16
16
  docs: {
17
17
  description: "Require or disallow Unicode byte order mark (BOM)",
18
18
  recommended: false,
19
- url: "https://eslint.org/docs/rules/unicode-bom"
19
+ url: "https://eslint.org/docs/latest/rules/unicode-bom"
20
20
  },
21
21
 
22
22
  fixable: "whitespace",
@@ -42,7 +42,7 @@ module.exports = {
42
42
 
43
43
  Program: function checkUnicodeBOM(node) {
44
44
 
45
- const sourceCode = context.getSourceCode(),
45
+ const sourceCode = context.sourceCode,
46
46
  location = { column: 0, line: 1 },
47
47
  requireBOM = context.options[0] || "never";
48
48
 
@@ -39,7 +39,7 @@ module.exports = {
39
39
  docs: {
40
40
  description: "Require calls to `isNaN()` when checking for `NaN`",
41
41
  recommended: true,
42
- url: "https://eslint.org/docs/rules/use-isnan"
42
+ url: "https://eslint.org/docs/latest/rules/use-isnan"
43
43
  },
44
44
 
45
45
  schema: [