eslint-plugin-unicorn 60.0.0 → 61.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/index.d.ts +1 -0
- package/index.js +8 -0
- package/package.json +1 -1
- package/readme.md +141 -136
- package/rules/ast/index.js +1 -1
- package/rules/ast/is-negative-one.js +2 -2
- package/rules/ast/literal.js +1 -1
- package/rules/catch-error-name.js +0 -2
- package/rules/consistent-date-clone.js +1 -1
- package/rules/consistent-existence-index-check.js +3 -3
- package/rules/error-message.js +1 -1
- package/rules/escape-case.js +1 -1
- package/rules/expiring-todo-comments.js +1 -1
- package/rules/explicit-length-check.js +2 -2
- package/rules/fix/index.js +5 -1
- package/rules/fix/remove-method-call.js +1 -1
- package/rules/fix/remove-object-property.js +21 -0
- package/rules/fix/replace-member-expression-property.js +9 -0
- package/rules/import-style.js +2 -3
- package/rules/index.js +4 -0
- package/rules/new-for-builtins.js +1 -1
- package/rules/no-abusive-eslint-disable.js +1 -1
- package/rules/no-accessor-recursion.js +1 -1
- package/rules/no-anonymous-default-export.js +1 -1
- package/rules/no-array-for-each.js +1 -1
- package/rules/no-array-method-this-argument.js +1 -2
- package/rules/no-array-reduce.js +0 -1
- package/rules/no-array-reverse.js +2 -105
- package/rules/no-array-sort.js +6 -0
- package/rules/no-await-in-promise-methods.js +1 -1
- package/rules/no-console-spaces.js +1 -1
- package/rules/no-document-cookie.js +1 -1
- package/rules/no-empty-file.js +1 -1
- package/rules/no-hex-escape.js +1 -1
- package/rules/no-instanceof-builtins.js +17 -25
- package/rules/no-invalid-fetch-options.js +1 -1
- package/rules/no-invalid-remove-event-listener.js +1 -2
- package/rules/no-lonely-if.js +1 -1
- package/rules/no-magic-array-flat-depth.js +3 -3
- package/rules/no-named-default.js +1 -1
- package/rules/no-negated-condition.js +1 -1
- package/rules/no-negation-in-equality-check.js +1 -1
- package/rules/no-new-array.js +1 -1
- package/rules/no-new-buffer.js +1 -1
- package/rules/no-null.js +0 -1
- package/rules/no-object-as-default-parameter.js +1 -1
- package/rules/no-process-exit.js +1 -1
- package/rules/no-single-promise-in-promise-methods.js +1 -1
- package/rules/no-static-only-class.js +1 -1
- package/rules/no-thenable.js +1 -1
- package/rules/no-this-assignment.js +1 -1
- package/rules/no-typeof-undefined.js +1 -1
- package/rules/no-unnecessary-array-flat-depth.js +1 -1
- package/rules/no-unnecessary-array-splice-count.js +1 -1
- package/rules/no-unnecessary-await.js +1 -1
- package/rules/no-unnecessary-polyfills.js +1 -1
- package/rules/no-unnecessary-slice-end.js +1 -1
- package/rules/no-unreadable-array-destructuring.js +1 -1
- package/rules/no-unreadable-iife.js +1 -1
- package/rules/no-useless-error-capture-stack-trace.js +1 -1
- package/rules/no-useless-fallback-in-spread.js +1 -1
- package/rules/no-useless-length-check.js +1 -1
- package/rules/no-useless-promise-resolve-reject.js +1 -1
- package/rules/no-useless-spread.js +1 -1
- package/rules/no-useless-switch-case.js +1 -1
- package/rules/no-useless-undefined.js +1 -1
- package/rules/no-zero-fractions.js +3 -3
- package/rules/number-literal-case.js +3 -3
- package/rules/numeric-separators-style.js +1 -1
- package/rules/prefer-add-event-listener.js +1 -1
- package/rules/prefer-array-find.js +12 -6
- package/rules/prefer-array-flat-map.js +1 -2
- package/rules/prefer-array-flat.js +10 -7
- package/rules/prefer-array-index-of.js +1 -1
- package/rules/prefer-array-some.js +1 -1
- package/rules/prefer-at.js +4 -6
- package/rules/prefer-bigint-literals.js +129 -0
- package/rules/prefer-blob-reading-methods.js +1 -1
- package/rules/prefer-class-fields.js +1 -1
- package/rules/prefer-classlist-toggle.js +223 -0
- package/rules/prefer-code-point.js +1 -2
- package/rules/prefer-date-now.js +1 -1
- package/rules/prefer-default-parameters.js +1 -1
- package/rules/prefer-dom-node-append.js +1 -1
- package/rules/prefer-dom-node-dataset.js +8 -3
- package/rules/prefer-dom-node-remove.js +1 -1
- package/rules/prefer-dom-node-text-content.js +1 -1
- package/rules/prefer-event-target.js +1 -1
- package/rules/prefer-global-this.js +1 -1
- package/rules/prefer-includes.js +7 -4
- package/rules/prefer-keyboard-event-key.js +3 -3
- package/rules/prefer-logical-operator-over-ternary.js +1 -1
- package/rules/prefer-math-min-max.js +1 -1
- package/rules/prefer-math-trunc.js +1 -1
- package/rules/prefer-modern-dom-apis.js +1 -1
- package/rules/prefer-modern-math-apis.js +1 -1
- package/rules/prefer-module.js +1 -1
- package/rules/prefer-native-coercion-functions.js +1 -1
- package/rules/prefer-negative-index.js +1 -1
- package/rules/prefer-node-protocol.js +1 -1
- package/rules/prefer-number-properties.js +1 -1
- package/rules/prefer-object-from-entries.js +1 -1
- package/rules/prefer-optional-catch-binding.js +1 -1
- package/rules/prefer-prototype-methods.js +1 -1
- package/rules/prefer-reflect-apply.js +1 -1
- package/rules/prefer-regexp-test.js +1 -1
- package/rules/prefer-set-has.js +1 -1
- package/rules/prefer-set-size.js +1 -1
- package/rules/prefer-single-call.js +1 -1
- package/rules/prefer-string-raw.js +1 -1
- package/rules/prefer-string-replace-all.js +1 -2
- package/rules/prefer-string-slice.js +5 -5
- package/rules/prefer-string-starts-ends-with.js +1 -1
- package/rules/prefer-string-trim-start-end.js +1 -1
- package/rules/prefer-structured-clone.js +1 -1
- package/rules/prefer-switch.js +2 -2
- package/rules/prefer-ternary.js +1 -1
- package/rules/prefer-top-level-await.js +1 -1
- package/rules/prefer-type-error.js +22 -6
- package/rules/prevent-abbreviations.js +1 -1
- package/rules/relative-url-style.js +1 -1
- package/rules/require-array-join-separator.js +1 -1
- package/rules/require-module-attributes.js +120 -0
- package/rules/require-module-specifiers.js +1 -1
- package/rules/require-number-to-fixed-digits-argument.js +1 -2
- package/rules/require-post-message-target-origin.js +0 -1
- package/rules/shared/negative-index.js +2 -2
- package/rules/shared/no-array-mutate-rule.js +140 -0
- package/rules/shared/simple-array-search-rule.js +0 -1
- package/rules/text-encoding-identifier-case.js +1 -1
- package/rules/throw-new-error.js +1 -1
- package/rules/utils/get-token-store.js +24 -0
- package/rules/utils/index.js +3 -0
- package/rules/utils/is-number.js +2 -2
- package/rules/utils/numeric.js +4 -4
- package/rules/utils/should-add-parentheses-to-unary-expression.js +24 -0
- package/rules/fix/remove-member-expression-property.js +0 -7
package/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type {ESLint, Linter} from 'eslint';
|
|
|
3
3
|
declare const eslintPluginUnicorn: ESLint.Plugin & {
|
|
4
4
|
configs: {
|
|
5
5
|
recommended: Linter.FlatConfig;
|
|
6
|
+
unopinionated: Linter.FlatConfig;
|
|
6
7
|
all: Linter.FlatConfig;
|
|
7
8
|
|
|
8
9
|
/** @deprecated Use `all` instead. The `flat/` prefix is no longer needed. */
|
package/index.js
CHANGED
|
@@ -36,6 +36,13 @@ const recommendedRules = Object.fromEntries(
|
|
|
36
36
|
]),
|
|
37
37
|
);
|
|
38
38
|
|
|
39
|
+
const unopinionatedRules = Object.fromEntries(
|
|
40
|
+
Object.entries(rules).map(([id, rule]) => [
|
|
41
|
+
`unicorn/${id}`,
|
|
42
|
+
rule.meta.docs.recommended === 'unopinionated' ? 'error' : 'off',
|
|
43
|
+
]),
|
|
44
|
+
);
|
|
45
|
+
|
|
39
46
|
const allRules = Object.fromEntries(
|
|
40
47
|
Object.keys(rules).map(id => [
|
|
41
48
|
`unicorn/${id}`,
|
|
@@ -68,6 +75,7 @@ const unicorn = {
|
|
|
68
75
|
|
|
69
76
|
const configs = {
|
|
70
77
|
recommended: createConfig(recommendedRules, 'unicorn/recommended'),
|
|
78
|
+
unopinionated: createConfig(unopinionatedRules, 'unicorn/unopinionated'),
|
|
71
79
|
all: createConfig(allRules, 'unicorn/all'),
|
|
72
80
|
|
|
73
81
|
// TODO: Remove this at some point. Kept for now to avoid breaking users.
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -51,145 +51,150 @@ export default [
|
|
|
51
51
|
|
|
52
52
|
💼 [Configurations](https://github.com/sindresorhus/eslint-plugin-unicorn#recommended-config) enabled in.\
|
|
53
53
|
✅ Set in the `recommended` [configuration](https://github.com/sindresorhus/eslint-plugin-unicorn#recommended-config).\
|
|
54
|
+
☑️ Set in the `unopinionated` [configuration](https://github.com/sindresorhus/eslint-plugin-unicorn#recommended-config).\
|
|
54
55
|
🔧 Automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/user-guide/command-line-interface#--fix).\
|
|
55
56
|
💡 Manually fixable by [editor suggestions](https://eslint.org/docs/latest/use/core-concepts#rule-suggestions).
|
|
56
57
|
|
|
57
|
-
| Name | Description | 💼
|
|
58
|
-
| :----------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
59
|
-
| [better-regex](docs/rules/better-regex.md) | Improve regexes by making them shorter, consistent, and safer. |
|
|
60
|
-
| [catch-error-name](docs/rules/catch-error-name.md) | Enforce a specific parameter name in catch clauses. | ✅
|
|
61
|
-
| [consistent-assert](docs/rules/consistent-assert.md) | Enforce consistent assertion style with `node:assert`. | ✅
|
|
62
|
-
| [consistent-date-clone](docs/rules/consistent-date-clone.md) | Prefer passing `Date` directly to the constructor when cloning. | ✅
|
|
63
|
-
| [consistent-destructuring](docs/rules/consistent-destructuring.md) | Use destructured variables over properties. |
|
|
64
|
-
| [consistent-empty-array-spread](docs/rules/consistent-empty-array-spread.md) | Prefer consistent types when spreading a ternary in an array literal. | ✅
|
|
65
|
-
| [consistent-existence-index-check](docs/rules/consistent-existence-index-check.md) | Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. | ✅
|
|
66
|
-
| [consistent-function-scoping](docs/rules/consistent-function-scoping.md) | Move function definitions to the highest possible scope. | ✅
|
|
67
|
-
| [custom-error-definition](docs/rules/custom-error-definition.md) | Enforce correct `Error` subclassing. |
|
|
68
|
-
| [empty-brace-spaces](docs/rules/empty-brace-spaces.md) | Enforce no spaces between braces. | ✅
|
|
69
|
-
| [error-message](docs/rules/error-message.md) | Enforce passing a `message` value when creating a built-in error. | ✅
|
|
70
|
-
| [escape-case](docs/rules/escape-case.md) | Require escape sequences to use uppercase or lowercase values. | ✅
|
|
71
|
-
| [expiring-todo-comments](docs/rules/expiring-todo-comments.md) | Add expiration conditions to TODO comments. | ✅
|
|
72
|
-
| [explicit-length-check](docs/rules/explicit-length-check.md) | Enforce explicitly comparing the `length` or `size` property of a value. | ✅
|
|
73
|
-
| [filename-case](docs/rules/filename-case.md) | Enforce a case style for filenames. | ✅
|
|
74
|
-
| [import-style](docs/rules/import-style.md) | Enforce specific import styles per module. | ✅
|
|
75
|
-
| [new-for-builtins](docs/rules/new-for-builtins.md) | Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. | ✅
|
|
76
|
-
| [no-abusive-eslint-disable](docs/rules/no-abusive-eslint-disable.md) | Enforce specifying rules to disable in `eslint-disable` comments. | ✅
|
|
77
|
-
| [no-accessor-recursion](docs/rules/no-accessor-recursion.md) | Disallow recursive access to `this` within getters and setters. | ✅
|
|
78
|
-
| [no-anonymous-default-export](docs/rules/no-anonymous-default-export.md) | Disallow anonymous functions and classes as the default export. | ✅
|
|
79
|
-
| [no-array-callback-reference](docs/rules/no-array-callback-reference.md) | Prevent passing a function reference directly to iterator methods. | ✅
|
|
80
|
-
| [no-array-for-each](docs/rules/no-array-for-each.md) | Prefer `for…of` over the `forEach` method. | ✅
|
|
81
|
-
| [no-array-method-this-argument](docs/rules/no-array-method-this-argument.md) | Disallow using the `this` argument in array methods. | ✅
|
|
82
|
-
| [no-array-reduce](docs/rules/no-array-reduce.md) | Disallow `Array#reduce()` and `Array#reduceRight()`. | ✅
|
|
83
|
-
| [no-array-reverse](docs/rules/no-array-reverse.md) | Prefer `Array#toReversed()` over `Array#reverse()`. | ✅
|
|
84
|
-
| [no-
|
|
85
|
-
| [no-await-
|
|
86
|
-
| [no-
|
|
87
|
-
| [no-
|
|
88
|
-
| [no-
|
|
89
|
-
| [no-
|
|
90
|
-
| [no-
|
|
91
|
-
| [no-
|
|
92
|
-
| [no-
|
|
93
|
-
| [no-invalid-
|
|
94
|
-
| [no-
|
|
95
|
-
| [no-
|
|
96
|
-
| [no-
|
|
97
|
-
| [no-
|
|
98
|
-
| [no-
|
|
99
|
-
| [no-
|
|
100
|
-
| [no-
|
|
101
|
-
| [no-
|
|
102
|
-
| [no-new-
|
|
103
|
-
| [no-
|
|
104
|
-
| [no-
|
|
105
|
-
| [no-
|
|
106
|
-
| [no-
|
|
107
|
-
| [no-
|
|
108
|
-
| [no-
|
|
109
|
-
| [no-
|
|
110
|
-
| [no-
|
|
111
|
-
| [no-
|
|
112
|
-
| [no-unnecessary-array-
|
|
113
|
-
| [no-unnecessary-
|
|
114
|
-
| [no-unnecessary-
|
|
115
|
-
| [no-unnecessary-
|
|
116
|
-
| [no-
|
|
117
|
-
| [no-unreadable-
|
|
118
|
-
| [no-
|
|
119
|
-
| [no-
|
|
120
|
-
| [no-useless-
|
|
121
|
-
| [no-useless-
|
|
122
|
-
| [no-useless-
|
|
123
|
-
| [no-useless-
|
|
124
|
-
| [no-useless-
|
|
125
|
-
| [no-useless-
|
|
126
|
-
| [no-
|
|
127
|
-
| [
|
|
128
|
-
| [
|
|
129
|
-
| [
|
|
130
|
-
| [prefer-
|
|
131
|
-
| [prefer-array-
|
|
132
|
-
| [prefer-array-flat
|
|
133
|
-
| [prefer-array-
|
|
134
|
-
| [prefer-array-
|
|
135
|
-
| [prefer-
|
|
136
|
-
| [prefer-
|
|
137
|
-
| [prefer-
|
|
138
|
-
| [prefer-
|
|
139
|
-
| [prefer-
|
|
140
|
-
| [prefer-
|
|
141
|
-
| [prefer-
|
|
142
|
-
| [prefer-
|
|
143
|
-
| [prefer-
|
|
144
|
-
| [prefer-dom-node-
|
|
145
|
-
| [prefer-
|
|
146
|
-
| [prefer-
|
|
147
|
-
| [prefer-
|
|
148
|
-
| [prefer-
|
|
149
|
-
| [prefer-
|
|
150
|
-
| [prefer-
|
|
151
|
-
| [prefer-
|
|
152
|
-
| [prefer-
|
|
153
|
-
| [prefer-
|
|
154
|
-
| [prefer-
|
|
155
|
-
| [prefer-
|
|
156
|
-
| [prefer-
|
|
157
|
-
| [prefer-
|
|
158
|
-
| [prefer-
|
|
159
|
-
| [prefer-
|
|
160
|
-
| [prefer-
|
|
161
|
-
| [prefer-
|
|
162
|
-
| [prefer-
|
|
163
|
-
| [prefer-
|
|
164
|
-
| [prefer-
|
|
165
|
-
| [prefer-
|
|
166
|
-
| [prefer-
|
|
167
|
-
| [prefer-
|
|
168
|
-
| [prefer-
|
|
169
|
-
| [prefer-
|
|
170
|
-
| [prefer-
|
|
171
|
-
| [prefer-
|
|
172
|
-
| [prefer-
|
|
173
|
-
| [prefer-
|
|
174
|
-
| [prefer-
|
|
175
|
-
| [prefer-string-
|
|
176
|
-
| [prefer-string-
|
|
177
|
-
| [prefer-
|
|
178
|
-
| [prefer-
|
|
179
|
-
| [prefer-
|
|
180
|
-
| [prefer-
|
|
181
|
-
| [prefer-
|
|
182
|
-
| [
|
|
183
|
-
| [
|
|
184
|
-
| [
|
|
185
|
-
| [
|
|
186
|
-
| [
|
|
187
|
-
| [require-
|
|
188
|
-
| [
|
|
189
|
-
| [
|
|
190
|
-
| [
|
|
191
|
-
| [
|
|
192
|
-
| [
|
|
58
|
+
| Name | Description | 💼 | 🔧 | 💡 |
|
|
59
|
+
| :----------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--- | :- | :- |
|
|
60
|
+
| [better-regex](docs/rules/better-regex.md) | Improve regexes by making them shorter, consistent, and safer. | | 🔧 | |
|
|
61
|
+
| [catch-error-name](docs/rules/catch-error-name.md) | Enforce a specific parameter name in catch clauses. | ✅ | 🔧 | |
|
|
62
|
+
| [consistent-assert](docs/rules/consistent-assert.md) | Enforce consistent assertion style with `node:assert`. | ✅ | 🔧 | |
|
|
63
|
+
| [consistent-date-clone](docs/rules/consistent-date-clone.md) | Prefer passing `Date` directly to the constructor when cloning. | ✅ ☑️ | 🔧 | |
|
|
64
|
+
| [consistent-destructuring](docs/rules/consistent-destructuring.md) | Use destructured variables over properties. | | | 💡 |
|
|
65
|
+
| [consistent-empty-array-spread](docs/rules/consistent-empty-array-spread.md) | Prefer consistent types when spreading a ternary in an array literal. | ✅ | 🔧 | |
|
|
66
|
+
| [consistent-existence-index-check](docs/rules/consistent-existence-index-check.md) | Enforce consistent style for element existence checks with `indexOf()`, `lastIndexOf()`, `findIndex()`, and `findLastIndex()`. | ✅ ☑️ | 🔧 | |
|
|
67
|
+
| [consistent-function-scoping](docs/rules/consistent-function-scoping.md) | Move function definitions to the highest possible scope. | ✅ | | |
|
|
68
|
+
| [custom-error-definition](docs/rules/custom-error-definition.md) | Enforce correct `Error` subclassing. | | 🔧 | |
|
|
69
|
+
| [empty-brace-spaces](docs/rules/empty-brace-spaces.md) | Enforce no spaces between braces. | ✅ | 🔧 | |
|
|
70
|
+
| [error-message](docs/rules/error-message.md) | Enforce passing a `message` value when creating a built-in error. | ✅ ☑️ | | |
|
|
71
|
+
| [escape-case](docs/rules/escape-case.md) | Require escape sequences to use uppercase or lowercase values. | ✅ ☑️ | 🔧 | |
|
|
72
|
+
| [expiring-todo-comments](docs/rules/expiring-todo-comments.md) | Add expiration conditions to TODO comments. | ✅ ☑️ | | |
|
|
73
|
+
| [explicit-length-check](docs/rules/explicit-length-check.md) | Enforce explicitly comparing the `length` or `size` property of a value. | ✅ | 🔧 | 💡 |
|
|
74
|
+
| [filename-case](docs/rules/filename-case.md) | Enforce a case style for filenames. | ✅ | | |
|
|
75
|
+
| [import-style](docs/rules/import-style.md) | Enforce specific import styles per module. | ✅ ☑️ | | |
|
|
76
|
+
| [new-for-builtins](docs/rules/new-for-builtins.md) | Enforce the use of `new` for all builtins, except `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. | ✅ ☑️ | 🔧 | 💡 |
|
|
77
|
+
| [no-abusive-eslint-disable](docs/rules/no-abusive-eslint-disable.md) | Enforce specifying rules to disable in `eslint-disable` comments. | ✅ ☑️ | | |
|
|
78
|
+
| [no-accessor-recursion](docs/rules/no-accessor-recursion.md) | Disallow recursive access to `this` within getters and setters. | ✅ ☑️ | | |
|
|
79
|
+
| [no-anonymous-default-export](docs/rules/no-anonymous-default-export.md) | Disallow anonymous functions and classes as the default export. | ✅ ☑️ | | 💡 |
|
|
80
|
+
| [no-array-callback-reference](docs/rules/no-array-callback-reference.md) | Prevent passing a function reference directly to iterator methods. | ✅ | | 💡 |
|
|
81
|
+
| [no-array-for-each](docs/rules/no-array-for-each.md) | Prefer `for…of` over the `forEach` method. | ✅ ☑️ | 🔧 | 💡 |
|
|
82
|
+
| [no-array-method-this-argument](docs/rules/no-array-method-this-argument.md) | Disallow using the `this` argument in array methods. | ✅ ☑️ | 🔧 | 💡 |
|
|
83
|
+
| [no-array-reduce](docs/rules/no-array-reduce.md) | Disallow `Array#reduce()` and `Array#reduceRight()`. | ✅ | | |
|
|
84
|
+
| [no-array-reverse](docs/rules/no-array-reverse.md) | Prefer `Array#toReversed()` over `Array#reverse()`. | ✅ ☑️ | | 💡 |
|
|
85
|
+
| [no-array-sort](docs/rules/no-array-sort.md) | Prefer `Array#toSorted()` over `Array#sort()`. | ✅ ☑️ | | 💡 |
|
|
86
|
+
| [no-await-expression-member](docs/rules/no-await-expression-member.md) | Disallow member access from await expression. | ✅ | 🔧 | |
|
|
87
|
+
| [no-await-in-promise-methods](docs/rules/no-await-in-promise-methods.md) | Disallow using `await` in `Promise` method parameters. | ✅ ☑️ | | 💡 |
|
|
88
|
+
| [no-console-spaces](docs/rules/no-console-spaces.md) | Do not use leading/trailing space between `console.log` parameters. | ✅ ☑️ | 🔧 | |
|
|
89
|
+
| [no-document-cookie](docs/rules/no-document-cookie.md) | Do not use `document.cookie` directly. | ✅ ☑️ | | |
|
|
90
|
+
| [no-empty-file](docs/rules/no-empty-file.md) | Disallow empty files. | ✅ ☑️ | | |
|
|
91
|
+
| [no-for-loop](docs/rules/no-for-loop.md) | Do not use a `for` loop that can be replaced with a `for-of` loop. | ✅ | 🔧 | 💡 |
|
|
92
|
+
| [no-hex-escape](docs/rules/no-hex-escape.md) | Enforce the use of Unicode escapes instead of hexadecimal escapes. | ✅ ☑️ | 🔧 | |
|
|
93
|
+
| [no-instanceof-builtins](docs/rules/no-instanceof-builtins.md) | Disallow `instanceof` with built-in objects | ✅ ☑️ | 🔧 | 💡 |
|
|
94
|
+
| [no-invalid-fetch-options](docs/rules/no-invalid-fetch-options.md) | Disallow invalid options in `fetch()` and `new Request()`. | ✅ ☑️ | | |
|
|
95
|
+
| [no-invalid-remove-event-listener](docs/rules/no-invalid-remove-event-listener.md) | Prevent calling `EventTarget#removeEventListener()` with the result of an expression. | ✅ ☑️ | | |
|
|
96
|
+
| [no-keyword-prefix](docs/rules/no-keyword-prefix.md) | Disallow identifiers starting with `new` or `class`. | | | |
|
|
97
|
+
| [no-lonely-if](docs/rules/no-lonely-if.md) | Disallow `if` statements as the only statement in `if` blocks without `else`. | ✅ ☑️ | 🔧 | |
|
|
98
|
+
| [no-magic-array-flat-depth](docs/rules/no-magic-array-flat-depth.md) | Disallow a magic number as the `depth` argument in `Array#flat(…).` | ✅ ☑️ | | |
|
|
99
|
+
| [no-named-default](docs/rules/no-named-default.md) | Disallow named usage of default import and export. | ✅ ☑️ | 🔧 | |
|
|
100
|
+
| [no-negated-condition](docs/rules/no-negated-condition.md) | Disallow negated conditions. | ✅ ☑️ | 🔧 | |
|
|
101
|
+
| [no-negation-in-equality-check](docs/rules/no-negation-in-equality-check.md) | Disallow negated expression in equality check. | ✅ ☑️ | | 💡 |
|
|
102
|
+
| [no-nested-ternary](docs/rules/no-nested-ternary.md) | Disallow nested ternary expressions. | ✅ | 🔧 | |
|
|
103
|
+
| [no-new-array](docs/rules/no-new-array.md) | Disallow `new Array()`. | ✅ ☑️ | 🔧 | 💡 |
|
|
104
|
+
| [no-new-buffer](docs/rules/no-new-buffer.md) | Enforce the use of `Buffer.from()` and `Buffer.alloc()` instead of the deprecated `new Buffer()`. | ✅ ☑️ | 🔧 | 💡 |
|
|
105
|
+
| [no-null](docs/rules/no-null.md) | Disallow the use of the `null` literal. | ✅ | 🔧 | 💡 |
|
|
106
|
+
| [no-object-as-default-parameter](docs/rules/no-object-as-default-parameter.md) | Disallow the use of objects as default parameters. | ✅ ☑️ | | |
|
|
107
|
+
| [no-process-exit](docs/rules/no-process-exit.md) | Disallow `process.exit()`. | ✅ ☑️ | | |
|
|
108
|
+
| [no-single-promise-in-promise-methods](docs/rules/no-single-promise-in-promise-methods.md) | Disallow passing single-element arrays to `Promise` methods. | ✅ ☑️ | 🔧 | 💡 |
|
|
109
|
+
| [no-static-only-class](docs/rules/no-static-only-class.md) | Disallow classes that only have static members. | ✅ ☑️ | 🔧 | |
|
|
110
|
+
| [no-thenable](docs/rules/no-thenable.md) | Disallow `then` property. | ✅ ☑️ | | |
|
|
111
|
+
| [no-this-assignment](docs/rules/no-this-assignment.md) | Disallow assigning `this` to a variable. | ✅ ☑️ | | |
|
|
112
|
+
| [no-typeof-undefined](docs/rules/no-typeof-undefined.md) | Disallow comparing `undefined` using `typeof`. | ✅ ☑️ | 🔧 | 💡 |
|
|
113
|
+
| [no-unnecessary-array-flat-depth](docs/rules/no-unnecessary-array-flat-depth.md) | Disallow using `1` as the `depth` argument of `Array#flat()`. | ✅ ☑️ | 🔧 | |
|
|
114
|
+
| [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}()`. | ✅ ☑️ | 🔧 | |
|
|
115
|
+
| [no-unnecessary-await](docs/rules/no-unnecessary-await.md) | Disallow awaiting non-promise values. | ✅ ☑️ | 🔧 | |
|
|
116
|
+
| [no-unnecessary-polyfills](docs/rules/no-unnecessary-polyfills.md) | Enforce the use of built-in methods instead of unnecessary polyfills. | ✅ ☑️ | | |
|
|
117
|
+
| [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()`. | ✅ ☑️ | 🔧 | |
|
|
118
|
+
| [no-unreadable-array-destructuring](docs/rules/no-unreadable-array-destructuring.md) | Disallow unreadable array destructuring. | ✅ ☑️ | 🔧 | |
|
|
119
|
+
| [no-unreadable-iife](docs/rules/no-unreadable-iife.md) | Disallow unreadable IIFEs. | ✅ ☑️ | | |
|
|
120
|
+
| [no-unused-properties](docs/rules/no-unused-properties.md) | Disallow unused object properties. | | | |
|
|
121
|
+
| [no-useless-error-capture-stack-trace](docs/rules/no-useless-error-capture-stack-trace.md) | Disallow unnecessary `Error.captureStackTrace(…)`. | ✅ ☑️ | 🔧 | |
|
|
122
|
+
| [no-useless-fallback-in-spread](docs/rules/no-useless-fallback-in-spread.md) | Disallow useless fallback when spreading in object literals. | ✅ ☑️ | 🔧 | |
|
|
123
|
+
| [no-useless-length-check](docs/rules/no-useless-length-check.md) | Disallow useless array length check. | ✅ ☑️ | 🔧 | |
|
|
124
|
+
| [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 | ✅ ☑️ | 🔧 | |
|
|
125
|
+
| [no-useless-spread](docs/rules/no-useless-spread.md) | Disallow unnecessary spread. | ✅ ☑️ | 🔧 | |
|
|
126
|
+
| [no-useless-switch-case](docs/rules/no-useless-switch-case.md) | Disallow useless case in switch statements. | ✅ ☑️ | | 💡 |
|
|
127
|
+
| [no-useless-undefined](docs/rules/no-useless-undefined.md) | Disallow useless `undefined`. | ✅ ☑️ | 🔧 | |
|
|
128
|
+
| [no-zero-fractions](docs/rules/no-zero-fractions.md) | Disallow number literals with zero fractions or dangling dots. | ✅ ☑️ | 🔧 | |
|
|
129
|
+
| [number-literal-case](docs/rules/number-literal-case.md) | Enforce proper case for numeric literals. | ✅ ☑️ | 🔧 | |
|
|
130
|
+
| [numeric-separators-style](docs/rules/numeric-separators-style.md) | Enforce the style of numeric separators by correctly grouping digits. | ✅ ☑️ | 🔧 | |
|
|
131
|
+
| [prefer-add-event-listener](docs/rules/prefer-add-event-listener.md) | Prefer `.addEventListener()` and `.removeEventListener()` over `on`-functions. | ✅ ☑️ | 🔧 | |
|
|
132
|
+
| [prefer-array-find](docs/rules/prefer-array-find.md) | Prefer `.find(…)` and `.findLast(…)` over the first or last element from `.filter(…)`. | ✅ ☑️ | 🔧 | 💡 |
|
|
133
|
+
| [prefer-array-flat](docs/rules/prefer-array-flat.md) | Prefer `Array#flat()` over legacy techniques to flatten arrays. | ✅ ☑️ | 🔧 | |
|
|
134
|
+
| [prefer-array-flat-map](docs/rules/prefer-array-flat-map.md) | Prefer `.flatMap(…)` over `.map(…).flat()`. | ✅ ☑️ | 🔧 | |
|
|
135
|
+
| [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. | ✅ ☑️ | 🔧 | 💡 |
|
|
136
|
+
| [prefer-array-some](docs/rules/prefer-array-some.md) | Prefer `.some(…)` over `.filter(…).length` check and `.{find,findLast,findIndex,findLastIndex}(…)`. | ✅ ☑️ | 🔧 | 💡 |
|
|
137
|
+
| [prefer-at](docs/rules/prefer-at.md) | Prefer `.at()` method for index access and `String#charAt()`. | ✅ ☑️ | 🔧 | 💡 |
|
|
138
|
+
| [prefer-bigint-literals](docs/rules/prefer-bigint-literals.md) | Prefer `BigInt` literals over the constructor. | ✅ ☑️ | 🔧 | 💡 |
|
|
139
|
+
| [prefer-blob-reading-methods](docs/rules/prefer-blob-reading-methods.md) | Prefer `Blob#arrayBuffer()` over `FileReader#readAsArrayBuffer(…)` and `Blob#text()` over `FileReader#readAsText(…)`. | ✅ ☑️ | | |
|
|
140
|
+
| [prefer-class-fields](docs/rules/prefer-class-fields.md) | Prefer class field declarations over `this` assignments in constructors. | ✅ ☑️ | 🔧 | 💡 |
|
|
141
|
+
| [prefer-classlist-toggle](docs/rules/prefer-classlist-toggle.md) | Prefer using `Element#classList.toggle()` to toggle class names. | ✅ ☑️ | 🔧 | 💡 |
|
|
142
|
+
| [prefer-code-point](docs/rules/prefer-code-point.md) | Prefer `String#codePointAt(…)` over `String#charCodeAt(…)` and `String.fromCodePoint(…)` over `String.fromCharCode(…)`. | ✅ ☑️ | | 💡 |
|
|
143
|
+
| [prefer-date-now](docs/rules/prefer-date-now.md) | Prefer `Date.now()` to get the number of milliseconds since the Unix Epoch. | ✅ ☑️ | 🔧 | |
|
|
144
|
+
| [prefer-default-parameters](docs/rules/prefer-default-parameters.md) | Prefer default parameters over reassignment. | ✅ ☑️ | | 💡 |
|
|
145
|
+
| [prefer-dom-node-append](docs/rules/prefer-dom-node-append.md) | Prefer `Node#append()` over `Node#appendChild()`. | ✅ ☑️ | 🔧 | |
|
|
146
|
+
| [prefer-dom-node-dataset](docs/rules/prefer-dom-node-dataset.md) | Prefer using `.dataset` on DOM elements over calling attribute methods. | ✅ ☑️ | 🔧 | |
|
|
147
|
+
| [prefer-dom-node-remove](docs/rules/prefer-dom-node-remove.md) | Prefer `childNode.remove()` over `parentNode.removeChild(childNode)`. | ✅ ☑️ | 🔧 | 💡 |
|
|
148
|
+
| [prefer-dom-node-text-content](docs/rules/prefer-dom-node-text-content.md) | Prefer `.textContent` over `.innerText`. | ✅ ☑️ | | 💡 |
|
|
149
|
+
| [prefer-event-target](docs/rules/prefer-event-target.md) | Prefer `EventTarget` over `EventEmitter`. | ✅ ☑️ | | |
|
|
150
|
+
| [prefer-export-from](docs/rules/prefer-export-from.md) | Prefer `export…from` when re-exporting. | ✅ | 🔧 | 💡 |
|
|
151
|
+
| [prefer-global-this](docs/rules/prefer-global-this.md) | Prefer `globalThis` over `window`, `self`, and `global`. | ✅ ☑️ | 🔧 | |
|
|
152
|
+
| [prefer-import-meta-properties](docs/rules/prefer-import-meta-properties.md) | Prefer `import.meta.{dirname,filename}` over legacy techniques for getting file paths. | | 🔧 | |
|
|
153
|
+
| [prefer-includes](docs/rules/prefer-includes.md) | Prefer `.includes()` over `.indexOf()`, `.lastIndexOf()`, and `Array#some()` when checking for existence or non-existence. | ✅ ☑️ | 🔧 | 💡 |
|
|
154
|
+
| [prefer-json-parse-buffer](docs/rules/prefer-json-parse-buffer.md) | Prefer reading a JSON file as a buffer. | | 🔧 | |
|
|
155
|
+
| [prefer-keyboard-event-key](docs/rules/prefer-keyboard-event-key.md) | Prefer `KeyboardEvent#key` over `KeyboardEvent#keyCode`. | ✅ ☑️ | 🔧 | |
|
|
156
|
+
| [prefer-logical-operator-over-ternary](docs/rules/prefer-logical-operator-over-ternary.md) | Prefer using a logical operator over a ternary. | ✅ ☑️ | | 💡 |
|
|
157
|
+
| [prefer-math-min-max](docs/rules/prefer-math-min-max.md) | Prefer `Math.min()` and `Math.max()` over ternaries for simple comparisons. | ✅ ☑️ | 🔧 | |
|
|
158
|
+
| [prefer-math-trunc](docs/rules/prefer-math-trunc.md) | Enforce the use of `Math.trunc` instead of bitwise operators. | ✅ ☑️ | 🔧 | 💡 |
|
|
159
|
+
| [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()`. | ✅ ☑️ | 🔧 | |
|
|
160
|
+
| [prefer-modern-math-apis](docs/rules/prefer-modern-math-apis.md) | Prefer modern `Math` APIs over legacy patterns. | ✅ ☑️ | 🔧 | |
|
|
161
|
+
| [prefer-module](docs/rules/prefer-module.md) | Prefer JavaScript modules (ESM) over CommonJS. | ✅ ☑️ | 🔧 | 💡 |
|
|
162
|
+
| [prefer-native-coercion-functions](docs/rules/prefer-native-coercion-functions.md) | Prefer using `String`, `Number`, `BigInt`, `Boolean`, and `Symbol` directly. | ✅ ☑️ | 🔧 | |
|
|
163
|
+
| [prefer-negative-index](docs/rules/prefer-negative-index.md) | Prefer negative index over `.length - index` when possible. | ✅ ☑️ | 🔧 | |
|
|
164
|
+
| [prefer-node-protocol](docs/rules/prefer-node-protocol.md) | Prefer using the `node:` protocol when importing Node.js builtin modules. | ✅ ☑️ | 🔧 | |
|
|
165
|
+
| [prefer-number-properties](docs/rules/prefer-number-properties.md) | Prefer `Number` static properties over global ones. | ✅ ☑️ | 🔧 | 💡 |
|
|
166
|
+
| [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. | ✅ ☑️ | 🔧 | |
|
|
167
|
+
| [prefer-optional-catch-binding](docs/rules/prefer-optional-catch-binding.md) | Prefer omitting the `catch` binding parameter. | ✅ ☑️ | 🔧 | |
|
|
168
|
+
| [prefer-prototype-methods](docs/rules/prefer-prototype-methods.md) | Prefer borrowing methods from the prototype instead of the instance. | ✅ ☑️ | 🔧 | |
|
|
169
|
+
| [prefer-query-selector](docs/rules/prefer-query-selector.md) | Prefer `.querySelector()` over `.getElementById()`, `.querySelectorAll()` over `.getElementsByClassName()` and `.getElementsByTagName()` and `.getElementsByName()`. | ✅ | 🔧 | |
|
|
170
|
+
| [prefer-reflect-apply](docs/rules/prefer-reflect-apply.md) | Prefer `Reflect.apply()` over `Function#apply()`. | ✅ ☑️ | 🔧 | |
|
|
171
|
+
| [prefer-regexp-test](docs/rules/prefer-regexp-test.md) | Prefer `RegExp#test()` over `String#match()` and `RegExp#exec()`. | ✅ ☑️ | 🔧 | 💡 |
|
|
172
|
+
| [prefer-set-has](docs/rules/prefer-set-has.md) | Prefer `Set#has()` over `Array#includes()` when checking for existence or non-existence. | ✅ ☑️ | 🔧 | 💡 |
|
|
173
|
+
| [prefer-set-size](docs/rules/prefer-set-size.md) | Prefer using `Set#size` instead of `Array#length`. | ✅ ☑️ | 🔧 | |
|
|
174
|
+
| [prefer-single-call](docs/rules/prefer-single-call.md) | Enforce combining multiple `Array#push()`, `Element#classList.{add,remove}()`, and `importScripts()` into one call. | ✅ ☑️ | 🔧 | 💡 |
|
|
175
|
+
| [prefer-spread](docs/rules/prefer-spread.md) | Prefer the spread operator over `Array.from(…)`, `Array#concat(…)`, `Array#{slice,toSpliced}()` and `String#split('')`. | ✅ | 🔧 | 💡 |
|
|
176
|
+
| [prefer-string-raw](docs/rules/prefer-string-raw.md) | Prefer using the `String.raw` tag to avoid escaping `\`. | ✅ ☑️ | 🔧 | |
|
|
177
|
+
| [prefer-string-replace-all](docs/rules/prefer-string-replace-all.md) | Prefer `String#replaceAll()` over regex searches with the global flag. | ✅ ☑️ | 🔧 | |
|
|
178
|
+
| [prefer-string-slice](docs/rules/prefer-string-slice.md) | Prefer `String#slice()` over `String#substr()` and `String#substring()`. | ✅ ☑️ | 🔧 | |
|
|
179
|
+
| [prefer-string-starts-ends-with](docs/rules/prefer-string-starts-ends-with.md) | Prefer `String#startsWith()` & `String#endsWith()` over `RegExp#test()`. | ✅ ☑️ | 🔧 | 💡 |
|
|
180
|
+
| [prefer-string-trim-start-end](docs/rules/prefer-string-trim-start-end.md) | Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`. | ✅ ☑️ | 🔧 | |
|
|
181
|
+
| [prefer-structured-clone](docs/rules/prefer-structured-clone.md) | Prefer using `structuredClone` to create a deep clone. | ✅ ☑️ | | 💡 |
|
|
182
|
+
| [prefer-switch](docs/rules/prefer-switch.md) | Prefer `switch` over multiple `else-if`. | ✅ ☑️ | 🔧 | |
|
|
183
|
+
| [prefer-ternary](docs/rules/prefer-ternary.md) | Prefer ternary expressions over simple `if-else` statements. | ✅ ☑️ | 🔧 | |
|
|
184
|
+
| [prefer-top-level-await](docs/rules/prefer-top-level-await.md) | Prefer top-level await over top-level promises and async function calls. | ✅ ☑️ | | 💡 |
|
|
185
|
+
| [prefer-type-error](docs/rules/prefer-type-error.md) | Enforce throwing `TypeError` in type checking conditions. | ✅ ☑️ | 🔧 | |
|
|
186
|
+
| [prevent-abbreviations](docs/rules/prevent-abbreviations.md) | Prevent abbreviations. | ✅ | 🔧 | |
|
|
187
|
+
| [relative-url-style](docs/rules/relative-url-style.md) | Enforce consistent relative URL style. | ✅ ☑️ | 🔧 | 💡 |
|
|
188
|
+
| [require-array-join-separator](docs/rules/require-array-join-separator.md) | Enforce using the separator argument with `Array#join()`. | ✅ ☑️ | 🔧 | |
|
|
189
|
+
| [require-module-attributes](docs/rules/require-module-attributes.md) | Require non-empty module attributes for imports and exports | ✅ ☑️ | 🔧 | |
|
|
190
|
+
| [require-module-specifiers](docs/rules/require-module-specifiers.md) | Require non-empty specifier list in import and export statements. | ✅ ☑️ | 🔧 | 💡 |
|
|
191
|
+
| [require-number-to-fixed-digits-argument](docs/rules/require-number-to-fixed-digits-argument.md) | Enforce using the digits argument with `Number#toFixed()`. | ✅ ☑️ | 🔧 | |
|
|
192
|
+
| [require-post-message-target-origin](docs/rules/require-post-message-target-origin.md) | Enforce using the `targetOrigin` argument with `window.postMessage()`. | | | 💡 |
|
|
193
|
+
| [string-content](docs/rules/string-content.md) | Enforce better string content. | | 🔧 | 💡 |
|
|
194
|
+
| [switch-case-braces](docs/rules/switch-case-braces.md) | Enforce consistent brace style for `case` clauses. | ✅ | 🔧 | |
|
|
195
|
+
| [template-indent](docs/rules/template-indent.md) | Fix whitespace-insensitive template indentation. | ✅ | 🔧 | |
|
|
196
|
+
| [text-encoding-identifier-case](docs/rules/text-encoding-identifier-case.md) | Enforce consistent case for text encoding identifiers. | ✅ ☑️ | 🔧 | 💡 |
|
|
197
|
+
| [throw-new-error](docs/rules/throw-new-error.md) | Require `new` when creating an error. | ✅ ☑️ | 🔧 | |
|
|
193
198
|
|
|
194
199
|
<!-- end auto-generated rules list -->
|
|
195
200
|
|
package/rules/ast/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {isNumericLiteral} from './literal.js';
|
|
2
2
|
|
|
3
3
|
export default function isNegativeOne(node) {
|
|
4
4
|
return node?.type === 'UnaryExpression'
|
|
5
5
|
&& node.operator === '-'
|
|
6
|
-
&&
|
|
6
|
+
&& isNumericLiteral(node.argument)
|
|
7
7
|
&& node.argument.value === 1;
|
|
8
8
|
}
|
package/rules/ast/literal.js
CHANGED
|
@@ -12,7 +12,7 @@ export function isLiteral(node, value) {
|
|
|
12
12
|
|
|
13
13
|
export const isStringLiteral = node => node?.type === 'Literal' && typeof node.value === 'string';
|
|
14
14
|
|
|
15
|
-
export const
|
|
15
|
+
export const isNumericLiteral = node => node.type === 'Literal' && typeof node.value === 'number';
|
|
16
16
|
|
|
17
17
|
export const isRegexLiteral = node => node.type === 'Literal' && Boolean(node.regex);
|
|
18
18
|
|
|
@@ -21,13 +21,11 @@ const isPromiseCatchParameter = node =>
|
|
|
21
21
|
method: 'then',
|
|
22
22
|
argumentsLength: 2,
|
|
23
23
|
optionalCall: false,
|
|
24
|
-
optionalMember: false,
|
|
25
24
|
})
|
|
26
25
|
|| isMethodCall(node.parent.parent, {
|
|
27
26
|
method: 'catch',
|
|
28
27
|
argumentsLength: 1,
|
|
29
28
|
optionalCall: false,
|
|
30
|
-
optionalMember: false,
|
|
31
29
|
})
|
|
32
30
|
)
|
|
33
31
|
&& node.parent.parent.arguments.at(-1) === node.parent;
|