@pumpn/eslint-config 17.1.0 → 17.1.3
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/config.js +27 -1
- package/deno.json +19 -18
- package/deno.lock +355 -253
- package/package.json +19 -18
- package/plugins.js +3 -1
- package/rules/import-x/static-analysis.js +1 -38
- package/rules/perfectionist.js +1 -0
- package/rules/promise.js +1 -1
- package/rules/react/_exports.js +1 -0
- package/rules/react/core.js +2 -21
- package/rules/react/debug.js +0 -1
- package/rules/react/dom.js +1 -3
- package/rules/react/jsx.js +18 -0
- package/rules/react/web-api.js +2 -0
- package/rules/sonarjs/problem.js +1 -0
- package/rules/sonarjs/suggestion.js +1 -1
- package/rules/stylistic/comments.js +1 -18
- package/rules/stylistic/spacing.js +1 -0
- package/rules/suggestions.js +7 -2
- package/rules/unicorn.js +47 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pumpn/eslint-config",
|
|
3
|
-
"version": "17.1.
|
|
3
|
+
"version": "17.1.3",
|
|
4
4
|
"description": "standard eslint config for pumpn code projects",
|
|
5
5
|
"main": "config.js",
|
|
6
6
|
"author": "Nano Miratus <nanomiratus@gmail.com>",
|
|
@@ -17,34 +17,35 @@
|
|
|
17
17
|
"test": "echo 'no tests yet'"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"eslint": "^10.0
|
|
20
|
+
"eslint": "^10.5.0"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@eslint-community/eslint-plugin-eslint-comments": "^4.7.
|
|
23
|
+
"@eslint-community/eslint-plugin-eslint-comments": "^4.7.2",
|
|
24
24
|
"@stylistic/eslint-plugin": "^5.10.0",
|
|
25
|
-
"@typescript-eslint/parser": "^8.
|
|
26
|
-
"eslint-import-resolver-typescript": "^4.4.
|
|
25
|
+
"@typescript-eslint/parser": "^8.61.0",
|
|
26
|
+
"eslint-import-resolver-typescript": "^4.4.5",
|
|
27
27
|
"eslint-plugin-command": "^3.5.2",
|
|
28
28
|
"eslint-plugin-depend": "^1.5.0",
|
|
29
29
|
"eslint-plugin-import-x": "^4.16.2",
|
|
30
|
-
"eslint-plugin-jsdoc": "^
|
|
30
|
+
"eslint-plugin-jsdoc": "^63.0.2",
|
|
31
31
|
"eslint-plugin-no-secrets": "^2.3.3",
|
|
32
|
-
"eslint-plugin-perfectionist": "^5.
|
|
33
|
-
"eslint-plugin-promise": "^7.
|
|
34
|
-
"eslint-plugin-react-dom": "^
|
|
35
|
-
"eslint-plugin-react-
|
|
36
|
-
"eslint-plugin-react-
|
|
37
|
-
"eslint-plugin-react-
|
|
38
|
-
"eslint-plugin-react-
|
|
32
|
+
"eslint-plugin-perfectionist": "^5.9.0",
|
|
33
|
+
"eslint-plugin-promise": "^7.3.0",
|
|
34
|
+
"eslint-plugin-react-dom": "^5.9.0",
|
|
35
|
+
"eslint-plugin-react-jsx": "^5.9.0",
|
|
36
|
+
"eslint-plugin-react-naming-convention": "^5.9.0",
|
|
37
|
+
"eslint-plugin-react-rsc": "^5.9.0",
|
|
38
|
+
"eslint-plugin-react-web-api": "^5.9.0",
|
|
39
|
+
"eslint-plugin-react-x": "^5.9.0",
|
|
39
40
|
"eslint-plugin-redos": "^4.5.0",
|
|
40
41
|
"eslint-plugin-regexp": "^3.1.0",
|
|
41
|
-
"eslint-plugin-security": "^4.0.
|
|
42
|
-
"eslint-plugin-sonarjs": "^4.0.
|
|
42
|
+
"eslint-plugin-security": "^4.0.1",
|
|
43
|
+
"eslint-plugin-sonarjs": "^4.0.3",
|
|
43
44
|
"eslint-plugin-tailwindcss": "^4.0.0-beta.0",
|
|
44
|
-
"eslint-plugin-unicorn": "^
|
|
45
|
-
"globals": "^17.
|
|
45
|
+
"eslint-plugin-unicorn": "^65.0.1",
|
|
46
|
+
"globals": "^17.6.0"
|
|
46
47
|
},
|
|
47
48
|
"peerDependencies": {
|
|
48
|
-
"eslint": "^10.0
|
|
49
|
+
"eslint": "^10.5.0"
|
|
49
50
|
}
|
|
50
51
|
}
|
package/plugins.js
CHANGED
|
@@ -12,6 +12,7 @@ import noSecrets from "eslint-plugin-no-secrets";
|
|
|
12
12
|
import perfectionist from "eslint-plugin-perfectionist";
|
|
13
13
|
import promise from "eslint-plugin-promise";
|
|
14
14
|
import reactDom from "eslint-plugin-react-dom";
|
|
15
|
+
import reactJsx from "eslint-plugin-react-jsx";
|
|
15
16
|
import reactNamingConvention from "eslint-plugin-react-naming-convention";
|
|
16
17
|
import reactRsc from "eslint-plugin-react-rsc";
|
|
17
18
|
import reactWebApi from "eslint-plugin-react-web-api";
|
|
@@ -23,7 +24,7 @@ import tailwindcss from "eslint-plugin-tailwindcss";
|
|
|
23
24
|
import unicorn from "eslint-plugin-unicorn";
|
|
24
25
|
|
|
25
26
|
/**
|
|
26
|
-
* @import { Linter
|
|
27
|
+
* @import { Linter } from "eslint"
|
|
27
28
|
*/
|
|
28
29
|
|
|
29
30
|
/**
|
|
@@ -40,6 +41,7 @@ const plugins = /** @type {const} */ ({
|
|
|
40
41
|
|
|
41
42
|
"@eslint-react": react,
|
|
42
43
|
"@eslint-react/dom": reactDom,
|
|
44
|
+
"@eslint-react/jsx": reactJsx,
|
|
43
45
|
"@eslint-react/naming-convention": reactNamingConvention,
|
|
44
46
|
"@eslint-react/rsc": reactRsc,
|
|
45
47
|
"@eslint-react/web-api": reactWebApi,
|
|
@@ -18,44 +18,7 @@ const staticAnalysisRules = {
|
|
|
18
18
|
],
|
|
19
19
|
"import-x/no-relative-packages": "error",
|
|
20
20
|
"import-x/no-relative-parent-imports": "off",
|
|
21
|
-
"import-x/no-restricted-paths":
|
|
22
|
-
"error",
|
|
23
|
-
{
|
|
24
|
-
zones: [
|
|
25
|
-
{
|
|
26
|
-
except: ["**/utilities/_exports.client.js"],
|
|
27
|
-
from: [
|
|
28
|
-
"plugins",
|
|
29
|
-
"routes",
|
|
30
|
-
"static",
|
|
31
|
-
"utilities"
|
|
32
|
-
]
|
|
33
|
-
.map((folderName) => `./${folderName}/**/*`),
|
|
34
|
-
message: "Please use the utilities/_exports.client.js file to import server utilities",
|
|
35
|
-
target: "./islands/**/*"
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
except: ["**/utilities/_exports.server.js"],
|
|
39
|
-
from: [
|
|
40
|
-
"plugins",
|
|
41
|
-
"routes",
|
|
42
|
-
"static",
|
|
43
|
-
"utilities"
|
|
44
|
-
]
|
|
45
|
-
.map((folderName) => `./${folderName}/**/*`),
|
|
46
|
-
message: "Please use the utilities/_exports.server.js file to import server utilities",
|
|
47
|
-
target: [
|
|
48
|
-
"./components/**/*",
|
|
49
|
-
"./logic/**/*",
|
|
50
|
-
"./patches/**/*",
|
|
51
|
-
"./plugins/**/*",
|
|
52
|
-
"./routes/**/*",
|
|
53
|
-
"./static/**/*"
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
]
|
|
57
|
-
}
|
|
58
|
-
],
|
|
21
|
+
"import-x/no-restricted-paths": "off",
|
|
59
22
|
"import-x/no-self-import": "error",
|
|
60
23
|
// TODO [2026-07-01]: Change to "error" when there is a resolver for deno (maybe https://github.com/redabacha/eslint-import-resolver-deno)
|
|
61
24
|
"import-x/no-unresolved": "off",
|
package/rules/perfectionist.js
CHANGED
package/rules/promise.js
CHANGED
|
@@ -28,7 +28,7 @@ const promiseRules = {
|
|
|
28
28
|
"promise/no-native": "off",
|
|
29
29
|
"promise/no-nesting": "error",
|
|
30
30
|
"promise/no-new-statics": "error",
|
|
31
|
-
"promise/no-promise-in-callback": ["error", {
|
|
31
|
+
"promise/no-promise-in-callback": ["error", { exemptDeclarations: false }],
|
|
32
32
|
"promise/no-return-in-finally": "error",
|
|
33
33
|
"promise/no-return-wrap": "error",
|
|
34
34
|
"promise/param-names": [
|
package/rules/react/_exports.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as coreRules } from "./core.js";
|
|
2
2
|
export { default as debugRules } from "./debug.js";
|
|
3
3
|
export { default as domRules } from "./dom.js";
|
|
4
|
+
export { default as jsxRules } from "./jsx.js";
|
|
4
5
|
export { default as namingConventionRules } from "./naming-convention.js";
|
|
5
6
|
export { default as rscRules } from "./rsc.js";
|
|
6
7
|
export { default as webApiRules } from "./web-api.js";
|
package/rules/react/core.js
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
const coreRules = {
|
|
2
|
-
"@eslint-react/component-hook-factories": "error",
|
|
3
2
|
"@eslint-react/error-boundaries": "error",
|
|
4
3
|
"@eslint-react/exhaustive-deps": "error",
|
|
4
|
+
"@eslint-react/globals": "error",
|
|
5
5
|
"@eslint-react/immutability": "error",
|
|
6
|
-
"@eslint-react/jsx-dollar": "error",
|
|
7
|
-
"@eslint-react/jsx-key-before-spread": "error",
|
|
8
|
-
"@eslint-react/jsx-no-comment-textnodes": "error",
|
|
9
|
-
"@eslint-react/jsx-shorthand-boolean": "error",
|
|
10
|
-
"@eslint-react/jsx-shorthand-fragment": "error",
|
|
11
6
|
"@eslint-react/no-access-state-in-setstate": "error",
|
|
12
7
|
"@eslint-react/no-array-index-key": "error",
|
|
13
8
|
"@eslint-react/no-children-count": "error",
|
|
14
9
|
"@eslint-react/no-children-for-each": "error",
|
|
15
10
|
"@eslint-react/no-children-map": "error",
|
|
16
11
|
"@eslint-react/no-children-only": "error",
|
|
17
|
-
"@eslint-react/no-children-prop": "error",
|
|
18
12
|
"@eslint-react/no-children-to-array": "error",
|
|
19
13
|
"@eslint-react/no-class-component": "error",
|
|
20
14
|
"@eslint-react/no-clone-element": "error",
|
|
@@ -32,12 +26,9 @@ const coreRules = {
|
|
|
32
26
|
"@eslint-react/no-missing-component-display-name": "error",
|
|
33
27
|
"@eslint-react/no-missing-key": "error",
|
|
34
28
|
"@eslint-react/no-nested-component-definitions": "error",
|
|
35
|
-
"@eslint-react/no-redundant-should-component-update": "error",
|
|
36
29
|
"@eslint-react/no-set-state-in-component-did-mount": "error",
|
|
37
30
|
"@eslint-react/no-set-state-in-component-did-update": "error",
|
|
38
31
|
"@eslint-react/no-set-state-in-component-will-update": "error",
|
|
39
|
-
"@eslint-react/no-unnecessary-use-callback": "error",
|
|
40
|
-
"@eslint-react/no-unnecessary-use-memo": "error",
|
|
41
32
|
"@eslint-react/no-unnecessary-use-prefix": "error",
|
|
42
33
|
"@eslint-react/no-unsafe-component-will-mount": "error",
|
|
43
34
|
"@eslint-react/no-unsafe-component-will-receive-props": "error",
|
|
@@ -47,22 +38,12 @@ const coreRules = {
|
|
|
47
38
|
"@eslint-react/no-unused-class-component-members": "error",
|
|
48
39
|
"@eslint-react/no-unused-props": "error",
|
|
49
40
|
"@eslint-react/no-unused-state": "error",
|
|
50
|
-
"@eslint-react/no-useless-fragment": [
|
|
51
|
-
"error",
|
|
52
|
-
{
|
|
53
|
-
allowEmptyFragment: false,
|
|
54
|
-
allowExpressions: true
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
|
-
"@eslint-react/prefer-destructuring-assignment": "error",
|
|
58
|
-
"@eslint-react/prefer-namespace-import": "error",
|
|
59
41
|
"@eslint-react/purity": "error",
|
|
60
42
|
"@eslint-react/refs": "error",
|
|
61
43
|
"@eslint-react/rules-of-hooks": "error",
|
|
62
44
|
"@eslint-react/set-state-in-effect": "error",
|
|
63
45
|
"@eslint-react/set-state-in-render": "error",
|
|
64
|
-
"@eslint-react/
|
|
65
|
-
"@eslint-react/unstable-rules-of-state": "error",
|
|
46
|
+
"@eslint-react/static-components": "error",
|
|
66
47
|
"@eslint-react/unsupported-syntax": "error",
|
|
67
48
|
"@eslint-react/use-memo": "error",
|
|
68
49
|
"@eslint-react/use-state": [
|
package/rules/react/debug.js
CHANGED
package/rules/react/dom.js
CHANGED
|
@@ -4,14 +4,12 @@ const domRules = {
|
|
|
4
4
|
"@eslint-react/dom/no-find-dom-node": "error",
|
|
5
5
|
"@eslint-react/dom/no-missing-button-type": "error",
|
|
6
6
|
"@eslint-react/dom/no-missing-iframe-sandbox": "error",
|
|
7
|
-
"@eslint-react/dom/no-namespace": "error",
|
|
8
7
|
"@eslint-react/dom/no-render-return-value": "error",
|
|
9
8
|
"@eslint-react/dom/no-script-url": "error",
|
|
10
9
|
"@eslint-react/dom/no-string-style-prop": "error",
|
|
11
10
|
"@eslint-react/dom/no-unsafe-iframe-sandbox": "error",
|
|
12
11
|
"@eslint-react/dom/no-unsafe-target-blank": "error",
|
|
13
|
-
"@eslint-react/dom/no-void-elements-with-children": "error"
|
|
14
|
-
"@eslint-react/dom/prefer-namespace-import": "error"
|
|
12
|
+
"@eslint-react/dom/no-void-elements-with-children": "error"
|
|
15
13
|
};
|
|
16
14
|
|
|
17
15
|
export default domRules;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const jsxRules = {
|
|
2
|
+
"@eslint-react/jsx/no-children-prop": "error",
|
|
3
|
+
"@eslint-react/jsx/no-children-prop-with-children": "error",
|
|
4
|
+
"@eslint-react/jsx/no-comment-textnodes": "error",
|
|
5
|
+
"@eslint-react/jsx/no-key-after-spread": "error",
|
|
6
|
+
"@eslint-react/jsx/no-leaked-dollar": "error",
|
|
7
|
+
"@eslint-react/jsx/no-leaked-semicolon": "error",
|
|
8
|
+
"@eslint-react/jsx/no-namespace": "error",
|
|
9
|
+
"@eslint-react/jsx/no-useless-fragment": [
|
|
10
|
+
"error",
|
|
11
|
+
{
|
|
12
|
+
allowEmptyFragment: false,
|
|
13
|
+
allowExpressions: true
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default jsxRules;
|
package/rules/react/web-api.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
const namingConventionRules = {
|
|
2
2
|
"@eslint-react/web-api/no-leaked-event-listener": ["error"],
|
|
3
|
+
"@eslint-react/web-api/no-leaked-fetch": ["error"],
|
|
4
|
+
"@eslint-react/web-api/no-leaked-intersection-observer": ["error"],
|
|
3
5
|
"@eslint-react/web-api/no-leaked-interval": ["error"],
|
|
4
6
|
"@eslint-react/web-api/no-leaked-resize-observer": ["error"],
|
|
5
7
|
"@eslint-react/web-api/no-leaked-timeout": ["error"]
|
package/rules/sonarjs/problem.js
CHANGED
|
@@ -33,6 +33,7 @@ const problemRules = {
|
|
|
33
33
|
"sonarjs/disabled-auto-escaping": "error",
|
|
34
34
|
"sonarjs/disabled-resource-integrity": "error",
|
|
35
35
|
"sonarjs/disabled-timeout": "error",
|
|
36
|
+
"sonarjs/dompurify-unsafe-config": "error",
|
|
36
37
|
"sonarjs/empty-string-repetition": "error",
|
|
37
38
|
"sonarjs/encryption-secure-mode": "error",
|
|
38
39
|
"sonarjs/existing-groups": "error",
|
|
@@ -25,7 +25,7 @@ const suggestionRules = {
|
|
|
25
25
|
"sonarjs/file-name-differ-from-class": "off",
|
|
26
26
|
"sonarjs/fixme-tag": "error",
|
|
27
27
|
"sonarjs/function-inside-loop": "error",
|
|
28
|
-
"sonarjs/function-name": "
|
|
28
|
+
"sonarjs/function-name": "off",
|
|
29
29
|
"sonarjs/function-return-type": "error",
|
|
30
30
|
"sonarjs/future-reserved-words": "error",
|
|
31
31
|
"sonarjs/inconsistent-function-call": "error",
|
|
@@ -1,23 +1,6 @@
|
|
|
1
1
|
const commentsRules = {
|
|
2
2
|
"@stylistic/line-comment-position": ["error", { position: "above" }],
|
|
3
|
-
"@stylistic/lines-around-comment":
|
|
4
|
-
"error",
|
|
5
|
-
{
|
|
6
|
-
beforeBlockComment: true,
|
|
7
|
-
beforeLineComment: false,
|
|
8
|
-
afterBlockComment: false,
|
|
9
|
-
afterLineComment: false,
|
|
10
|
-
allowArrayEnd: false,
|
|
11
|
-
allowArrayStart: false,
|
|
12
|
-
allowBlockEnd: false,
|
|
13
|
-
allowBlockStart: false,
|
|
14
|
-
allowClassEnd: false,
|
|
15
|
-
allowClassStart: false,
|
|
16
|
-
allowObjectEnd: false,
|
|
17
|
-
allowObjectStart: false,
|
|
18
|
-
ignorePattern: "/* @type"
|
|
19
|
-
}
|
|
20
|
-
],
|
|
3
|
+
"@stylistic/lines-around-comment": "off",
|
|
21
4
|
"@stylistic/multiline-comment-style": "off",
|
|
22
5
|
"@stylistic/spaced-comment": "off"
|
|
23
6
|
};
|
package/rules/suggestions.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
const minIdentifierLength = 2;
|
|
6
|
-
const maxIdentifierLength =
|
|
6
|
+
const maxIdentifierLength = 40;
|
|
7
7
|
const maxClassesPerFile = 1;
|
|
8
8
|
const maxDepth = 8;
|
|
9
9
|
const maxLinesPerFile = 500;
|
|
@@ -63,7 +63,12 @@ const suggestionsRules = {
|
|
|
63
63
|
{
|
|
64
64
|
min: minIdentifierLength,
|
|
65
65
|
max: maxIdentifierLength,
|
|
66
|
-
exceptions: [
|
|
66
|
+
exceptions: [
|
|
67
|
+
"v",
|
|
68
|
+
"x",
|
|
69
|
+
"y",
|
|
70
|
+
"z"
|
|
71
|
+
],
|
|
67
72
|
properties: "never"
|
|
68
73
|
}
|
|
69
74
|
],
|
package/rules/unicorn.js
CHANGED
|
@@ -38,14 +38,19 @@ const patterns = {
|
|
|
38
38
|
* @satisfies {Linter.RulesRecord}
|
|
39
39
|
*/
|
|
40
40
|
const unicornRules = {
|
|
41
|
+
"unicorn/better-dom-traversing": "error",
|
|
41
42
|
"unicorn/catch-error-name": "error",
|
|
42
43
|
"unicorn/consistent-assert": "error",
|
|
44
|
+
"unicorn/consistent-compound-words": "error",
|
|
43
45
|
"unicorn/consistent-date-clone": "error",
|
|
44
46
|
"unicorn/consistent-destructuring": "error",
|
|
45
47
|
"unicorn/consistent-empty-array-spread": "error",
|
|
46
48
|
"unicorn/consistent-existence-index-check": "error",
|
|
47
49
|
"unicorn/consistent-function-scoping": "error",
|
|
50
|
+
"unicorn/consistent-json-file-read": "error",
|
|
51
|
+
"unicorn/consistent-template-literal-escape": "error",
|
|
48
52
|
"unicorn/custom-error-definition": "error",
|
|
53
|
+
"unicorn/dom-node-dataset": "error",
|
|
49
54
|
"unicorn/empty-brace-spaces": "error",
|
|
50
55
|
"unicorn/error-message": "error",
|
|
51
56
|
"unicorn/escape-case": ["error", "uppercase"],
|
|
@@ -73,22 +78,31 @@ const unicornRules = {
|
|
|
73
78
|
"unicorn/no-accessor-recursion": "error",
|
|
74
79
|
"unicorn/no-anonymous-default-export": "error",
|
|
75
80
|
"unicorn/no-array-callback-reference": "off",
|
|
81
|
+
"unicorn/no-array-fill-with-reference-type": "error",
|
|
76
82
|
"unicorn/no-array-for-each": "error",
|
|
83
|
+
"unicorn/no-array-from-fill": "error",
|
|
77
84
|
"unicorn/no-array-method-this-argument": "error",
|
|
78
85
|
"unicorn/no-array-reduce": "off",
|
|
79
86
|
"unicorn/no-array-reverse": "error",
|
|
80
87
|
"unicorn/no-array-sort": "off",
|
|
81
88
|
"unicorn/no-await-expression-member": "error",
|
|
82
89
|
"unicorn/no-await-in-promise-methods": "error",
|
|
90
|
+
"unicorn/no-blob-to-file": "error",
|
|
91
|
+
"unicorn/no-canvas-to-image": "error",
|
|
92
|
+
"unicorn/no-confusing-array-splice": "error",
|
|
83
93
|
"unicorn/no-console-spaces": "error",
|
|
84
94
|
"unicorn/no-document-cookie": "error",
|
|
85
|
-
"unicorn/no-
|
|
95
|
+
"unicorn/no-duplicate-set-values": "error",
|
|
96
|
+
"unicorn/no-empty-file": ["error", { allowComments: true }],
|
|
97
|
+
"unicorn/no-exports-in-scripts": "error",
|
|
86
98
|
"unicorn/no-for-loop": "error",
|
|
87
99
|
"unicorn/no-hex-escape": "error",
|
|
88
100
|
"unicorn/no-immediate-mutation": "error",
|
|
101
|
+
"unicorn/no-incorrect-query-selector": "error",
|
|
89
102
|
"unicorn/no-instanceof-array": "error",
|
|
90
103
|
"unicorn/no-instanceof-builtins": "error",
|
|
91
104
|
"unicorn/no-invalid-fetch-options": "error",
|
|
105
|
+
"unicorn/no-invalid-file-input-accept": "error",
|
|
92
106
|
"unicorn/no-invalid-remove-event-listener": "error",
|
|
93
107
|
"unicorn/no-keyword-prefix": [
|
|
94
108
|
"error",
|
|
@@ -97,8 +111,10 @@ const unicornRules = {
|
|
|
97
111
|
onlyCamelCase: true
|
|
98
112
|
}
|
|
99
113
|
],
|
|
114
|
+
"unicorn/no-late-current-target-access": "error",
|
|
100
115
|
"unicorn/no-lonely-if": "error",
|
|
101
116
|
"unicorn/no-magic-array-flat-depth": "error",
|
|
117
|
+
"unicorn/no-manually-wrapped-comments": "error",
|
|
102
118
|
"unicorn/no-named-default": "error",
|
|
103
119
|
"unicorn/no-negated-condition": "error",
|
|
104
120
|
"unicorn/no-negation-in-equality-check": "error",
|
|
@@ -112,23 +128,27 @@ const unicornRules = {
|
|
|
112
128
|
"unicorn/no-static-only-class": "error",
|
|
113
129
|
"unicorn/no-thenable": "error",
|
|
114
130
|
"unicorn/no-this-assignment": "error",
|
|
131
|
+
"unicorn/no-this-outside-of-class": "error",
|
|
115
132
|
"unicorn/no-typeof-undefined": "error",
|
|
116
133
|
"unicorn/no-unnecessary-array-flat-depth": "error",
|
|
117
134
|
"unicorn/no-unnecessary-array-splice-count": "error",
|
|
118
135
|
"unicorn/no-unnecessary-await": "error",
|
|
136
|
+
"unicorn/no-unnecessary-nested-ternary": "error",
|
|
119
137
|
"unicorn/no-unnecessary-polyfills": "error",
|
|
120
138
|
"unicorn/no-unnecessary-slice-end": "error",
|
|
121
139
|
"unicorn/no-unreadable-array-destructuring": "error",
|
|
122
140
|
"unicorn/no-unreadable-iife": "error",
|
|
141
|
+
"unicorn/no-unused-array-method-return": "error",
|
|
123
142
|
"unicorn/no-unused-properties": "error",
|
|
124
143
|
"unicorn/no-useless-collection-argument": "error",
|
|
125
144
|
"unicorn/no-useless-error-capture-stack-trace": "error",
|
|
126
145
|
"unicorn/no-useless-fallback-in-spread": "error",
|
|
146
|
+
"unicorn/no-useless-iterator-to-array": "error",
|
|
127
147
|
"unicorn/no-useless-length-check": "error",
|
|
128
148
|
"unicorn/no-useless-promise-resolve-reject": "error",
|
|
129
149
|
"unicorn/no-useless-spread": "error",
|
|
130
150
|
"unicorn/no-useless-switch-case": "error",
|
|
131
|
-
"unicorn/no-useless-undefined": "
|
|
151
|
+
"unicorn/no-useless-undefined": "off",
|
|
132
152
|
"unicorn/no-zero-fractions": "error",
|
|
133
153
|
"unicorn/number-literal-case": [
|
|
134
154
|
"error",
|
|
@@ -149,6 +169,7 @@ const unicornRules = {
|
|
|
149
169
|
},
|
|
150
170
|
number: {
|
|
151
171
|
minimumDigits: 0,
|
|
172
|
+
fractionGroupLength: Infinity,
|
|
152
173
|
groupLength: numberGroupLength
|
|
153
174
|
},
|
|
154
175
|
octal: {
|
|
@@ -163,6 +184,7 @@ const unicornRules = {
|
|
|
163
184
|
"unicorn/prefer-array-flat": "error",
|
|
164
185
|
"unicorn/prefer-array-flat-map": "error",
|
|
165
186
|
"unicorn/prefer-array-index-of": "error",
|
|
187
|
+
"unicorn/prefer-array-last-methods": "error",
|
|
166
188
|
"unicorn/prefer-array-some": "error",
|
|
167
189
|
"unicorn/prefer-at": "error",
|
|
168
190
|
"unicorn/prefer-bigint-literals": "error",
|
|
@@ -173,17 +195,22 @@ const unicornRules = {
|
|
|
173
195
|
"unicorn/prefer-date-now": "error",
|
|
174
196
|
"unicorn/prefer-default-parameters": "error",
|
|
175
197
|
"unicorn/prefer-dom-node-append": "error",
|
|
176
|
-
"unicorn/prefer-dom-node-dataset": "error",
|
|
177
198
|
"unicorn/prefer-dom-node-remove": "error",
|
|
178
199
|
"unicorn/prefer-dom-node-text-content": "error",
|
|
179
200
|
"unicorn/prefer-event-target": "error",
|
|
180
201
|
"unicorn/prefer-export-from": "error",
|
|
202
|
+
"unicorn/prefer-get-or-insert-computed": "error",
|
|
181
203
|
"unicorn/prefer-global-this": "error",
|
|
204
|
+
"unicorn/prefer-https": "error",
|
|
182
205
|
"unicorn/prefer-import-meta-properties": "error",
|
|
183
206
|
"unicorn/prefer-includes": "error",
|
|
207
|
+
"unicorn/prefer-includes-over-repeated-comparisons": "error",
|
|
208
|
+
"unicorn/prefer-iterator-concat": "off",
|
|
209
|
+
"unicorn/prefer-iterator-to-array-at-end": "error",
|
|
184
210
|
"unicorn/prefer-json-parse-buffer": "off",
|
|
185
211
|
"unicorn/prefer-keyboard-event-key": "error",
|
|
186
212
|
"unicorn/prefer-logical-operator-over-ternary": "error",
|
|
213
|
+
"unicorn/prefer-math-abs": "error",
|
|
187
214
|
"unicorn/prefer-math-min-max": "error",
|
|
188
215
|
"unicorn/prefer-math-trunc": "error",
|
|
189
216
|
"unicorn/prefer-modern-dom-apis": "error",
|
|
@@ -202,14 +229,26 @@ const unicornRules = {
|
|
|
202
229
|
"unicorn/prefer-optional-catch-binding": "error",
|
|
203
230
|
"unicorn/prefer-prototype-methods": "error",
|
|
204
231
|
"unicorn/prefer-query-selector": "error",
|
|
232
|
+
"unicorn/prefer-queue-microtask": [
|
|
233
|
+
"error",
|
|
234
|
+
{
|
|
235
|
+
checkSetImmediate: true,
|
|
236
|
+
checkSetTimeout: true
|
|
237
|
+
}
|
|
238
|
+
],
|
|
205
239
|
"unicorn/prefer-reflect-apply": "error",
|
|
206
240
|
"unicorn/prefer-regexp-test": "error",
|
|
207
241
|
"unicorn/prefer-response-static-json": "error",
|
|
208
242
|
"unicorn/prefer-set-has": "error",
|
|
209
243
|
"unicorn/prefer-set-size": "error",
|
|
244
|
+
"unicorn/prefer-simple-condition-first": "error",
|
|
210
245
|
"unicorn/prefer-single-call": "error",
|
|
246
|
+
"unicorn/prefer-split-limit": "error",
|
|
211
247
|
"unicorn/prefer-spread": "error",
|
|
248
|
+
"unicorn/prefer-string-match-all": "error",
|
|
249
|
+
"unicorn/prefer-string-pad-start-end": "error",
|
|
212
250
|
"unicorn/prefer-string-raw": "error",
|
|
251
|
+
"unicorn/prefer-string-repeat": "error",
|
|
213
252
|
"unicorn/prefer-string-replace-all": "error",
|
|
214
253
|
"unicorn/prefer-string-slice": "error",
|
|
215
254
|
"unicorn/prefer-string-starts-ends-with": "error",
|
|
@@ -222,9 +261,11 @@ const unicornRules = {
|
|
|
222
261
|
"unicorn/prevent-abbreviations": "error",
|
|
223
262
|
"unicorn/relative-url-style": "error",
|
|
224
263
|
"unicorn/require-array-join-separator": "error",
|
|
264
|
+
"unicorn/require-css-escape": "error",
|
|
225
265
|
"unicorn/require-module-attributes": "error",
|
|
226
266
|
"unicorn/require-module-specifiers": "error",
|
|
227
267
|
"unicorn/require-number-to-fixed-digits-argument": "error",
|
|
268
|
+
"unicorn/require-passive-events": "error",
|
|
228
269
|
"unicorn/require-post-message-target-origin": "off",
|
|
229
270
|
"unicorn/string-content": [
|
|
230
271
|
"off",
|
|
@@ -233,6 +274,7 @@ const unicornRules = {
|
|
|
233
274
|
}
|
|
234
275
|
],
|
|
235
276
|
"unicorn/switch-case-braces": ["error", "avoid"],
|
|
277
|
+
"unicorn/switch-case-break-position": "error",
|
|
236
278
|
"unicorn/template-indent": [
|
|
237
279
|
"error",
|
|
238
280
|
{
|
|
@@ -251,7 +293,8 @@ const unicornRules = {
|
|
|
251
293
|
}
|
|
252
294
|
],
|
|
253
295
|
"unicorn/text-encoding-identifier-case": ["error", { withDash: true }],
|
|
254
|
-
"unicorn/throw-new-error": "error"
|
|
296
|
+
"unicorn/throw-new-error": "error",
|
|
297
|
+
"unicorn/try-complexity": "error"
|
|
255
298
|
};
|
|
256
299
|
|
|
257
300
|
export default unicornRules;
|