eslint-plugin-unicorn 63.0.0 → 65.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.js +26 -18
- package/package.json +32 -30
- package/readme.md +183 -147
- package/rules/ast/call-or-new-expression.js +3 -5
- package/rules/ast/literal.js +1 -6
- package/rules/better-dom-traversing.js +291 -0
- package/rules/catch-error-name.js +3 -3
- package/rules/consistent-compound-words.js +452 -0
- package/rules/consistent-destructuring.js +234 -22
- package/rules/consistent-function-scoping.js +35 -11
- package/rules/consistent-json-file-read.js +245 -0
- package/rules/consistent-template-literal-escape.js +52 -0
- package/rules/custom-error-definition.js +176 -71
- package/rules/dom-node-dataset.js +431 -0
- package/rules/escape-case.js +2 -1
- package/rules/expiring-todo-comments.js +56 -102
- package/rules/explicit-length-check.js +145 -33
- package/rules/filename-case.js +97 -13
- package/rules/fix/append-argument.js +1 -1
- package/rules/fix/remove-expression-statement.js +1 -0
- package/rules/import-style.js +30 -10
- package/rules/index.js +37 -3
- package/rules/isolated-functions.js +11 -5
- package/rules/no-accessor-recursion.js +1 -2
- package/rules/no-anonymous-default-export.js +9 -11
- package/rules/no-array-callback-reference.js +148 -22
- package/rules/no-array-fill-with-reference-type.js +127 -0
- package/rules/no-array-for-each.js +18 -3
- package/rules/no-array-from-fill.js +76 -0
- package/rules/no-array-method-this-argument.js +1 -1
- package/rules/no-array-reduce.js +509 -2
- package/rules/no-blob-to-file.js +299 -0
- package/rules/no-canvas-to-image.js +152 -0
- package/rules/no-confusing-array-splice.js +164 -0
- package/rules/no-duplicate-set-values.js +57 -0
- package/rules/no-empty-file.js +31 -2
- package/rules/no-exports-in-scripts.js +34 -0
- package/rules/no-for-loop.js +1 -5
- package/rules/no-hex-escape.js +1 -1
- package/rules/no-incorrect-query-selector.js +347 -0
- package/rules/no-instanceof-builtins.js +4 -6
- package/rules/no-invalid-fetch-options.js +1 -1
- package/rules/no-invalid-file-input-accept.js +475 -0
- package/rules/no-keyword-prefix.js +23 -5
- package/rules/no-late-current-target-access.js +166 -0
- package/rules/no-lonely-if.js +152 -52
- package/rules/no-manually-wrapped-comments.js +151 -0
- package/rules/no-null.js +16 -5
- package/rules/no-process-exit.js +1 -1
- package/rules/no-this-outside-of-class.js +75 -0
- package/rules/no-typeof-undefined.js +7 -4
- package/rules/no-unnecessary-nested-ternary.js +132 -0
- package/rules/no-unnecessary-polyfills.js +253 -24
- package/rules/no-unreadable-iife.js +33 -3
- package/rules/no-unused-array-method-return.js +301 -0
- package/rules/no-unused-properties.js +13 -19
- package/rules/no-useless-iterator-to-array.js +249 -0
- package/rules/no-useless-length-check.js +5 -11
- package/rules/no-useless-promise-resolve-reject.js +5 -5
- package/rules/no-useless-spread.js +53 -4
- package/rules/no-useless-undefined.js +62 -46
- package/rules/numeric-separators-style.js +17 -6
- package/rules/prefer-add-event-listener.js +1 -0
- package/rules/prefer-array-find.js +1 -0
- package/rules/prefer-array-flat.js +76 -8
- package/rules/prefer-array-last-methods.js +93 -0
- package/rules/prefer-array-some.js +74 -8
- package/rules/prefer-at.js +118 -57
- package/rules/prefer-class-fields.js +2 -4
- package/rules/prefer-default-parameters.js +1 -2
- package/rules/prefer-dom-node-append.js +2 -2
- package/rules/prefer-dom-node-remove.js +24 -18
- package/rules/prefer-export-from.js +8 -7
- package/rules/prefer-get-or-insert-computed.js +159 -0
- package/rules/prefer-global-this.js +33 -29
- package/rules/prefer-https.js +83 -0
- package/rules/prefer-includes-over-repeated-comparisons.js +199 -0
- package/rules/prefer-iterator-concat.js +174 -0
- package/rules/prefer-iterator-to-array-at-end.js +123 -0
- package/rules/prefer-keyboard-event-key.js +202 -76
- package/rules/prefer-logical-operator-over-ternary.js +1 -1
- package/rules/prefer-math-abs.js +397 -0
- package/rules/prefer-math-min-max.js +54 -26
- package/rules/prefer-module.js +5 -7
- package/rules/prefer-native-coercion-functions.js +8 -1
- package/rules/prefer-node-protocol.js +7 -4
- package/rules/prefer-number-properties.js +2 -0
- package/rules/prefer-object-from-entries.js +12 -7
- package/rules/prefer-prototype-methods.js +1 -3
- package/rules/prefer-query-selector.js +119 -7
- package/rules/prefer-queue-microtask.js +204 -0
- package/rules/prefer-regexp-test.js +166 -20
- package/rules/prefer-set-has.js +474 -47
- package/rules/prefer-simple-condition-first.js +282 -0
- package/rules/prefer-single-call.js +129 -38
- package/rules/prefer-split-limit.js +107 -0
- package/rules/prefer-spread.js +150 -19
- package/rules/prefer-string-match-all.js +352 -0
- package/rules/prefer-string-pad-start-end.js +380 -0
- package/rules/prefer-string-raw.js +90 -19
- package/rules/prefer-string-repeat.js +173 -0
- package/rules/prefer-string-replace-all.js +180 -12
- package/rules/prefer-string-slice.js +55 -4
- package/rules/prefer-string-starts-ends-with.js +2 -2
- package/rules/prefer-structured-clone.js +1 -0
- package/rules/prefer-switch.js +2 -0
- package/rules/prefer-ternary.js +3 -2
- package/rules/prefer-top-level-await.js +168 -6
- package/rules/prevent-abbreviations.js +144 -158
- package/rules/relative-url-style.js +1 -0
- package/rules/require-css-escape.js +141 -0
- package/rules/require-module-attributes.js +16 -18
- package/rules/require-module-specifiers.js +62 -0
- package/rules/require-passive-events.js +292 -0
- package/rules/rule/to-eslint-rule.js +1 -1
- package/rules/rule/to-eslint-rules.js +4 -6
- package/rules/shared/abbreviations.js +1 -0
- package/rules/shared/dom-events.js +7 -7
- package/rules/shared/identifier-checks.js +205 -0
- package/rules/shared/package-json.js +1 -1
- package/rules/string-content.js +35 -5
- package/rules/switch-case-braces.js +2 -3
- package/rules/switch-case-break-position.js +138 -0
- package/rules/template-indent.js +59 -3
- package/rules/text-encoding-identifier-case.js +23 -5
- package/rules/throw-new-error.js +4 -0
- package/rules/try-complexity.js +184 -0
- package/rules/utils/assert-token.js +3 -5
- package/rules/utils/boolean.js +37 -28
- package/rules/utils/create-deprecated-rules.js +25 -27
- package/rules/utils/get-call-expression-arguments-text.js +3 -5
- package/rules/utils/get-duplicate-array-elements.js +77 -0
- package/rules/utils/index.js +4 -1
- package/rules/utils/is-node-contains-lexical-this.js +65 -0
- package/rules/utils/is-number.js +2 -2
- package/rules/utils/is-same-reference.js +25 -17
- package/rules/utils/should-add-parentheses-to-await-expression-argument.js +9 -9
- package/rules/utils/should-add-parentheses-to-call-expression-callee.js +12 -10
- package/rules/utils/should-add-parentheses-to-conditional-expression-child.js +9 -5
- package/rules/utils/should-add-parentheses-to-expression-statement-expression.js +1 -1
- package/rules/utils/should-add-parentheses-to-logical-expression-child.js +12 -8
- package/rules/utils/should-add-parentheses-to-member-expression-object.js +1 -1
- package/rules/utils/should-add-parentheses-to-unary-expression.js +10 -10
- package/rules/better-regex.js +0 -145
- package/rules/prefer-dom-node-dataset.js +0 -135
- package/rules/prefer-json-parse-buffer.js +0 -161
package/index.js
CHANGED
|
@@ -7,6 +7,10 @@ import packageJson from './package.json' with {type: 'json'};
|
|
|
7
7
|
const rules = toEslintRules(rawRules);
|
|
8
8
|
|
|
9
9
|
const deprecatedRules = createDeprecatedRules({
|
|
10
|
+
'better-regex': {
|
|
11
|
+
message: 'Removed. Prefer `eslint-plugin-regexp`',
|
|
12
|
+
replacedBy: [],
|
|
13
|
+
},
|
|
10
14
|
'no-instanceof-array': {
|
|
11
15
|
message: 'Replaced by `unicorn/no-instanceof-builtins` which covers more cases.',
|
|
12
16
|
replacedBy: ['unicorn/no-instanceof-builtins'],
|
|
@@ -19,6 +23,14 @@ const deprecatedRules = createDeprecatedRules({
|
|
|
19
23
|
message: 'Replaced by `unicorn/prefer-single-call` which covers more cases.',
|
|
20
24
|
replacedBy: ['unicorn/prefer-single-call'],
|
|
21
25
|
},
|
|
26
|
+
'prefer-json-parse-buffer': {
|
|
27
|
+
message: 'Renamed to `unicorn/consistent-json-file-read`.',
|
|
28
|
+
replacedBy: ['unicorn/consistent-json-file-read'],
|
|
29
|
+
},
|
|
30
|
+
'prefer-dom-node-dataset': {
|
|
31
|
+
message: 'Renamed to `unicorn/dom-node-dataset`.',
|
|
32
|
+
replacedBy: ['unicorn/dom-node-dataset'],
|
|
33
|
+
},
|
|
22
34
|
});
|
|
23
35
|
|
|
24
36
|
const externalRules = {
|
|
@@ -28,26 +40,22 @@ const externalRules = {
|
|
|
28
40
|
'no-nested-ternary': 'off',
|
|
29
41
|
};
|
|
30
42
|
|
|
31
|
-
const recommendedRules = Object.fromEntries(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
)
|
|
43
|
+
const recommendedRules = Object.fromEntries(Object.entries(rules).map(([id, rule]) => [
|
|
44
|
+
`unicorn/${id}`,
|
|
45
|
+
rule.meta.docs.recommended ? 'error' : 'off',
|
|
46
|
+
]));
|
|
47
|
+
|
|
48
|
+
const unopinionatedRules = Object.fromEntries(Object.entries(rules).map(([id, rule]) => [
|
|
49
|
+
`unicorn/${id}`,
|
|
50
|
+
rule.meta.docs.recommended === 'unopinionated' ? 'error' : 'off',
|
|
51
|
+
]));
|
|
37
52
|
|
|
38
|
-
|
|
39
|
-
Object.entries(rules).map(([id, rule]) => [
|
|
40
|
-
`unicorn/${id}`,
|
|
41
|
-
rule.meta.docs.recommended === 'unopinionated' ? 'error' : 'off',
|
|
42
|
-
]),
|
|
43
|
-
);
|
|
53
|
+
// TODO: Enable `prefer-iterator-concat` in the recommended and unopinionated configs when targeting Node.js 26.
|
|
44
54
|
|
|
45
|
-
const allRules = Object.fromEntries(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
]),
|
|
50
|
-
);
|
|
55
|
+
const allRules = Object.fromEntries(Object.keys(rules).map(id => [
|
|
56
|
+
`unicorn/${id}`,
|
|
57
|
+
'error',
|
|
58
|
+
]));
|
|
51
59
|
|
|
52
60
|
const createConfig = (rules, flatConfigName) => ({
|
|
53
61
|
...flatConfigBase,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-unicorn",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "65.0.0",
|
|
4
4
|
"description": "More than 100 powerful ESLint rules",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "sindresorhus/eslint-plugin-unicorn",
|
|
@@ -57,56 +57,58 @@
|
|
|
57
57
|
],
|
|
58
58
|
"dependencies": {
|
|
59
59
|
"@babel/helper-validator-identifier": "^7.28.5",
|
|
60
|
-
"@eslint-community/eslint-utils": "^4.9.
|
|
60
|
+
"@eslint-community/eslint-utils": "^4.9.1",
|
|
61
61
|
"change-case": "^5.4.4",
|
|
62
|
-
"ci-info": "^4.
|
|
63
|
-
"
|
|
64
|
-
"
|
|
62
|
+
"ci-info": "^4.4.0",
|
|
63
|
+
"core-js-compat": "^3.49.0",
|
|
64
|
+
"detect-indent": "^7.0.2",
|
|
65
65
|
"find-up-simple": "^1.0.1",
|
|
66
|
-
"globals": "^
|
|
66
|
+
"globals": "^17.4.0",
|
|
67
67
|
"indent-string": "^5.0.0",
|
|
68
68
|
"is-builtin-module": "^5.0.0",
|
|
69
69
|
"jsesc": "^3.1.0",
|
|
70
70
|
"pluralize": "^8.0.0",
|
|
71
|
-
"regexp-tree": "^0.1.27",
|
|
72
71
|
"regjsparser": "^0.13.0",
|
|
73
|
-
"semver": "^7.7.
|
|
72
|
+
"semver": "^7.7.4",
|
|
74
73
|
"strip-indent": "^4.1.1"
|
|
75
74
|
},
|
|
76
75
|
"devDependencies": {
|
|
77
|
-
"@babel/code-frame": "^7.
|
|
78
|
-
"@
|
|
79
|
-
"@
|
|
80
|
-
"@eslint/
|
|
76
|
+
"@babel/code-frame": "^7.28.3",
|
|
77
|
+
"@eslint/css": "^0.14.1",
|
|
78
|
+
"@eslint/eslintrc": "^3.3.5",
|
|
79
|
+
"@eslint/json": "^1.2.0",
|
|
80
|
+
"@eslint/markdown": "^8.0.2",
|
|
81
|
+
"@html-eslint/eslint-plugin": "^0.61.0",
|
|
82
|
+
"@html-eslint/parser": "^0.61.0",
|
|
81
83
|
"@lubien/fixture-beta-package": "^1.0.0-beta.1",
|
|
82
|
-
"@typescript-eslint/parser": "^8.
|
|
83
|
-
"@typescript-eslint/types": "^8.
|
|
84
|
-
"ava": "^
|
|
85
|
-
"c8": "^
|
|
84
|
+
"@typescript-eslint/parser": "^8.57.2",
|
|
85
|
+
"@typescript-eslint/types": "^8.57.2",
|
|
86
|
+
"ava": "^7.0.0",
|
|
87
|
+
"c8": "^11.0.0",
|
|
86
88
|
"enquirer": "^2.4.1",
|
|
87
|
-
"eslint": "^10.
|
|
89
|
+
"eslint": "^10.1.0",
|
|
88
90
|
"eslint-ava-rule-tester": "^5.0.1",
|
|
89
|
-
"eslint-config-xo": "^0.
|
|
90
|
-
"eslint-doc-generator": "^
|
|
91
|
-
"eslint-plugin-eslint-plugin": "^7.
|
|
92
|
-
"eslint-plugin-jsdoc": "^
|
|
93
|
-
"eslint-plugin-unicorn": "^
|
|
94
|
-
"eslint-remote-tester": "^4.0.
|
|
91
|
+
"eslint-config-xo": "^0.51.0",
|
|
92
|
+
"eslint-doc-generator": "^3.3.2",
|
|
93
|
+
"eslint-plugin-eslint-plugin": "^7.3.2",
|
|
94
|
+
"eslint-plugin-jsdoc": "^62.8.1",
|
|
95
|
+
"eslint-plugin-unicorn": "^63.0.0",
|
|
96
|
+
"eslint-remote-tester": "^4.0.4",
|
|
95
97
|
"eslint-remote-tester-repositories": "^2.0.2",
|
|
96
|
-
"eslint-scope": "^9.
|
|
97
|
-
"espree": "^
|
|
98
|
-
"listr2": "^
|
|
99
|
-
"markdownlint-cli": "^0.
|
|
98
|
+
"eslint-scope": "^9.1.2",
|
|
99
|
+
"espree": "^11.2.0",
|
|
100
|
+
"listr2": "^10.2.1",
|
|
101
|
+
"markdownlint-cli": "^0.48.0",
|
|
100
102
|
"nano-spawn": "^2.0.0",
|
|
101
103
|
"node-style-text": "^2.1.2",
|
|
102
|
-
"npm-package-json-lint": "^9.
|
|
104
|
+
"npm-package-json-lint": "^9.1.0",
|
|
103
105
|
"npm-run-all2": "^8.0.4",
|
|
104
106
|
"open-editor": "^6.0.0",
|
|
105
107
|
"outdent": "^0.8.0",
|
|
106
108
|
"pretty-ms": "^9.3.0",
|
|
107
109
|
"typescript": "^5.9.3",
|
|
108
|
-
"vue-eslint-parser": "^10.
|
|
109
|
-
"yaml": "^2.8.
|
|
110
|
+
"vue-eslint-parser": "^10.4.0",
|
|
111
|
+
"yaml": "^2.8.3"
|
|
110
112
|
},
|
|
111
113
|
"peerDependencies": {
|
|
112
114
|
"eslint": ">=9.38.0"
|