eslint-plugin-unicorn 69.0.0 → 71.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.
- package/package.json +26 -25
- package/readme.md +15 -1
- package/rules/ast/call-or-new-expression.js +2 -8
- package/rules/ast/is-member-expression.js +2 -8
- package/rules/comment-content.js +4 -4
- package/rules/consistent-boolean-name.js +727 -42
- package/rules/consistent-compound-words.js +1 -2
- package/rules/consistent-json-file-read.js +2 -5
- package/rules/dom-node-dataset.js +3 -7
- package/rules/escape-case.js +4 -4
- package/rules/expiring-todo-comments.js +25 -2
- package/rules/explicit-length-check.js +3 -3
- package/rules/filename-case.js +4 -4
- package/rules/fix/{add-parenthesizes-to-return-or-throw-expression.js → add-parentheses-to-return-or-throw-expression.js} +1 -1
- package/rules/fix/index.js +1 -1
- package/rules/fix/remove-argument.js +34 -8
- package/rules/fix/remove-statement.js +1 -3
- package/rules/fix/switch-new-expression-to-call-expression.js +2 -2
- package/rules/id-match.js +2 -2
- package/rules/index.js +10 -0
- package/rules/isolated-functions.js +203 -19
- package/rules/name-replacements.js +1 -2
- package/rules/no-anonymous-default-export.js +1 -3
- package/rules/no-array-callback-reference.js +2 -10
- package/rules/no-async-promise-finally.js +111 -0
- package/rules/no-chained-comparison.js +1 -1
- package/rules/no-collection-bracket-access.js +27 -4
- package/rules/no-computed-property-existence-check.js +1 -4
- package/rules/no-declarations-before-early-exit.js +6 -5
- package/rules/no-error-property-assignment.js +3 -3
- package/rules/no-for-loop.js +4 -4
- package/rules/no-keyword-prefix.js +2 -2
- package/rules/no-manually-wrapped-comments.js +5 -1
- package/rules/no-mismatched-map-key.js +13 -20
- package/rules/no-named-default.js +2 -5
- package/rules/no-negated-array-predicate.js +6 -13
- package/rules/no-negated-comparison.js +31 -71
- package/rules/no-negated-condition.js +2 -2
- package/rules/no-negation-in-equality-check.js +4 -7
- package/rules/no-non-function-verb-prefix.js +25 -2
- package/rules/no-process-exit.js +6 -6
- package/rules/no-return-array-push.js +9 -2
- package/rules/no-static-only-class.js +2 -8
- package/rules/no-thenable.js +9 -15
- package/rules/no-typeof-undefined.js +2 -2
- package/rules/no-undeclared-class-members.js +1 -5
- package/rules/no-unnecessary-array-flat-map.js +308 -0
- package/rules/no-unnecessary-await.js +2 -2
- package/rules/no-unnecessary-fetch-options.js +624 -0
- package/rules/no-unnecessary-global-this.js +5 -9
- package/rules/no-unsafe-promise-all-settled-values.js +865 -0
- package/rules/no-unused-properties.js +0 -1
- package/rules/no-useless-coercion.js +1 -2
- package/rules/no-useless-else.js +32 -1
- package/rules/no-useless-iterator-to-array.js +42 -16
- package/rules/no-useless-spread.js +2 -2
- package/rules/no-useless-undefined.js +2 -2
- package/rules/prefer-abort-signal-any.js +1391 -0
- package/rules/prefer-array-find.js +2 -5
- package/rules/prefer-array-flat-map.js +6 -11
- package/rules/prefer-array-from-range.js +98 -0
- package/rules/prefer-bigint-literals.js +1 -0
- package/rules/prefer-block-statement-over-iife.js +159 -0
- package/rules/prefer-boolean-return.js +20 -3
- package/rules/prefer-continue.js +6 -2
- package/rules/prefer-default-parameters.js +2 -2
- package/rules/prefer-early-return.js +3 -1
- package/rules/prefer-else-if.js +5 -9
- package/rules/prefer-group-by.js +576 -0
- package/rules/prefer-has-check.js +6 -3
- package/rules/prefer-https.js +3 -3
- package/rules/prefer-identifier-import-export-specifiers.js +1 -3
- package/rules/prefer-iterator-helpers.js +196 -0
- package/rules/prefer-minimal-ternary.js +4 -4
- package/rules/prefer-number-coercion.js +1 -1
- package/rules/prefer-object-define-properties.js +1 -3
- package/rules/prefer-object-iterable-methods.js +57 -14
- package/rules/prefer-observer-apis.js +2 -5
- package/rules/prefer-private-class-fields.js +1 -3
- package/rules/prefer-simple-sort-comparator.js +6 -6
- package/rules/prefer-simplified-conditions.js +584 -0
- package/rules/prefer-single-object-destructuring.js +2 -5
- package/rules/prefer-single-replace.js +2 -2
- package/rules/prefer-spread.js +25 -32
- package/rules/prefer-string-pad-start-end.js +1 -6
- package/rules/prefer-string-raw.js +2 -2
- package/rules/prefer-string-repeat.js +16 -9
- package/rules/prefer-string-replace-all.js +1 -1
- package/rules/prefer-ternary.js +5 -5
- package/rules/prefer-toggle-attribute.js +3 -3
- package/rules/prefer-top-level-await.js +6 -1
- package/rules/prefer-uint8array-base64.js +3 -1
- package/rules/require-proxy-trap-boolean-return.js +2 -2
- package/rules/rule/to-eslint-create.js +1 -2
- package/rules/rule/to-eslint-listener.js +1 -3
- package/rules/rule/to-eslint-problem.js +1 -3
- package/rules/rule/to-eslint-rule-fixer.js +1 -3
- package/rules/rule/to-eslint-rule.js +1 -3
- package/rules/rule/to-eslint-rules.js +1 -3
- package/rules/rule/unicorn-context.js +1 -3
- package/rules/rule/unicorn-listeners.js +1 -3
- package/rules/shared/array-range.js +66 -0
- package/rules/shared/iterator-helpers.js +43 -1
- package/rules/shared/no-array-mutate-rule.js +1 -3
- package/rules/shared/regexp-escape.js +4 -4
- package/rules/utils/can-tokens-be-adjacent.js +95 -0
- package/rules/utils/comparison.js +65 -0
- package/rules/utils/escape-string.js +2 -8
- package/rules/utils/get-available-variable-name.js +2 -13
- package/rules/utils/get-precedence.js +112 -0
- package/rules/utils/get-token-store.js +1 -3
- package/rules/utils/global-reference-tracker.js +3 -6
- package/rules/utils/index.js +4 -0
- package/rules/utils/is-boolean.js +103 -30
- package/rules/utils/is-identifier-name.js +5 -0
- package/rules/utils/is-promise-type.js +1 -3
- package/rules/utils/is-react-hook-name.js +5 -0
- package/rules/utils/parentheses/get-parent-syntax-opening-parenthesis.js +1 -3
- package/rules/utils/parentheses/iterate-surrounding-parentheses.js +1 -1
- package/rules/utils/should-add-parentheses-to-await-expression-argument.js +4 -9
- package/rules/utils/should-add-parentheses-to-call-expression-callee.js +6 -12
- package/rules/utils/should-add-parentheses-to-unary-expression.js +7 -14
- package/rules/utils/to-location.js +1 -3
- package/rules/utils/track-branch-exits.js +8 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-unicorn",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "71.0.0",
|
|
4
4
|
"description": "More than 300 powerful ESLint rules",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -62,58 +62,59 @@
|
|
|
62
62
|
"xo"
|
|
63
63
|
],
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@babel/helper-validator-identifier": "^7.29.7",
|
|
66
65
|
"@eslint-community/eslint-utils": "^4.9.1",
|
|
67
|
-
"browserslist": "^4.28.
|
|
66
|
+
"browserslist": "^4.28.4",
|
|
68
67
|
"change-case": "^5.4.4",
|
|
69
68
|
"ci-info": "^4.4.0",
|
|
70
69
|
"core-js-compat": "^3.49.0",
|
|
71
70
|
"detect-indent": "^7.0.2",
|
|
72
71
|
"find-up-simple": "^1.0.1",
|
|
73
|
-
"globals": "^17.
|
|
72
|
+
"globals": "^17.7.0",
|
|
74
73
|
"indent-string": "^5.0.0",
|
|
75
74
|
"is-builtin-module": "^5.0.0",
|
|
76
|
-
"
|
|
75
|
+
"is-identifier": "^1.1.0",
|
|
77
76
|
"pluralize": "^8.0.0",
|
|
78
|
-
"
|
|
79
|
-
"
|
|
77
|
+
"quote-js-string": "^0.1.0",
|
|
78
|
+
"regjsparser": "^0.13.2",
|
|
79
|
+
"reserved-identifiers": "^1.2.0",
|
|
80
|
+
"semver": "^7.8.5",
|
|
80
81
|
"strip-indent": "^4.1.1"
|
|
81
82
|
},
|
|
82
83
|
"devDependencies": {
|
|
83
|
-
"@babel/code-frame": "^8.0.0
|
|
84
|
-
"@eslint/css": "^1.
|
|
84
|
+
"@babel/code-frame": "^8.0.0",
|
|
85
|
+
"@eslint/css": "^1.4.0",
|
|
85
86
|
"@eslint/eslintrc": "^3.3.5",
|
|
86
|
-
"@eslint/json": "^2.0.
|
|
87
|
-
"@eslint/markdown": "^8.0.
|
|
88
|
-
"@html-eslint/eslint-plugin": "^0.
|
|
89
|
-
"@html-eslint/parser": "^0.
|
|
87
|
+
"@eslint/json": "^2.0.1",
|
|
88
|
+
"@eslint/markdown": "^8.0.3",
|
|
89
|
+
"@html-eslint/eslint-plugin": "^0.63.0",
|
|
90
|
+
"@html-eslint/parser": "^0.63.0",
|
|
90
91
|
"@lubien/fixture-beta-package": "^1.0.0-beta.1",
|
|
91
|
-
"@typescript-eslint/parser": "^8.
|
|
92
|
-
"@typescript-eslint/types": "^8.
|
|
92
|
+
"@typescript-eslint/parser": "^8.62.1",
|
|
93
|
+
"@typescript-eslint/types": "^8.62.1",
|
|
93
94
|
"ava": "^8.0.1",
|
|
94
95
|
"c8": "^11.0.0",
|
|
95
96
|
"enquirer": "^2.4.1",
|
|
96
|
-
"eslint": "^10.
|
|
97
|
+
"eslint": "^10.6.0",
|
|
97
98
|
"eslint-ava-rule-tester": "^5.0.1",
|
|
98
|
-
"eslint-config-xo": "^0.
|
|
99
|
+
"eslint-config-xo": "^0.56.0",
|
|
99
100
|
"eslint-doc-generator": "^3.6.0",
|
|
100
|
-
"eslint-plugin-eslint-plugin": "^7.4.
|
|
101
|
-
"eslint-plugin-jsdoc": "^63.0.
|
|
102
|
-
"eslint-plugin-unicorn": "^
|
|
101
|
+
"eslint-plugin-eslint-plugin": "^7.4.1",
|
|
102
|
+
"eslint-plugin-jsdoc": "^63.0.11",
|
|
103
|
+
"eslint-plugin-unicorn": "^70.0.0",
|
|
103
104
|
"eslint-remote-tester": "^4.0.4",
|
|
104
105
|
"eslint-remote-tester-repositories": "^2.0.2",
|
|
105
106
|
"eslint-scope": "^9.1.2",
|
|
106
107
|
"espree": "^11.2.0",
|
|
107
|
-
"listr2": "^10.2.
|
|
108
|
-
"markdownlint-cli": "^0.
|
|
108
|
+
"listr2": "^10.2.2",
|
|
109
|
+
"markdownlint-cli": "^0.49.0",
|
|
109
110
|
"nano-spawn": "^2.1.0",
|
|
110
111
|
"node-style-text": "^2.1.2",
|
|
111
|
-
"npm-package-json-lint": "^10.4.
|
|
112
|
-
"npm-run-all2": "^9.0.
|
|
112
|
+
"npm-package-json-lint": "^10.4.1",
|
|
113
|
+
"npm-run-all2": "^9.0.2",
|
|
113
114
|
"open-editor": "^6.0.0",
|
|
114
115
|
"outdent": "^0.8.0",
|
|
115
116
|
"pretty-ms": "^9.3.0",
|
|
116
|
-
"svelte": "^5.56.
|
|
117
|
+
"svelte": "^5.56.4",
|
|
117
118
|
"svelte-eslint-parser": "^1.8.0",
|
|
118
119
|
"typescript": "^6.0.3",
|
|
119
120
|
"vue-eslint-parser": "^10.4.1",
|
package/readme.md
CHANGED
|
@@ -144,6 +144,7 @@ export default defineConfig([
|
|
|
144
144
|
| [no-array-sort-for-min-max](docs/rules/no-array-sort-for-min-max.md) | Disallow sorting arrays to get the minimum or maximum value. | ✅ ☑️ | | 💡 | |
|
|
145
145
|
| [no-array-splice](docs/rules/no-array-splice.md) | Prefer `Array#toSpliced()` over `Array#splice()`. | ✅ | | 💡 | |
|
|
146
146
|
| [no-asterisk-prefix-in-documentation-comments](docs/rules/no-asterisk-prefix-in-documentation-comments.md) | Disallow asterisk prefixes in documentation comments. | | 🔧 | | |
|
|
147
|
+
| [no-async-promise-finally](docs/rules/no-async-promise-finally.md) | Disallow async functions as `Promise#finally()` callbacks. | ✅ ☑️ | | | |
|
|
147
148
|
| [no-await-expression-member](docs/rules/no-await-expression-member.md) | Disallow member access from await expression. | ✅ | 🔧 | | |
|
|
148
149
|
| [no-await-in-promise-methods](docs/rules/no-await-in-promise-methods.md) | Disallow using `await` in `Promise` method parameters. | ✅ ☑️ | | 💡 | |
|
|
149
150
|
| [no-blob-to-file](docs/rules/no-blob-to-file.md) | Disallow unnecessary `Blob` to `File` conversion. | ✅ ☑️ | | 💡 | |
|
|
@@ -220,9 +221,11 @@ export default defineConfig([
|
|
|
220
221
|
| [no-uncalled-method](docs/rules/no-uncalled-method.md) | Disallow referencing methods without calling them. | ✅ | | | |
|
|
221
222
|
| [no-undeclared-class-members](docs/rules/no-undeclared-class-members.md) | Require class members to be declared. | ✅ | | 💡 | |
|
|
222
223
|
| [no-unnecessary-array-flat-depth](docs/rules/no-unnecessary-array-flat-depth.md) | Disallow using `1` as the `depth` argument of `Array#flat()`. | ✅ ☑️ | 🔧 | | |
|
|
224
|
+
| [no-unnecessary-array-flat-map](docs/rules/no-unnecessary-array-flat-map.md) | Disallow `Array#flatMap()` callbacks that only wrap a single item. | ✅ | 🔧 | 💡 | |
|
|
223
225
|
| [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}()`. | ✅ ☑️ | 🔧 | | |
|
|
224
226
|
| [no-unnecessary-await](docs/rules/no-unnecessary-await.md) | Disallow awaiting non-promise values. | ✅ ☑️ | 🔧 | | |
|
|
225
227
|
| [no-unnecessary-boolean-comparison](docs/rules/no-unnecessary-boolean-comparison.md) | Disallow unnecessary comparisons against boolean literals. | ✅ | 🔧 | | |
|
|
228
|
+
| [no-unnecessary-fetch-options](docs/rules/no-unnecessary-fetch-options.md) | Disallow unnecessary options in `fetch()` and `new Request()`. | ✅ ☑️ | 🔧 | | |
|
|
226
229
|
| [no-unnecessary-global-this](docs/rules/no-unnecessary-global-this.md) | Disallow unnecessary `globalThis` references. | ✅ ☑️ | 🔧 | | |
|
|
227
230
|
| [no-unnecessary-nested-ternary](docs/rules/no-unnecessary-nested-ternary.md) | Disallow unnecessary nested ternary expressions. | ✅ ☑️ | 🔧 | | |
|
|
228
231
|
| [no-unnecessary-polyfills](docs/rules/no-unnecessary-polyfills.md) | Enforce the use of built-in methods instead of unnecessary polyfills. | ✅ ☑️ | | | |
|
|
@@ -235,6 +238,7 @@ export default defineConfig([
|
|
|
235
238
|
| [no-unreadable-object-destructuring](docs/rules/no-unreadable-object-destructuring.md) | Disallow unreadable object destructuring. | ✅ ☑️ | | | |
|
|
236
239
|
| [no-unsafe-buffer-conversion](docs/rules/no-unsafe-buffer-conversion.md) | Prevent unsafe use of ArrayBuffer view `.buffer`. | ✅ ☑️ | | 💡 | |
|
|
237
240
|
| [no-unsafe-dom-html](docs/rules/no-unsafe-dom-html.md) | Disallow unsafe DOM HTML APIs. | | | | |
|
|
241
|
+
| [no-unsafe-promise-all-settled-values](docs/rules/no-unsafe-promise-all-settled-values.md) | Disallow reading `.value` from `Promise.allSettled()` results without a fulfilled status guard. | ✅ ☑️ | | | |
|
|
238
242
|
| [no-unsafe-property-key](docs/rules/no-unsafe-property-key.md) | Disallow unsafe values as property keys. | ✅ | | | |
|
|
239
243
|
| [no-unsafe-string-replacement](docs/rules/no-unsafe-string-replacement.md) | Disallow non-literal replacement values in `String#replace()` and `String#replaceAll()`. | ✅ | | | |
|
|
240
244
|
| [no-unused-array-method-return](docs/rules/no-unused-array-method-return.md) | Disallow ignoring the return value of selected array methods. | ✅ ☑️ | | | |
|
|
@@ -264,6 +268,7 @@ export default defineConfig([
|
|
|
264
268
|
| [number-literal-case](docs/rules/number-literal-case.md) | Enforce proper case for numeric literals. | ✅ ☑️ | 🔧 | | |
|
|
265
269
|
| [numeric-separators-style](docs/rules/numeric-separators-style.md) | Enforce the style of numeric separators by correctly grouping digits. | ✅ ☑️ | 🔧 | | |
|
|
266
270
|
| [operator-assignment](docs/rules/operator-assignment.md) | Require assignment operator shorthand where possible. | ✅ | 🔧 | 💡 | |
|
|
271
|
+
| [prefer-abort-signal-any](docs/rules/prefer-abort-signal-any.md) | Prefer `AbortSignal.any()` over manually forwarding abort events between signals. | ✅ | | 💡 | |
|
|
267
272
|
| [prefer-abort-signal-timeout](docs/rules/prefer-abort-signal-timeout.md) | Prefer `AbortSignal.timeout()` over manually aborting an `AbortController` with `setTimeout()`. | ✅ | | 💡 | |
|
|
268
273
|
| [prefer-add-event-listener](docs/rules/prefer-add-event-listener.md) | Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. | ✅ ☑️ | 🔧 | | |
|
|
269
274
|
| [prefer-add-event-listener-options](docs/rules/prefer-add-event-listener-options.md) | Prefer an options object over a boolean in `.addEventListener()`. | ✅ ☑️ | 🔧 | | |
|
|
@@ -273,6 +278,7 @@ export default defineConfig([
|
|
|
273
278
|
| [prefer-array-flat-map](docs/rules/prefer-array-flat-map.md) | Prefer `.flatMap(…)` over `.map(…).flat()` and `.filter(…).flatMap(…)`. | ✅ ☑️ | 🔧 | 💡 | |
|
|
274
279
|
| [prefer-array-from-async](docs/rules/prefer-array-from-async.md) | Prefer `Array.fromAsync()` over `for await…of` array accumulation. | ✅ | 🔧 | | |
|
|
275
280
|
| [prefer-array-from-map](docs/rules/prefer-array-from-map.md) | Prefer using the `Array.from()` mapping function argument. | ✅ ☑️ | 🔧 | 💡 | |
|
|
281
|
+
| [prefer-array-from-range](docs/rules/prefer-array-from-range.md) | Prefer `Array.from({length}, …)` when creating range arrays. | ✅ ☑️ | 🔧 | | |
|
|
276
282
|
| [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. | ✅ ☑️ | 🔧 | 💡 | |
|
|
277
283
|
| [prefer-array-iterable-methods](docs/rules/prefer-array-iterable-methods.md) | Prefer iterating an array directly or with `Array#keys()` over `Array#entries()` when the index or value is unused. | ✅ | 🔧 | | |
|
|
278
284
|
| [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. | ✅ ☑️ | | 💡 | |
|
|
@@ -282,6 +288,7 @@ export default defineConfig([
|
|
|
282
288
|
| [prefer-await](docs/rules/prefer-await.md) | Prefer `await` over promise chaining. | ✅ ☑️ | | | |
|
|
283
289
|
| [prefer-bigint-literals](docs/rules/prefer-bigint-literals.md) | Prefer `BigInt` literals over the constructor. | ✅ ☑️ | 🔧 | 💡 | |
|
|
284
290
|
| [prefer-blob-reading-methods](docs/rules/prefer-blob-reading-methods.md) | Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. | ✅ ☑️ | | | |
|
|
291
|
+
| [prefer-block-statement-over-iife](docs/rules/prefer-block-statement-over-iife.md) | Prefer block statements over IIFEs used only for scoping. | ✅ ☑️ | 🔧 | | |
|
|
285
292
|
| [prefer-boolean-return](docs/rules/prefer-boolean-return.md) | Prefer directly returning boolean expressions over `if` statements. | ✅ ☑️ | 🔧 | | |
|
|
286
293
|
| [prefer-class-fields](docs/rules/prefer-class-fields.md) | Prefer class field declarations over `this` assignments in constructors. | ✅ ☑️ | 🔧 | 💡 | |
|
|
287
294
|
| [prefer-classlist-toggle](docs/rules/prefer-classlist-toggle.md) | Prefer using `Element#classList.toggle()` to toggle class names. | ✅ ☑️ | 🔧 | 💡 | |
|
|
@@ -305,6 +312,7 @@ export default defineConfig([
|
|
|
305
312
|
| [prefer-get-or-insert-computed](docs/rules/prefer-get-or-insert-computed.md) | Prefer `.getOrInsertComputed()` when the default value has side effects. | ✅ | 🔧 | | |
|
|
306
313
|
| [prefer-global-number-constants](docs/rules/prefer-global-number-constants.md) | Prefer global numeric constants over `Number` static properties. | ✅ ☑️ | 🔧 | | |
|
|
307
314
|
| [prefer-global-this](docs/rules/prefer-global-this.md) | Prefer `globalThis` over `window`, `self`, and `global`. | ✅ ☑️ | 🔧 | | |
|
|
315
|
+
| [prefer-group-by](docs/rules/prefer-group-by.md) | Prefer `Object.groupBy()` or `Map.groupBy()` over reduce-based grouping. | ✅ | 🔧 | | |
|
|
308
316
|
| [prefer-has-check](docs/rules/prefer-has-check.md) | Prefer `.has()` when checking existence. | ✅ ☑️ | 🔧 | | |
|
|
309
317
|
| [prefer-hoisting-branch-code](docs/rules/prefer-hoisting-branch-code.md) | Prefer moving code shared by all branches of an `if` statement out of the branches. | ✅ | 🔧 | 💡 | |
|
|
310
318
|
| [prefer-https](docs/rules/prefer-https.md) | Prefer HTTPS over HTTP. | ✅ | 🔧 | | |
|
|
@@ -314,6 +322,7 @@ export default defineConfig([
|
|
|
314
322
|
| [prefer-includes-over-repeated-comparisons](docs/rules/prefer-includes-over-repeated-comparisons.md) | Prefer `.includes()` over repeated equality comparisons. | ✅ | | | |
|
|
315
323
|
| [prefer-iterable-in-constructor](docs/rules/prefer-iterable-in-constructor.md) | Prefer passing iterables directly to constructors instead of filling empty collections. | ✅ ☑️ | 🔧 | | |
|
|
316
324
|
| [prefer-iterator-concat](docs/rules/prefer-iterator-concat.md) | Prefer `Iterator.concat(…)` over temporary spread arrays. | | 🔧 | 💡 | |
|
|
325
|
+
| [prefer-iterator-helpers](docs/rules/prefer-iterator-helpers.md) | Prefer iterator helpers over temporary arrays from iterators. | ✅ ☑️ | | 💡 | |
|
|
317
326
|
| [prefer-iterator-to-array](docs/rules/prefer-iterator-to-array.md) | Prefer `Iterator#toArray()` over temporary arrays from iterator spreads. | ✅ | 🔧 | 💡 | |
|
|
318
327
|
| [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. | ✅ ☑️ | | 💡 | |
|
|
319
328
|
| [prefer-keyboard-event-key](docs/rules/prefer-keyboard-event-key.md) | Prefer `KeyboardEvent#key` over deprecated keyboard event properties. | ✅ ☑️ | 🔧 | 💡 | |
|
|
@@ -358,6 +367,7 @@ export default defineConfig([
|
|
|
358
367
|
| [prefer-short-arrow-method](docs/rules/prefer-short-arrow-method.md) | Prefer arrow function properties over methods with a single return. | | 🔧 | | |
|
|
359
368
|
| [prefer-simple-condition-first](docs/rules/prefer-simple-condition-first.md) | Prefer simple conditions first in logical expressions. | ✅ ☑️ | 🔧 | 💡 | |
|
|
360
369
|
| [prefer-simple-sort-comparator](docs/rules/prefer-simple-sort-comparator.md) | Prefer a simple comparison function for `Array#sort()`. | ✅ ☑️ | | 💡 | |
|
|
370
|
+
| [prefer-simplified-conditions](docs/rules/prefer-simplified-conditions.md) | Prefer simplified conditions. | ✅ ☑️ | 🔧 | | |
|
|
361
371
|
| [prefer-single-array-predicate](docs/rules/prefer-single-array-predicate.md) | Prefer a single `Array#some()` or `Array#every()` with a combined predicate. | ✅ ☑️ | | 💡 | |
|
|
362
372
|
| [prefer-single-call](docs/rules/prefer-single-call.md) | Enforce combining multiple `Array#{push,unshift}()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. | ✅ ☑️ | 🔧 | 💡 | |
|
|
363
373
|
| [prefer-single-object-destructuring](docs/rules/prefer-single-object-destructuring.md) | Prefer a single object destructuring declaration per local const source. | ✅ | 🔧 | | |
|
|
@@ -381,7 +391,7 @@ export default defineConfig([
|
|
|
381
391
|
| [prefer-top-level-await](docs/rules/prefer-top-level-await.md) | Prefer top-level await over top-level promises and async function calls. | ✅ ☑️ | | 💡 | |
|
|
382
392
|
| [prefer-type-error](docs/rules/prefer-type-error.md) | Enforce throwing `TypeError` in type checking conditions. | ✅ ☑️ | 🔧 | | |
|
|
383
393
|
| [prefer-type-literal-last](docs/rules/prefer-type-literal-last.md) | Require type literals to be last in union types. | ✅ | 🔧 | | |
|
|
384
|
-
| [prefer-uint8array-base64](docs/rules/prefer-uint8array-base64.md) | Prefer `Uint8Array#toBase64()` and `Uint8Array.fromBase64()` over `atob()`, `btoa()`, and `Buffer` base64 conversions. |
|
|
394
|
+
| [prefer-uint8array-base64](docs/rules/prefer-uint8array-base64.md) | Prefer `Uint8Array#toBase64()` and `Uint8Array.fromBase64()` over `atob()`, `btoa()`, and `Buffer` base64 conversions. | | | 💡 | |
|
|
385
395
|
| [prefer-unary-minus](docs/rules/prefer-unary-minus.md) | Prefer the unary minus operator over multiplying or dividing by `-1`. | ✅ ☑️ | 🔧 | | |
|
|
386
396
|
| [prefer-unicode-code-point-escapes](docs/rules/prefer-unicode-code-point-escapes.md) | Prefer Unicode code point escapes over legacy escape sequences. | ✅ ☑️ | 🔧 | 💡 | |
|
|
387
397
|
| [prefer-url-can-parse](docs/rules/prefer-url-can-parse.md) | Prefer `URL.canParse()` over constructing a `URL` in a try/catch for validation. | ✅ ☑️ | 🔧 | | |
|
|
@@ -556,3 +566,7 @@ export default defineConfig([
|
|
|
556
566
|
|
|
557
567
|
- [Sindre Sorhus](https://github.com/sindresorhus)
|
|
558
568
|
- [Fisker Cheung](https://github.com/fisker)
|
|
569
|
+
|
|
570
|
+
## Related
|
|
571
|
+
|
|
572
|
+
- [eslint-node-test](https://github.com/sindresorhus/eslint-node-test) — ESLint rules for the Node.js built-in test runner.
|
|
@@ -79,18 +79,12 @@ function create(node, options, types) {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
Array.isArray(names)
|
|
82
|
+
return !(Array.isArray(names)
|
|
84
83
|
&& names.length > 0
|
|
85
84
|
&& (
|
|
86
85
|
node.callee.type !== 'Identifier'
|
|
87
86
|
|| !names.includes(node.callee.name)
|
|
88
|
-
)
|
|
89
|
-
) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return true;
|
|
87
|
+
));
|
|
94
88
|
}
|
|
95
89
|
|
|
96
90
|
/**
|
|
@@ -83,16 +83,10 @@ export default function isMemberExpression(node, options) {
|
|
|
83
83
|
return false;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
Array.isArray(objects)
|
|
86
|
+
return !(Array.isArray(objects)
|
|
88
87
|
&& objects.length > 0
|
|
89
88
|
&& (
|
|
90
89
|
node.object.type !== 'Identifier'
|
|
91
90
|
|| !objects.includes(node.object.name)
|
|
92
|
-
)
|
|
93
|
-
) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return true;
|
|
91
|
+
));
|
|
98
92
|
}
|
package/rules/comment-content.js
CHANGED
|
@@ -346,7 +346,7 @@ const pathTerminatorCharacters = '"\'`<>';
|
|
|
346
346
|
const packageSpecifierTerminatorCharacters = '"\'`()[]{}<>,';
|
|
347
347
|
const domainLeadingPunctuation = '([{<';
|
|
348
348
|
const domainTrailingPunctuation = '.,;:!?)]}>';
|
|
349
|
-
const maskCharacter = '\
|
|
349
|
+
const maskCharacter = '\u{FFFF}';
|
|
350
350
|
const openBrackets = '([{';
|
|
351
351
|
const closeBrackets = ')]}';
|
|
352
352
|
const quoteCharacters = '"\'`';
|
|
@@ -1062,14 +1062,14 @@ const create = context => {
|
|
|
1062
1062
|
return;
|
|
1063
1063
|
}
|
|
1064
1064
|
|
|
1065
|
-
let
|
|
1065
|
+
let isChecked = false;
|
|
1066
1066
|
|
|
1067
1067
|
onRoot(context, function * (node) {
|
|
1068
|
-
if (
|
|
1068
|
+
if (isChecked) {
|
|
1069
1069
|
return;
|
|
1070
1070
|
}
|
|
1071
1071
|
|
|
1072
|
-
|
|
1072
|
+
isChecked = true;
|
|
1073
1073
|
|
|
1074
1074
|
const {sourceCode} = context;
|
|
1075
1075
|
const comments = getRuleComments(context);
|