@dvashim/biome-config 1.5.13 → 1.7.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 +69 -16
- package/dist/biome.react-balanced-stable.json +240 -0
- package/dist/biome.react-balanced.json +16 -1
- package/dist/biome.react-recommended.json +1 -1
- package/dist/biome.react-strict-stable.json +235 -0
- package/dist/biome.react-strict.json +17 -2
- package/dist/biome.recommended.json +1 -1
- package/package.json +7 -3
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
|
-
//
|
|
82
|
-
//
|
|
83
|
-
// and
|
|
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
|
-
//
|
|
96
|
-
//
|
|
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.
|
|
146
|
+
`https://biomejs.dev/schemas/2.4.13/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 **
|
|
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,17 +245,20 @@ 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** (
|
|
248
|
+
- **nursery** (93 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`, `useExplicitReturnType`, `noMisleadingReturnType`, `noUselessTypeConversion`, `useNullishCoalescing`
|
|
251
|
+
- **TypeScript:** `useConsistentEnumValueType`, `useConsistentMethodSignatures`, `useExhaustiveSwitchCases`, `useExplicitReturnType`, `noMisleadingReturnType`, `noUselessTypeConversion`, `useNullishCoalescing`, `useReduceTypeParameter`
|
|
218
252
|
- **Resource management:** `useDisposables` (enforces `using` for `Disposable`/`AsyncDisposable`)
|
|
219
|
-
- **Regex:** `useNamedCaptureGroup`, `useUnicodeRegex`, `useRegexpExec`
|
|
220
|
-
- **
|
|
221
|
-
- **
|
|
253
|
+
- **Regex:** `useNamedCaptureGroup`, `useUnicodeRegex`, `useRegexpExec`, `useRegexpTest`
|
|
254
|
+
- **DOM:** `useDomNodeTextContent`, `useDomQuerySelector`
|
|
255
|
+
- **Styling:** `noDuplicateSelectors`, `noInlineStyles`, `noExcessiveSelectorClasses`
|
|
256
|
+
- **Testing:** `useConsistentTestIt`, `useExpect`, `noConditionalExpect`, `noIdenticalTestTitle`
|
|
222
257
|
- **Playwright:** Full suite of 10 Playwright rules
|
|
223
258
|
- **Drizzle:** `noDrizzleDeleteWithoutWhere`, `noDrizzleUpdateWithoutWhere`
|
|
224
259
|
- **Tailwind:** `useSortedClasses`, `noFloatingClasses`
|
|
260
|
+
- **React:** `useReactAsyncServerFunction`, `noComponentHookFactories`, `noJsxNamespace`
|
|
261
|
+
- **Security:** `useIframeSandbox`
|
|
225
262
|
- **Dependencies:** `noUntrustedLicenses`
|
|
226
263
|
- **Disabled:** `noTernary`, `useExplicitType`
|
|
227
264
|
|
|
@@ -235,6 +272,12 @@ The most opinionated configuration. Enables all recommended rules plus **180+ op
|
|
|
235
272
|
|
|
236
273
|
---
|
|
237
274
|
|
|
275
|
+
### React strict-stable
|
|
276
|
+
|
|
277
|
+
Same as React strict, but **without nursery (experimental) rules**. Includes rules from 7 categories: a11y, complexity, correctness, performance, security, style, and suspicious.
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
238
281
|
### React balanced
|
|
239
282
|
|
|
240
283
|
Same rule set as strict, with **targeted relaxations** to reduce false positives and noise in real-world projects:
|
|
@@ -256,12 +299,20 @@ Same rule set as strict, with **targeted relaxations** to reduce false positives
|
|
|
256
299
|
| `noNestedTernary` | warn | off | Allows nested ternaries |
|
|
257
300
|
| `useNamingConvention` | strictCase: true | strictCase: false | More lenient casing |
|
|
258
301
|
|
|
302
|
+
> `noContinue`, `noIncrementDecrement`, and `noUselessReturn` are nursery rules — they are not present in the `-stable` variants.
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
### React balanced-stable
|
|
307
|
+
|
|
308
|
+
Same as React balanced, but **without nursery (experimental) rules**. All non-nursery relaxations from the table above still apply.
|
|
309
|
+
|
|
259
310
|
## FAQ
|
|
260
311
|
|
|
261
312
|
### Which config should I start with?
|
|
262
313
|
|
|
263
314
|
- **Non-React projects** — use `@dvashim/biome-config` (base recommended).
|
|
264
|
-
- **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.
|
|
315
|
+
- **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.
|
|
265
316
|
|
|
266
317
|
### How do I override a rule from the preset?
|
|
267
318
|
|
|
@@ -269,6 +320,7 @@ Add a `linter.rules` section in your `biome.json`. Local settings merge with and
|
|
|
269
320
|
|
|
270
321
|
```jsonc
|
|
271
322
|
{
|
|
323
|
+
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
|
|
272
324
|
"extends": ["@dvashim/biome-config/react-balanced"],
|
|
273
325
|
"linter": {
|
|
274
326
|
"rules": {
|
|
@@ -288,6 +340,7 @@ For exclusions that should not affect Git tracking, use negated patterns in `fil
|
|
|
288
340
|
|
|
289
341
|
```jsonc
|
|
290
342
|
{
|
|
343
|
+
"$schema": "https://biomejs.dev/schemas/latest/schema.json",
|
|
291
344
|
"extends": ["@dvashim/biome-config"],
|
|
292
345
|
"files": {
|
|
293
346
|
"includes": ["**", "!!**/generated", "!!**/coverage"]
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.4.13/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.
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.4.13/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,18 @@
|
|
|
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
|
+
"noJsxLeakedDollar": "warn",
|
|
129
|
+
"noJsxNamespace": "warn",
|
|
125
130
|
"noJsxPropsBind": "error",
|
|
126
131
|
"noLeakedRender": "error",
|
|
132
|
+
"noLoopFunc": "warn",
|
|
127
133
|
"noMisleadingReturnType": "warn",
|
|
128
134
|
"noMisusedPromises": "error",
|
|
129
135
|
"noMultiAssign": "error",
|
|
@@ -151,6 +157,7 @@
|
|
|
151
157
|
"noUndeclaredEnvVars": "warn",
|
|
152
158
|
"noUnknownAttribute": "warn",
|
|
153
159
|
"noUnnecessaryConditions": "warn",
|
|
160
|
+
"noUnnecessaryTemplateExpression": "warn",
|
|
154
161
|
"noUnsafePlusOperands": "warn",
|
|
155
162
|
"noUntrustedLicenses": "warn",
|
|
156
163
|
"noUselessReturn": "info",
|
|
@@ -164,6 +171,8 @@
|
|
|
164
171
|
"useConsistentTestIt": "warn",
|
|
165
172
|
"useDestructuring": "warn",
|
|
166
173
|
"useDisposables": "warn",
|
|
174
|
+
"useDomNodeTextContent": "warn",
|
|
175
|
+
"useDomQuerySelector": "warn",
|
|
167
176
|
"useErrorCause": "warn",
|
|
168
177
|
"useExhaustiveSwitchCases": "warn",
|
|
169
178
|
"useExpect": "warn",
|
|
@@ -171,14 +180,20 @@
|
|
|
171
180
|
"useExplicitType": "off",
|
|
172
181
|
"useFind": "warn",
|
|
173
182
|
"useGlobalThis": "warn",
|
|
183
|
+
"useIframeSandbox": "warn",
|
|
174
184
|
"useImportsFirst": "warn",
|
|
175
185
|
"useNamedCaptureGroup": "warn",
|
|
176
186
|
"useNullishCoalescing": "warn",
|
|
177
187
|
"usePlaywrightValidDescribeCallback": "warn",
|
|
188
|
+
"useReactAsyncServerFunction": "warn",
|
|
189
|
+
"useReduceTypeParameter": "warn",
|
|
178
190
|
"useRegexpExec": "warn",
|
|
191
|
+
"useRegexpTest": "warn",
|
|
179
192
|
"useSortedClasses": "warn",
|
|
180
193
|
"useSpread": "warn",
|
|
194
|
+
"useStringStartsEndsWith": "warn",
|
|
181
195
|
"useUnicodeRegex": "warn",
|
|
196
|
+
"useVarsOnTop": "warn",
|
|
182
197
|
"noIncrementDecrement": {
|
|
183
198
|
"level": "warn",
|
|
184
199
|
"options": {
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.4.13/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.
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.4.13/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,19 @@
|
|
|
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
|
+
"noJsxLeakedDollar": "warn",
|
|
125
|
+
"noJsxNamespace": "warn",
|
|
121
126
|
"noJsxPropsBind": "error",
|
|
122
127
|
"noLeakedRender": "error",
|
|
128
|
+
"noLoopFunc": "warn",
|
|
123
129
|
"noMisleadingReturnType": "warn",
|
|
124
130
|
"noMisusedPromises": "error",
|
|
125
131
|
"noMultiAssign": "error",
|
|
@@ -147,6 +153,7 @@
|
|
|
147
153
|
"noUndeclaredEnvVars": "warn",
|
|
148
154
|
"noUnknownAttribute": "warn",
|
|
149
155
|
"noUnnecessaryConditions": "warn",
|
|
156
|
+
"noUnnecessaryTemplateExpression": "warn",
|
|
150
157
|
"noUnsafePlusOperands": "warn",
|
|
151
158
|
"noUntrustedLicenses": "warn",
|
|
152
159
|
"noUselessReturn": "warn",
|
|
@@ -160,6 +167,8 @@
|
|
|
160
167
|
"useConsistentTestIt": "warn",
|
|
161
168
|
"useDestructuring": "warn",
|
|
162
169
|
"useDisposables": "warn",
|
|
170
|
+
"useDomNodeTextContent": "warn",
|
|
171
|
+
"useDomQuerySelector": "warn",
|
|
163
172
|
"useErrorCause": "warn",
|
|
164
173
|
"useExhaustiveSwitchCases": "warn",
|
|
165
174
|
"useExpect": "warn",
|
|
@@ -167,14 +176,20 @@
|
|
|
167
176
|
"useExplicitType": "off",
|
|
168
177
|
"useFind": "warn",
|
|
169
178
|
"useGlobalThis": "warn",
|
|
179
|
+
"useIframeSandbox": "warn",
|
|
170
180
|
"useImportsFirst": "warn",
|
|
171
181
|
"useNamedCaptureGroup": "warn",
|
|
172
182
|
"useNullishCoalescing": "warn",
|
|
173
183
|
"usePlaywrightValidDescribeCallback": "warn",
|
|
184
|
+
"useReactAsyncServerFunction": "warn",
|
|
185
|
+
"useReduceTypeParameter": "warn",
|
|
174
186
|
"useRegexpExec": "warn",
|
|
187
|
+
"useRegexpTest": "warn",
|
|
175
188
|
"useSortedClasses": "warn",
|
|
176
189
|
"useSpread": "warn",
|
|
177
|
-
"
|
|
190
|
+
"useStringStartsEndsWith": "warn",
|
|
191
|
+
"useUnicodeRegex": "warn",
|
|
192
|
+
"useVarsOnTop": "warn"
|
|
178
193
|
},
|
|
179
194
|
"performance": {
|
|
180
195
|
"noAwaitInLoops": "warn",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dvashim/biome-config",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Shared Biome Configurations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"biome",
|
|
@@ -31,20 +31,24 @@
|
|
|
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.
|
|
49
|
+
"@biomejs/biome": "^2.4.13",
|
|
46
50
|
"@changesets/changelog-github": "^0.6.0",
|
|
47
|
-
"@changesets/cli": "^2.
|
|
51
|
+
"@changesets/cli": "^2.31.0",
|
|
48
52
|
"validate-package-exports": "^0.23.0"
|
|
49
53
|
},
|
|
50
54
|
"engines": {
|