@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pumpn/eslint-config",
3
- "version": "17.1.0",
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.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",
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/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
  };
@@ -15,6 +15,7 @@ const spacingRules = {
15
15
  minItems: 0
16
16
  },
17
17
  overrides: {
18
+ "[]": "off",
18
19
  "{}": { singleLine: { spacing: "always" } }
19
20
  },
20
21
  singleLine: {
@@ -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"],
@@ -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-empty-file": "error",
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": "error",
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;