@dvashim/biome-config 1.5.12 → 1.6.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/README.md CHANGED
@@ -39,10 +39,11 @@ pnpm add -D @dvashim/biome-config
39
39
  |--------|------------|------|
40
40
  | Base | recommended | `@dvashim/biome-config` or `@dvashim/biome-config/recommended` |
41
41
  | React | recommended | `@dvashim/biome-config/react-recommended` |
42
- | React | balanced | `@dvashim/biome-config/react-balanced` |
43
42
  | React | strict | `@dvashim/biome-config/react-strict` |
43
+ | React | strict-stable | `@dvashim/biome-config/react-strict-stable` |
44
+ | React | balanced | `@dvashim/biome-config/react-balanced` |
45
+ | React | balanced-stable | `@dvashim/biome-config/react-balanced-stable` |
44
46
 
45
- <br>
46
47
 
47
48
  ## Use
48
49
 
@@ -50,6 +51,7 @@ Base recommended configuration:
50
51
 
51
52
  ```jsonc
52
53
  // biome.json (Base recommended)
54
+ // ────────────────────────────────────────
53
55
  // This configuration provides a base setup for linting,
54
56
  // formatting, and code consistency across JavaScript,
55
57
  // JSX, JSON, and HTML files.
@@ -57,6 +59,7 @@ Base recommended configuration:
57
59
  // files in the project directory by default.
58
60
 
59
61
  {
62
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
60
63
  "extends": ["@dvashim/biome-config"]
61
64
  }
62
65
  ```
@@ -65,11 +68,13 @@ React recommended configuration:
65
68
 
66
69
  ```jsonc
67
70
  // biome.json (React recommended)
71
+ // ────────────────────────────────────────
68
72
  // This configuration extends the base recommended configuration
69
73
  // and enables the recommended rules for the React domain.
70
74
  // Includes all files except dist/ (files.includes: ["**", "!!**/dist"]).
71
75
 
72
76
  {
77
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
73
78
  "extends": ["@dvashim/biome-config/react-recommended"]
74
79
  }
75
80
  ```
@@ -78,38 +83,67 @@ React strict configuration:
78
83
 
79
84
  ```jsonc
80
85
  // biome.json (React strict)
81
- // This configuration enables recommended lint rules,
82
- // including React-specific recommended rules,
83
- // and opts into nursery (experimental) rules.
86
+ // ────────────────────────────────────────
87
+ // The most opinionated configuration — enables recommended rules,
88
+ // React-specific rules, and 200+ optional and nursery (experimental) rules.
84
89
  // Includes all files except dist/ (files.includes: ["**", "!!**/dist"]).
85
90
 
86
91
  {
92
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
87
93
  "extends": ["@dvashim/biome-config/react-strict"]
88
94
  }
89
95
  ```
90
96
 
97
+ React strict-stable configuration:
98
+
99
+ ```jsonc
100
+ // biome.json (React strict-stable)
101
+ // ────────────────────────────────────────
102
+ // Same as React strict, but without nursery (experimental) rules.
103
+ // Includes all files except dist/ (files.includes: ["**", "!!**/dist"]).
104
+
105
+ {
106
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
107
+ "extends": ["@dvashim/biome-config/react-strict-stable"]
108
+ }
109
+ ```
110
+
91
111
  React balanced configuration:
92
112
 
93
113
  ```jsonc
94
114
  // biome.json (React balanced)
95
- // This configuration enables recommended lint rules,
96
- // including React-specific recommended rules,
97
- // with a few rules intentionally disabled
115
+ // ────────────────────────────────────────
116
+ // Same as React strict, with targeted relaxations
98
117
  // to reduce false positives / noise.
99
118
  // Includes all files except dist/ (files.includes: ["**", "!!**/dist"]).
100
119
 
101
120
  {
121
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
102
122
  "extends": ["@dvashim/biome-config/react-balanced"]
103
123
  }
104
124
  ```
105
125
 
126
+ React balanced-stable configuration:
127
+
128
+ ```jsonc
129
+ // biome.json (React balanced-stable)
130
+ // ────────────────────────────────────────
131
+ // Same as React balanced, but without nursery (experimental) rules.
132
+ // Includes all files except dist/ (files.includes: ["**", "!!**/dist"]).
133
+
134
+ {
135
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
136
+ "extends": ["@dvashim/biome-config/react-balanced-stable"]
137
+ }
138
+ ```
139
+
106
140
  ## Defaults
107
141
 
108
142
  All configurations share the same base defaults.
109
143
 
110
144
  ### Schema
111
145
 
112
- `https://biomejs.dev/schemas/2.4.10/schema.json`
146
+ `https://biomejs.dev/schemas/2.4.12/schema.json`
113
147
 
114
148
  ### Formatter
115
149
 
@@ -203,7 +237,7 @@ Same as base recommended, plus enables the **React domain** (`"react": "recommen
203
237
 
204
238
  ### React strict
205
239
 
206
- The most opinionated configuration. Enables all recommended rules plus **180+ optional and nursery rules** across 8 categories. Every non-recommended JS/TS rule available in Biome is explicitly configured.
240
+ The most opinionated configuration. Enables all recommended rules plus **200+ optional and nursery rules** across 8 categories. Every non-recommended JS/TS rule available in Biome is explicitly configured.
207
241
 
208
242
  - **a11y** — Selectively disables noisy rules (`useButtonType`, `useKeyWithClickEvents`, `useSemanticElements`, `noStaticElementInteractions`, `noNoninteractiveElementToInteractiveRole`) while keeping the rest at recommended defaults.
209
243
 
@@ -211,15 +245,19 @@ The most opinionated configuration. Enables all recommended rules plus **180+ op
211
245
 
212
246
  - **correctness** (12 rules) — Ensures no undeclared variables/dependencies, proper React patterns (`noReactPropAssignments`, `noNestedComponentDefinitions`), Node.js guards (`noNodejsModules`, `noProcessGlobal`, `noGlobalDirnameFilename`), and JSON import attributes. `noUnresolvedImports` is disabled since TypeScript already performs these checks.
213
247
 
214
- - **nursery** (73 rules) — Opts into all experimental rules. Highlights include:
248
+ - **nursery** (87 rules) — Opts into all experimental rules. Highlights include:
215
249
  - **Errors:** `noJsxPropsBind`, `noLeakedRender`, `noMisusedPromises`, `noMultiAssign`, `noParametersOnlyUsedInRecursion`
216
250
  - **Promises:** `noFloatingPromises`, `noNestedPromises`, `useAwaitThenable`
217
- - **TypeScript:** `useConsistentEnumValueType`, `useConsistentMethodSignatures`, `useExhaustiveSwitchCases`, `useNullishCoalescing`
251
+ - **TypeScript:** `useConsistentEnumValueType`, `useConsistentMethodSignatures`, `useExhaustiveSwitchCases`, `useExplicitReturnType`, `noMisleadingReturnType`, `noUselessTypeConversion`, `useNullishCoalescing`, `useReduceTypeParameter`
252
+ - **Resource management:** `useDisposables` (enforces `using` for `Disposable`/`AsyncDisposable`)
218
253
  - **Regex:** `useNamedCaptureGroup`, `useUnicodeRegex`, `useRegexpExec`
219
- - **Styling:** `noDuplicateSelectors`, `noInlineStyles`
254
+ - **Styling:** `noDuplicateSelectors`, `noInlineStyles`, `noExcessiveSelectorClasses`
255
+ - **Testing:** `useConsistentTestIt`, `useExpect`, `noConditionalExpect`, `noIdenticalTestTitle`
220
256
  - **Playwright:** Full suite of 10 Playwright rules
221
257
  - **Drizzle:** `noDrizzleDeleteWithoutWhere`, `noDrizzleUpdateWithoutWhere`
222
258
  - **Tailwind:** `useSortedClasses`, `noFloatingClasses`
259
+ - **React:** `useReactAsyncServerFunction`, `noComponentHookFactories`, `noJsxNamespace`
260
+ - **Security:** `useIframeSandbox`
223
261
  - **Dependencies:** `noUntrustedLicenses`
224
262
  - **Disabled:** `noTernary`, `useExplicitType`
225
263
 
@@ -233,6 +271,12 @@ The most opinionated configuration. Enables all recommended rules plus **180+ op
233
271
 
234
272
  ---
235
273
 
274
+ ### React strict-stable
275
+
276
+ Same as React strict, but **without nursery (experimental) rules**. Includes rules from 7 categories: a11y, complexity, correctness, performance, security, style, and suspicious.
277
+
278
+ ---
279
+
236
280
  ### React balanced
237
281
 
238
282
  Same rule set as strict, with **targeted relaxations** to reduce false positives and noise in real-world projects:
@@ -254,12 +298,20 @@ Same rule set as strict, with **targeted relaxations** to reduce false positives
254
298
  | `noNestedTernary` | warn | off | Allows nested ternaries |
255
299
  | `useNamingConvention` | strictCase: true | strictCase: false | More lenient casing |
256
300
 
301
+ > `noContinue`, `noIncrementDecrement`, and `noUselessReturn` are nursery rules — they are not present in the `-stable` variants.
302
+
303
+ ---
304
+
305
+ ### React balanced-stable
306
+
307
+ Same as React balanced, but **without nursery (experimental) rules**. All non-nursery relaxations from the table above still apply.
308
+
257
309
  ## FAQ
258
310
 
259
311
  ### Which config should I start with?
260
312
 
261
313
  - **Non-React projects** — use `@dvashim/biome-config` (base recommended).
262
- - **React projects** — start with `react-balanced` for a good trade-off between strictness and practicality. Move to `react-strict` once your codebase is clean, or `react-recommended` if you only want Biome's built-in defaults.
314
+ - **React projects** — start with `react-balanced` for a good trade-off between strictness and practicality. Move to `react-strict` once your codebase is clean, or `react-recommended` if you only want Biome's built-in defaults. Use the `-stable` variants if you want to avoid nursery (experimental) rules.
263
315
 
264
316
  ### How do I override a rule from the preset?
265
317
 
@@ -267,6 +319,7 @@ Add a `linter.rules` section in your `biome.json`. Local settings merge with and
267
319
 
268
320
  ```jsonc
269
321
  {
322
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
270
323
  "extends": ["@dvashim/biome-config/react-balanced"],
271
324
  "linter": {
272
325
  "rules": {
@@ -286,6 +339,7 @@ For exclusions that should not affect Git tracking, use negated patterns in `fil
286
339
 
287
340
  ```jsonc
288
341
  {
342
+ "$schema": "https://biomejs.dev/schemas/latest/schema.json",
289
343
  "extends": ["@dvashim/biome-config"],
290
344
  "files": {
291
345
  "includes": ["**", "!!**/generated", "!!**/coverage"]
@@ -0,0 +1,240 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json",
3
+
4
+ "assist": {
5
+ "actions": {
6
+ "recommended": true,
7
+ "source": {
8
+ "noDuplicateClasses": "on"
9
+ }
10
+ }
11
+ },
12
+
13
+ "files": {
14
+ "includes": ["**", "!!**/dist"]
15
+ },
16
+
17
+ "formatter": {
18
+ "attributePosition": "auto",
19
+ "bracketSameLine": false,
20
+ "bracketSpacing": true,
21
+ "expand": "auto",
22
+ "formatWithErrors": false,
23
+ "indentStyle": "space",
24
+ "indentWidth": 2,
25
+ "lineEnding": "lf",
26
+ "lineWidth": 80,
27
+ "useEditorconfig": true
28
+ },
29
+
30
+ "html": {
31
+ "experimentalFullSupportEnabled": true
32
+ },
33
+
34
+ "javascript": {
35
+ "experimentalEmbeddedSnippetsEnabled": true,
36
+ "globals": [],
37
+ "jsxRuntime": "transparent",
38
+ "formatter": {
39
+ "arrowParentheses": "always",
40
+ "jsxQuoteStyle": "double",
41
+ "operatorLinebreak": "before",
42
+ "quoteProperties": "asNeeded",
43
+ "quoteStyle": "single",
44
+ "semicolons": "asNeeded",
45
+ "trailingCommas": "es5"
46
+ },
47
+ "parser": {
48
+ "gritMetavariables": false,
49
+ "jsxEverywhere": true,
50
+ "unsafeParameterDecoratorsEnabled": false
51
+ }
52
+ },
53
+
54
+ "json": {
55
+ "parser": {
56
+ "allowComments": true,
57
+ "allowTrailingCommas": true
58
+ }
59
+ },
60
+
61
+ "linter": {
62
+ "rules": {
63
+ "a11y": {
64
+ "noNoninteractiveElementToInteractiveRole": "off",
65
+ "noStaticElementInteractions": "off",
66
+ "useButtonType": "off",
67
+ "useFocusableInteractive": "info",
68
+ "useKeyWithClickEvents": "off",
69
+ "useSemanticElements": "off"
70
+ },
71
+ "complexity": {
72
+ "noExcessiveCognitiveComplexity": "warn",
73
+ "noExcessiveNestedTestSuites": "warn",
74
+ "noForEach": "warn",
75
+ "noImplicitCoercions": "off",
76
+ "noUselessCatchBinding": "warn",
77
+ "noUselessStringConcat": "warn",
78
+ "noUselessUndefined": "warn",
79
+ "noVoid": "warn",
80
+ "useMaxParams": "warn",
81
+ "useSimplifiedLogicExpression": "warn",
82
+ "useWhile": "warn",
83
+ "noExcessiveLinesPerFunction": {
84
+ "level": "warn",
85
+ "options": {
86
+ "maxLines": 100
87
+ }
88
+ }
89
+ },
90
+ "correctness": {
91
+ "noGlobalDirnameFilename": "warn",
92
+ "noNestedComponentDefinitions": "warn",
93
+ "noNodejsModules": "warn",
94
+ "noProcessGlobal": "warn",
95
+ "noReactPropAssignments": "warn",
96
+ "noUndeclaredDependencies": "warn",
97
+ "noUndeclaredVariables": "warn",
98
+ "noUnresolvedImports": "off",
99
+ "useImportExtensions": "off",
100
+ "useJsonImportAttributes": "warn",
101
+ "useSingleJsDocAsterisk": "warn",
102
+ "useUniqueElementIds": "warn"
103
+ },
104
+ "performance": {
105
+ "noAwaitInLoops": "warn",
106
+ "noBarrelFile": "off",
107
+ "noDelete": "warn",
108
+ "noNamespaceImport": "off",
109
+ "noReExportAll": "off",
110
+ "useTopLevelRegex": "warn"
111
+ },
112
+ "security": {
113
+ "noSecrets": "warn"
114
+ },
115
+ "style": {
116
+ "noCommonJs": "warn",
117
+ "noDefaultExport": "off",
118
+ "noDoneCallback": "warn",
119
+ "noEnum": "warn",
120
+ "noExportedImports": "warn",
121
+ "noImplicitBoolean": "info",
122
+ "noInferrableTypes": "warn",
123
+ "noJsxLiterals": "off",
124
+ "noMagicNumbers": "info",
125
+ "noNamespace": "warn",
126
+ "noNegationElse": "warn",
127
+ "noNestedTernary": "off",
128
+ "noParameterAssign": "warn",
129
+ "noParameterProperties": "warn",
130
+ "noProcessEnv": "warn",
131
+ "noShoutyConstants": "warn",
132
+ "noSubstr": "warn",
133
+ "noUnusedTemplateLiteral": "warn",
134
+ "noUselessElse": "warn",
135
+ "noYodaExpression": "warn",
136
+ "useAsConstAssertion": "warn",
137
+ "useAtIndex": "warn",
138
+ "useBlockStatements": "warn",
139
+ "useCollapsedElseIf": "warn",
140
+ "useCollapsedIf": "warn",
141
+ "useComponentExportOnlyModules": "warn",
142
+ "useConsistentArrowReturn": "warn",
143
+ "useConsistentBuiltinInstantiation": "warn",
144
+ "useConsistentCurlyBraces": "warn",
145
+ "useConsistentMemberAccessibility": "warn",
146
+ "useConsistentObjectDefinitions": "warn",
147
+ "useDefaultParameterLast": "warn",
148
+ "useDefaultSwitchClause": "warn",
149
+ "useEnumInitializers": "warn",
150
+ "useExplicitLengthCheck": "warn",
151
+ "useExportsLast": "warn",
152
+ "useFilenamingConvention": "warn",
153
+ "useForOf": "warn",
154
+ "useFragmentSyntax": "warn",
155
+ "useGroupedAccessorPairs": "warn",
156
+ "useNumberNamespace": "warn",
157
+ "useNumericSeparators": "warn",
158
+ "useObjectSpread": "warn",
159
+ "useReactFunctionComponents": "warn",
160
+ "useReadonlyClassProperties": "warn",
161
+ "useSelfClosingElements": "warn",
162
+ "useShorthandAssign": "warn",
163
+ "useSingleVarDeclarator": "warn",
164
+ "useSymbolDescription": "warn",
165
+ "useThrowNewError": "warn",
166
+ "useThrowOnlyError": "warn",
167
+ "useTrimStartEnd": "warn",
168
+ "useUnifiedTypeSignatures": "warn",
169
+ "useConsistentArrayType": {
170
+ "level": "warn",
171
+ "options": {
172
+ "syntax": "shorthand"
173
+ }
174
+ },
175
+ "useConsistentTypeDefinitions": {
176
+ "level": "warn",
177
+ "options": {
178
+ "style": "type"
179
+ }
180
+ },
181
+ "useNamingConvention": {
182
+ "level": "warn",
183
+ "options": {
184
+ "requireAscii": true,
185
+ "strictCase": false
186
+ }
187
+ }
188
+ },
189
+ "suspicious": {
190
+ "noAlert": "warn",
191
+ "noBitwiseOperators": "warn",
192
+ "noConsole": "warn",
193
+ "noConstantBinaryExpressions": "warn",
194
+ "noDeprecatedImports": "warn",
195
+ "noDuplicateDependencies": "warn",
196
+ "noEmptyBlockStatements": "warn",
197
+ "noEmptySource": "warn",
198
+ "noEvolvingTypes": "warn",
199
+ "noImportCycles": "warn",
200
+ "noMisplacedAssertion": "warn",
201
+ "noReactForwardRef": "warn",
202
+ "noSkippedTests": "warn",
203
+ "noUnassignedVariables": "warn",
204
+ "noUnusedExpressions": "warn",
205
+ "noVar": "error",
206
+ "useAwait": "warn",
207
+ "useErrorMessage": "warn",
208
+ "useGuardForIn": "warn",
209
+ "useNumberToFixedDigitsArgument": "warn",
210
+ "useStaticResponseMethods": "warn",
211
+ "useStrictMode": "warn"
212
+ }
213
+ }
214
+ },
215
+
216
+ "overrides": [
217
+ {
218
+ "includes": ["**/package.json"],
219
+ "assist": {
220
+ "actions": {
221
+ "source": {
222
+ "useSortedKeys": "off"
223
+ }
224
+ }
225
+ },
226
+ "json": {
227
+ "formatter": {
228
+ "expand": "always"
229
+ }
230
+ }
231
+ }
232
+ ],
233
+
234
+ "vcs": {
235
+ "clientKind": "git",
236
+ "defaultBranch": "main",
237
+ "enabled": true,
238
+ "useIgnoreFile": true
239
+ }
240
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json",
3
3
 
4
4
  "assist": {
5
5
  "actions": {
@@ -103,6 +103,7 @@
103
103
  },
104
104
  "nursery": {
105
105
  "noAmbiguousAnchorText": "warn",
106
+ "noComponentHookFactories": "warn",
106
107
  "noConditionalExpect": "warn",
107
108
  "noContinue": "info",
108
109
  "noDivRegex": "warn",
@@ -117,13 +118,17 @@
117
118
  "noEqualsToNull": "warn",
118
119
  "noExcessiveClassesPerFile": "warn",
119
120
  "noExcessiveLinesPerFile": "warn",
121
+ "noExcessiveSelectorClasses": "warn",
120
122
  "noFloatingClasses": "warn",
121
123
  "noFloatingPromises": "warn",
122
124
  "noForIn": "warn",
125
+ "noIdenticalTestTitle": "warn",
123
126
  "noImpliedEval": "warn",
124
127
  "noInlineStyles": "warn",
128
+ "noJsxNamespace": "warn",
125
129
  "noJsxPropsBind": "error",
126
130
  "noLeakedRender": "error",
131
+ "noMisleadingReturnType": "warn",
127
132
  "noMisusedPromises": "error",
128
133
  "noMultiAssign": "error",
129
134
  "noMultiStr": "error",
@@ -153,27 +158,36 @@
153
158
  "noUnsafePlusOperands": "warn",
154
159
  "noUntrustedLicenses": "warn",
155
160
  "noUselessReturn": "info",
161
+ "noUselessTypeConversion": "warn",
156
162
  "useArraySome": "warn",
157
163
  "useArraySortCompare": "warn",
158
164
  "useAwaitThenable": "warn",
159
165
  "useBaseline": "warn",
160
166
  "useConsistentEnumValueType": "warn",
161
167
  "useConsistentMethodSignatures": "warn",
168
+ "useConsistentTestIt": "warn",
162
169
  "useDestructuring": "warn",
170
+ "useDisposables": "warn",
163
171
  "useErrorCause": "warn",
164
172
  "useExhaustiveSwitchCases": "warn",
165
173
  "useExpect": "warn",
174
+ "useExplicitReturnType": "warn",
166
175
  "useExplicitType": "off",
167
176
  "useFind": "warn",
168
177
  "useGlobalThis": "warn",
178
+ "useIframeSandbox": "warn",
169
179
  "useImportsFirst": "warn",
170
180
  "useNamedCaptureGroup": "warn",
171
181
  "useNullishCoalescing": "warn",
172
182
  "usePlaywrightValidDescribeCallback": "warn",
183
+ "useReactAsyncServerFunction": "warn",
184
+ "useReduceTypeParameter": "warn",
173
185
  "useRegexpExec": "warn",
174
186
  "useSortedClasses": "warn",
175
187
  "useSpread": "warn",
188
+ "useStringStartsEndsWith": "warn",
176
189
  "useUnicodeRegex": "warn",
190
+ "useVarsOnTop": "warn",
177
191
  "noIncrementDecrement": {
178
192
  "level": "warn",
179
193
  "options": {
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json",
3
3
 
4
4
  "assist": {
5
5
  "actions": {
@@ -0,0 +1,235 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json",
3
+
4
+ "assist": {
5
+ "actions": {
6
+ "recommended": true,
7
+ "source": {
8
+ "noDuplicateClasses": "on"
9
+ }
10
+ }
11
+ },
12
+
13
+ "files": {
14
+ "includes": ["**", "!!**/dist"]
15
+ },
16
+
17
+ "formatter": {
18
+ "attributePosition": "auto",
19
+ "bracketSameLine": false,
20
+ "bracketSpacing": true,
21
+ "expand": "auto",
22
+ "formatWithErrors": false,
23
+ "indentStyle": "space",
24
+ "indentWidth": 2,
25
+ "lineEnding": "lf",
26
+ "lineWidth": 80,
27
+ "useEditorconfig": true
28
+ },
29
+
30
+ "html": {
31
+ "experimentalFullSupportEnabled": true
32
+ },
33
+
34
+ "javascript": {
35
+ "experimentalEmbeddedSnippetsEnabled": true,
36
+ "globals": [],
37
+ "jsxRuntime": "transparent",
38
+ "formatter": {
39
+ "arrowParentheses": "always",
40
+ "jsxQuoteStyle": "double",
41
+ "operatorLinebreak": "before",
42
+ "quoteProperties": "asNeeded",
43
+ "quoteStyle": "single",
44
+ "semicolons": "asNeeded",
45
+ "trailingCommas": "es5"
46
+ },
47
+ "parser": {
48
+ "gritMetavariables": false,
49
+ "jsxEverywhere": true,
50
+ "unsafeParameterDecoratorsEnabled": false
51
+ }
52
+ },
53
+
54
+ "json": {
55
+ "parser": {
56
+ "allowComments": true,
57
+ "allowTrailingCommas": true
58
+ }
59
+ },
60
+
61
+ "linter": {
62
+ "rules": {
63
+ "a11y": {
64
+ "noNoninteractiveElementToInteractiveRole": "off",
65
+ "noStaticElementInteractions": "off",
66
+ "useButtonType": "off",
67
+ "useFocusableInteractive": "info",
68
+ "useKeyWithClickEvents": "off",
69
+ "useSemanticElements": "off"
70
+ },
71
+ "complexity": {
72
+ "noExcessiveCognitiveComplexity": "warn",
73
+ "noExcessiveLinesPerFunction": "warn",
74
+ "noExcessiveNestedTestSuites": "warn",
75
+ "noForEach": "warn",
76
+ "noImplicitCoercions": "warn",
77
+ "noUselessCatchBinding": "warn",
78
+ "noUselessStringConcat": "warn",
79
+ "noUselessUndefined": "warn",
80
+ "noVoid": "warn",
81
+ "useMaxParams": "warn",
82
+ "useSimplifiedLogicExpression": "warn",
83
+ "useWhile": "warn"
84
+ },
85
+ "correctness": {
86
+ "noGlobalDirnameFilename": "warn",
87
+ "noNestedComponentDefinitions": "warn",
88
+ "noNodejsModules": "warn",
89
+ "noProcessGlobal": "warn",
90
+ "noReactPropAssignments": "warn",
91
+ "noUndeclaredDependencies": "warn",
92
+ "noUndeclaredVariables": "warn",
93
+ "noUnresolvedImports": "off",
94
+ "useImportExtensions": "off",
95
+ "useJsonImportAttributes": "warn",
96
+ "useSingleJsDocAsterisk": "warn",
97
+ "useUniqueElementIds": "warn"
98
+ },
99
+ "performance": {
100
+ "noAwaitInLoops": "warn",
101
+ "noBarrelFile": "warn",
102
+ "noDelete": "warn",
103
+ "noNamespaceImport": "warn",
104
+ "noReExportAll": "warn",
105
+ "useTopLevelRegex": "warn"
106
+ },
107
+ "security": {
108
+ "noSecrets": "warn"
109
+ },
110
+ "style": {
111
+ "noCommonJs": "warn",
112
+ "noDefaultExport": "warn",
113
+ "noDoneCallback": "warn",
114
+ "noEnum": "warn",
115
+ "noExportedImports": "warn",
116
+ "noImplicitBoolean": "warn",
117
+ "noInferrableTypes": "warn",
118
+ "noJsxLiterals": "warn",
119
+ "noMagicNumbers": "warn",
120
+ "noNamespace": "warn",
121
+ "noNegationElse": "warn",
122
+ "noNestedTernary": "warn",
123
+ "noParameterAssign": "warn",
124
+ "noParameterProperties": "warn",
125
+ "noProcessEnv": "warn",
126
+ "noShoutyConstants": "warn",
127
+ "noSubstr": "warn",
128
+ "noUnusedTemplateLiteral": "warn",
129
+ "noUselessElse": "warn",
130
+ "noYodaExpression": "warn",
131
+ "useAsConstAssertion": "warn",
132
+ "useAtIndex": "warn",
133
+ "useBlockStatements": "warn",
134
+ "useCollapsedElseIf": "warn",
135
+ "useCollapsedIf": "warn",
136
+ "useComponentExportOnlyModules": "warn",
137
+ "useConsistentArrowReturn": "warn",
138
+ "useConsistentBuiltinInstantiation": "warn",
139
+ "useConsistentCurlyBraces": "warn",
140
+ "useConsistentMemberAccessibility": "warn",
141
+ "useConsistentObjectDefinitions": "warn",
142
+ "useDefaultParameterLast": "warn",
143
+ "useDefaultSwitchClause": "warn",
144
+ "useEnumInitializers": "warn",
145
+ "useExplicitLengthCheck": "warn",
146
+ "useExportsLast": "warn",
147
+ "useFilenamingConvention": "warn",
148
+ "useForOf": "warn",
149
+ "useFragmentSyntax": "warn",
150
+ "useGroupedAccessorPairs": "warn",
151
+ "useNumberNamespace": "warn",
152
+ "useNumericSeparators": "warn",
153
+ "useObjectSpread": "warn",
154
+ "useReactFunctionComponents": "warn",
155
+ "useReadonlyClassProperties": "warn",
156
+ "useSelfClosingElements": "warn",
157
+ "useShorthandAssign": "warn",
158
+ "useSingleVarDeclarator": "warn",
159
+ "useSymbolDescription": "warn",
160
+ "useThrowNewError": "warn",
161
+ "useThrowOnlyError": "warn",
162
+ "useTrimStartEnd": "warn",
163
+ "useUnifiedTypeSignatures": "warn",
164
+ "useConsistentArrayType": {
165
+ "level": "warn",
166
+ "options": {
167
+ "syntax": "shorthand"
168
+ }
169
+ },
170
+ "useConsistentTypeDefinitions": {
171
+ "level": "warn",
172
+ "options": {
173
+ "style": "type"
174
+ }
175
+ },
176
+ "useNamingConvention": {
177
+ "level": "warn",
178
+ "options": {
179
+ "requireAscii": true,
180
+ "strictCase": true
181
+ }
182
+ }
183
+ },
184
+ "suspicious": {
185
+ "noAlert": "warn",
186
+ "noBitwiseOperators": "warn",
187
+ "noConsole": "warn",
188
+ "noConstantBinaryExpressions": "warn",
189
+ "noDeprecatedImports": "warn",
190
+ "noDuplicateDependencies": "warn",
191
+ "noEmptyBlockStatements": "warn",
192
+ "noEmptySource": "warn",
193
+ "noEvolvingTypes": "warn",
194
+ "noImportCycles": "warn",
195
+ "noMisplacedAssertion": "warn",
196
+ "noReactForwardRef": "warn",
197
+ "noSkippedTests": "warn",
198
+ "noUnassignedVariables": "warn",
199
+ "noUnusedExpressions": "warn",
200
+ "noVar": "error",
201
+ "useAwait": "warn",
202
+ "useErrorMessage": "warn",
203
+ "useGuardForIn": "warn",
204
+ "useNumberToFixedDigitsArgument": "warn",
205
+ "useStaticResponseMethods": "warn",
206
+ "useStrictMode": "warn"
207
+ }
208
+ }
209
+ },
210
+
211
+ "overrides": [
212
+ {
213
+ "includes": ["**/package.json"],
214
+ "assist": {
215
+ "actions": {
216
+ "source": {
217
+ "useSortedKeys": "off"
218
+ }
219
+ }
220
+ },
221
+ "json": {
222
+ "formatter": {
223
+ "expand": "always"
224
+ }
225
+ }
226
+ }
227
+ ],
228
+
229
+ "vcs": {
230
+ "clientKind": "git",
231
+ "defaultBranch": "main",
232
+ "enabled": true,
233
+ "useIgnoreFile": true
234
+ }
235
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json",
3
3
 
4
4
  "assist": {
5
5
  "actions": {
@@ -98,6 +98,7 @@
98
98
  },
99
99
  "nursery": {
100
100
  "noAmbiguousAnchorText": "warn",
101
+ "noComponentHookFactories": "warn",
101
102
  "noConditionalExpect": "warn",
102
103
  "noContinue": "warn",
103
104
  "noDivRegex": "warn",
@@ -112,14 +113,18 @@
112
113
  "noEqualsToNull": "warn",
113
114
  "noExcessiveClassesPerFile": "warn",
114
115
  "noExcessiveLinesPerFile": "warn",
116
+ "noExcessiveSelectorClasses": "warn",
115
117
  "noFloatingClasses": "warn",
116
118
  "noFloatingPromises": "warn",
117
119
  "noForIn": "warn",
120
+ "noIdenticalTestTitle": "warn",
118
121
  "noImpliedEval": "warn",
119
122
  "noIncrementDecrement": "warn",
120
123
  "noInlineStyles": "warn",
124
+ "noJsxNamespace": "warn",
121
125
  "noJsxPropsBind": "error",
122
126
  "noLeakedRender": "error",
127
+ "noMisleadingReturnType": "warn",
123
128
  "noMisusedPromises": "error",
124
129
  "noMultiAssign": "error",
125
130
  "noMultiStr": "error",
@@ -149,27 +154,36 @@
149
154
  "noUnsafePlusOperands": "warn",
150
155
  "noUntrustedLicenses": "warn",
151
156
  "noUselessReturn": "warn",
157
+ "noUselessTypeConversion": "warn",
152
158
  "useArraySome": "warn",
153
159
  "useArraySortCompare": "warn",
154
160
  "useAwaitThenable": "warn",
155
161
  "useBaseline": "warn",
156
162
  "useConsistentEnumValueType": "warn",
157
163
  "useConsistentMethodSignatures": "warn",
164
+ "useConsistentTestIt": "warn",
158
165
  "useDestructuring": "warn",
166
+ "useDisposables": "warn",
159
167
  "useErrorCause": "warn",
160
168
  "useExhaustiveSwitchCases": "warn",
161
169
  "useExpect": "warn",
170
+ "useExplicitReturnType": "warn",
162
171
  "useExplicitType": "off",
163
172
  "useFind": "warn",
164
173
  "useGlobalThis": "warn",
174
+ "useIframeSandbox": "warn",
165
175
  "useImportsFirst": "warn",
166
176
  "useNamedCaptureGroup": "warn",
167
177
  "useNullishCoalescing": "warn",
168
178
  "usePlaywrightValidDescribeCallback": "warn",
179
+ "useReactAsyncServerFunction": "warn",
180
+ "useReduceTypeParameter": "warn",
169
181
  "useRegexpExec": "warn",
170
182
  "useSortedClasses": "warn",
171
183
  "useSpread": "warn",
172
- "useUnicodeRegex": "warn"
184
+ "useStringStartsEndsWith": "warn",
185
+ "useUnicodeRegex": "warn",
186
+ "useVarsOnTop": "warn"
173
187
  },
174
188
  "performance": {
175
189
  "noAwaitInLoops": "warn",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.4.12/schema.json",
3
3
 
4
4
  "assist": {
5
5
  "actions": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dvashim/biome-config",
3
- "version": "1.5.12",
3
+ "version": "1.6.0",
4
4
  "description": "Shared Biome Configurations",
5
5
  "keywords": [
6
6
  "biome",
@@ -31,18 +31,22 @@
31
31
  "exports": {
32
32
  ".": "./dist/biome.recommended.json",
33
33
  "./react-balanced": "./dist/biome.react-balanced.json",
34
+ "./react-balanced-stable": "./dist/biome.react-balanced-stable.json",
34
35
  "./react-recommended": "./dist/biome.react-recommended.json",
35
36
  "./react-strict": "./dist/biome.react-strict.json",
37
+ "./react-strict-stable": "./dist/biome.react-strict-stable.json",
36
38
  "./react/balanced": "./dist/biome.react-balanced.json",
39
+ "./react/balanced-stable": "./dist/biome.react-balanced-stable.json",
37
40
  "./react/recommended": "./dist/biome.react-recommended.json",
38
41
  "./react/strict": "./dist/biome.react-strict.json",
42
+ "./react/strict-stable": "./dist/biome.react-strict-stable.json",
39
43
  "./recommended": "./dist/biome.recommended.json"
40
44
  },
41
45
  "files": [
42
46
  "dist"
43
47
  ],
44
48
  "devDependencies": {
45
- "@biomejs/biome": "^2.4.10",
49
+ "@biomejs/biome": "^2.4.12",
46
50
  "@changesets/changelog-github": "^0.6.0",
47
51
  "@changesets/cli": "^2.30.0",
48
52
  "validate-package-exports": "^0.23.0"