@pumpn/eslint-config 17.1.1 → 17.1.4

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pumpn/eslint-config",
3
- "version": "17.1.1",
3
+ "version": "17.1.4",
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.3"
20
+ "eslint": "^10.5.0"
21
21
  },
22
22
  "dependencies": {
23
- "@eslint-community/eslint-plugin-eslint-comments": "^4.7.1",
23
+ "@eslint-community/eslint-plugin-eslint-comments": "^4.7.2",
24
24
  "@stylistic/eslint-plugin": "^5.10.0",
25
- "@typescript-eslint/parser": "^8.57.1",
26
- "eslint-import-resolver-typescript": "^4.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": "^62.8.0",
30
+ "eslint-plugin-jsdoc": "^63.0.2",
31
31
  "eslint-plugin-no-secrets": "^2.3.3",
32
- "eslint-plugin-perfectionist": "^5.7.0",
33
- "eslint-plugin-promise": "^7.2.1",
34
- "eslint-plugin-react-dom": "^3.0.0",
35
- "eslint-plugin-react-naming-convention": "^3.0.0",
36
- "eslint-plugin-react-rsc": "^3.0.0",
37
- "eslint-plugin-react-web-api": "^3.0.0",
38
- "eslint-plugin-react-x": "^3.0.0",
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.0",
42
- "eslint-plugin-sonarjs": "^4.0.2",
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": "^63.0.0",
45
- "globals": "^17.4.0"
45
+ "eslint-plugin-unicorn": "^65.0.1",
46
+ "globals": "^17.6.0"
46
47
  },
47
48
  "peerDependencies": {
48
- "eslint": "^10.0.3"
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, ESLint } from "eslint"
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",
@@ -12,6 +12,7 @@ const perfectionistRules = {
12
12
  groups: ["literal"]
13
13
  }
14
14
  ],
15
+ "perfectionist/sort-arrays": "error",
15
16
  "perfectionist/sort-classes": [
16
17
  "error",
17
18
  {
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", { timeoutsErr: false }],
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": [
@@ -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";
@@ -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",
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",
4
+ "@eslint-react/globals": "error",
5
+ "@eslint-react/immutability": "off",
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/unstable-rules-of-props": "error",
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": [
@@ -1,5 +1,4 @@
1
1
  const debugRules = {
2
- "@eslint-react/debug/class-component": "off",
3
2
  "@eslint-react/debug/function-component": "off",
4
3
  "@eslint-react/debug/hook": "off"
5
4
  };
@@ -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;
@@ -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"]
@@ -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": "error",
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
  };
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  const minIdentifierLength = 2;
6
- const maxIdentifierLength = 30;
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: ["x", "y", "z"],
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"],
@@ -57,7 +62,13 @@ const unicornRules = {
57
62
  }
58
63
  ],
59
64
  "unicorn/explicit-length-check": "error",
60
- "unicorn/filename-case": ["error", { case: "kebabCase" }],
65
+ "unicorn/filename-case": [
66
+ "error",
67
+ {
68
+ case: "kebabCase",
69
+ ignore: [/\(_[_a-z][\-_a-z]+\)/v]
70
+ }
71
+ ],
61
72
  "unicorn/import-style": "error",
62
73
  "unicorn/isolated-functions": [
63
74
  "error",
@@ -73,22 +84,31 @@ const unicornRules = {
73
84
  "unicorn/no-accessor-recursion": "error",
74
85
  "unicorn/no-anonymous-default-export": "error",
75
86
  "unicorn/no-array-callback-reference": "off",
87
+ "unicorn/no-array-fill-with-reference-type": "error",
76
88
  "unicorn/no-array-for-each": "error",
89
+ "unicorn/no-array-from-fill": "error",
77
90
  "unicorn/no-array-method-this-argument": "error",
78
91
  "unicorn/no-array-reduce": "off",
79
92
  "unicorn/no-array-reverse": "error",
80
93
  "unicorn/no-array-sort": "off",
81
94
  "unicorn/no-await-expression-member": "error",
82
95
  "unicorn/no-await-in-promise-methods": "error",
96
+ "unicorn/no-blob-to-file": "error",
97
+ "unicorn/no-canvas-to-image": "error",
98
+ "unicorn/no-confusing-array-splice": "error",
83
99
  "unicorn/no-console-spaces": "error",
84
100
  "unicorn/no-document-cookie": "error",
85
- "unicorn/no-empty-file": "error",
101
+ "unicorn/no-duplicate-set-values": "error",
102
+ "unicorn/no-empty-file": ["error", { allowComments: true }],
103
+ "unicorn/no-exports-in-scripts": "error",
86
104
  "unicorn/no-for-loop": "error",
87
105
  "unicorn/no-hex-escape": "error",
88
106
  "unicorn/no-immediate-mutation": "error",
107
+ "unicorn/no-incorrect-query-selector": "error",
89
108
  "unicorn/no-instanceof-array": "error",
90
109
  "unicorn/no-instanceof-builtins": "error",
91
110
  "unicorn/no-invalid-fetch-options": "error",
111
+ "unicorn/no-invalid-file-input-accept": "error",
92
112
  "unicorn/no-invalid-remove-event-listener": "error",
93
113
  "unicorn/no-keyword-prefix": [
94
114
  "error",
@@ -97,8 +117,10 @@ const unicornRules = {
97
117
  onlyCamelCase: true
98
118
  }
99
119
  ],
120
+ "unicorn/no-late-current-target-access": "error",
100
121
  "unicorn/no-lonely-if": "error",
101
122
  "unicorn/no-magic-array-flat-depth": "error",
123
+ "unicorn/no-manually-wrapped-comments": "error",
102
124
  "unicorn/no-named-default": "error",
103
125
  "unicorn/no-negated-condition": "error",
104
126
  "unicorn/no-negation-in-equality-check": "error",
@@ -112,23 +134,27 @@ const unicornRules = {
112
134
  "unicorn/no-static-only-class": "error",
113
135
  "unicorn/no-thenable": "error",
114
136
  "unicorn/no-this-assignment": "error",
137
+ "unicorn/no-this-outside-of-class": "error",
115
138
  "unicorn/no-typeof-undefined": "error",
116
139
  "unicorn/no-unnecessary-array-flat-depth": "error",
117
140
  "unicorn/no-unnecessary-array-splice-count": "error",
118
141
  "unicorn/no-unnecessary-await": "error",
142
+ "unicorn/no-unnecessary-nested-ternary": "error",
119
143
  "unicorn/no-unnecessary-polyfills": "error",
120
144
  "unicorn/no-unnecessary-slice-end": "error",
121
145
  "unicorn/no-unreadable-array-destructuring": "error",
122
146
  "unicorn/no-unreadable-iife": "error",
147
+ "unicorn/no-unused-array-method-return": "error",
123
148
  "unicorn/no-unused-properties": "error",
124
149
  "unicorn/no-useless-collection-argument": "error",
125
150
  "unicorn/no-useless-error-capture-stack-trace": "error",
126
151
  "unicorn/no-useless-fallback-in-spread": "error",
152
+ "unicorn/no-useless-iterator-to-array": "error",
127
153
  "unicorn/no-useless-length-check": "error",
128
154
  "unicorn/no-useless-promise-resolve-reject": "error",
129
155
  "unicorn/no-useless-spread": "error",
130
156
  "unicorn/no-useless-switch-case": "error",
131
- "unicorn/no-useless-undefined": "error",
157
+ "unicorn/no-useless-undefined": "off",
132
158
  "unicorn/no-zero-fractions": "error",
133
159
  "unicorn/number-literal-case": [
134
160
  "error",
@@ -149,6 +175,7 @@ const unicornRules = {
149
175
  },
150
176
  number: {
151
177
  minimumDigits: 0,
178
+ fractionGroupLength: Infinity,
152
179
  groupLength: numberGroupLength
153
180
  },
154
181
  octal: {
@@ -163,6 +190,7 @@ const unicornRules = {
163
190
  "unicorn/prefer-array-flat": "error",
164
191
  "unicorn/prefer-array-flat-map": "error",
165
192
  "unicorn/prefer-array-index-of": "error",
193
+ "unicorn/prefer-array-last-methods": "error",
166
194
  "unicorn/prefer-array-some": "error",
167
195
  "unicorn/prefer-at": "error",
168
196
  "unicorn/prefer-bigint-literals": "error",
@@ -173,17 +201,22 @@ const unicornRules = {
173
201
  "unicorn/prefer-date-now": "error",
174
202
  "unicorn/prefer-default-parameters": "error",
175
203
  "unicorn/prefer-dom-node-append": "error",
176
- "unicorn/prefer-dom-node-dataset": "error",
177
204
  "unicorn/prefer-dom-node-remove": "error",
178
205
  "unicorn/prefer-dom-node-text-content": "error",
179
206
  "unicorn/prefer-event-target": "error",
180
207
  "unicorn/prefer-export-from": "error",
208
+ "unicorn/prefer-get-or-insert-computed": "error",
181
209
  "unicorn/prefer-global-this": "error",
210
+ "unicorn/prefer-https": "error",
182
211
  "unicorn/prefer-import-meta-properties": "error",
183
212
  "unicorn/prefer-includes": "error",
213
+ "unicorn/prefer-includes-over-repeated-comparisons": "error",
214
+ "unicorn/prefer-iterator-concat": "off",
215
+ "unicorn/prefer-iterator-to-array-at-end": "error",
184
216
  "unicorn/prefer-json-parse-buffer": "off",
185
217
  "unicorn/prefer-keyboard-event-key": "error",
186
218
  "unicorn/prefer-logical-operator-over-ternary": "error",
219
+ "unicorn/prefer-math-abs": "error",
187
220
  "unicorn/prefer-math-min-max": "error",
188
221
  "unicorn/prefer-math-trunc": "error",
189
222
  "unicorn/prefer-modern-dom-apis": "error",
@@ -202,14 +235,26 @@ const unicornRules = {
202
235
  "unicorn/prefer-optional-catch-binding": "error",
203
236
  "unicorn/prefer-prototype-methods": "error",
204
237
  "unicorn/prefer-query-selector": "error",
238
+ "unicorn/prefer-queue-microtask": [
239
+ "error",
240
+ {
241
+ checkSetImmediate: true,
242
+ checkSetTimeout: true
243
+ }
244
+ ],
205
245
  "unicorn/prefer-reflect-apply": "error",
206
246
  "unicorn/prefer-regexp-test": "error",
207
247
  "unicorn/prefer-response-static-json": "error",
208
248
  "unicorn/prefer-set-has": "error",
209
249
  "unicorn/prefer-set-size": "error",
250
+ "unicorn/prefer-simple-condition-first": "error",
210
251
  "unicorn/prefer-single-call": "error",
252
+ "unicorn/prefer-split-limit": "error",
211
253
  "unicorn/prefer-spread": "error",
254
+ "unicorn/prefer-string-match-all": "error",
255
+ "unicorn/prefer-string-pad-start-end": "error",
212
256
  "unicorn/prefer-string-raw": "error",
257
+ "unicorn/prefer-string-repeat": "error",
213
258
  "unicorn/prefer-string-replace-all": "error",
214
259
  "unicorn/prefer-string-slice": "error",
215
260
  "unicorn/prefer-string-starts-ends-with": "error",
@@ -222,9 +267,11 @@ const unicornRules = {
222
267
  "unicorn/prevent-abbreviations": "error",
223
268
  "unicorn/relative-url-style": "error",
224
269
  "unicorn/require-array-join-separator": "error",
270
+ "unicorn/require-css-escape": "error",
225
271
  "unicorn/require-module-attributes": "error",
226
272
  "unicorn/require-module-specifiers": "error",
227
273
  "unicorn/require-number-to-fixed-digits-argument": "error",
274
+ "unicorn/require-passive-events": "error",
228
275
  "unicorn/require-post-message-target-origin": "off",
229
276
  "unicorn/string-content": [
230
277
  "off",
@@ -233,6 +280,7 @@ const unicornRules = {
233
280
  }
234
281
  ],
235
282
  "unicorn/switch-case-braces": ["error", "avoid"],
283
+ "unicorn/switch-case-break-position": "error",
236
284
  "unicorn/template-indent": [
237
285
  "error",
238
286
  {
@@ -251,7 +299,8 @@ const unicornRules = {
251
299
  }
252
300
  ],
253
301
  "unicorn/text-encoding-identifier-case": ["error", { withDash: true }],
254
- "unicorn/throw-new-error": "error"
302
+ "unicorn/throw-new-error": "error",
303
+ "unicorn/try-complexity": "error"
255
304
  };
256
305
 
257
306
  export default unicornRules;