@simplysm/lint 13.0.72 → 13.0.74
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 +260 -14
- package/dist/eslint-recommended.d.ts.map +1 -1
- package/dist/eslint-recommended.js +14 -2
- package/dist/eslint-recommended.js.map +1 -1
- package/package.json +2 -2
- package/src/eslint-recommended.ts +15 -4
package/README.md
CHANGED
|
@@ -1,25 +1,271 @@
|
|
|
1
1
|
# @simplysm/lint
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Simplysm package - Lint configuration (ESLint + Stylelint)
|
|
4
|
+
|
|
5
|
+
Provides a shared ESLint flat config, a custom ESLint plugin with Simplysm-specific rules, and a shared Stylelint config for use across Simplysm projects.
|
|
4
6
|
|
|
5
7
|
## Installation
|
|
6
8
|
|
|
9
|
+
```bash
|
|
10
|
+
pnpm add -D @simplysm/lint
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Entry Points
|
|
14
|
+
|
|
15
|
+
This package exposes three separate entry points:
|
|
16
|
+
|
|
17
|
+
| Entry point | Description |
|
|
18
|
+
|---|---|
|
|
19
|
+
| `@simplysm/lint/eslint-plugin` | Custom ESLint plugin (Simplysm rules only) |
|
|
20
|
+
| `@simplysm/lint/eslint-recommended` | Full recommended ESLint flat config |
|
|
21
|
+
| `@simplysm/lint/stylelint-recommended` | Recommended Stylelint config |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## `@simplysm/lint/eslint-recommended`
|
|
26
|
+
|
|
27
|
+
A pre-built ESLint [flat config](https://eslint.org/docs/latest/use/configure/configuration-files-new) array that covers JS, TS, SolidJS (TSX), and Tailwind CSS files.
|
|
28
|
+
|
|
29
|
+
**Included plugins:**
|
|
30
|
+
- `typescript-eslint`
|
|
31
|
+
- `eslint-plugin-import`
|
|
32
|
+
- `eslint-plugin-unused-imports`
|
|
33
|
+
- `eslint-plugin-solid`
|
|
34
|
+
- `eslint-plugin-tailwindcss`
|
|
35
|
+
- `@simplysm` (custom plugin, see below)
|
|
36
|
+
|
|
37
|
+
### Usage
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// eslint.config.ts
|
|
41
|
+
import sdRecommended from "@simplysm/lint/eslint-recommended";
|
|
42
|
+
|
|
43
|
+
export default sdRecommended;
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Covered file globs
|
|
47
|
+
|
|
48
|
+
| Glob | Applied rule groups |
|
|
49
|
+
|---|---|
|
|
50
|
+
| `**/*.js`, `**/*.jsx` | Common rules, import, unused-imports, `@simplysm` rules |
|
|
51
|
+
| `**/*.ts`, `**/*.tsx` | All of the above + typescript-eslint rules |
|
|
52
|
+
| `**/*.ts`, `**/*.tsx` | SolidJS reactivity + Tailwind CSS rules |
|
|
53
|
+
| `**/tests/**/*.ts`, `**/tests/**/*.tsx` | Relaxed rules (no-console off, import/no-extraneous-dependencies off, solid/reactivity off) |
|
|
54
|
+
|
|
55
|
+
### Global ignores
|
|
56
|
+
|
|
57
|
+
The following paths are ignored by default:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
**/node_modules/**
|
|
61
|
+
**/dist/**
|
|
62
|
+
**/.*/**
|
|
63
|
+
**/_*/**
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Key rules enabled
|
|
67
|
+
|
|
68
|
+
**Common (JS + TS)**
|
|
69
|
+
|
|
70
|
+
| Rule | Severity | Notes |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| `no-console` | error | Prohibit console usage |
|
|
73
|
+
| `no-warning-comments` | warn | Flag TODO/FIXME comments |
|
|
74
|
+
| `eqeqeq` | error | Enforce `===`; allow `== null` |
|
|
75
|
+
| `no-self-compare` | error | Catch `x === x` typos |
|
|
76
|
+
| `array-callback-return` | error | Require return in map/filter callbacks |
|
|
77
|
+
| `no-restricted-globals` | error | Prohibit `Buffer` (use `Uint8Array`) |
|
|
78
|
+
| `no-restricted-imports` | error | Prohibit `buffer`, `events`, `eventemitter3` |
|
|
79
|
+
| `unused-imports/no-unused-imports` | error | Auto-remove unused imports |
|
|
80
|
+
| `unused-imports/no-unused-vars` | error | Unused vars allowed with `_` prefix |
|
|
81
|
+
| `import/no-extraneous-dependencies` | error | Prohibit undeclared dependencies |
|
|
82
|
+
| `@simplysm/no-hard-private` | error | See custom rules below |
|
|
83
|
+
| `@simplysm/no-subpath-imports-from-simplysm` | error | See custom rules below |
|
|
84
|
+
|
|
85
|
+
**TypeScript-only additions**
|
|
86
|
+
|
|
87
|
+
| Rule | Severity | Notes |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| `@typescript-eslint/require-await` | error | |
|
|
90
|
+
| `@typescript-eslint/await-thenable` | error | |
|
|
91
|
+
| `@typescript-eslint/return-await` | error | `in-try-catch` mode |
|
|
92
|
+
| `@typescript-eslint/no-floating-promises` | error | |
|
|
93
|
+
| `@typescript-eslint/no-shadow` | error | |
|
|
94
|
+
| `@typescript-eslint/no-unnecessary-condition` | error | `allowConstantLoopConditions: true` |
|
|
95
|
+
| `@typescript-eslint/no-unnecessary-type-assertion` | error | |
|
|
96
|
+
| `@typescript-eslint/prefer-reduce-type-parameter` | error | |
|
|
97
|
+
| `@typescript-eslint/prefer-return-this-type` | error | |
|
|
98
|
+
| `@typescript-eslint/strict-boolean-expressions` | error | Allow nullable boolean/object |
|
|
99
|
+
| `@typescript-eslint/ban-ts-comment` | error | `ts-expect-error` allowed with description |
|
|
100
|
+
| `@typescript-eslint/prefer-readonly` | error | |
|
|
101
|
+
| `@typescript-eslint/no-misused-promises` | error | `checksVoidReturn.arguments/attributes: false` |
|
|
102
|
+
| `@typescript-eslint/only-throw-error` | error | |
|
|
103
|
+
| `@typescript-eslint/no-array-delete` | error | |
|
|
104
|
+
| `@simplysm/ts-no-throw-not-implemented-error` | warn | See custom rules below |
|
|
105
|
+
|
|
106
|
+
**SolidJS + Tailwind CSS (TS/TSX)**
|
|
107
|
+
|
|
108
|
+
| Rule | Severity | Notes |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| `solid/reactivity` | error | Reactivity loss detection |
|
|
111
|
+
| `solid/no-destructure` | error | Props destructuring guard |
|
|
112
|
+
| `solid/components-return-once` | error | Early return guard |
|
|
113
|
+
| `solid/jsx-no-duplicate-props` | error | |
|
|
114
|
+
| `solid/jsx-no-undef` | error | TypeScript-enabled |
|
|
115
|
+
| `solid/no-react-deps` | error | |
|
|
116
|
+
| `solid/no-react-specific-props` | error | |
|
|
117
|
+
| `solid/no-innerhtml` | error | XSS prevention |
|
|
118
|
+
| `solid/jsx-no-script-url` | error | |
|
|
119
|
+
| `solid/jsx-uses-vars` | error | |
|
|
120
|
+
| `solid/prefer-for` | error | Recommend `<For>` component |
|
|
121
|
+
| `solid/event-handlers` | error | |
|
|
122
|
+
| `solid/imports` | error | |
|
|
123
|
+
| `solid/style-prop` | error | |
|
|
124
|
+
| `solid/self-closing-comp` | error | |
|
|
125
|
+
| `tailwindcss/classnames-order` | warn | Auto-sort class order; supports `clsx` tag |
|
|
126
|
+
| `tailwindcss/enforces-negative-arbitrary-values` | error | |
|
|
127
|
+
| `tailwindcss/enforces-shorthand` | error | |
|
|
128
|
+
| `tailwindcss/no-contradicting-classname` | error | |
|
|
129
|
+
| `tailwindcss/no-custom-classname` | error | |
|
|
130
|
+
| `tailwindcss/no-unnecessary-arbitrary-value` | error | |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## `@simplysm/lint/eslint-plugin`
|
|
135
|
+
|
|
136
|
+
A custom ESLint plugin that exposes three Simplysm-specific rules under the `@simplysm` namespace.
|
|
137
|
+
|
|
138
|
+
### Usage
|
|
139
|
+
|
|
140
|
+
```typescript
|
|
141
|
+
// eslint.config.ts
|
|
142
|
+
import plugin from "@simplysm/lint/eslint-plugin";
|
|
143
|
+
import type { ESLint } from "eslint";
|
|
144
|
+
|
|
145
|
+
export default [
|
|
146
|
+
{
|
|
147
|
+
plugins: {
|
|
148
|
+
"@simplysm": plugin as unknown as ESLint.Plugin,
|
|
149
|
+
},
|
|
150
|
+
rules: {
|
|
151
|
+
"@simplysm/no-hard-private": "error",
|
|
152
|
+
"@simplysm/no-subpath-imports-from-simplysm": "error",
|
|
153
|
+
"@simplysm/ts-no-throw-not-implemented-error": "warn",
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Custom Rules
|
|
160
|
+
|
|
161
|
+
#### `@simplysm/no-hard-private`
|
|
162
|
+
|
|
163
|
+
**Type:** `problem` | **Fixable:** yes
|
|
164
|
+
|
|
165
|
+
Prohibits ECMAScript hard-private fields (`#field`) and enforces the TypeScript `private _field` style instead.
|
|
166
|
+
|
|
167
|
+
Checks:
|
|
168
|
+
- Class field declarations: `#field`
|
|
169
|
+
- Class method declarations: `#method()`
|
|
170
|
+
- Class accessor declarations: `accessor #field`
|
|
171
|
+
- Member access expressions: `this.#field`
|
|
172
|
+
|
|
173
|
+
Auto-fix renames `#name` to `_name` and inserts the `private` access modifier when missing. The fix is skipped if a member named `_name` already exists in the same class.
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
// Error
|
|
177
|
+
class Foo {
|
|
178
|
+
#count = 0;
|
|
179
|
+
#increment() { this.#count++; }
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// OK (after auto-fix)
|
|
183
|
+
class Foo {
|
|
184
|
+
private _count = 0;
|
|
185
|
+
private _increment() { this._count++; }
|
|
186
|
+
}
|
|
7
187
|
```
|
|
8
|
-
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
#### `@simplysm/no-subpath-imports-from-simplysm`
|
|
192
|
+
|
|
193
|
+
**Type:** `problem` | **Fixable:** yes
|
|
194
|
+
|
|
195
|
+
Prohibits imports into the `src/` subpath of `@simplysm/*` packages. Only the package root (or other declared export subpaths) may be imported.
|
|
196
|
+
|
|
197
|
+
Checks:
|
|
198
|
+
- Static import declarations: `import ... from '...'`
|
|
199
|
+
- Dynamic imports: `import('...')`
|
|
200
|
+
- Named re-exports: `export { ... } from '...'`
|
|
201
|
+
- Namespace re-exports: `export * from '...'`
|
|
202
|
+
|
|
203
|
+
Auto-fix rewrites the import to the package root (`@simplysm/pkg`).
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
// Error
|
|
207
|
+
import { foo } from "@simplysm/core-common/src/foo";
|
|
208
|
+
|
|
209
|
+
// OK (after auto-fix)
|
|
210
|
+
import { foo } from "@simplysm/core-common";
|
|
9
211
|
```
|
|
10
212
|
|
|
11
|
-
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
#### `@simplysm/ts-no-throw-not-implemented-error`
|
|
216
|
+
|
|
217
|
+
**Type:** `suggestion` | **Fixable:** no | **Severity in recommended config:** warn
|
|
218
|
+
|
|
219
|
+
Warns when `NotImplementedError` from `@simplysm/core-common` is instantiated with `new`. This prevents unfinished placeholder code from reaching production.
|
|
220
|
+
|
|
221
|
+
Detects all import forms:
|
|
222
|
+
- Named import: `import { NotImplementedError } from "@simplysm/core-common"`
|
|
223
|
+
- Aliased import: `import { NotImplementedError as NIE } from "@simplysm/core-common"`
|
|
224
|
+
- Namespace import: `import * as CC from "@simplysm/core-common"` used as `new CC.NotImplementedError()`
|
|
225
|
+
|
|
226
|
+
Dynamic imports (`await import(...)`) are not detected.
|
|
227
|
+
|
|
228
|
+
The warning message is the string passed as the first argument to the constructor, or `"Not implemented"` if no argument is provided.
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
import { NotImplementedError } from "@simplysm/core-common";
|
|
232
|
+
|
|
233
|
+
// Warning: "Not implemented"
|
|
234
|
+
throw new NotImplementedError();
|
|
235
|
+
|
|
236
|
+
// Warning: "TODO: finish this"
|
|
237
|
+
throw new NotImplementedError("TODO: finish this");
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## `@simplysm/lint/stylelint-recommended`
|
|
243
|
+
|
|
244
|
+
A Stylelint config object extending `stylelint-config-standard` and `stylelint-config-tailwindcss` with additional browser compatibility and module resolution rules.
|
|
245
|
+
|
|
246
|
+
### Usage
|
|
247
|
+
|
|
248
|
+
```javascript
|
|
249
|
+
// stylelint.config.js
|
|
250
|
+
import sdStylelint from "@simplysm/lint/stylelint-recommended";
|
|
251
|
+
|
|
252
|
+
export default sdStylelint;
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### Extended configs
|
|
256
|
+
|
|
257
|
+
- `stylelint-config-standard`
|
|
258
|
+
- `stylelint-config-tailwindcss`
|
|
259
|
+
|
|
260
|
+
### Plugins
|
|
12
261
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
| `src/eslint-plugin.ts` | default: `{ rules: { "no-hard-private", "no-subpath-imports-from-simplysm", "ts-no-throw-not-implemented-error" } }` | ESLint plugin that bundles all custom Simplysm rules under `@simplysm/*` | `tests/no-hard-private.spec.ts`, `tests/no-subpath-imports-from-simplysm.spec.ts`, `tests/ts-no-throw-not-implemented-error.spec.ts` |
|
|
16
|
-
| `src/eslint-recommended.ts` | default: ESLint flat config array (TS, SolidJS, Tailwind CSS rules) | Recommended ESLint flat config for TS, SolidJS, and Tailwind CSS projects | `tests/recommended.spec.ts` |
|
|
17
|
-
| `src/stylelint-recommended.ts` | default: Stylelint config (Chrome 84+, Tailwind CSS, file resolution) | Recommended Stylelint config targeting Chrome 84+ with Tailwind CSS support | - |
|
|
18
|
-
| `src/rules/no-hard-private.ts` | ESLint rule: prohibit ECMAScript `#field` private syntax | Enforces TypeScript `private _` style instead of hard private `#field` syntax | - |
|
|
19
|
-
| `src/rules/no-subpath-imports-from-simplysm.ts` | ESLint rule: prohibit `@simplysm/*/src/` import paths | Prevents direct `src/` subpath imports from `@simplysm/*` packages | - |
|
|
20
|
-
| `src/rules/ts-no-throw-not-implemented-error.ts` | ESLint rule: warn on `new NotImplementedError()` usage | Warns when `NotImplementedError` from `@simplysm/core-common` is instantiated | - |
|
|
21
|
-
| `src/utils/create-rule.ts` | `createRule` utility for defining typed ESLint rules | Factory wrapper around `RuleCreator` for authoring typed ESLint rules | - |
|
|
262
|
+
- `stylelint-no-unsupported-browser-features`
|
|
263
|
+
- `stylelint-no-unresolved-module`
|
|
22
264
|
|
|
23
|
-
|
|
265
|
+
### Rules
|
|
24
266
|
|
|
25
|
-
|
|
267
|
+
| Rule | Setting | Notes |
|
|
268
|
+
|---|---|---|
|
|
269
|
+
| `plugin/no-unsupported-browser-features` | error | Chrome >= 84; ignores `css-cascade-layers`, `css-nesting`, `css-overflow` |
|
|
270
|
+
| `declaration-block-no-redundant-longhand-properties` | true | Ignores `inset` shorthand (requires Chrome 87+) |
|
|
271
|
+
| `plugin/no-unresolved-module` | true | Checks file existence in `@import` and `url()` |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint-recommended.d.ts","sourceRoot":"","sources":["../src/eslint-recommended.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"eslint-recommended.d.ts","sourceRoot":"","sources":["../src/eslint-recommended.ts"],"names":[],"mappings":";AAoFA,wBA4NG"}
|
|
@@ -184,6 +184,8 @@ var eslint_recommended_default = defineConfig([
|
|
|
184
184
|
"**/stylelint.config.ts",
|
|
185
185
|
"**/simplysm.ts",
|
|
186
186
|
"**/vitest.config.ts",
|
|
187
|
+
"**/vitest-e2e.config.ts",
|
|
188
|
+
"**/vitest.setup.ts",
|
|
187
189
|
"**/vitest.setup.ts"
|
|
188
190
|
]
|
|
189
191
|
}
|
|
@@ -192,7 +194,12 @@ var eslint_recommended_default = defineConfig([
|
|
|
192
194
|
},
|
|
193
195
|
// Test folders: allow root devDependencies (vitest, etc.)
|
|
194
196
|
{
|
|
195
|
-
files: [
|
|
197
|
+
files: [
|
|
198
|
+
"**/tests/**/*.ts",
|
|
199
|
+
"**/tests/**/*.tsx",
|
|
200
|
+
"**/tests-e2e/**/*.ts",
|
|
201
|
+
"**/tests-e2e/**/*.tsx"
|
|
202
|
+
],
|
|
196
203
|
rules: {
|
|
197
204
|
"no-console": "off",
|
|
198
205
|
"import/no-extraneous-dependencies": "off",
|
|
@@ -264,7 +271,12 @@ var eslint_recommended_default = defineConfig([
|
|
|
264
271
|
},
|
|
265
272
|
// Test folders: disable solid/reactivity
|
|
266
273
|
{
|
|
267
|
-
files: [
|
|
274
|
+
files: [
|
|
275
|
+
"**/tests/**/*.ts",
|
|
276
|
+
"**/tests/**/*.tsx",
|
|
277
|
+
"**/tests-e2e/**/*.ts",
|
|
278
|
+
"**/tests-e2e/**/*.tsx"
|
|
279
|
+
],
|
|
268
280
|
rules: {
|
|
269
281
|
// In tests, signal access within async callbacks like waitFor is intended behavior
|
|
270
282
|
"solid/reactivity": "off"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/eslint-recommended.ts"],
|
|
4
|
-
"mappings": "AAAA,OAAO,aAAa;AACpB,OAAO,kBAAmC;AAC1C,OAAO,YAAY;AACnB,OAAO,kBAAkB;AACzB,OAAO,yBAAyB;AAChC,OAAO,iBAAiB;AACxB,OAAO,uBAAuB;AAC9B,SAAS,cAAc,qBAAqB;AAC5C,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAY9B,MAAM,cAAgC;AAAA,EACpC,cAAc;AAAA,EACd,uBAAuB;AAAA,EACvB,UAAU,CAAC,SAAS,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,EAChD,mBAAmB;AAAA,EACnB,yBAAyB;AAC3B;AAOA,MAAM,sBAAwC;AAAA,EAC5C,yBAAyB;AAAA,IACvB;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/lint",
|
|
3
|
-
"version": "13.0.
|
|
3
|
+
"version": "13.0.74",
|
|
4
4
|
"description": "Simplysm package - Lint configuration (ESLint + Stylelint)",
|
|
5
5
|
"author": "simplysm",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"eslint-plugin-solid": "^0.14.5",
|
|
39
39
|
"eslint-plugin-tailwindcss": "^3.18.2",
|
|
40
40
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
41
|
-
"globals": "^17.
|
|
41
|
+
"globals": "^17.4.0",
|
|
42
42
|
"stylelint": "^16.26.1",
|
|
43
43
|
"stylelint-config-standard": "^39.0.1",
|
|
44
44
|
"stylelint-config-tailwindcss": "^1.0.1",
|
|
@@ -37,8 +37,7 @@ const noNodeBuiltinsRules: FlatConfig.Rules = {
|
|
|
37
37
|
"error",
|
|
38
38
|
{
|
|
39
39
|
name: "Buffer",
|
|
40
|
-
message:
|
|
41
|
-
"Use Uint8Array. For complex operations, use BytesUtils from @simplysm/core-common.",
|
|
40
|
+
message: "Use Uint8Array. For complex operations, use BytesUtils from @simplysm/core-common.",
|
|
42
41
|
},
|
|
43
42
|
],
|
|
44
43
|
"no-restricted-imports": [
|
|
@@ -222,6 +221,8 @@ export default defineConfig([
|
|
|
222
221
|
"**/stylelint.config.ts",
|
|
223
222
|
"**/simplysm.ts",
|
|
224
223
|
"**/vitest.config.ts",
|
|
224
|
+
"**/vitest-e2e.config.ts",
|
|
225
|
+
"**/vitest.setup.ts",
|
|
225
226
|
"**/vitest.setup.ts",
|
|
226
227
|
],
|
|
227
228
|
},
|
|
@@ -230,7 +231,12 @@ export default defineConfig([
|
|
|
230
231
|
},
|
|
231
232
|
// Test folders: allow root devDependencies (vitest, etc.)
|
|
232
233
|
{
|
|
233
|
-
files: [
|
|
234
|
+
files: [
|
|
235
|
+
"**/tests/**/*.ts",
|
|
236
|
+
"**/tests/**/*.tsx",
|
|
237
|
+
"**/tests-e2e/**/*.ts",
|
|
238
|
+
"**/tests-e2e/**/*.tsx",
|
|
239
|
+
],
|
|
234
240
|
rules: {
|
|
235
241
|
"no-console": "off",
|
|
236
242
|
"import/no-extraneous-dependencies": "off",
|
|
@@ -285,7 +291,12 @@ export default defineConfig([
|
|
|
285
291
|
},
|
|
286
292
|
// Test folders: disable solid/reactivity
|
|
287
293
|
{
|
|
288
|
-
files: [
|
|
294
|
+
files: [
|
|
295
|
+
"**/tests/**/*.ts",
|
|
296
|
+
"**/tests/**/*.tsx",
|
|
297
|
+
"**/tests-e2e/**/*.ts",
|
|
298
|
+
"**/tests-e2e/**/*.tsx",
|
|
299
|
+
],
|
|
289
300
|
rules: {
|
|
290
301
|
// In tests, signal access within async callbacks like waitFor is intended behavior
|
|
291
302
|
"solid/reactivity": "off",
|