@nedcloarbr/biome-config 2.0.2 → 2.2.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
@@ -13,25 +13,21 @@
13
13
 
14
14
  **Table of Contents**
15
15
 
16
- - [Description](#description)
17
16
  - [Installation](#installation)
18
- - [Usage](#usage)
19
- - [To-Do](#to-do)
20
-
21
- ## Description
22
-
23
- Configuring a linter and formatter, such as `BiomeJS`, is crucial for maintaining consistent, readable, and error-free code. Linters ensure uniform coding standards and early error detection, saving debugging time. Formatters automate code structuring, enhancing readability and maintenance. These tools increase productivity by allowing developers to focus on critical tasks. They also enforce quality standards, creating a professional development environment. In CI/CD workflows, they ensure code adherence to quality standards, preserving codebase integrity.
24
-
25
- The package includes configuration for:
26
- - [`NestJS`](https://nestjs.com/)
27
- - [`React`](https://react.dev/)
28
- - [`Vite`](https://vitejs.dev/)
29
- - [`NextJS`](https://nextjs.org/)
17
+ - [Configs](#configs)
18
+ - [base](#base)
19
+ - [css](#css)
20
+ - [html](#html)
21
+ - [nestjs](#nestjs)
22
+ - [react](#react)
23
+ - [next](#next)
24
+ - [vue](#vue)
25
+ - [angular](#angular)
26
+ - [react-native](#react-native)
27
+ - [ignore](#ignore)
30
28
 
31
29
  ## Installation
32
30
 
33
- You can use the following command to install this package.
34
-
35
31
  ```sh
36
32
  npm install --save-dev --save-exact @biomejs/biome @nedcloarbr/biome-config
37
33
  yarn add --dev --exact @biomejs/biome @nedcloarbr/biome-config
@@ -40,84 +36,168 @@ bun add --dev --exact @biomejs/biome @nedcloarbr/biome-config
40
36
  ```
41
37
 
42
38
  > [!WARNING]
43
- > At the moment BiomeJS doesn't support Yarn PnP completely \
44
- > Discussion for add this support: https://github.com/biomejs/biome/discussions/3393 \
45
- > If you're using Yarn Classic (v1.x) you don't have to worry about this \
46
- > To opt out of using PnP in Yarn Modern (^v2.x), do the following
47
-
48
- ```diff
49
- # .yarnrc.yml
50
- + nodeLinker: node-modules
39
+ > BiomeJS doesn't fully support Yarn PnP yet — [discussion](https://github.com/biomejs/biome/discussions/3393).
40
+ > If you're using Yarn Modern (v2+), opt out of PnP:
41
+ > ```yaml
42
+ > # .yarnrc.yml
43
+ > nodeLinker: node-modules
44
+ > ```
45
+
46
+ ## Configs
47
+
48
+ All configs extend `base` unless noted otherwise. The diagram below shows the full inheritance chain:
49
+
50
+ ```
51
+ base
52
+ ├── nestjs
53
+ ├── css (CSS formatter + linting + Tailwind support)
54
+ ├── html (HTML formatter + 16 a11y rules)
55
+ └── base + html + css
56
+ ├── react
57
+ │ ├── next
58
+ │ └── react-native
59
+ ├── vue
60
+ └── angular
61
+ ```
62
+
63
+ ---
64
+
65
+ ### `base`
66
+
67
+ General TypeScript/JavaScript config. Includes formatter, linter rules for correctness, style, complexity and suspicious groups, and import organization.
68
+
69
+ ```jsonc
70
+ // biome.json
71
+ {
72
+ "extends": ["@nedcloarbr/biome-config/base"]
73
+ }
74
+ ```
75
+
76
+ ---
77
+
78
+ ### `css`
79
+
80
+ CSS formatter and full CSS linting. Includes Tailwind CSS support out of the box — `@tailwind`, `@apply`, `@config`, `theme()` and `screen()` are all recognized.
81
+
82
+ ```jsonc
83
+ // biome.json
84
+ {
85
+ "extends": ["@nedcloarbr/biome-config/css"]
86
+ }
51
87
  ```
52
88
 
53
- ## Usage
89
+ ---
90
+
91
+ ### `html`
54
92
 
55
- ### `NodeJS`
93
+ HTML formatter and all 16 recommended accessibility rules (`useAltText`, `useButtonType`, `useHtmlLang`, `noAutofocus`, etc.).
56
94
 
57
- ```diff
58
- # biome.json
59
- + extends: ["@nedcloarbr/biome-config"]
95
+ ```jsonc
96
+ // biome.json
97
+ {
98
+ "extends": ["@nedcloarbr/biome-config/html"]
99
+ }
60
100
  ```
61
101
 
62
- or
102
+ ---
103
+
104
+ ### `nestjs`
63
105
 
64
- ```diff
65
- # biome.json
66
- + extends: ["@nedcloarbr/biome-config/base"]
106
+ Extends `base`. Enables TypeScript parameter decorators (`@Injectable`, `@Controller`, etc.) and enforces explicit return types on services and controllers.
107
+
108
+ ```jsonc
109
+ // biome.json
110
+ {
111
+ "extends": ["@nedcloarbr/biome-config/nestjs"]
112
+ }
67
113
  ```
68
114
 
69
- ### [`NestJS`](https://nestjs.com/)
115
+ ---
116
+
117
+ ### `react`
70
118
 
71
- This config includes base config
119
+ Extends `base` + `html` + `css`. Adds JSX-specific rules: `useSortedClasses` (Tailwind class sorting), `noReactForwardRef` (React 19), `noDangerouslySetInnerHtml`, a11y rules for JSX, and more.
72
120
 
73
- ```diff
74
- # biome.json
75
- + "extends": ["@nedcloarbr/biome-config/nestjs"]
121
+ ```jsonc
122
+ // biome.json
123
+ {
124
+ "extends": ["@nedcloarbr/biome-config/react"]
125
+ }
76
126
  ```
77
127
 
78
- ### [`React`](https://react.dev/)
79
- This config includes base config
128
+ ---
80
129
 
81
- ```diff
82
- # biome.json
83
- + "extends": ["@nedcloarbr/biome-config/react"]
130
+ ### `next`
131
+
132
+ Extends `react`. Disables `noDefaultExport` (required for Next.js pages and layouts) and adds `noNextAsyncClientComponent`.
133
+
134
+ ```jsonc
135
+ // biome.json
136
+ {
137
+ "extends": ["@nedcloarbr/biome-config/next"]
138
+ }
84
139
  ```
85
140
 
86
- If you're in a [`Vite`](https://vitejs.dev/) Project \
87
- Install this [Vite Plugin](https://github.com/skrulling/vite-plugin-biome) and follow the configuration guide
141
+ ---
88
142
 
89
- If you're in a [`NextJS`](https://nextjs.org/) Project \
90
- You will need to disable eslint checking since NextJS doesn't [support Biome](https://github.com/vercel/next.js/pull/67280) natively yet
143
+ ### `vue`
91
144
 
92
- ``` diff
93
- # next.config.js
94
- + eslint: {
95
- + ignoreDuringBuilds: true,
96
- + }
145
+ Extends `base` + `html` + `css`. Adds all Vue-specific correctness rules (`noVueReservedProps`, `noVueDuplicateKeys`, `noVueSetupPropsReactivityLoss`, etc.) and nursery rules for Vue directives.
146
+
147
+ ```jsonc
148
+ // biome.json
149
+ {
150
+ "extends": ["@nedcloarbr/biome-config/vue"]
151
+ }
97
152
  ```
98
153
 
99
- ### `Ignore` (an array of commonly ignored folders)
154
+ ---
155
+
156
+ ### `angular`
100
157
 
101
- This config don't includes base config
158
+ Extends `base` + `html` + `css`. Enables TypeScript parameter decorators (`@Component`, `@Injectable`, etc.) and enforces explicit return types.
102
159
 
103
- ```diff
104
- # biome.json
105
- + "extends": ["@nedcloarbr/biome-config/ignore"]
160
+ ```jsonc
161
+ // biome.json
162
+ {
163
+ "extends": ["@nedcloarbr/biome-config/angular"]
164
+ }
106
165
  ```
107
166
 
167
+ ---
108
168
 
109
- ## To-Do
169
+ ### `react-native`
110
170
 
111
- Add support for other types of projects
171
+ Extends `react`. Adds React Native-specific rules: `noReactNativeDeepImports`, `noReactNativeLiteralColors`, `noReactNativeRawText`, and `useReactNativePlatformComponents`.
112
172
 
113
- - Configs
114
- - [x] ReactJS
115
- - [x] Vanilla
116
- - [x] Vite
117
- - [x] NextJS
118
- - [x] NodeJS
119
- - [x] Vanilla
120
- - [x] TypeScript
173
+ ```jsonc
174
+ // biome.json
175
+ {
176
+ "extends": ["@nedcloarbr/biome-config/react-native"]
177
+ }
178
+ ```
179
+
180
+ ---
181
+
182
+ ### `ignore`
183
+
184
+ A standalone list of commonly ignored paths (build outputs, caches, editor folders, AI tool directories, generated files, etc.). Does not extend `base`.
121
185
 
122
- - Repository
123
- - [ ] Fix cliff for generate changelogs correctly
186
+ ```jsonc
187
+ // biome.json
188
+ {
189
+ "extends": ["@nedcloarbr/biome-config/ignore"]
190
+ }
191
+ ```
192
+
193
+ You can combine it with any other config:
194
+
195
+ ```jsonc
196
+ // biome.json
197
+ {
198
+ "extends": [
199
+ "@nedcloarbr/biome-config/react",
200
+ "@nedcloarbr/biome-config/ignore"
201
+ ]
202
+ }
203
+ ```
package/angular.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
+ "extends": [
4
+ "./base.json",
5
+ "./html.json",
6
+ "./css.json"
7
+ ],
8
+ "javascript": {
9
+ "parser": {
10
+ "unsafeParameterDecoratorsEnabled": true
11
+ }
12
+ },
13
+ "linter": {
14
+ "rules": {
15
+ "a11y": {},
16
+ "nursery": {
17
+ "useExplicitReturnType": "warn"
18
+ }
19
+ }
20
+ }
21
+ }
package/base.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.3.0/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
3
  "assist": {
4
4
  "actions": {
5
5
  "source": {
@@ -47,12 +47,20 @@
47
47
  "noExcessiveCognitiveComplexity": "error",
48
48
  "noForEach": "error",
49
49
  "noUselessCatch": "error",
50
+ "noUselessCatchBinding": "error",
50
51
  "noUselessConstructor": "error",
51
52
  "noUselessEmptyExport": "error",
52
53
  "noUselessSwitchCase": "error",
54
+ "noUselessUndefined": "error",
53
55
  "noVoid": "off",
54
56
  "useArrowFunction": "error",
55
57
  "useLiteralKeys": "off",
58
+ "useMaxParams": {
59
+ "level": "warn",
60
+ "options": {
61
+ "max": 4
62
+ }
63
+ },
56
64
  "useOptionalChain": "error",
57
65
  "useRegexLiterals": "error",
58
66
  "useSimplifiedLogicExpression": "error"
@@ -64,53 +72,72 @@
64
72
  "noEmptyPattern": "error",
65
73
  "noGlobalObjectCalls": "error",
66
74
  "noInnerDeclarations": "off",
75
+ "noInvalidBuiltinInstantiation": "error",
67
76
  "noInvalidConstructorSuper": "error",
68
77
  "noSwitchDeclarations": "off",
69
- "noInvalidBuiltinInstantiation": "error"
78
+ "noUnresolvedImports": "error"
79
+ },
80
+ "nursery": {
81
+ "noImpliedEval": "error",
82
+ "noLoopFunc": "error",
83
+ "noUnnecessaryTemplateExpression": "error",
84
+ "noUselessTypeConversion": "error",
85
+ "useRegexpTest": "error",
86
+ "useStringStartsEndsWith": "error"
70
87
  },
71
88
  "style": {
72
89
  "noDefaultExport": "error",
73
- "noUselessElse": "error",
90
+ "noInferrableTypes": "error",
74
91
  "noNonNullAssertion": "off",
92
+ "noParameterAssign": "error",
93
+ "noUnusedTemplateLiteral": "error",
94
+ "noUselessElse": "error",
75
95
  "useAsConstAssertion": "warn",
76
96
  "useConst": "error",
77
- "useNodejsImportProtocol": "error",
78
- "useSingleVarDeclarator": "error",
97
+ "useConsistentArrayType": {
98
+ "level": "warn",
99
+ "options": {
100
+ "syntax": "shorthand"
101
+ }
102
+ },
103
+ "useConsistentArrowReturn": "error",
104
+ "useDefaultParameterLast": "error",
105
+ "useEnumInitializers": "error",
79
106
  "useExportType": {
80
- "options": {},
107
+ "options": {
108
+ "style": "auto"
109
+ },
81
110
  "level": "info",
82
111
  "fix": "none"
83
112
  },
84
113
  "useImportType": {
85
- "options": {},
114
+ "options": {
115
+ "style": "auto"
116
+ },
86
117
  "level": "info",
87
118
  "fix": "none"
88
119
  },
89
- "noParameterAssign": "error",
90
- "useDefaultParameterLast": "error",
91
- "useEnumInitializers": "error",
92
- "useSelfClosingElements": "error",
93
- "noUnusedTemplateLiteral": "error",
120
+ "useNodejsImportProtocol": "error",
94
121
  "useNumberNamespace": "error",
95
- "noInferrableTypes": "error",
96
- "useConsistentArrayType": {
97
- "level": "error",
98
- "options": {
99
- "syntax": "shorthand"
100
- }
101
- }
122
+ "useSelfClosingElements": "error",
123
+ "useSingleVarDeclarator": "error"
102
124
  },
103
125
  "suspicious": {
104
126
  "noApproximativeNumericConstant": "error",
105
127
  "noCatchAssign": "error",
106
128
  "noConfusingVoidType": "error",
129
+ "noDeprecatedImports": "warn",
107
130
  "noDoubleEquals": "error",
108
131
  "noDuplicateCase": "error",
132
+ "noDuplicateDependencies": "warn",
109
133
  "noDuplicateObjectKeys": "error",
110
134
  "noDuplicateParameters": "error",
111
135
  "noEmptyBlockStatements": "error",
112
136
  "noEmptyInterface": "error",
137
+ "noEmptySource": "error",
113
138
  "noExplicitAny": "error",
139
+ "noImportCycles": "warn",
140
+ "noUnusedExpressions": "error",
114
141
  "noVar": "error"
115
142
  }
116
143
  }
package/css.json ADDED
@@ -0,0 +1,82 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
+ "css": {
4
+ "formatter": {
5
+ "enabled": true,
6
+ "indentStyle": "tab",
7
+ "indentWidth": 2,
8
+ "lineEnding": "lf",
9
+ "lineWidth": 120,
10
+ "quoteStyle": "double"
11
+ },
12
+ "linter": {
13
+ "enabled": true
14
+ },
15
+ "parser": {
16
+ "tailwindDirectives": true,
17
+ "cssModules": true
18
+ }
19
+ },
20
+ "linter": {
21
+ "rules": {
22
+ "a11y": {
23
+ "useGenericFontNames": "error"
24
+ },
25
+ "complexity": {
26
+ "noImportantStyles": "error"
27
+ },
28
+ "correctness": {
29
+ "noInvalidDirectionInLinearGradient": "error",
30
+ "noInvalidGridAreas": "error",
31
+ "noInvalidPositionAtImportRule": "error",
32
+ "noMissingVarFunction": "error",
33
+ "noUnknownFunction": {
34
+ "level": "error",
35
+ "options": {
36
+ "ignore": [
37
+ "theme",
38
+ "screen"
39
+ ]
40
+ }
41
+ },
42
+ "noUnknownMediaFeatureName": "error",
43
+ "noUnknownProperty": "error",
44
+ "noUnknownPseudoClass": "error",
45
+ "noUnknownPseudoElement": "error",
46
+ "noUnknownTypeSelector": "error",
47
+ "noUnknownUnit": "error",
48
+ "noUnmatchableAnbSelector": "error"
49
+ },
50
+ "nursery": {
51
+ "noDeprecatedMediaType": "warn",
52
+ "noDuplicateSelectors": "error",
53
+ "noExcessiveSelectorClasses": "warn"
54
+ },
55
+ "style": {
56
+ "noDescendingSpecificity": "warn"
57
+ },
58
+ "suspicious": {
59
+ "noDuplicateAtImportRules": "error",
60
+ "noDuplicateCustomProperties": "error",
61
+ "noDuplicateFontNames": "error",
62
+ "noDuplicateProperties": "error",
63
+ "noDuplicateSelectorsKeyframeBlock": "error",
64
+ "noEmptyBlock": "error",
65
+ "noImportantInKeyframe": "error",
66
+ "noIrregularWhitespace": "error",
67
+ "noShorthandPropertyOverrides": "error",
68
+ "noUnknownAtRules": {
69
+ "level": "error",
70
+ "options": {
71
+ "ignore": [
72
+ "tailwind",
73
+ "apply",
74
+ "config"
75
+ ]
76
+ }
77
+ },
78
+ "noUselessEscapeInString": "error"
79
+ }
80
+ }
81
+ }
82
+ }
package/html.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
+ "html": {
4
+ "formatter": {
5
+ "enabled": true,
6
+ "attributePosition": "auto",
7
+ "bracketSameLine": true,
8
+ "indentStyle": "tab",
9
+ "indentWidth": 2,
10
+ "lineEnding": "lf",
11
+ "lineWidth": 120,
12
+ "whitespaceSensitivity": "css"
13
+ }
14
+ },
15
+ "linter": {
16
+ "rules": {
17
+ "a11y": {
18
+ "noAccessKey": "error",
19
+ "noAutofocus": "error",
20
+ "noDistractingElements": "error",
21
+ "noHeaderScope": "error",
22
+ "noPositiveTabindex": "error",
23
+ "noRedundantAlt": "error",
24
+ "noSvgWithoutTitle": "error",
25
+ "useAltText": "error",
26
+ "useAnchorContent": "error",
27
+ "useAriaPropsForRole": "error",
28
+ "useButtonType": "error",
29
+ "useHtmlLang": "error",
30
+ "useIframeTitle": "error",
31
+ "useMediaCaption": "error",
32
+ "useValidAriaRole": "error",
33
+ "useValidLang": "error"
34
+ },
35
+ "nursery": {
36
+ "useIframeSandbox": "error"
37
+ }
38
+ }
39
+ }
40
+ }
package/ignore.json CHANGED
@@ -1,19 +1,60 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.3.0/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
3
  "files": {
4
4
  "includes": [
5
5
  "**",
6
- "!**/dist/**/*",
7
- "!**/out/**/*",
8
- "!**/build/**/*",
9
- "!**/coverage/**/*",
10
- "!**/.vscode/**/*",
11
- "!**/.idea/**/*",
12
- "!**/.atom/**/*",
13
- "!**/.yarn/**/*",
14
- "!**/.next/**/*",
6
+ "!**/node_modules",
7
+ "!**/dist",
8
+ "!**/out",
9
+ "!**/build",
10
+ "!**/bin",
11
+ "!**/tmp",
12
+ "!**/temp",
13
+ "!**/coverage",
14
+ "!**/.nyc_output",
15
+ "!**/.next",
16
+ "!**/.nuxt",
17
+ "!**/.output",
18
+ "!**/.svelte-kit",
19
+ "!**/.astro",
20
+ "!**/.remix",
21
+ "!**/.solid",
22
+ "!**/.vinxi",
23
+ "!**/storybook-static",
24
+ "!**/.turbo",
25
+ "!**/.cache",
26
+ "!**/.angular",
27
+ "!**/.nx",
28
+ "!**/.parcel-cache",
29
+ "!**/.rollup.cache",
30
+ "!**/.wrangler",
31
+ "!**/.serverless",
32
+ "!**/.expo",
33
+ "!**/.vscode",
34
+ "!**/.idea",
35
+ "!**/.vs",
36
+ "!**/.fleet",
37
+ "!**/.atom",
38
+ "!**/.cursor",
39
+ "!**/.windsurf",
40
+ "!**/.claude",
41
+ "!**/.codeium",
42
+ "!**/.tabnine",
43
+ "!**/.continue",
44
+ "!**/.aider",
45
+ "!**/.supermaven",
46
+ "!**/.cody",
47
+ "!**/.yarn",
15
48
  "!**/*.pnp.*",
16
- "!**/.nx/**/*"
49
+ "!**/generated",
50
+ "!**/__generated__",
51
+ "!**/*.generated.ts",
52
+ "!**/*.generated.js",
53
+ "!**/*.generated.d.ts",
54
+ "!**/*.min.js",
55
+ "!**/*.min.css",
56
+ "!**/.eslintcache",
57
+ "!**/.stylelintcache"
17
58
  ],
18
59
  "ignoreUnknown": true
19
60
  }
package/nestjs.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.3.0/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
3
  "extends": [
4
4
  "./base.json"
5
5
  ],
@@ -7,5 +7,12 @@
7
7
  "parser": {
8
8
  "unsafeParameterDecoratorsEnabled": true
9
9
  }
10
+ },
11
+ "linter": {
12
+ "rules": {
13
+ "nursery": {
14
+ "useExplicitReturnType": "warn"
15
+ }
16
+ }
10
17
  }
11
18
  }
package/next.json ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
+ "extends": [
4
+ "./react.json"
5
+ ],
6
+ "linter": {
7
+ "rules": {
8
+ "correctness": {
9
+ "noNextAsyncClientComponent": "error"
10
+ },
11
+ "style": {
12
+ "noDefaultExport": "off"
13
+ }
14
+ }
15
+ }
16
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nedcloarbr/biome-config",
3
- "version": "2.0.2",
3
+ "version": "2.2.0",
4
4
  "description": "BiomeJS Configuration used by NedcloarBR in their projects",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,23 +22,48 @@
22
22
  },
23
23
  "homepage": "https://github.com/NedcloarBR/biome-config#readme",
24
24
  "keywords": [
25
- "BiomeJS",
26
- "NestJS",
25
+ "biome",
26
+ "biomejs",
27
27
  "linter",
28
- "formatter"
28
+ "formatter",
29
+ "config",
30
+ "typescript",
31
+ "react",
32
+ "nextjs",
33
+ "vue",
34
+ "angular",
35
+ "react-native",
36
+ "nestjs",
37
+ "css",
38
+ "html",
39
+ "a11y",
40
+ "tailwind"
29
41
  ],
30
42
  "exports": {
31
43
  ".": "./base.json",
32
44
  "./biome": "./base.json",
33
45
  "./base": "./base.json",
46
+ "./css": "./css.json",
47
+ "./html": "./html.json",
34
48
  "./nestjs": "./nestjs.json",
35
49
  "./react": "./react.json",
50
+ "./next": "./next.json",
51
+ "./vue": "./vue.json",
52
+ "./angular": "./angular.json",
53
+ "./react-native": "./react-native.json",
36
54
  "./ignore": "./ignore.json"
37
55
  },
38
56
  "files": [
57
+ "README.md",
39
58
  "base.json",
59
+ "css.json",
60
+ "html.json",
40
61
  "nestjs.json",
41
62
  "react.json",
63
+ "next.json",
64
+ "vue.json",
65
+ "angular.json",
66
+ "react-native.json",
42
67
  "ignore.json"
43
68
  ],
44
69
  "packageManager": "yarn@4.9.2",
@@ -47,6 +72,6 @@
47
72
  "changelog": "git cliff --prepend ./CHANGELOG.md -l --current -c ./cliff.toml -r ."
48
73
  },
49
74
  "devDependencies": {
50
- "release-it": "^19.0.3"
75
+ "release-it": "^19.2.4"
51
76
  }
52
77
  }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
+ "extends": [
4
+ "./react.json"
5
+ ],
6
+ "linter": {
7
+ "rules": {
8
+ "nursery": {
9
+ "noReactNativeDeepImports": "error",
10
+ "noReactNativeLiteralColors": "warn",
11
+ "noReactNativeRawText": "error",
12
+ "useReactNativePlatformComponents": "error"
13
+ }
14
+ }
15
+ }
16
+ }
package/react.json CHANGED
@@ -1,31 +1,23 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.3.0/schema.json",
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
3
  "extends": [
4
- "./base.json"
4
+ "./base.json",
5
+ "./html.json",
6
+ "./css.json"
5
7
  ],
6
8
  "javascript": {
7
9
  "jsxRuntime": "transparent"
8
10
  },
9
- "css": {
10
- "formatter": {
11
- "enabled": true,
12
- "indentWidth": 2,
13
- "indentStyle": "tab",
14
- "lineEnding": "lf",
15
- "lineWidth": 120,
16
- "quoteStyle": "double"
17
- }
18
- },
19
11
  "linter": {
20
12
  "rules": {
21
13
  "a11y": {},
22
14
  "nursery": {
15
+ "noComponentHookFactories": "error",
16
+ "noJsxLeakedDollar": "warn",
17
+ "noJsxNamespace": "error",
18
+ "noReactStringRefs": "error",
23
19
  "useSortedClasses": "error"
24
20
  },
25
- "correctness": {
26
- "noUnknownFunction": "error",
27
- "noUnknownUnit": "error"
28
- },
29
21
  "security": {
30
22
  "noDangerouslySetInnerHtml": "error",
31
23
  "noDangerouslySetInnerHtmlWithChildren": "error"
@@ -34,6 +26,7 @@
34
26
  "noImplicitBoolean": "error"
35
27
  },
36
28
  "suspicious": {
29
+ "noReactForwardRef": "warn",
37
30
  "noSuspiciousSemicolonInJsx": "error"
38
31
  }
39
32
  }
package/vue.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.5.13/schema.json",
3
+ "extends": [
4
+ "./base.json",
5
+ "./html.json",
6
+ "./css.json"
7
+ ],
8
+ "linter": {
9
+ "rules": {
10
+ "a11y": {},
11
+ "correctness": {
12
+ "noVueDataObjectDeclaration": "error",
13
+ "noVueDuplicateKeys": "error",
14
+ "noVueReservedKeys": "error",
15
+ "noVueReservedProps": "error",
16
+ "noVueSetupPropsReactivityLoss": "error"
17
+ },
18
+ "nursery": {
19
+ "noVueImportCompilerMacros": "error",
20
+ "noVueVOnNumberValues": "warn",
21
+ "useVueNextTickPromise": "error",
22
+ "useVueValidVFor": "error"
23
+ },
24
+ "style": {
25
+ "noDefaultExport": "off"
26
+ }
27
+ }
28
+ }
29
+ }