eslint-plugin-unicorn 65.0.1 → 67.0.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 (325) hide show
  1. package/configs/core-rule-replacements.js +9 -0
  2. package/index.js +11 -7
  3. package/package.json +34 -30
  4. package/readme.md +323 -212
  5. package/rules/ast/call-or-new-expression.js +1 -1
  6. package/rules/ast/index.js +4 -0
  7. package/rules/ast/is-loop.js +5 -0
  8. package/rules/ast/literal.js +18 -0
  9. package/rules/ast/loop-types.js +9 -0
  10. package/rules/better-dom-traversing.js +46 -16
  11. package/rules/catch-error-name.js +3 -0
  12. package/rules/class-reference-in-static-methods.js +451 -0
  13. package/rules/comment-content.js +1083 -0
  14. package/rules/consistent-assert.js +3 -0
  15. package/rules/consistent-boolean-name.js +493 -0
  16. package/rules/consistent-class-member-order.js +268 -0
  17. package/rules/consistent-compound-words.js +40 -26
  18. package/rules/consistent-date-clone.js +3 -0
  19. package/rules/consistent-destructuring.js +267 -143
  20. package/rules/consistent-empty-array-spread.js +3 -0
  21. package/rules/consistent-existence-index-check.js +3 -0
  22. package/rules/consistent-export-decorator-position.js +206 -0
  23. package/rules/consistent-function-scoping.js +79 -33
  24. package/rules/consistent-function-style.js +344 -0
  25. package/rules/consistent-json-file-read.js +4 -1
  26. package/rules/consistent-optional-chaining.js +203 -0
  27. package/rules/consistent-template-literal-escape.js +4 -1
  28. package/rules/custom-error-definition.js +222 -20
  29. package/rules/dom-node-dataset.js +234 -47
  30. package/rules/empty-brace-spaces.js +3 -0
  31. package/rules/error-message.js +3 -0
  32. package/rules/escape-case.js +3 -0
  33. package/rules/expiring-todo-comments.js +118 -19
  34. package/rules/explicit-length-check.js +20 -26
  35. package/rules/explicit-timer-delay.js +156 -0
  36. package/rules/filename-case.js +101 -12
  37. package/rules/fix/index.js +3 -2
  38. package/rules/fix/remove-argument.js +18 -5
  39. package/rules/fix/remove-spaces-after.js +3 -4
  40. package/rules/fix/{remove-expression-statement.js → remove-statement.js} +20 -7
  41. package/rules/fix/replace-node-or-token-and-spaces-before.js +1 -1
  42. package/rules/fix/replace-node-with-expression.js +47 -0
  43. package/rules/fix/replace-reference-identifier.js +4 -1
  44. package/rules/id-match.js +77 -0
  45. package/rules/import-style.js +25 -29
  46. package/rules/index.js +91 -2
  47. package/rules/isolated-functions.js +7 -4
  48. package/rules/logical-assignment-operators.js +112 -0
  49. package/rules/max-nested-calls.js +102 -0
  50. package/rules/new-for-builtins.js +14 -7
  51. package/rules/no-abusive-eslint-disable.js +5 -1
  52. package/rules/no-accessor-recursion.js +3 -0
  53. package/rules/no-anonymous-default-export.js +7 -3
  54. package/rules/no-array-callback-reference.js +148 -2
  55. package/rules/no-array-fill-with-reference-type.js +4 -13
  56. package/rules/no-array-from-fill.js +3 -0
  57. package/rules/no-array-method-this-argument.js +45 -20
  58. package/rules/no-array-reduce.js +82 -9
  59. package/rules/no-array-splice.js +232 -0
  60. package/rules/no-asterisk-prefix-in-documentation-comments.js +89 -0
  61. package/rules/no-await-expression-member.js +3 -0
  62. package/rules/no-await-in-promise-methods.js +3 -0
  63. package/rules/no-blob-to-file.js +9 -44
  64. package/rules/no-break-in-nested-loop.js +97 -0
  65. package/rules/no-canvas-to-image.js +3 -0
  66. package/rules/no-computed-property-existence-check.js +164 -0
  67. package/rules/no-confusing-array-splice.js +41 -13
  68. package/rules/no-confusing-array-with.js +103 -0
  69. package/rules/no-console-spaces.js +3 -0
  70. package/rules/no-declarations-before-early-exit.js +276 -0
  71. package/rules/no-document-cookie.js +3 -0
  72. package/rules/no-duplicate-loops.js +60 -0
  73. package/rules/no-duplicate-set-values.js +3 -0
  74. package/rules/no-empty-file.js +109 -3
  75. package/rules/no-error-property-assignment.js +440 -0
  76. package/rules/no-exports-in-scripts.js +3 -0
  77. package/rules/{no-array-for-each.js → no-for-each.js} +21 -11
  78. package/rules/no-for-loop.js +557 -96
  79. package/rules/no-global-object-property-assignment.js +89 -0
  80. package/rules/no-immediate-mutation.js +5 -2
  81. package/rules/no-incorrect-query-selector.js +8 -36
  82. package/rules/no-incorrect-template-string-interpolation.js +93 -0
  83. package/rules/no-instanceof-builtins.js +4 -1
  84. package/rules/no-invalid-argument-count.js +1345 -0
  85. package/rules/no-invalid-fetch-options.js +6 -3
  86. package/rules/no-invalid-file-input-accept.js +12 -5
  87. package/rules/no-invalid-remove-event-listener.js +3 -0
  88. package/rules/no-keyword-prefix.js +27 -22
  89. package/rules/no-late-current-target-access.js +3 -0
  90. package/rules/no-lonely-if.js +3 -0
  91. package/rules/no-magic-array-flat-depth.js +3 -0
  92. package/rules/no-manually-wrapped-comments.js +20 -9
  93. package/rules/no-mismatched-map-key.js +520 -0
  94. package/rules/no-named-default.js +3 -0
  95. package/rules/no-negated-array-predicate.js +212 -0
  96. package/rules/no-negated-comparison.js +347 -0
  97. package/rules/no-negated-condition.js +3 -0
  98. package/rules/no-negation-in-equality-check.js +3 -0
  99. package/rules/no-nested-ternary.js +3 -0
  100. package/rules/no-new-array.js +3 -0
  101. package/rules/no-new-buffer.js +3 -0
  102. package/rules/no-non-function-verb-prefix.js +324 -0
  103. package/rules/no-null.js +3 -0
  104. package/rules/no-object-as-default-parameter.js +3 -0
  105. package/rules/no-object-methods-with-collections.js +381 -0
  106. package/rules/no-optional-chaining-on-undeclared-variable.js +135 -0
  107. package/rules/no-process-exit.js +3 -0
  108. package/rules/no-redundant-comparison.js +305 -0
  109. package/rules/no-return-array-push.js +164 -0
  110. package/rules/no-single-promise-in-promise-methods.js +95 -5
  111. package/rules/no-static-only-class.js +3 -0
  112. package/rules/no-subtraction-comparison.js +111 -0
  113. package/rules/no-thenable.js +3 -0
  114. package/rules/no-this-assignment.js +3 -0
  115. package/rules/no-this-outside-of-class.js +3 -0
  116. package/rules/no-top-level-assignment-in-function.js +76 -0
  117. package/rules/no-top-level-side-effects.js +74 -0
  118. package/rules/no-typeof-undefined.js +5 -3
  119. package/rules/no-uncalled-method.js +308 -0
  120. package/rules/no-undeclared-class-members.js +349 -0
  121. package/rules/no-unnecessary-array-flat-depth.js +3 -0
  122. package/rules/no-unnecessary-array-splice-count.js +3 -0
  123. package/rules/no-unnecessary-await.js +3 -0
  124. package/rules/no-unnecessary-global-this.js +176 -0
  125. package/rules/no-unnecessary-nested-ternary.js +3 -0
  126. package/rules/no-unnecessary-polyfills.js +29 -11
  127. package/rules/no-unnecessary-slice-end.js +3 -0
  128. package/rules/no-unnecessary-splice.js +157 -0
  129. package/rules/no-unreadable-array-destructuring.js +99 -9
  130. package/rules/no-unreadable-for-of-expression.js +130 -0
  131. package/rules/no-unreadable-iife.js +3 -0
  132. package/rules/no-unreadable-new-expression.js +63 -0
  133. package/rules/no-unreadable-object-destructuring.js +140 -0
  134. package/rules/no-unsafe-buffer-conversion.js +532 -0
  135. package/rules/no-unsafe-dom-html.js +172 -0
  136. package/rules/no-unsafe-property-key.js +584 -0
  137. package/rules/no-unsafe-string-replacement.js +78 -0
  138. package/rules/no-unused-array-method-return.js +4 -1
  139. package/rules/no-unused-properties.js +71 -35
  140. package/rules/no-useless-boolean-cast.js +120 -0
  141. package/rules/no-useless-coercion.js +91 -0
  142. package/rules/no-useless-collection-argument.js +3 -0
  143. package/rules/no-useless-concat.js +144 -0
  144. package/rules/no-useless-continue.js +81 -0
  145. package/rules/no-useless-else.js +269 -0
  146. package/rules/no-useless-error-capture-stack-trace.js +3 -0
  147. package/rules/no-useless-fallback-in-spread.js +125 -1
  148. package/rules/no-useless-iterator-to-array.js +3 -0
  149. package/rules/no-useless-length-check.js +20 -8
  150. package/rules/no-useless-override.js +217 -0
  151. package/rules/no-useless-promise-resolve-reject.js +6 -1
  152. package/rules/no-useless-recursion.js +118 -0
  153. package/rules/no-useless-spread.js +189 -73
  154. package/rules/no-useless-switch-case.js +12 -1
  155. package/rules/no-useless-template-literals.js +370 -0
  156. package/rules/no-useless-undefined.js +254 -21
  157. package/rules/no-zero-fractions.js +3 -0
  158. package/rules/number-literal-case.js +3 -0
  159. package/rules/numeric-separators-style.js +12 -11
  160. package/rules/operator-assignment.js +111 -0
  161. package/rules/prefer-add-event-listener-options.js +54 -0
  162. package/rules/prefer-add-event-listener.js +3 -0
  163. package/rules/prefer-array-find.js +16 -11
  164. package/rules/prefer-array-flat-map.js +180 -12
  165. package/rules/prefer-array-flat.js +16 -11
  166. package/rules/prefer-array-from-map.js +465 -0
  167. package/rules/prefer-array-index-of.js +3 -0
  168. package/rules/prefer-array-last-methods.js +4 -1
  169. package/rules/prefer-array-slice.js +97 -0
  170. package/rules/prefer-array-some.js +24 -4
  171. package/rules/prefer-at.js +94 -36
  172. package/rules/prefer-await.js +69 -0
  173. package/rules/prefer-bigint-literals.js +4 -0
  174. package/rules/prefer-blob-reading-methods.js +3 -0
  175. package/rules/prefer-class-fields.js +3 -0
  176. package/rules/prefer-classlist-toggle.js +5 -2
  177. package/rules/prefer-code-point.js +3 -0
  178. package/rules/prefer-date-now.js +3 -0
  179. package/rules/prefer-default-parameters.js +7 -4
  180. package/rules/prefer-direct-iteration.js +424 -0
  181. package/rules/prefer-dispose.js +346 -0
  182. package/rules/prefer-dom-node-append.js +3 -0
  183. package/rules/prefer-dom-node-html-methods.js +136 -0
  184. package/rules/prefer-dom-node-remove.js +3 -0
  185. package/rules/prefer-dom-node-text-content.js +26 -0
  186. package/rules/prefer-early-return.js +267 -0
  187. package/rules/prefer-else-if.js +524 -0
  188. package/rules/prefer-event-target.js +3 -0
  189. package/rules/prefer-export-from.js +5 -3
  190. package/rules/prefer-get-or-insert-computed.js +3 -0
  191. package/rules/prefer-global-number-constants.js +86 -0
  192. package/rules/prefer-global-this.js +35 -19
  193. package/rules/prefer-has-check.js +946 -0
  194. package/rules/prefer-https.js +55 -11
  195. package/rules/prefer-identifier-import-export-specifiers.js +94 -0
  196. package/rules/prefer-import-meta-properties.js +13 -10
  197. package/rules/prefer-includes-over-repeated-comparisons.js +10 -71
  198. package/rules/prefer-includes.js +4 -0
  199. package/rules/prefer-iterable-in-constructor.js +346 -0
  200. package/rules/prefer-iterator-concat.js +3 -0
  201. package/rules/prefer-iterator-to-array-at-end.js +3 -0
  202. package/rules/prefer-iterator-to-array.js +210 -0
  203. package/rules/prefer-keyboard-event-key.js +7 -3
  204. package/rules/prefer-location-assign.js +145 -0
  205. package/rules/prefer-logical-operator-over-ternary.js +253 -2
  206. package/rules/prefer-map-from-entries.js +482 -0
  207. package/rules/prefer-math-abs.js +3 -0
  208. package/rules/prefer-math-min-max.js +3 -0
  209. package/rules/prefer-math-trunc.js +100 -2
  210. package/rules/prefer-minimal-ternary.js +243 -0
  211. package/rules/prefer-modern-dom-apis.js +181 -16
  212. package/rules/prefer-modern-math-apis.js +3 -0
  213. package/rules/prefer-module.js +5 -1
  214. package/rules/prefer-native-coercion-functions.js +5 -4
  215. package/rules/prefer-negative-index.js +4 -12
  216. package/rules/prefer-node-protocol.js +3 -0
  217. package/rules/prefer-number-coercion.js +157 -0
  218. package/rules/prefer-number-is-safe-integer.js +193 -0
  219. package/rules/prefer-number-properties.js +71 -9
  220. package/rules/prefer-object-define-properties.js +208 -0
  221. package/rules/prefer-object-destructuring-defaults.js +177 -0
  222. package/rules/prefer-object-from-entries.js +141 -2
  223. package/rules/prefer-object-iterable-methods.js +609 -0
  224. package/rules/prefer-optional-catch-binding.js +3 -0
  225. package/rules/prefer-path2d.js +842 -0
  226. package/rules/prefer-private-class-fields.js +503 -0
  227. package/rules/prefer-prototype-methods.js +3 -0
  228. package/rules/prefer-query-selector.js +74 -32
  229. package/rules/prefer-queue-microtask.js +7 -12
  230. package/rules/prefer-reflect-apply.js +3 -0
  231. package/rules/prefer-regexp-test.js +489 -84
  232. package/rules/prefer-response-static-json.js +3 -0
  233. package/rules/prefer-scoped-selector.js +189 -0
  234. package/rules/prefer-set-has.js +8 -14
  235. package/rules/prefer-set-size.js +6 -34
  236. package/rules/prefer-short-arrow-method.js +138 -0
  237. package/rules/prefer-simple-condition-first.js +5 -4
  238. package/rules/prefer-simple-sort-comparator.js +270 -0
  239. package/rules/prefer-single-array-predicate.js +209 -0
  240. package/rules/prefer-single-call.js +3 -0
  241. package/rules/prefer-single-object-destructuring.js +145 -0
  242. package/rules/prefer-smaller-scope.js +238 -0
  243. package/rules/prefer-split-limit.js +4 -1
  244. package/rules/prefer-spread.js +915 -86
  245. package/rules/prefer-string-match-all.js +4 -1
  246. package/rules/prefer-string-pad-start-end.js +4 -3
  247. package/rules/prefer-string-raw.js +4 -1
  248. package/rules/prefer-string-repeat.js +3 -0
  249. package/rules/prefer-string-replace-all.js +131 -65
  250. package/rules/prefer-string-slice.js +21 -5
  251. package/rules/prefer-string-starts-ends-with.js +84 -11
  252. package/rules/prefer-string-trim-start-end.js +9 -0
  253. package/rules/prefer-structured-clone.js +3 -0
  254. package/rules/prefer-switch.js +9 -5
  255. package/rules/prefer-temporal.js +254 -0
  256. package/rules/prefer-ternary.js +146 -111
  257. package/rules/prefer-top-level-await.js +3 -0
  258. package/rules/prefer-type-error.js +31 -9
  259. package/rules/prefer-type-literal-last.js +139 -0
  260. package/rules/prefer-uint8array-base64.js +165 -0
  261. package/rules/prefer-unicode-code-point-escapes.js +400 -0
  262. package/rules/prefer-url-href.js +592 -0
  263. package/rules/prevent-abbreviations.js +28 -24
  264. package/rules/relative-url-style.js +6 -1
  265. package/rules/require-array-join-separator.js +9 -1
  266. package/rules/require-array-sort-compare.js +88 -0
  267. package/rules/require-css-escape.js +3 -0
  268. package/rules/require-module-attributes.js +3 -0
  269. package/rules/require-module-specifiers.js +4 -2
  270. package/rules/require-number-to-fixed-digits-argument.js +3 -0
  271. package/rules/require-passive-events.js +4 -5
  272. package/rules/require-post-message-target-origin.js +3 -0
  273. package/rules/require-proxy-trap-boolean-return.js +415 -0
  274. package/rules/rule/to-eslint-rule.js +1 -1
  275. package/rules/shared/abbreviations.js +2 -0
  276. package/rules/shared/iterator-helpers.js +104 -0
  277. package/rules/shared/negative-index.js +13 -4
  278. package/rules/shared/no-array-mutate-rule.js +9 -1
  279. package/rules/shared/simple-array-search-rule.js +135 -3
  280. package/rules/shared/splice-replacements.js +149 -0
  281. package/rules/shared/substring.js +69 -0
  282. package/rules/string-content.js +7 -3
  283. package/rules/switch-case-braces.js +102 -11
  284. package/rules/switch-case-break-position.js +5 -3
  285. package/rules/template-indent.js +3 -0
  286. package/rules/text-encoding-identifier-case.js +77 -0
  287. package/rules/throw-new-error.js +3 -0
  288. package/rules/try-complexity.js +3 -0
  289. package/rules/utils/boolean.js +27 -11
  290. package/rules/utils/cartesian-product-samples.js +1 -1
  291. package/rules/utils/comments.js +47 -0
  292. package/rules/utils/comparison.js +80 -0
  293. package/rules/utils/escape-template-element-raw.js +1 -1
  294. package/rules/utils/get-available-variable-name.js +1 -1
  295. package/rules/utils/get-comments.js +15 -0
  296. package/rules/utils/has-unsafe-arrow-conversion-reference.js +46 -0
  297. package/rules/utils/imports.js +11 -0
  298. package/rules/utils/index.js +43 -1
  299. package/rules/utils/is-array.js +79 -0
  300. package/rules/utils/is-bigint.js +86 -0
  301. package/rules/utils/is-boolean.js +564 -0
  302. package/rules/utils/is-dom-node.js +53 -0
  303. package/rules/utils/is-global-identifier.js +13 -0
  304. package/rules/utils/is-left-hand-side.js +1 -0
  305. package/rules/utils/is-map.js +22 -0
  306. package/rules/utils/is-number.js +51 -14
  307. package/rules/utils/is-promise-type.js +28 -0
  308. package/rules/utils/is-reg-exp.js +24 -0
  309. package/rules/utils/is-same-reference.js +2 -1
  310. package/rules/utils/is-set.js +22 -0
  311. package/rules/utils/is-string.js +119 -0
  312. package/rules/utils/is-strong-precedence-node.js +32 -0
  313. package/rules/utils/is-typescript-file.js +9 -0
  314. package/rules/utils/is-virtual-filename.js +9 -0
  315. package/rules/utils/normalize-comment.js +38 -0
  316. package/rules/utils/numeric.js +1 -1
  317. package/rules/utils/on-root.js +31 -0
  318. package/rules/utils/rule.js +2 -6
  319. package/rules/utils/scope.js +22 -0
  320. package/rules/utils/should-skip-known-non-array-receiver.js +13 -0
  321. package/rules/utils/type-check.js +20 -0
  322. package/rules/utils/type-helpers.js +595 -0
  323. package/rules/utils/types.js +27 -0
  324. package/rules/utils/unwrap-typescript-expression.js +16 -0
  325. package/rules/no-hex-escape.js +0 -55
package/readme.md CHANGED
@@ -3,13 +3,13 @@
3
3
  <!-- markdownlint-disable-next-line no-inline-html -->
4
4
  <img src="https://cloud.githubusercontent.com/assets/170270/18659176/1cc373d0-7f33-11e6-890f-0ba35362ee7e.jpg" width="180" align="right" alt="Unicorn">
5
5
 
6
- > More than 100 powerful ESLint rules
6
+ > More than 200 powerful ESLint rules
7
7
 
8
8
  You might want to check out [XO](https://github.com/xojs/xo), which includes this plugin.
9
9
 
10
- [**Propose or contribute a new rule ➡**](.github/contributing.md)
10
+ Most rules target JavaScript and TypeScript, but [some also lint CSS, HTML, JSON, and Markdown](#non-javascript-files) when used with the matching ESLint language plugin.
11
11
 
12
- **Fully AI-generated pull requests are not accepted. You can use AI, but should be verified and cleaned up by a human. Only Opus 4.6+ (high-effort) and Codex 5.4+ (extra high) are accepted models. Preferably created with Opus and verified by Codex.**
12
+ [**Propose or contribute a new rule ➡**](.github/contributing.md)
13
13
 
14
14
  ## Install
15
15
 
@@ -17,19 +17,20 @@ You might want to check out [XO](https://github.com/xojs/xo), which includes thi
17
17
  npm install --save-dev eslint eslint-plugin-unicorn
18
18
  ```
19
19
 
20
- **Requires ESLint `>=9.20.0`, [flat config](https://eslint.org/docs/latest/use/configure/configuration-files), and [ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#how-can-i-make-my-typescript-project-output-esm).**
20
+ **Requires ESLint `>=10.4`, [flat config](https://eslint.org/docs/latest/use/configure/configuration-files), and [ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c#how-can-i-make-my-typescript-project-output-esm).**
21
21
 
22
22
  ## Usage
23
23
 
24
24
  Use a [preset config](#preset-configs) or configure each rule in `eslint.config.js`.
25
25
 
26
- If you don't use the preset, ensure you use the same `languageOptions` config as below.
26
+ If you don't use a preset, set the same `languageOptions` as shown below.
27
27
 
28
28
  ```js
29
29
  import eslintPluginUnicorn from 'eslint-plugin-unicorn';
30
+ import {defineConfig} from 'eslint/config';
30
31
  import globals from 'globals';
31
32
 
32
- export default [
33
+ export default defineConfig([
33
34
  {
34
35
  languageOptions: {
35
36
  globals: globals.builtin,
@@ -43,7 +44,7 @@ export default [
43
44
  },
44
45
  },
45
46
  // …
46
- ];
47
+ ]);
47
48
  ```
48
49
 
49
50
  ## Rules
@@ -55,189 +56,305 @@ export default [
55
56
  ✅ Set in the `recommended` [configuration](https://github.com/sindresorhus/eslint-plugin-unicorn#recommended-config).\
56
57
  ☑️ Set in the `unopinionated` [configuration](https://github.com/sindresorhus/eslint-plugin-unicorn#recommended-config).\
57
58
  🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\
58
- 💡 Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).
59
-
60
- | Name                                      | Description | 💼 | 🔧 | 💡 |
61
- | :--------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- | :- | :- |
62
- | [better-dom-traversing](docs/rules/better-dom-traversing.md) | Prefer better DOM traversal APIs. | ☑️ | | 💡 |
63
- | [catch-error-name](docs/rules/catch-error-name.md) | Enforce a specific parameter name in catch clauses. | | 🔧 | |
64
- | [consistent-assert](docs/rules/consistent-assert.md) | Enforce consistent assertion style with `node:assert`. | ✅ | 🔧 | |
65
- | [consistent-compound-words](docs/rules/consistent-compound-words.md) | Enforce consistent spelling of compound words in identifiers. | ✅ ☑️ | | 💡 |
66
- | [consistent-date-clone](docs/rules/consistent-date-clone.md) | Prefer passing `Date` directly to the constructor when cloning. | ✅ ☑️ | 🔧 | |
67
- | [consistent-destructuring](docs/rules/consistent-destructuring.md) | Use destructured variables over properties. | | | 💡 |
68
- | [consistent-empty-array-spread](docs/rules/consistent-empty-array-spread.md) | Prefer consistent types when spreading a ternary in an array literal. | ✅ | 🔧 | |
69
- | [consistent-existence-index-check](docs/rules/consistent-existence-index-check.md) | Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. | ✅ ☑️ | 🔧 | |
70
- | [consistent-function-scoping](docs/rules/consistent-function-scoping.md) | Move function definitions to the highest possible scope. | ✅ | | |
71
- | [consistent-json-file-read](docs/rules/consistent-json-file-read.md) | Enforce consistent JSON file reads before `JSON.parse()`. | ✅ | 🔧 | |
72
- | [consistent-template-literal-escape](docs/rules/consistent-template-literal-escape.md) | Enforce consistent style for escaping `${` in template literals. | | 🔧 | |
73
- | [custom-error-definition](docs/rules/custom-error-definition.md) | Enforce correct `Error` subclassing. | | 🔧 | |
74
- | [dom-node-dataset](docs/rules/dom-node-dataset.md) | Enforce consistent style for DOM element dataset access. | ✅ ☑️ | 🔧 | |
75
- | [empty-brace-spaces](docs/rules/empty-brace-spaces.md) | Enforce no spaces between braces. | ✅ | 🔧 | |
76
- | [error-message](docs/rules/error-message.md) | Enforce passing a `message` value when creating a built-in error. | ✅ ☑️ | | |
77
- | [escape-case](docs/rules/escape-case.md) | Require escape sequences to use uppercase or lowercase values. | ✅ ☑️ | 🔧 | |
78
- | [expiring-todo-comments](docs/rules/expiring-todo-comments.md) | Add expiration conditions to TODO comments. | ✅ ☑️ | | |
79
- | [explicit-length-check](docs/rules/explicit-length-check.md) | Enforce explicitly comparing the `length` or `size` property of a value. | ✅ | 🔧 | 💡 |
80
- | [filename-case](docs/rules/filename-case.md) | Enforce a case style for filenames and directory names. | ✅ | | |
81
- | [import-style](docs/rules/import-style.md) | Enforce specific import styles per module. | ☑️ | | |
82
- | [isolated-functions](docs/rules/isolated-functions.md) | Prevent usage of variables from outside the scope of isolated functions. | | | |
83
- | [new-for-builtins](docs/rules/new-for-builtins.md) | Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. | ✅ ☑️ | 🔧 | 💡 |
84
- | [no-abusive-eslint-disable](docs/rules/no-abusive-eslint-disable.md) | Enforce specifying rules to disable in `eslint-disable` comments. | ✅ ☑️ | | |
85
- | [no-accessor-recursion](docs/rules/no-accessor-recursion.md) | Disallow recursive access to `this` within getters and setters. | ✅ ☑️ | | |
86
- | [no-anonymous-default-export](docs/rules/no-anonymous-default-export.md) | Disallow anonymous functions and classes as the default export. | ✅ ☑️ | | 💡 |
87
- | [no-array-callback-reference](docs/rules/no-array-callback-reference.md) | Prevent passing a function reference directly to iterator methods. | ✅ | | 💡 |
88
- | [no-array-fill-with-reference-type](docs/rules/no-array-fill-with-reference-type.md) | Disallow using reference values as `Array#fill()` values. | ✅ ☑️ | | |
89
- | [no-array-for-each](docs/rules/no-array-for-each.md) | Prefer `for…of` over the `forEach` method. | ✅ ☑️ | 🔧 | 💡 |
90
- | [no-array-from-fill](docs/rules/no-array-from-fill.md) | Disallow `.fill()` after `Array.from({length: …})`. | ☑️ | | |
91
- | [no-array-method-this-argument](docs/rules/no-array-method-this-argument.md) | Disallow using the `this` argument in array methods. | ✅ ☑️ | 🔧 | 💡 |
92
- | [no-array-reduce](docs/rules/no-array-reduce.md) | Disallow `Array#reduce()` and `Array#reduceRight()`. | ✅ | 🔧 | |
93
- | [no-array-reverse](docs/rules/no-array-reverse.md) | Prefer `Array#toReversed()` over `Array#reverse()`. | ☑️ | | 💡 |
94
- | [no-array-sort](docs/rules/no-array-sort.md) | Prefer `Array#toSorted()` over `Array#sort()`. | ✅ ☑️ | | 💡 |
95
- | [no-await-expression-member](docs/rules/no-await-expression-member.md) | Disallow member access from await expression. | ✅ | 🔧 | |
96
- | [no-await-in-promise-methods](docs/rules/no-await-in-promise-methods.md) | Disallow using `await` in `Promise` method parameters. | ✅ ☑️ | | 💡 |
97
- | [no-blob-to-file](docs/rules/no-blob-to-file.md) | Disallow unnecessary `Blob` to `File` conversion. | ✅ ☑️ | | 💡 |
98
- | [no-canvas-to-image](docs/rules/no-canvas-to-image.md) | Prefer drawing canvases directly instead of converting them to images. | ✅ ☑️ | | |
99
- | [no-confusing-array-splice](docs/rules/no-confusing-array-splice.md) | Disallow confusing uses of `Array#{splice,toSpliced}()`. | ✅ | | 💡 |
100
- | [no-console-spaces](docs/rules/no-console-spaces.md) | Do not use leading/trailing space between `console.log` parameters. | ✅ ☑️ | 🔧 | |
101
- | [no-document-cookie](docs/rules/no-document-cookie.md) | Do not use `document.cookie` directly. | ✅ ☑️ | | |
102
- | [no-duplicate-set-values](docs/rules/no-duplicate-set-values.md) | Disallow duplicate values in `Set` constructor array literals. | ✅ | | |
103
- | [no-empty-file](docs/rules/no-empty-file.md) | Disallow empty files. | ✅ ☑️ | | |
104
- | [no-exports-in-scripts](docs/rules/no-exports-in-scripts.md) | Disallow exports in scripts. | ✅ ☑️ | | |
105
- | [no-for-loop](docs/rules/no-for-loop.md) | Do not use a `for` loop that can be replaced with a `for-of` loop. | ✅ | 🔧 | 💡 |
106
- | [no-hex-escape](docs/rules/no-hex-escape.md) | Enforce the use of Unicode escapes instead of hexadecimal escapes. | ✅ ☑️ | 🔧 | |
107
- | [no-immediate-mutation](docs/rules/no-immediate-mutation.md) | Disallow immediate mutation after variable assignment. || 🔧 | 💡 |
108
- | [no-incorrect-query-selector](docs/rules/no-incorrect-query-selector.md) | Disallow incorrect `querySelector()` and `querySelectorAll()` usage. | ✅ | 🔧 | |
109
- | [no-instanceof-builtins](docs/rules/no-instanceof-builtins.md) | Disallow `instanceof` with built-in objects | ✅ ☑️ | 🔧 | 💡 |
110
- | [no-invalid-fetch-options](docs/rules/no-invalid-fetch-options.md) | Disallow invalid options in `fetch()` and `new Request()`. | ✅ ☑️ | | |
111
- | [no-invalid-file-input-accept](docs/rules/no-invalid-file-input-accept.md) | Disallow invalid `accept` values on file inputs. | | 🔧 | |
112
- | [no-invalid-remove-event-listener](docs/rules/no-invalid-remove-event-listener.md) | Prevent calling `EventTarget#removeEventListener()` with the result of an expression. | ✅ ☑️ | | |
113
- | [no-keyword-prefix](docs/rules/no-keyword-prefix.md) | Disallow identifiers starting with `new` or `class`. | | | |
114
- | [no-late-current-target-access](docs/rules/no-late-current-target-access.md) | Disallow accessing `event.currentTarget` after the synchronous event dispatch has finished. | ✅ | | |
115
- | [no-lonely-if](docs/rules/no-lonely-if.md) | Disallow `if` statements as the only statement in `if` blocks without `else`. | ✅ ☑️ | 🔧 | |
116
- | [no-magic-array-flat-depth](docs/rules/no-magic-array-flat-depth.md) | Disallow a magic number as the `depth` argument in `Array#flat(…).` | ✅ ☑️ | | |
117
- | [no-manually-wrapped-comments](docs/rules/no-manually-wrapped-comments.md) | Disallow manually wrapped comments. | | 🔧 | |
118
- | [no-named-default](docs/rules/no-named-default.md) | Disallow named usage of default import and export. | ✅ ☑️ | 🔧 | |
119
- | [no-negated-condition](docs/rules/no-negated-condition.md) | Disallow negated conditions. | ☑️ | 🔧 | |
120
- | [no-negation-in-equality-check](docs/rules/no-negation-in-equality-check.md) | Disallow negated expression in equality check. | ✅ ☑️ | | 💡 |
121
- | [no-nested-ternary](docs/rules/no-nested-ternary.md) | Disallow nested ternary expressions. | ✅ | 🔧 | |
122
- | [no-new-array](docs/rules/no-new-array.md) | Disallow `new Array()`. | ✅ ☑️ | 🔧 | 💡 |
123
- | [no-new-buffer](docs/rules/no-new-buffer.md) | Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. | ✅ ☑️ | 🔧 | 💡 |
124
- | [no-null](docs/rules/no-null.md) | Disallow the use of the `null` literal. | ✅ | 🔧 | 💡 |
125
- | [no-object-as-default-parameter](docs/rules/no-object-as-default-parameter.md) | Disallow the use of objects as default parameters. | ✅ ☑️ | | |
126
- | [no-process-exit](docs/rules/no-process-exit.md) | Disallow `process.exit()`. | ✅ ☑️ | | |
127
- | [no-single-promise-in-promise-methods](docs/rules/no-single-promise-in-promise-methods.md) | Disallow passing single-element arrays to `Promise` methods. | ✅ ☑️ | 🔧 | 💡 |
128
- | [no-static-only-class](docs/rules/no-static-only-class.md) | Disallow classes that only have static members. | ✅ ☑️ | 🔧 | |
129
- | [no-thenable](docs/rules/no-thenable.md) | Disallow `then` property. | ✅ ☑️ | | |
130
- | [no-this-assignment](docs/rules/no-this-assignment.md) | Disallow assigning `this` to a variable. | ✅ ☑️ | | |
131
- | [no-this-outside-of-class](docs/rules/no-this-outside-of-class.md) | Disallow `this` outside of classes. | ✅ | | |
132
- | [no-typeof-undefined](docs/rules/no-typeof-undefined.md) | Disallow comparing `undefined` using `typeof`. | ✅ ☑️ | 🔧 | 💡 |
133
- | [no-unnecessary-array-flat-depth](docs/rules/no-unnecessary-array-flat-depth.md) | Disallow using `1` as the `depth` argument of `Array#flat()`. | ✅ ☑️ | 🔧 | |
134
- | [no-unnecessary-array-splice-count](docs/rules/no-unnecessary-array-splice-count.md) | Disallow using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#{splice,toSpliced}()`. | ✅ ☑️ | 🔧 | |
135
- | [no-unnecessary-await](docs/rules/no-unnecessary-await.md) | Disallow awaiting non-promise values. | ☑️ | 🔧 | |
136
- | [no-unnecessary-nested-ternary](docs/rules/no-unnecessary-nested-ternary.md) | Disallow unnecessary nested ternary expressions. | ☑️ | 🔧 | |
137
- | [no-unnecessary-polyfills](docs/rules/no-unnecessary-polyfills.md) | Enforce the use of built-in methods instead of unnecessary polyfills. | ✅ ☑️ | | |
138
- | [no-unnecessary-slice-end](docs/rules/no-unnecessary-slice-end.md) | Disallow using `.length` or `Infinity` as the `end` argument of `{Array,String,TypedArray}#slice()`. | ✅ ☑️ | 🔧 | |
139
- | [no-unreadable-array-destructuring](docs/rules/no-unreadable-array-destructuring.md) | Disallow unreadable array destructuring. | ✅ ☑️ | 🔧 | |
140
- | [no-unreadable-iife](docs/rules/no-unreadable-iife.md) | Disallow unreadable IIFEs. | ✅ ☑️ | | 💡 |
141
- | [no-unused-array-method-return](docs/rules/no-unused-array-method-return.md) | Disallow ignoring the return value of selected array methods. | ✅ ☑️ | | |
142
- | [no-unused-properties](docs/rules/no-unused-properties.md) | Disallow unused object properties. | | | |
143
- | [no-useless-collection-argument](docs/rules/no-useless-collection-argument.md) | Disallow useless values or fallbacks in `Set`, `Map`, `WeakSet`, or `WeakMap`. | ✅ ☑️ | 🔧 | 💡 |
144
- | [no-useless-error-capture-stack-trace](docs/rules/no-useless-error-capture-stack-trace.md) | Disallow unnecessary `Error.captureStackTrace(…)`. | ✅ ☑️ | 🔧 | |
145
- | [no-useless-fallback-in-spread](docs/rules/no-useless-fallback-in-spread.md) | Disallow useless fallback when spreading in object literals. | ✅ ☑️ | 🔧 | |
146
- | [no-useless-iterator-to-array](docs/rules/no-useless-iterator-to-array.md) | Disallow unnecessary `.toArray()` on iterators. | ✅ ☑️ | 🔧 | 💡 |
147
- | [no-useless-length-check](docs/rules/no-useless-length-check.md) | Disallow useless array length check. | ✅ ☑️ | 🔧 | |
148
- | [no-useless-promise-resolve-reject](docs/rules/no-useless-promise-resolve-reject.md) | Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks | ✅ ☑️ | 🔧 | |
149
- | [no-useless-spread](docs/rules/no-useless-spread.md) | Disallow unnecessary spread. | ✅ ☑️ | 🔧 | |
150
- | [no-useless-switch-case](docs/rules/no-useless-switch-case.md) | Disallow useless case in switch statements. | ✅ ☑️ | | 💡 |
151
- | [no-useless-undefined](docs/rules/no-useless-undefined.md) | Disallow useless `undefined`. | ✅ ☑️ | 🔧 | |
152
- | [no-zero-fractions](docs/rules/no-zero-fractions.md) | Disallow number literals with zero fractions or dangling dots. | ✅ ☑️ | 🔧 | |
153
- | [number-literal-case](docs/rules/number-literal-case.md) | Enforce proper case for numeric literals. | ✅ ☑️ | 🔧 | |
154
- | [numeric-separators-style](docs/rules/numeric-separators-style.md) | Enforce the style of numeric separators by correctly grouping digits. | ✅ ☑️ | 🔧 | |
155
- | [prefer-add-event-listener](docs/rules/prefer-add-event-listener.md) | Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. | ✅ ☑️ | 🔧 | |
156
- | [prefer-array-find](docs/rules/prefer-array-find.md) | Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter()`. | ✅ ☑️ | 🔧 | 💡 |
157
- | [prefer-array-flat](docs/rules/prefer-array-flat.md) | Prefer `Array#flat()` over legacy techniques to flatten arrays. | ✅ ☑️ | 🔧 | |
158
- | [prefer-array-flat-map](docs/rules/prefer-array-flat-map.md) | Prefer `.flatMap(…)` over `.map(…).flat()`. | ✅ ☑️ | 🔧 | |
159
- | [prefer-array-index-of](docs/rules/prefer-array-index-of.md) | Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item. | ✅ ☑️ | 🔧 | 💡 |
160
- | [prefer-array-last-methods](docs/rules/prefer-array-last-methods.md) | Prefer last-oriented array methods over `Array#reverse()` or `Array#toReversed()` followed by a method. | ✅ ☑️ | | 💡 |
161
- | [prefer-array-some](docs/rules/prefer-array-some.md) | Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. | ✅ ☑️ | 🔧 | 💡 |
162
- | [prefer-at](docs/rules/prefer-at.md) | Prefer `.at()` method for index access and `String#charAt()`. | ✅ ☑️ | 🔧 | 💡 |
163
- | [prefer-bigint-literals](docs/rules/prefer-bigint-literals.md) | Prefer `BigInt` literals over the constructor. | ✅ ☑️ | 🔧 | 💡 |
164
- | [prefer-blob-reading-methods](docs/rules/prefer-blob-reading-methods.md) | Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. | ✅ ☑️ | | |
165
- | [prefer-class-fields](docs/rules/prefer-class-fields.md) | Prefer class field declarations over `this` assignments in constructors. | ✅ ☑️ | 🔧 | 💡 |
166
- | [prefer-classlist-toggle](docs/rules/prefer-classlist-toggle.md) | Prefer using `Element#classList.toggle()` to toggle class names. | ✅ ☑️ | 🔧 | 💡 |
167
- | [prefer-code-point](docs/rules/prefer-code-point.md) | Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`. | ✅ ☑️ | | 💡 |
168
- | [prefer-date-now](docs/rules/prefer-date-now.md) | Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. | ✅ ☑️ | 🔧 | |
169
- | [prefer-default-parameters](docs/rules/prefer-default-parameters.md) | Prefer default parameters over reassignment. | ✅ ☑️ | | 💡 |
170
- | [prefer-dom-node-append](docs/rules/prefer-dom-node-append.md) | Prefer `Element#append()` over `Node#appendChild()`. | ✅ ☑️ | 🔧 | |
171
- | [prefer-dom-node-remove](docs/rules/prefer-dom-node-remove.md) | Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. | ✅ ☑️ | 🔧 | 💡 |
172
- | [prefer-dom-node-text-content](docs/rules/prefer-dom-node-text-content.md) | Prefer `.textContent` over `.innerText`. | ✅ ☑️ | | 💡 |
173
- | [prefer-event-target](docs/rules/prefer-event-target.md) | Prefer `EventTarget` over `EventEmitter`. | ✅ ☑️ | | |
174
- | [prefer-export-from](docs/rules/prefer-export-from.md) | Prefer `export…from` when re-exporting. | ✅ | 🔧 | 💡 |
175
- | [prefer-get-or-insert-computed](docs/rules/prefer-get-or-insert-computed.md) | Prefer `.getOrInsertComputed()` when the default value has side effects. | ✅ | 🔧 | |
176
- | [prefer-global-this](docs/rules/prefer-global-this.md) | Prefer `globalThis` over `window`, `self`, and `global`. | ✅ ☑️ | 🔧 | |
177
- | [prefer-https](docs/rules/prefer-https.md) | Prefer HTTPS over HTTP. | ✅ | 🔧 | |
178
- | [prefer-import-meta-properties](docs/rules/prefer-import-meta-properties.md) | Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths. | | 🔧 | |
179
- | [prefer-includes](docs/rules/prefer-includes.md) | Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. | ✅ ☑️ | 🔧 | 💡 |
180
- | [prefer-includes-over-repeated-comparisons](docs/rules/prefer-includes-over-repeated-comparisons.md) | Prefer `.includes()` over repeated equality comparisons. | ✅ | | |
181
- | [prefer-iterator-concat](docs/rules/prefer-iterator-concat.md) | Prefer `Iterator.concat(…)` over temporary spread arrays. | | 🔧 | 💡 |
182
- | [prefer-iterator-to-array-at-end](docs/rules/prefer-iterator-to-array-at-end.md) | Prefer moving `.toArray()` to the end of iterator helper chains. | ✅ ☑️ | | 💡 |
183
- | [prefer-keyboard-event-key](docs/rules/prefer-keyboard-event-key.md) | Prefer `KeyboardEvent#key` over deprecated keyboard event properties. | ✅ ☑️ | 🔧 | 💡 |
184
- | [prefer-logical-operator-over-ternary](docs/rules/prefer-logical-operator-over-ternary.md) | Prefer using a logical operator over a ternary. | ✅ ☑️ | | 💡 |
185
- | [prefer-math-abs](docs/rules/prefer-math-abs.md) | Prefer `Math.abs()` over manual absolute value expressions and symmetric range checks. | ✅ ☑️ | 🔧 | |
186
- | [prefer-math-min-max](docs/rules/prefer-math-min-max.md) | Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. | ✅ ☑️ | 🔧 | |
187
- | [prefer-math-trunc](docs/rules/prefer-math-trunc.md) | Enforce the use of `Math.trunc` instead of bitwise operators. | ✅ ☑️ | 🔧 | 💡 |
188
- | [prefer-modern-dom-apis](docs/rules/prefer-modern-dom-apis.md) | Prefer `.before()` over `.insertBefore()`, `.replaceWith()` over `.replaceChild()`, prefer one of `.before()`, `.after()`, `.append()` or `.prepend()` over `insertAdjacentText()` and `insertAdjacentElement()`. | ✅ ☑️ | 🔧 | |
189
- | [prefer-modern-math-apis](docs/rules/prefer-modern-math-apis.md) | Prefer modern `Math` APIs over legacy patterns. | ✅ ☑️ | 🔧 | |
190
- | [prefer-module](docs/rules/prefer-module.md) | Prefer JavaScript modules (ESM) over CommonJS. | ✅ ☑️ | 🔧 | 💡 |
191
- | [prefer-native-coercion-functions](docs/rules/prefer-native-coercion-functions.md) | Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. | ✅ ☑️ | 🔧 | |
192
- | [prefer-negative-index](docs/rules/prefer-negative-index.md) | Prefer negative index over `.length - index` when possible. | ✅ ☑️ | 🔧 | |
193
- | [prefer-node-protocol](docs/rules/prefer-node-protocol.md) | Prefer using the `node:` protocol when importing Node.js builtin modules. | ✅ ☑️ | 🔧 | |
194
- | [prefer-number-properties](docs/rules/prefer-number-properties.md) | Prefer `Number` static properties over global ones. | ✅ ☑️ | 🔧 | 💡 |
195
- | [prefer-object-from-entries](docs/rules/prefer-object-from-entries.md) | Prefer using `Object.fromEntries()` to transform a list of key-value pairs into an object. | ✅ ☑️ | 🔧 | |
196
- | [prefer-optional-catch-binding](docs/rules/prefer-optional-catch-binding.md) | Prefer omitting the `catch` binding parameter. | ✅ ☑️ | 🔧 | |
197
- | [prefer-prototype-methods](docs/rules/prefer-prototype-methods.md) | Prefer borrowing methods from the prototype instead of the instance. | ✅ ☑️ | 🔧 | |
198
- | [prefer-query-selector](docs/rules/prefer-query-selector.md) | Prefer `.querySelector()` and `.querySelectorAll()` over older DOM query methods. | ✅ | 🔧 | |
199
- | [prefer-queue-microtask](docs/rules/prefer-queue-microtask.md) | Prefer `queueMicrotask()` over `process.nextTick()`, `setImmediate()`, and `setTimeout(…, 0)`. | ☑️ | 🔧 | |
200
- | [prefer-reflect-apply](docs/rules/prefer-reflect-apply.md) | Prefer `Reflect.apply()` over `Function#apply()`. | ✅ ☑️ | 🔧 | |
201
- | [prefer-regexp-test](docs/rules/prefer-regexp-test.md) | Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`. | ✅ ☑️ | 🔧 | 💡 |
202
- | [prefer-response-static-json](docs/rules/prefer-response-static-json.md) | Prefer `Response.json()` over `new Response(JSON.stringify())`. | ✅ ☑️ | 🔧 | |
203
- | [prefer-set-has](docs/rules/prefer-set-has.md) | Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. | ✅ ☑️ | 🔧 | 💡 |
204
- | [prefer-set-size](docs/rules/prefer-set-size.md) | Prefer using `Set#size` instead of `Array#length`. | ✅ ☑️ | 🔧 | |
205
- | [prefer-simple-condition-first](docs/rules/prefer-simple-condition-first.md) | Prefer simple conditions first in logical expressions. | ✅ ☑️ | 🔧 | 💡 |
206
- | [prefer-single-call](docs/rules/prefer-single-call.md) | Enforce combining multiple `Array#{push,unshift}()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. | ✅ ☑️ | 🔧 | 💡 |
207
- | [prefer-split-limit](docs/rules/prefer-split-limit.md) | Prefer `String#split()` with a limit. | ✅ ☑️ | 🔧 | |
208
- | [prefer-spread](docs/rules/prefer-spread.md) | Prefer the spread operator over `Array.from()`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`. | ✅ | 🔧 | 💡 |
209
- | [prefer-string-match-all](docs/rules/prefer-string-match-all.md) | Prefer `String#matchAll()` over `RegExp#exec()` loops. | ✅ ☑️ | 🔧 | |
210
- | [prefer-string-pad-start-end](docs/rules/prefer-string-pad-start-end.md) | Prefer `String#padStart()` and `String#padEnd()` over manual string padding. | ✅ ☑️ | 🔧 | 💡 |
211
- | [prefer-string-raw](docs/rules/prefer-string-raw.md) | Prefer using the `String.raw` tag to avoid escaping `\`. | ✅ ☑️ | 🔧 | |
212
- | [prefer-string-repeat](docs/rules/prefer-string-repeat.md) | Prefer `String#repeat()` for repeated whitespace. | ✅ ☑️ | 🔧 | |
213
- | [prefer-string-replace-all](docs/rules/prefer-string-replace-all.md) | Prefer `String#replaceAll()` over regex searches with the global flag and `String#split().join()`. | ✅ ☑️ | 🔧 | |
214
- | [prefer-string-slice](docs/rules/prefer-string-slice.md) | Prefer `String#slice()` over `String#substr()` and `String#substring()`. | ✅ ☑️ | 🔧 | |
215
- | [prefer-string-starts-ends-with](docs/rules/prefer-string-starts-ends-with.md) | Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`. | ✅ ☑️ | 🔧 | 💡 |
216
- | [prefer-string-trim-start-end](docs/rules/prefer-string-trim-start-end.md) | Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. | ✅ ☑️ | 🔧 | |
217
- | [prefer-structured-clone](docs/rules/prefer-structured-clone.md) | Prefer using `structuredClone` to create a deep clone. | ✅ ☑️ | | 💡 |
218
- | [prefer-switch](docs/rules/prefer-switch.md) | Prefer `switch` over multiple `else-if`. | ✅ ☑️ | 🔧 | |
219
- | [prefer-ternary](docs/rules/prefer-ternary.md) | Prefer ternary expressions over simple `if-else` statements. | ✅ ☑️ | 🔧 | |
220
- | [prefer-top-level-await](docs/rules/prefer-top-level-await.md) | Prefer top-level await over top-level promises and async function calls. | ✅ ☑️ | | 💡 |
221
- | [prefer-type-error](docs/rules/prefer-type-error.md) | Enforce throwing `TypeError` in type checking conditions. | ✅ ☑️ | 🔧 | |
222
- | [prevent-abbreviations](docs/rules/prevent-abbreviations.md) | Prevent abbreviations. | ✅ | 🔧 | 💡 |
223
- | [relative-url-style](docs/rules/relative-url-style.md) | Enforce consistent relative URL style. | ✅ ☑️ | 🔧 | 💡 |
224
- | [require-array-join-separator](docs/rules/require-array-join-separator.md) | Enforce using the separator argument with `Array#join()`. | ✅ ☑️ | 🔧 | |
225
- | [require-css-escape](docs/rules/require-css-escape.md) | Require `CSS.escape()` for interpolated values in CSS selectors. | ✅ ☑️ | 🔧 | |
226
- | [require-module-attributes](docs/rules/require-module-attributes.md) | Require non-empty module attributes for imports and exports | ✅ ☑️ | 🔧 | |
227
- | [require-module-specifiers](docs/rules/require-module-specifiers.md) | Require non-empty specifier list in import and export statements. | ✅ ☑️ | 🔧 | 💡 |
228
- | [require-number-to-fixed-digits-argument](docs/rules/require-number-to-fixed-digits-argument.md) | Enforce using the digits argument with `Number#toFixed()`. | ☑️ | 🔧 | |
229
- | [require-passive-events](docs/rules/require-passive-events.md) | Require passive event listeners for high-frequency events. | ✅ ☑️ | 🔧 | |
230
- | [require-post-message-target-origin](docs/rules/require-post-message-target-origin.md) | Enforce using the `targetOrigin` argument with `window.postMessage()`. | | | 💡 |
231
- | [string-content](docs/rules/string-content.md) | Enforce better string content. | | 🔧 | 💡 |
232
- | [switch-case-braces](docs/rules/switch-case-braces.md) | Enforce consistent brace style for `case` clauses. | | 🔧 | |
233
- | [switch-case-break-position](docs/rules/switch-case-break-position.md) | Enforce consistent `break`/`return`/`continue`/`throw` position in `case` clauses. | ✅ | 🔧 | |
234
- | [template-indent](docs/rules/template-indent.md) | Fix whitespace-insensitive template indentation. | ✅ | 🔧 | |
235
- | [text-encoding-identifier-case](docs/rules/text-encoding-identifier-case.md) | Enforce consistent case for text encoding identifiers. | ✅ ☑️ | 🔧 | 💡 |
236
- | [throw-new-error](docs/rules/throw-new-error.md) | Require `new` when creating an error. | ✅ ☑️ | 🔧 | |
237
- | [try-complexity](docs/rules/try-complexity.md) | Limit the complexity of `try` blocks. | | | |
59
+ 💡 Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).\
60
+ 💭 Requires [type information](https://typescript-eslint.io/linting/typed-linting).
61
+
62
+ | Name                                         | Description | 💼 | 🔧 | 💡 | 💭 |
63
+ | :--------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------- | :--- | :- | :- | :- |
64
+ | [better-dom-traversing](docs/rules/better-dom-traversing.md) | Prefer better DOM traversal APIs. | ☑️ | | 💡 | |
65
+ | [catch-error-name](docs/rules/catch-error-name.md) | Enforce a specific parameter name in catch clauses. | ✅ | 🔧 | | |
66
+ | [class-reference-in-static-methods](docs/rules/class-reference-in-static-methods.md) | Enforce consistent class references in static methods. | ✅ | | 💡 | |
67
+ | [comment-content](docs/rules/comment-content.md) | Enforce better comment content. | | 🔧 | | |
68
+ | [consistent-assert](docs/rules/consistent-assert.md) | Enforce consistent assertion style with `node:assert`. | | 🔧 | | |
69
+ | [consistent-boolean-name](docs/rules/consistent-boolean-name.md) | Enforce consistent naming for boolean names. | ✅ | 🔧 | 💡 | |
70
+ | [consistent-class-member-order](docs/rules/consistent-class-member-order.md) | Enforce consistent class member order. | ✅ | | 💡 | |
71
+ | [consistent-compound-words](docs/rules/consistent-compound-words.md) | Enforce consistent spelling of compound words in identifiers. | ✅ ☑️ | | 💡 | |
72
+ | [consistent-date-clone](docs/rules/consistent-date-clone.md) | Prefer passing `Date` directly to the constructor when cloning. | ✅ ☑️ | 🔧 | | |
73
+ | [consistent-destructuring](docs/rules/consistent-destructuring.md) | Use destructured variables over properties. | | | 💡 | |
74
+ | [consistent-empty-array-spread](docs/rules/consistent-empty-array-spread.md) | Prefer consistent types when spreading a ternary in an array literal. || 🔧 | | |
75
+ | [consistent-existence-index-check](docs/rules/consistent-existence-index-check.md) | Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. | ✅ ☑️ | 🔧 | | |
76
+ | [consistent-export-decorator-position](docs/rules/consistent-export-decorator-position.md) | Enforce consistent decorator position on exported classes. | ✅ ☑️ | 🔧 | | |
77
+ | [consistent-function-scoping](docs/rules/consistent-function-scoping.md) | Move function definitions to the highest possible scope. | ✅ | | | |
78
+ | [consistent-function-style](docs/rules/consistent-function-style.md) | Enforce function syntax by role. | | | 💡 | |
79
+ | [consistent-json-file-read](docs/rules/consistent-json-file-read.md) | Enforce consistent JSON file reads before `JSON.parse()`. | ✅ | 🔧 | | |
80
+ | [consistent-optional-chaining](docs/rules/consistent-optional-chaining.md) | Enforce consistent optional chaining for same-base member access. | ✅ ☑️ | | 💡 | |
81
+ | [consistent-template-literal-escape](docs/rules/consistent-template-literal-escape.md) | Enforce consistent style for escaping `${` in template literals. | ✅ | 🔧 | | |
82
+ | [custom-error-definition](docs/rules/custom-error-definition.md) | Enforce correct `Error` subclassing. | | 🔧 | | |
83
+ | [dom-node-dataset](docs/rules/dom-node-dataset.md) | Enforce consistent style for DOM element dataset access. | ☑️ | 🔧 | | |
84
+ | [empty-brace-spaces](docs/rules/empty-brace-spaces.md) | Enforce no spaces between braces. | ✅ | 🔧 | | |
85
+ | [error-message](docs/rules/error-message.md) | Enforce passing a `message` value when creating a built-in error. | ✅ ☑️ | | | |
86
+ | [escape-case](docs/rules/escape-case.md) | Require escape sequences to use uppercase or lowercase values. | ✅ ☑️ | 🔧 | | |
87
+ | [expiring-todo-comments](docs/rules/expiring-todo-comments.md) | Add expiration conditions to TODO comments. | ✅ ☑️ | | | |
88
+ | [explicit-length-check](docs/rules/explicit-length-check.md) | Enforce explicitly comparing the `length` or `size` property of a value. | ✅ | 🔧 | 💡 | |
89
+ | [explicit-timer-delay](docs/rules/explicit-timer-delay.md) | Enforce or disallow explicit `delay` argument for `setTimeout()` and `setInterval()`. | ✅ ☑️ | 🔧 | | |
90
+ | [filename-case](docs/rules/filename-case.md) | Enforce a case style for filenames and directory names. | ✅ | | | |
91
+ | [id-match](docs/rules/id-match.md) | Require identifiers to match a specified regular expression. | | | | |
92
+ | [import-style](docs/rules/import-style.md) | Enforce specific import styles per module. | ✅ ☑️ | | | |
93
+ | [isolated-functions](docs/rules/isolated-functions.md) | Prevent usage of variables from outside the scope of isolated functions. | ✅ | | | |
94
+ | [logical-assignment-operators](docs/rules/logical-assignment-operators.md) | Require or disallow logical assignment operator shorthand | | 🔧 | 💡 | |
95
+ | [max-nested-calls](docs/rules/max-nested-calls.md) | Limit the depth of nested calls. | ✅ | | | |
96
+ | [new-for-builtins](docs/rules/new-for-builtins.md) | Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. | ✅ ☑️ | 🔧 | 💡 | |
97
+ | [no-abusive-eslint-disable](docs/rules/no-abusive-eslint-disable.md) | Enforce specifying rules to disable in `eslint-disable` comments. | ✅ ☑️ | | | |
98
+ | [no-accessor-recursion](docs/rules/no-accessor-recursion.md) | Disallow recursive access to `this` within getters and setters. | ✅ ☑️ | | | |
99
+ | [no-anonymous-default-export](docs/rules/no-anonymous-default-export.md) | Disallow anonymous functions and classes as the default export. | ✅ ☑️ | | 💡 | |
100
+ | [no-array-callback-reference](docs/rules/no-array-callback-reference.md) | Prevent passing a function reference directly to iterator methods. | ✅ | | 💡 | |
101
+ | [no-array-fill-with-reference-type](docs/rules/no-array-fill-with-reference-type.md) | Disallow using reference values as `Array#fill()` values. | ✅ ☑️ | | | |
102
+ | [no-array-from-fill](docs/rules/no-array-from-fill.md) | Disallow `.fill()` after `Array.from({length: …})`. | ✅ ☑️ | | | |
103
+ | [no-array-method-this-argument](docs/rules/no-array-method-this-argument.md) | Disallow using the `this` argument in array methods. | ✅ ☑️ | 🔧 | 💡 | |
104
+ | [no-array-reduce](docs/rules/no-array-reduce.md) | Disallow `Array#reduce()` and `Array#reduceRight()`. | ✅ | 🔧 | 💡 | |
105
+ | [no-array-reverse](docs/rules/no-array-reverse.md) | Prefer `Array#toReversed()` over `Array#reverse()`. | ✅ ☑️ | | 💡 | |
106
+ | [no-array-sort](docs/rules/no-array-sort.md) | Prefer `Array#toSorted()` over `Array#sort()`. | ✅ ☑️ | | 💡 | |
107
+ | [no-array-splice](docs/rules/no-array-splice.md) | Prefer `Array#toSpliced()` over `Array#splice()`. | ✅ | | 💡 | |
108
+ | [no-asterisk-prefix-in-documentation-comments](docs/rules/no-asterisk-prefix-in-documentation-comments.md) | Disallow asterisk prefixes in documentation comments. | | 🔧 | | |
109
+ | [no-await-expression-member](docs/rules/no-await-expression-member.md) | Disallow member access from await expression. | ✅ | 🔧 | | |
110
+ | [no-await-in-promise-methods](docs/rules/no-await-in-promise-methods.md) | Disallow using `await` in `Promise` method parameters. | ✅ ☑️ | | 💡 | |
111
+ | [no-blob-to-file](docs/rules/no-blob-to-file.md) | Disallow unnecessary `Blob` to `File` conversion. | ✅ ☑️ | | 💡 | |
112
+ | [no-break-in-nested-loop](docs/rules/no-break-in-nested-loop.md) | Disallow `break` and `continue` in nested loops and switches inside loops. | | | | |
113
+ | [no-canvas-to-image](docs/rules/no-canvas-to-image.md) | Prefer drawing canvases directly instead of converting them to images. | ✅ ☑️ | | | |
114
+ | [no-computed-property-existence-check](docs/rules/no-computed-property-existence-check.md) | Disallow dynamic object property existence checks. | | | 💡 | |
115
+ | [no-confusing-array-splice](docs/rules/no-confusing-array-splice.md) | Disallow confusing uses of `Array#{splice,toSpliced}()`. | ✅ | | 💡 | |
116
+ | [no-confusing-array-with](docs/rules/no-confusing-array-with.md) | Disallow confusing uses of `Array#with()`. | ✅ | | | |
117
+ | [no-console-spaces](docs/rules/no-console-spaces.md) | Do not use leading/trailing space between `console.log` parameters. | ✅ ☑️ | 🔧 | | |
118
+ | [no-declarations-before-early-exit](docs/rules/no-declarations-before-early-exit.md) | Disallow declarations before conditional early exits when they are only used after the exit. | ✅ ☑️ | 🔧 | | |
119
+ | [no-document-cookie](docs/rules/no-document-cookie.md) | Do not use `document.cookie` directly. | ✅ ☑️ | | | |
120
+ | [no-duplicate-loops](docs/rules/no-duplicate-loops.md) | Disallow `.map()` and `.filter()` in `for…of` and `for await…of` loop headers. | | | | |
121
+ | [no-duplicate-set-values](docs/rules/no-duplicate-set-values.md) | Disallow duplicate values in `Set` constructor array literals. | ✅ | | | |
122
+ | [no-empty-file](docs/rules/no-empty-file.md) | Disallow empty files. | ✅ ☑️ | | | |
123
+ | [no-error-property-assignment](docs/rules/no-error-property-assignment.md) | Disallow assigning to built-in error properties. | ✅ ☑️ | | | |
124
+ | [no-exports-in-scripts](docs/rules/no-exports-in-scripts.md) | Disallow exports in scripts. | ✅ ☑️ | | | |
125
+ | [no-for-each](docs/rules/no-for-each.md) | Prefer `for…of` over the `forEach` method. | ✅ ☑️ | 🔧 | 💡 | |
126
+ | [no-for-loop](docs/rules/no-for-loop.md) | Do not use a `for` loop that can be replaced with a `for-of` loop. | ✅ | 🔧 | | |
127
+ | [no-global-object-property-assignment](docs/rules/no-global-object-property-assignment.md) | Disallow assigning properties on the global object. | ✅ ☑️ | | | |
128
+ | [no-immediate-mutation](docs/rules/no-immediate-mutation.md) | Disallow immediate mutation after variable assignment. | ✅ | 🔧 | 💡 | |
129
+ | [no-incorrect-query-selector](docs/rules/no-incorrect-query-selector.md) | Disallow incorrect `querySelector()` and `querySelectorAll()` usage. | ✅ | 🔧 | | |
130
+ | [no-incorrect-template-string-interpolation](docs/rules/no-incorrect-template-string-interpolation.md) | Disallow incorrect template literal interpolation syntax. | ✅ ☑️ | | 💡 | |
131
+ | [no-instanceof-builtins](docs/rules/no-instanceof-builtins.md) | Disallow `instanceof` with built-in objects | ✅ ☑️ | 🔧 | 💡 | |
132
+ | [no-invalid-argument-count](docs/rules/no-invalid-argument-count.md) | Disallow calling functions and constructors with an invalid number of arguments. | ✅ ☑️ | | | |
133
+ | [no-invalid-fetch-options](docs/rules/no-invalid-fetch-options.md) | Disallow invalid options in `fetch()` and `new Request()`. | ✅ ☑️ | | | |
134
+ | [no-invalid-file-input-accept](docs/rules/no-invalid-file-input-accept.md) | Disallow invalid `accept` values on file inputs. | | 🔧 | | |
135
+ | [no-invalid-remove-event-listener](docs/rules/no-invalid-remove-event-listener.md) | Prevent calling `EventTarget#removeEventListener()` with the result of an expression. | ✅ ☑️ | | | |
136
+ | [no-keyword-prefix](docs/rules/no-keyword-prefix.md) | Disallow identifiers starting with `new` or `class`. | | | | |
137
+ | [no-late-current-target-access](docs/rules/no-late-current-target-access.md) | Disallow accessing `event.currentTarget` after the synchronous event dispatch has finished. | | | | |
138
+ | [no-lonely-if](docs/rules/no-lonely-if.md) | Disallow `if` statements as the only statement in `if` blocks without `else`. | ✅ ☑️ | 🔧 | | |
139
+ | [no-magic-array-flat-depth](docs/rules/no-magic-array-flat-depth.md) | Disallow a magic number as the `depth` argument in `Array#flat().` | ✅ ☑️ | | | |
140
+ | [no-manually-wrapped-comments](docs/rules/no-manually-wrapped-comments.md) | Disallow manually wrapped comments. | | 🔧 | | |
141
+ | [no-mismatched-map-key](docs/rules/no-mismatched-map-key.md) | Disallow checking a Map key before accessing a different key. | ✅ | | | |
142
+ | [no-named-default](docs/rules/no-named-default.md) | Disallow named usage of default import and export. | ✅ ☑️ | 🔧 | | |
143
+ | [no-negated-array-predicate](docs/rules/no-negated-array-predicate.md) | Disallow negated array predicate calls. | ✅ ☑️ | 🔧 | | |
144
+ | [no-negated-comparison](docs/rules/no-negated-comparison.md) | Disallow negated comparisons. | ✅ ☑️ | 🔧 | 💡 | |
145
+ | [no-negated-condition](docs/rules/no-negated-condition.md) | Disallow negated conditions. | ✅ ☑️ | 🔧 | | |
146
+ | [no-negation-in-equality-check](docs/rules/no-negation-in-equality-check.md) | Disallow negated expression in equality check. | ✅ ☑️ | | 💡 | |
147
+ | [no-nested-ternary](docs/rules/no-nested-ternary.md) | Disallow nested ternary expressions. | ✅ | 🔧 | | |
148
+ | [no-new-array](docs/rules/no-new-array.md) | Disallow `new Array()`. | ✅ ☑️ | 🔧 | 💡 | |
149
+ | [no-new-buffer](docs/rules/no-new-buffer.md) | Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. | ✅ ☑️ | 🔧 | 💡 | |
150
+ | [no-non-function-verb-prefix](docs/rules/no-non-function-verb-prefix.md) | Disallow non-function values with function-style verb prefixes. | ✅ | | | 💭 |
151
+ | [no-null](docs/rules/no-null.md) | Disallow the use of the `null` literal. | ✅ | 🔧 | 💡 | |
152
+ | [no-object-as-default-parameter](docs/rules/no-object-as-default-parameter.md) | Disallow the use of objects as default parameters. | ✅ ☑️ | | | |
153
+ | [no-object-methods-with-collections](docs/rules/no-object-methods-with-collections.md) | Disallow `Object` methods with `Map` or `Set`. | ✅ | | 💡 | |
154
+ | [no-optional-chaining-on-undeclared-variable](docs/rules/no-optional-chaining-on-undeclared-variable.md) | Disallow optional chaining on undeclared variables. | ✅ | | | |
155
+ | [no-process-exit](docs/rules/no-process-exit.md) | Disallow `process.exit()`. | ✅ ☑️ | | | |
156
+ | [no-redundant-comparison](docs/rules/no-redundant-comparison.md) | Disallow comparisons made redundant by an equality check in the same logical AND. | ✅ ☑️ | 🔧 | 💡 | |
157
+ | [no-return-array-push](docs/rules/no-return-array-push.md) | Disallow using the return value of `Array#push()` and `Array#unshift()`. | ✅ | | 💡 | |
158
+ | [no-single-promise-in-promise-methods](docs/rules/no-single-promise-in-promise-methods.md) | Disallow passing single-element arrays to `Promise` methods. | ✅ ☑️ | 🔧 | 💡 | |
159
+ | [no-static-only-class](docs/rules/no-static-only-class.md) | Disallow classes that only have static members. | ✅ ☑️ | 🔧 | | |
160
+ | [no-subtraction-comparison](docs/rules/no-subtraction-comparison.md) | Prefer comparing values directly over subtracting and comparing to `0`. | ✅ ☑️ | 🔧 | 💡 | |
161
+ | [no-thenable](docs/rules/no-thenable.md) | Disallow `then` property. | ✅ ☑️ | | | |
162
+ | [no-this-assignment](docs/rules/no-this-assignment.md) | Disallow assigning `this` to a variable. | ✅ ☑️ | | | |
163
+ | [no-this-outside-of-class](docs/rules/no-this-outside-of-class.md) | Disallow `this` outside of classes. | ✅ | | | |
164
+ | [no-top-level-assignment-in-function](docs/rules/no-top-level-assignment-in-function.md) | Disallow assigning to top-level variables from inside functions. | ✅ | | | |
165
+ | [no-top-level-side-effects](docs/rules/no-top-level-side-effects.md) | Disallow top-level side effects in exported modules. | ✅ ☑️ | | | |
166
+ | [no-typeof-undefined](docs/rules/no-typeof-undefined.md) | Disallow comparing `undefined` using `typeof`. | ✅ ☑️ | 🔧 | 💡 | |
167
+ | [no-uncalled-method](docs/rules/no-uncalled-method.md) | Disallow referencing methods without calling them. | ✅ | | | |
168
+ | [no-undeclared-class-members](docs/rules/no-undeclared-class-members.md) | Require class members to be declared. | ✅ | | 💡 | |
169
+ | [no-unnecessary-array-flat-depth](docs/rules/no-unnecessary-array-flat-depth.md) | Disallow using `1` as the `depth` argument of `Array#flat()`. | ✅ ☑️ | 🔧 | | |
170
+ | [no-unnecessary-array-splice-count](docs/rules/no-unnecessary-array-splice-count.md) | Disallow using `.length` or `Infinity` as the `deleteCount` or `skipCount` argument of `Array#{splice,toSpliced}()`. | ✅ ☑️ | 🔧 | | |
171
+ | [no-unnecessary-await](docs/rules/no-unnecessary-await.md) | Disallow awaiting non-promise values. | ✅ ☑️ | 🔧 | | |
172
+ | [no-unnecessary-global-this](docs/rules/no-unnecessary-global-this.md) | Disallow unnecessary `globalThis` references. | ✅ ☑️ | 🔧 | | |
173
+ | [no-unnecessary-nested-ternary](docs/rules/no-unnecessary-nested-ternary.md) | Disallow unnecessary nested ternary expressions. | ✅ ☑️ | 🔧 | | |
174
+ | [no-unnecessary-polyfills](docs/rules/no-unnecessary-polyfills.md) | Enforce the use of built-in methods instead of unnecessary polyfills. | ✅ ☑️ | | | |
175
+ | [no-unnecessary-slice-end](docs/rules/no-unnecessary-slice-end.md) | Disallow using `.length` or `Infinity` as the `end` argument of `{Array,String,TypedArray}#slice()`. | ✅ ☑️ | 🔧 | | |
176
+ | [no-unnecessary-splice](docs/rules/no-unnecessary-splice.md) | Disallow `Array#splice()` when simpler alternatives exist. | ✅ | 🔧 | | |
177
+ | [no-unreadable-array-destructuring](docs/rules/no-unreadable-array-destructuring.md) | Disallow unreadable array destructuring. | ✅ ☑️ | 🔧 | | |
178
+ | [no-unreadable-for-of-expression](docs/rules/no-unreadable-for-of-expression.md) | Disallow unreadable iterable expressions in `for…of` and `for await…of` loop headers. | ✅ | | | |
179
+ | [no-unreadable-iife](docs/rules/no-unreadable-iife.md) | Disallow unreadable IIFEs. | ☑️ | | 💡 | |
180
+ | [no-unreadable-new-expression](docs/rules/no-unreadable-new-expression.md) | Disallow unreadable `new` expressions. | | | | |
181
+ | [no-unreadable-object-destructuring](docs/rules/no-unreadable-object-destructuring.md) | Disallow unreadable object destructuring. | ✅ ☑️ | | | |
182
+ | [no-unsafe-buffer-conversion](docs/rules/no-unsafe-buffer-conversion.md) | Prevent unsafe use of ArrayBuffer view `.buffer`. | ☑️ | | 💡 | |
183
+ | [no-unsafe-dom-html](docs/rules/no-unsafe-dom-html.md) | Disallow unsafe DOM HTML APIs. | | | | |
184
+ | [no-unsafe-property-key](docs/rules/no-unsafe-property-key.md) | Disallow unsafe values as property keys. | ✅ | | | |
185
+ | [no-unsafe-string-replacement](docs/rules/no-unsafe-string-replacement.md) | Disallow non-literal replacement values in `String#replace()` and `String#replaceAll()`. | ✅ | | | |
186
+ | [no-unused-array-method-return](docs/rules/no-unused-array-method-return.md) | Disallow ignoring the return value of selected array methods. | ✅ ☑️ | | | |
187
+ | [no-unused-properties](docs/rules/no-unused-properties.md) | Disallow unused object properties. | | | | |
188
+ | [no-useless-boolean-cast](docs/rules/no-useless-boolean-cast.md) | Disallow unnecessary `Boolean()` casts in array predicate callbacks. | ✅ ☑️ | 🔧 | | |
189
+ | [no-useless-coercion](docs/rules/no-useless-coercion.md) | Disallow useless type coercions of values that are already of the target type. | ✅ ☑️ | 🔧 | | |
190
+ | [no-useless-collection-argument](docs/rules/no-useless-collection-argument.md) | Disallow useless values or fallbacks in `Set`, `Map`, `WeakSet`, or `WeakMap`. | ✅ ☑️ | 🔧 | 💡 | |
191
+ | [no-useless-concat](docs/rules/no-useless-concat.md) | Disallow useless concatenation of literals. | ✅ ☑️ | 🔧 | | |
192
+ | [no-useless-continue](docs/rules/no-useless-continue.md) | Disallow useless `continue` statements. | ✅ ☑️ | 🔧 | | |
193
+ | [no-useless-else](docs/rules/no-useless-else.md) | Disallow `else` after a statement that exits. | ✅ | 🔧 | | |
194
+ | [no-useless-error-capture-stack-trace](docs/rules/no-useless-error-capture-stack-trace.md) | Disallow unnecessary `Error.captureStackTrace(…)`. | ✅ ☑️ | 🔧 | | |
195
+ | [no-useless-fallback-in-spread](docs/rules/no-useless-fallback-in-spread.md) | Disallow useless fallback when spreading in object literals. | ✅ ☑️ | 🔧 | | |
196
+ | [no-useless-iterator-to-array](docs/rules/no-useless-iterator-to-array.md) | Disallow unnecessary `.toArray()` on iterators. | ✅ ☑️ | 🔧 | 💡 | |
197
+ | [no-useless-length-check](docs/rules/no-useless-length-check.md) | Disallow useless array length check. | ✅ ☑️ | 🔧 | | |
198
+ | [no-useless-override](docs/rules/no-useless-override.md) | Disallow useless overrides of class methods. | ✅ ☑️ | 🔧 | | |
199
+ | [no-useless-promise-resolve-reject](docs/rules/no-useless-promise-resolve-reject.md) | Disallow returning/yielding `Promise.resolve/reject()` in async functions or promise callbacks | ✅ ☑️ | 🔧 | | |
200
+ | [no-useless-recursion](docs/rules/no-useless-recursion.md) | Disallow simple recursive function calls that can be replaced with a loop. | | | | |
201
+ | [no-useless-spread](docs/rules/no-useless-spread.md) | Disallow unnecessary spread. | ✅ ☑️ | 🔧 | 💡 | |
202
+ | [no-useless-switch-case](docs/rules/no-useless-switch-case.md) | Disallow useless case in switch statements. | ✅ ☑️ | | 💡 | |
203
+ | [no-useless-template-literals](docs/rules/no-useless-template-literals.md) | Disallow useless template literal expressions. | ✅ ☑️ | 🔧 | 💡 | |
204
+ | [no-useless-undefined](docs/rules/no-useless-undefined.md) | Disallow useless `undefined`. | ✅ ☑️ | 🔧 | 💡 | |
205
+ | [no-zero-fractions](docs/rules/no-zero-fractions.md) | Disallow number literals with zero fractions or dangling dots. | ✅ ☑️ | 🔧 | | |
206
+ | [number-literal-case](docs/rules/number-literal-case.md) | Enforce proper case for numeric literals. | ✅ ☑️ | 🔧 | | |
207
+ | [numeric-separators-style](docs/rules/numeric-separators-style.md) | Enforce the style of numeric separators by correctly grouping digits. | ✅ ☑️ | 🔧 | | |
208
+ | [operator-assignment](docs/rules/operator-assignment.md) | Require assignment operator shorthand where possible. | ✅ | 🔧 | 💡 | |
209
+ | [prefer-add-event-listener](docs/rules/prefer-add-event-listener.md) | Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. | ✅ ☑️ | 🔧 | | |
210
+ | [prefer-add-event-listener-options](docs/rules/prefer-add-event-listener-options.md) | Prefer an options object over a boolean in `.addEventListener()`. | ✅ ☑️ | 🔧 | | |
211
+ | [prefer-array-find](docs/rules/prefer-array-find.md) | Prefer `.find()` and `.findLast()` over the first or last element from `.filter(…)`. | ✅ ☑️ | 🔧 | 💡 | |
212
+ | [prefer-array-flat](docs/rules/prefer-array-flat.md) | Prefer `Array#flat()` over legacy techniques to flatten arrays. | ✅ ☑️ | 🔧 | | |
213
+ | [prefer-array-flat-map](docs/rules/prefer-array-flat-map.md) | Prefer `.flatMap(…)` over `.map().flat()` and `.filter(…).flatMap(…)`. | ✅ ☑️ | 🔧 | 💡 | |
214
+ | [prefer-array-from-map](docs/rules/prefer-array-from-map.md) | Prefer using the `Array.from()` mapping function argument. | ✅ ☑️ | 🔧 | 💡 | |
215
+ | [prefer-array-index-of](docs/rules/prefer-array-index-of.md) | Prefer `Array#{indexOf,lastIndexOf}()` over `Array#{findIndex,findLastIndex}()` when looking for the index of an item. | ✅ ☑️ | 🔧 | 💡 | |
216
+ | [prefer-array-last-methods](docs/rules/prefer-array-last-methods.md) | Prefer last-oriented array methods over `Array#reverse()` or `Array#toReversed()` followed by a method. | ✅ ☑️ | | 💡 | |
217
+ | [prefer-array-slice](docs/rules/prefer-array-slice.md) | Prefer `Array#slice()` over `Array#splice()` when reading from the returned array. | ✅ | | 💡 | |
218
+ | [prefer-array-some](docs/rules/prefer-array-some.md) | Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. | ✅ ☑️ | 🔧 | 💡 | |
219
+ | [prefer-at](docs/rules/prefer-at.md) | Prefer `.at()` method for index access and `String#charAt()`. | ✅ ☑️ | 🔧 | 💡 | |
220
+ | [prefer-await](docs/rules/prefer-await.md) | Prefer `await` over promise chaining. | ✅ ☑️ | | | |
221
+ | [prefer-bigint-literals](docs/rules/prefer-bigint-literals.md) | Prefer `BigInt` literals over the constructor. | ✅ ☑️ | 🔧 | 💡 | |
222
+ | [prefer-blob-reading-methods](docs/rules/prefer-blob-reading-methods.md) | Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. | ✅ ☑️ | | | |
223
+ | [prefer-class-fields](docs/rules/prefer-class-fields.md) | Prefer class field declarations over `this` assignments in constructors. | ✅ ☑️ | 🔧 | 💡 | |
224
+ | [prefer-classlist-toggle](docs/rules/prefer-classlist-toggle.md) | Prefer using `Element#classList.toggle()` to toggle class names. | ✅ ☑️ | 🔧 | 💡 | |
225
+ | [prefer-code-point](docs/rules/prefer-code-point.md) | Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode()`. | ✅ ☑️ | | 💡 | |
226
+ | [prefer-date-now](docs/rules/prefer-date-now.md) | Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. | ✅ ☑️ | 🔧 | | |
227
+ | [prefer-default-parameters](docs/rules/prefer-default-parameters.md) | Prefer default parameters over reassignment. | ✅ ☑️ | | 💡 | |
228
+ | [prefer-direct-iteration](docs/rules/prefer-direct-iteration.md) | Prefer direct iteration over default iterator method calls. | ✅ ☑️ | 🔧 | | |
229
+ | [prefer-dispose](docs/rules/prefer-dispose.md) | Prefer using `using`/`await using` over manual `try`/`finally` resource disposal. | | | 💡 | |
230
+ | [prefer-dom-node-append](docs/rules/prefer-dom-node-append.md) | Prefer `Element#append()` over `Node#appendChild()`. | ✅ ☑️ | 🔧 | | |
231
+ | [prefer-dom-node-html-methods](docs/rules/prefer-dom-node-html-methods.md) | Prefer `.getHTML()` and `.setHTML()` over `.innerHTML`. | | 🔧 | 💡 | |
232
+ | [prefer-dom-node-remove](docs/rules/prefer-dom-node-remove.md) | Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. | ✅ ☑️ | 🔧 | 💡 | |
233
+ | [prefer-dom-node-text-content](docs/rules/prefer-dom-node-text-content.md) | Prefer `.textContent` over `.innerText`. | ☑️ | | 💡 | |
234
+ | [prefer-early-return](docs/rules/prefer-early-return.md) | Prefer early returns over full-function conditional wrapping. | ✅ ☑️ | 🔧 | 💡 | |
235
+ | [prefer-else-if](docs/rules/prefer-else-if.md) | Prefer `else if` over adjacent `if` statements with related conditions. | ✅ | 🔧 | 💡 | |
236
+ | [prefer-event-target](docs/rules/prefer-event-target.md) | Prefer `EventTarget` over `EventEmitter`. | ✅ ☑️ | | | |
237
+ | [prefer-export-from](docs/rules/prefer-export-from.md) | Prefer `export…from` when re-exporting. | ✅ | 🔧 | 💡 | |
238
+ | [prefer-get-or-insert-computed](docs/rules/prefer-get-or-insert-computed.md) | Prefer `.getOrInsertComputed()` when the default value has side effects. || 🔧 | | |
239
+ | [prefer-global-number-constants](docs/rules/prefer-global-number-constants.md) | Prefer global numeric constants over `Number` static properties. | ✅ ☑️ | 🔧 | | |
240
+ | [prefer-global-this](docs/rules/prefer-global-this.md) | Prefer `globalThis` over `window`, `self`, and `global`. | ✅ ☑️ | 🔧 | | |
241
+ | [prefer-has-check](docs/rules/prefer-has-check.md) | Prefer `.has()` when checking existence. | ✅ ☑️ | 🔧 | | |
242
+ | [prefer-https](docs/rules/prefer-https.md) | Prefer HTTPS over HTTP. | ✅ | 🔧 | | |
243
+ | [prefer-identifier-import-export-specifiers](docs/rules/prefer-identifier-import-export-specifiers.md) | Prefer identifiers over string literals in import and export specifiers. | ✅ ☑️ | 🔧 | | |
244
+ | [prefer-import-meta-properties](docs/rules/prefer-import-meta-properties.md) | Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths. | | 🔧 | | |
245
+ | [prefer-includes](docs/rules/prefer-includes.md) | Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. | ✅ ☑️ | 🔧 | 💡 | |
246
+ | [prefer-includes-over-repeated-comparisons](docs/rules/prefer-includes-over-repeated-comparisons.md) | Prefer `.includes()` over repeated equality comparisons. | ✅ | | | |
247
+ | [prefer-iterable-in-constructor](docs/rules/prefer-iterable-in-constructor.md) | Prefer passing iterables directly to constructors instead of filling empty collections. | ✅ ☑️ | 🔧 | | |
248
+ | [prefer-iterator-concat](docs/rules/prefer-iterator-concat.md) | Prefer `Iterator.concat(…)` over temporary spread arrays. | | 🔧 | 💡 | |
249
+ | [prefer-iterator-to-array](docs/rules/prefer-iterator-to-array.md) | Prefer `Iterator#toArray()` over temporary arrays from iterator spreads. | ✅ | 🔧 | 💡 | |
250
+ | [prefer-iterator-to-array-at-end](docs/rules/prefer-iterator-to-array-at-end.md) | Prefer moving `.toArray()` to the end of iterator helper chains. | ✅ ☑️ | | 💡 | |
251
+ | [prefer-keyboard-event-key](docs/rules/prefer-keyboard-event-key.md) | Prefer `KeyboardEvent#key` over deprecated keyboard event properties. | ✅ ☑️ | 🔧 | 💡 | |
252
+ | [prefer-location-assign](docs/rules/prefer-location-assign.md) | Prefer `location.assign()` over assigning to `location.href`. | ✅ | 🔧 | | |
253
+ | [prefer-logical-operator-over-ternary](docs/rules/prefer-logical-operator-over-ternary.md) | Prefer using a logical operator over a ternary. | ✅ ☑️ | | 💡 | |
254
+ | [prefer-map-from-entries](docs/rules/prefer-map-from-entries.md) | Prefer `new Map()` over `Object.fromEntries()` when using the result as a map. | ✅ ☑️ | 🔧 | | |
255
+ | [prefer-math-abs](docs/rules/prefer-math-abs.md) | Prefer `Math.abs()` over manual absolute value expressions and symmetric range checks. | ✅ ☑️ | 🔧 | | |
256
+ | [prefer-math-min-max](docs/rules/prefer-math-min-max.md) | Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. | ✅ ☑️ | 🔧 | | |
257
+ | [prefer-math-trunc](docs/rules/prefer-math-trunc.md) | Prefer `Math.trunc()` for truncating numbers. | ✅ ☑️ | 🔧 | 💡 | |
258
+ | [prefer-minimal-ternary](docs/rules/prefer-minimal-ternary.md) | Prefer moving ternaries into the minimal varying part of an expression. | ✅ ☑️ | | | |
259
+ | [prefer-modern-dom-apis](docs/rules/prefer-modern-dom-apis.md) | Prefer modern DOM APIs. | ✅ ☑️ | 🔧 | | |
260
+ | [prefer-modern-math-apis](docs/rules/prefer-modern-math-apis.md) | Prefer modern `Math` APIs over legacy patterns. | ✅ ☑️ | 🔧 | | |
261
+ | [prefer-module](docs/rules/prefer-module.md) | Prefer JavaScript modules (ESM) over CommonJS. | ✅ ☑️ | 🔧 | 💡 | |
262
+ | [prefer-native-coercion-functions](docs/rules/prefer-native-coercion-functions.md) | Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. | ✅ ☑️ | 🔧 | | |
263
+ | [prefer-negative-index](docs/rules/prefer-negative-index.md) | Prefer negative index over `.length - index` when possible. | ✅ ☑️ | 🔧 | | |
264
+ | [prefer-node-protocol](docs/rules/prefer-node-protocol.md) | Prefer using the `node:` protocol when importing Node.js builtin modules. | ✅ ☑️ | 🔧 | | |
265
+ | [prefer-number-coercion](docs/rules/prefer-number-coercion.md) | Prefer `Number()` over `parseFloat()` and base-10 `parseInt()`. | ✅ ☑️ | | 💡 | |
266
+ | [prefer-number-is-safe-integer](docs/rules/prefer-number-is-safe-integer.md) | Prefer `Number.isSafeInteger()` over integer checks. | ✅ | | 💡 | |
267
+ | [prefer-number-properties](docs/rules/prefer-number-properties.md) | Prefer `Number` static methods over global functions and optionally static properties over global constants. | ✅ ☑️ | 🔧 | 💡 | |
268
+ | [prefer-object-define-properties](docs/rules/prefer-object-define-properties.md) | Prefer `Object.defineProperties()` over multiple `Object.defineProperty()` calls. | ✅ ☑️ | 🔧 | | |
269
+ | [prefer-object-destructuring-defaults](docs/rules/prefer-object-destructuring-defaults.md) | Prefer object destructuring defaults over default object literals with spread. | ✅ | | 💡 | |
270
+ | [prefer-object-from-entries](docs/rules/prefer-object-from-entries.md) | Prefer using `Object.fromEntries(…)` to transform a list of key-value pairs into an object. | ✅ ☑️ | 🔧 | | |
271
+ | [prefer-object-iterable-methods](docs/rules/prefer-object-iterable-methods.md) | Prefer the most specific `Object` iterable method. | ✅ ☑️ | 🔧 | | |
272
+ | [prefer-optional-catch-binding](docs/rules/prefer-optional-catch-binding.md) | Prefer omitting the `catch` binding parameter. | ✅ ☑️ | 🔧 | | |
273
+ | [prefer-path2d](docs/rules/prefer-path2d.md) | Prefer `Path2D` for repeatedly drawn canvas paths. | ✅ ☑️ | | | |
274
+ | [prefer-private-class-fields](docs/rules/prefer-private-class-fields.md) | Prefer private class fields over the underscore-prefix convention. | ✅ | 🔧 | | |
275
+ | [prefer-prototype-methods](docs/rules/prefer-prototype-methods.md) | Prefer borrowing methods from the prototype instead of the instance. | ✅ ☑️ | 🔧 | | |
276
+ | [prefer-query-selector](docs/rules/prefer-query-selector.md) | Prefer `.querySelector()` and `.querySelectorAll()` over older DOM query methods. | ✅ | 🔧 | | |
277
+ | [prefer-queue-microtask](docs/rules/prefer-queue-microtask.md) | Prefer `queueMicrotask()` over `process.nextTick()`, `setImmediate()`, and `setTimeout(…, 0)`. | ✅ ☑️ | 🔧 | | |
278
+ | [prefer-reflect-apply](docs/rules/prefer-reflect-apply.md) | Prefer `Reflect.apply()` over `Function#apply()`. | ✅ ☑️ | 🔧 | | |
279
+ | [prefer-regexp-test](docs/rules/prefer-regexp-test.md) | Prefer `RegExp#test()` over `String#match()`, `String#search()`, and `RegExp#exec()`. | ✅ ☑️ | 🔧 | 💡 | |
280
+ | [prefer-response-static-json](docs/rules/prefer-response-static-json.md) | Prefer `Response.json()` over `new Response(JSON.stringify())`. | ✅ ☑️ | 🔧 | | |
281
+ | [prefer-scoped-selector](docs/rules/prefer-scoped-selector.md) | Prefer `:scope` when using element query selector methods. | ✅ | | 💡 | |
282
+ | [prefer-set-has](docs/rules/prefer-set-has.md) | Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. | ✅ ☑️ | 🔧 | 💡 | |
283
+ | [prefer-set-size](docs/rules/prefer-set-size.md) | Prefer using `Set#size` instead of `Array#length`. | ✅ ☑️ | 🔧 | | |
284
+ | [prefer-short-arrow-method](docs/rules/prefer-short-arrow-method.md) | Prefer arrow function properties over methods with a single return. | ✅ | 🔧 | | |
285
+ | [prefer-simple-condition-first](docs/rules/prefer-simple-condition-first.md) | Prefer simple conditions first in logical expressions. | ✅ ☑️ | 🔧 | 💡 | |
286
+ | [prefer-simple-sort-comparator](docs/rules/prefer-simple-sort-comparator.md) | Prefer a simple comparison function for `Array#sort()`. | ✅ ☑️ | | 💡 | |
287
+ | [prefer-single-array-predicate](docs/rules/prefer-single-array-predicate.md) | Prefer a single `Array#some()` or `Array#every()` with a combined predicate. | ✅ ☑️ | | 💡 | |
288
+ | [prefer-single-call](docs/rules/prefer-single-call.md) | Enforce combining multiple `Array#{push,unshift}()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. | ✅ ☑️ | 🔧 | 💡 | |
289
+ | [prefer-single-object-destructuring](docs/rules/prefer-single-object-destructuring.md) | Prefer a single object destructuring declaration per local const source. | ✅ | 🔧 | | |
290
+ | [prefer-smaller-scope](docs/rules/prefer-smaller-scope.md) | Prefer declaring variables in the smallest possible scope. | ✅ | 🔧 | | |
291
+ | [prefer-split-limit](docs/rules/prefer-split-limit.md) | Prefer `String#split()` with a limit. | ✅ ☑️ | 🔧 | | |
292
+ | [prefer-spread](docs/rules/prefer-spread.md) | Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()`, and trivial `for…of` copies. | ✅ | 🔧 | 💡 | |
293
+ | [prefer-string-match-all](docs/rules/prefer-string-match-all.md) | Prefer `String#matchAll()` over `RegExp#exec()` loops. | ✅ ☑️ | 🔧 | | |
294
+ | [prefer-string-pad-start-end](docs/rules/prefer-string-pad-start-end.md) | Prefer `String#padStart()` and `String#padEnd()` over manual string padding. | ✅ ☑️ | 🔧 | 💡 | |
295
+ | [prefer-string-raw](docs/rules/prefer-string-raw.md) | Prefer using the `String.raw` tag to avoid escaping `\`. | ✅ ☑️ | 🔧 | | |
296
+ | [prefer-string-repeat](docs/rules/prefer-string-repeat.md) | Prefer `String#repeat()` for repeated whitespace. | ✅ ☑️ | 🔧 | | |
297
+ | [prefer-string-replace-all](docs/rules/prefer-string-replace-all.md) | Prefer `String#replaceAll()` over regex searches with the global flag and `String#split().join()`. | ✅ ☑️ | 🔧 | | |
298
+ | [prefer-string-slice](docs/rules/prefer-string-slice.md) | Prefer `String#slice()` over `String#substr()` and `String#substring()`. | ✅ ☑️ | 🔧 | | |
299
+ | [prefer-string-starts-ends-with](docs/rules/prefer-string-starts-ends-with.md) | Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()` and `String#indexOf() === 0`. | ✅ ☑️ | 🔧 | 💡 | |
300
+ | [prefer-string-trim-start-end](docs/rules/prefer-string-trim-start-end.md) | Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. | ✅ ☑️ | 🔧 | | |
301
+ | [prefer-structured-clone](docs/rules/prefer-structured-clone.md) | Prefer using `structuredClone` to create a deep clone. | ✅ ☑️ | | 💡 | |
302
+ | [prefer-switch](docs/rules/prefer-switch.md) | Prefer `switch` over multiple `else-if`. | ✅ ☑️ | 🔧 | | |
303
+ | [prefer-temporal](docs/rules/prefer-temporal.md) | Prefer `Temporal` over `Date`. | | 🔧 | 💡 | |
304
+ | [prefer-ternary](docs/rules/prefer-ternary.md) | Prefer ternary expressions over simple `if-else` statements that return or assign values. | ✅ ☑️ | 🔧 | 💡 | |
305
+ | [prefer-top-level-await](docs/rules/prefer-top-level-await.md) | Prefer top-level await over top-level promises and async function calls. | ✅ ☑️ | | 💡 | |
306
+ | [prefer-type-error](docs/rules/prefer-type-error.md) | Enforce throwing `TypeError` in type checking conditions. | ✅ ☑️ | 🔧 | | |
307
+ | [prefer-type-literal-last](docs/rules/prefer-type-literal-last.md) | Require type literals to be last in union and intersection types. | ✅ ☑️ | 🔧 | | |
308
+ | [prefer-uint8array-base64](docs/rules/prefer-uint8array-base64.md) | Prefer `Uint8Array#toBase64()` and `Uint8Array.fromBase64()` over `atob()`, `btoa()`, and `Buffer` base64 conversions. | ✅ ☑️ | | 💡 | |
309
+ | [prefer-unicode-code-point-escapes](docs/rules/prefer-unicode-code-point-escapes.md) | Prefer Unicode code point escapes over legacy escape sequences. | ✅ ☑️ | 🔧 | 💡 | |
310
+ | [prefer-url-href](docs/rules/prefer-url-href.md) | Prefer `URL#href` over stringifying a `URL`. | ✅ ☑️ | 🔧 | | |
311
+ | [prevent-abbreviations](docs/rules/prevent-abbreviations.md) | Prevent abbreviations. | ✅ | 🔧 | 💡 | |
312
+ | [relative-url-style](docs/rules/relative-url-style.md) | Enforce consistent relative URL style. | ✅ ☑️ | 🔧 | 💡 | |
313
+ | [require-array-join-separator](docs/rules/require-array-join-separator.md) | Enforce using the separator argument with `Array#join()`. | ✅ ☑️ | 🔧 | | |
314
+ | [require-array-sort-compare](docs/rules/require-array-sort-compare.md) | Require a compare function when calling `Array#sort()` or `Array#toSorted()`. | ✅ ☑️ | | 💡 | |
315
+ | [require-css-escape](docs/rules/require-css-escape.md) | Require `CSS.escape()` for interpolated values in CSS selectors. | ✅ ☑️ | 🔧 | | |
316
+ | [require-module-attributes](docs/rules/require-module-attributes.md) | Require non-empty module attributes for imports and exports | ✅ ☑️ | 🔧 | | |
317
+ | [require-module-specifiers](docs/rules/require-module-specifiers.md) | Require non-empty specifier list in import and export statements. | ✅ ☑️ | 🔧 | 💡 | |
318
+ | [require-number-to-fixed-digits-argument](docs/rules/require-number-to-fixed-digits-argument.md) | Enforce using the digits argument with `Number#toFixed()`. | ✅ ☑️ | 🔧 | | |
319
+ | [require-passive-events](docs/rules/require-passive-events.md) | Require passive event listeners for high-frequency events. | ✅ ☑️ | 🔧 | | |
320
+ | [require-post-message-target-origin](docs/rules/require-post-message-target-origin.md) | Enforce using the `targetOrigin` argument with `window.postMessage()`. | | | 💡 | |
321
+ | [require-proxy-trap-boolean-return](docs/rules/require-proxy-trap-boolean-return.md) | Require boolean-returning Proxy traps to return booleans. | ✅ ☑️ | 🔧 | | |
322
+ | [string-content](docs/rules/string-content.md) | Enforce better string content. | | 🔧 | 💡 | |
323
+ | [switch-case-braces](docs/rules/switch-case-braces.md) | Enforce consistent brace style for `case` clauses. | ✅ | 🔧 | | |
324
+ | [switch-case-break-position](docs/rules/switch-case-break-position.md) | Enforce consistent `break`/`return`/`continue`/`throw` position in `case` clauses. | ✅ | 🔧 | | |
325
+ | [template-indent](docs/rules/template-indent.md) | Fix whitespace-insensitive template indentation. | ✅ | 🔧 | | |
326
+ | [text-encoding-identifier-case](docs/rules/text-encoding-identifier-case.md) | Enforce consistent case for text encoding identifiers. | ✅ ☑️ | 🔧 | 💡 | |
327
+ | [throw-new-error](docs/rules/throw-new-error.md) | Require `new` when creating an error. | ✅ ☑️ | 🔧 | | |
328
+ | [try-complexity](docs/rules/try-complexity.md) | Limit the complexity of `try` blocks. | | | | |
238
329
 
239
330
  <!-- end auto-generated rules list -->
240
331
 
332
+ ### Non-JavaScript files
333
+
334
+ While most rules target JavaScript and TypeScript, some also lint other file types when used with the corresponding [ESLint language plugin](https://eslint.org/docs/latest/use/configure/plugins#specifying-a-language) such as [`@eslint/css`](https://github.com/eslint/css), [`@eslint/json`](https://github.com/eslint/json), [`@eslint/markdown`](https://github.com/eslint/markdown), or [`@html-eslint/eslint-plugin`](https://github.com/yeonjuan/html-eslint). Each such rule declares this with the `meta.languages` field.
335
+
336
+ <!-- Do not manually modify this list. Run: `npm run fix:non-js-languages` -->
337
+ <!-- begin auto-generated non-js languages list -->
338
+
339
+ These rules work on **any** file type:
340
+
341
+ - [`comment-content`](docs/rules/comment-content.md)
342
+ - [`filename-case`](docs/rules/filename-case.md)
343
+ - [`no-abusive-eslint-disable`](docs/rules/no-abusive-eslint-disable.md)
344
+ - [`prefer-https`](docs/rules/prefer-https.md)
345
+
346
+ These rules also work on specific non-JavaScript languages:
347
+
348
+ | Name | CSS | HTML | JSON | Markdown |
349
+ | :-- | :-: | :-: | :-: | :-: |
350
+ | [`expiring-todo-comments`](docs/rules/expiring-todo-comments.md) | ✅ | ✅ | ✅ | ✅ |
351
+ | [`no-empty-file`](docs/rules/no-empty-file.md) | ✅ | ✅ | ✅ | ✅ |
352
+ | [`no-invalid-file-input-accept`](docs/rules/no-invalid-file-input-accept.md) | | ✅ | | |
353
+ | [`no-manually-wrapped-comments`](docs/rules/no-manually-wrapped-comments.md) | | | ✅ | |
354
+ | [`text-encoding-identifier-case`](docs/rules/text-encoding-identifier-case.md) | ✅ | ✅ | | |
355
+
356
+ <!-- end auto-generated non-js languages list -->
357
+
241
358
  ### Deleted and deprecated rules
242
359
 
243
360
  See [the list](docs/deleted-and-deprecated-rules.md).
@@ -254,45 +371,39 @@ This plugin exports a `recommended` config that enforces good practices.
254
371
 
255
372
  ```js
256
373
  import eslintPluginUnicorn from 'eslint-plugin-unicorn';
374
+ import {defineConfig} from 'eslint/config';
257
375
 
258
- export default [
259
- // …
260
- eslintPluginUnicorn.configs.recommended,
261
- {
262
- rules: {
263
- 'unicorn/prefer-module': 'warn',
264
- },
376
+ export default defineConfig([
377
+ // …
378
+ {
379
+ extends: [eslintPluginUnicorn.configs.recommended],
380
+ rules: {
381
+ 'unicorn/prefer-module': 'warn',
265
382
  },
266
- ];
383
+ },
384
+ ]);
267
385
  ```
268
386
 
269
387
  ### All config
270
388
 
271
- This plugin exports an `all` that makes use of all rules (except for deprecated ones).
389
+ This plugin exports an `all` config that enables every rule, except deprecated ones.
272
390
 
273
391
  ```js
274
392
  import eslintPluginUnicorn from 'eslint-plugin-unicorn';
393
+ import {defineConfig} from 'eslint/config';
275
394
 
276
- export default [
277
- // …
278
- eslintPluginUnicorn.configs.all,
279
- {
280
- rules: {
281
- 'unicorn/prefer-module': 'warn',
282
- },
395
+ export default defineConfig([
396
+ // …
397
+ {
398
+ extends: [eslintPluginUnicorn.configs.all],
399
+ rules: {
400
+ 'unicorn/prefer-module': 'warn',
283
401
  },
284
- ];
402
+ },
403
+ ]);
285
404
  ```
286
405
 
287
406
  ## Maintainers
288
407
 
289
408
  - [Sindre Sorhus](https://github.com/sindresorhus)
290
409
  - [Fisker Cheung](https://github.com/fisker)
291
- - [Bryan Mishkin](https://github.com/bmish)
292
- - [futpib](https://github.com/futpib)
293
-
294
- ### Former
295
-
296
- - [Jeroen Engels](https://github.com/jfmengels)
297
- - [Sam Verschueren](https://github.com/SamVerschueren)
298
- - [Adam Babcock](https://github.com/MrHen)