@simplysm/lint 13.0.75 → 13.0.76
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 +5 -38
- package/dist/eslint-recommended.d.ts.map +1 -1
- package/dist/eslint-recommended.js +1 -17
- package/dist/eslint-recommended.js.map +1 -1
- package/package.json +2 -11
- package/src/eslint-recommended.ts +1 -16
- package/tests/no-hard-private.spec.ts +0 -73
- package/tests/no-subpath-imports-from-simplysm.spec.ts +0 -41
- package/tests/recommended.spec.ts +0 -10
- package/tests/ts-no-throw-not-implemented-error.spec.ts +0 -141
- package/dist/stylelint-recommended.d.ts +0 -17
- package/dist/stylelint-recommended.d.ts.map +0 -1
- package/dist/stylelint-recommended.js +0 -23
- package/dist/stylelint-recommended.js.map +0 -6
- package/src/stylelint-recommended.ts +0 -19
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# @simplysm/lint
|
|
2
2
|
|
|
3
|
-
Simplysm package - Lint configuration (ESLint
|
|
3
|
+
Simplysm package - Lint configuration (ESLint)
|
|
4
4
|
|
|
5
|
-
Provides a shared ESLint flat config
|
|
5
|
+
Provides a shared ESLint flat config and a custom ESLint plugin with Simplysm-specific rules for use across Simplysm projects.
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
@@ -12,13 +12,12 @@ pnpm add -D @simplysm/lint
|
|
|
12
12
|
|
|
13
13
|
## Entry Points
|
|
14
14
|
|
|
15
|
-
This package exposes
|
|
15
|
+
This package exposes two separate entry points:
|
|
16
16
|
|
|
17
17
|
| Entry point | Description |
|
|
18
18
|
|---|---|
|
|
19
19
|
| `@simplysm/lint/eslint-plugin` | Custom ESLint plugin (Simplysm rules only) |
|
|
20
20
|
| `@simplysm/lint/eslint-recommended` | Full recommended ESLint flat config |
|
|
21
|
-
| `@simplysm/lint/stylelint-recommended` | Recommended Stylelint config |
|
|
22
21
|
|
|
23
22
|
---
|
|
24
23
|
|
|
@@ -50,7 +49,7 @@ export default sdRecommended;
|
|
|
50
49
|
| `**/*.js`, `**/*.jsx` | Common rules, import, unused-imports, `@simplysm` rules |
|
|
51
50
|
| `**/*.ts`, `**/*.tsx` | All of the above + typescript-eslint rules |
|
|
52
51
|
| `**/*.ts`, `**/*.tsx` | SolidJS reactivity + Tailwind CSS rules |
|
|
53
|
-
| `**/tests/**/*.ts`, `**/tests/**/*.tsx` | Relaxed rules (no-console off, import/no-extraneous-dependencies off
|
|
52
|
+
| `**/tests/**/*.ts`, `**/tests/**/*.tsx` | Relaxed rules (no-console off, import/no-extraneous-dependencies off) |
|
|
54
53
|
|
|
55
54
|
### Global ignores
|
|
56
55
|
|
|
@@ -107,7 +106,7 @@ The following paths are ignored by default:
|
|
|
107
106
|
|
|
108
107
|
| Rule | Severity | Notes |
|
|
109
108
|
|---|---|---|
|
|
110
|
-
| `solid/reactivity` |
|
|
109
|
+
| `solid/reactivity` | off | Disabled (too many false positives) |
|
|
111
110
|
| `solid/no-destructure` | error | Props destructuring guard |
|
|
112
111
|
| `solid/components-return-once` | error | Early return guard |
|
|
113
112
|
| `solid/jsx-no-duplicate-props` | error | |
|
|
@@ -237,35 +236,3 @@ throw new NotImplementedError();
|
|
|
237
236
|
throw new NotImplementedError("TODO: finish this");
|
|
238
237
|
```
|
|
239
238
|
|
|
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
|
|
261
|
-
|
|
262
|
-
- `stylelint-no-unsupported-browser-features`
|
|
263
|
-
- `stylelint-no-unresolved-module`
|
|
264
|
-
|
|
265
|
-
### Rules
|
|
266
|
-
|
|
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":";AAoFA,
|
|
1
|
+
{"version":3,"file":"eslint-recommended.d.ts","sourceRoot":"","sources":["../src/eslint-recommended.ts"],"names":[],"mappings":";AAoFA,wBA6MG"}
|
|
@@ -95,7 +95,6 @@ var eslint_recommended_default = defineConfig([
|
|
|
95
95
|
devDependencies: [
|
|
96
96
|
"**/lib/**",
|
|
97
97
|
"**/eslint.config.{js,cjs,mjs}",
|
|
98
|
-
"**/stylelint.config.{js,cjs,mjs}",
|
|
99
98
|
"**/simplysm.{js,cjs,mjs}",
|
|
100
99
|
"**/vitest.config.{js,cjs,mjs}"
|
|
101
100
|
]
|
|
@@ -181,7 +180,6 @@ var eslint_recommended_default = defineConfig([
|
|
|
181
180
|
devDependencies: [
|
|
182
181
|
"**/lib/**",
|
|
183
182
|
"**/eslint.config.ts",
|
|
184
|
-
"**/stylelint.config.ts",
|
|
185
183
|
"**/simplysm.ts",
|
|
186
184
|
"**/vitest.config.ts",
|
|
187
185
|
"**/vitest-e2e.config.ts",
|
|
@@ -221,8 +219,7 @@ var eslint_recommended_default = defineConfig([
|
|
|
221
219
|
},
|
|
222
220
|
rules: {
|
|
223
221
|
// ─── Prevent mistakes ───
|
|
224
|
-
"solid/reactivity": "
|
|
225
|
-
// Reactivity loss (most important!)
|
|
222
|
+
"solid/reactivity": "off",
|
|
226
223
|
"solid/no-destructure": "error",
|
|
227
224
|
// Props destructuring → reactivity loss
|
|
228
225
|
"solid/components-return-once": "error",
|
|
@@ -268,19 +265,6 @@ var eslint_recommended_default = defineConfig([
|
|
|
268
265
|
"tailwindcss/no-unnecessary-arbitrary-value": "error"
|
|
269
266
|
// Prohibit unnecessary arbitrary values
|
|
270
267
|
}
|
|
271
|
-
},
|
|
272
|
-
// Test folders: disable solid/reactivity
|
|
273
|
-
{
|
|
274
|
-
files: [
|
|
275
|
-
"**/tests/**/*.ts",
|
|
276
|
-
"**/tests/**/*.tsx",
|
|
277
|
-
"**/tests-e2e/**/*.ts",
|
|
278
|
-
"**/tests-e2e/**/*.tsx"
|
|
279
|
-
],
|
|
280
|
-
rules: {
|
|
281
|
-
// In tests, signal access within async callbacks like waitFor is intended behavior
|
|
282
|
-
"solid/reactivity": "off"
|
|
283
|
-
}
|
|
284
268
|
}
|
|
285
269
|
]);
|
|
286
270
|
export {
|
|
@@ -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,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,yBAAyB;AAAA,IACvB;AAAA,IACA;AAAA,MACE,OAAO;AAAA,QACL;AAAA,UACE,MAAM;AAAA,UACN,SACE;AAAA,QACJ;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,QACA;AAAA,UACE,MAAM;AAAA,UACN,SAAS;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAOA,MAAM,qBAAuC;AAAA,EAC3C,oCAAoC;AAAA,EACpC,iCAAiC;AAAA,IAC/B;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,mBAAmB;AAAA,MACnB,MAAM;AAAA,MACN,mBAAmB;AAAA,IACrB;AAAA,EACF;AACF;AAIA,IAAO,6BAAQ,aAAa;AAAA,EAC1B,cAAc;AAAA;AAAA,IAEZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACD;AAAA,IACE,iBAAiB;AAAA,MACf,SAAS;AAAA,QACP,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,QACX,GAAG,QAAQ;AAAA,MACb;AAAA,MACA,aAAa;AAAA,MACb,YAAY;AAAA,IACd;AAAA,EACF;AAAA,EACA;AAAA,IACE,OAAO,CAAC,WAAW,UAAU;AAAA,IAC7B,SAAS;AAAA,MACP,UAAU;AAAA,MACV,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB;AAAA,IACA,OAAO;AAAA,MACL,GAAG;AAAA,MAEH,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,wBAAwB;AAAA,MACxB,yBAAyB;AAAA,MACzB,YAAY;AAAA,MAEZ,GAAG;AAAA,MAEH,qCAAqC;AAAA,QACnC;AAAA,QACA;AAAA,UACE,iBAAiB;AAAA,YACf;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,
|
|
4
|
+
"mappings": "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",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/lint",
|
|
3
|
-
"version": "13.0.
|
|
4
|
-
"description": "Simplysm package - Lint configuration (ESLint
|
|
3
|
+
"version": "13.0.76",
|
|
4
|
+
"description": "Simplysm package - Lint configuration (ESLint)",
|
|
5
5
|
"author": "simplysm",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": {
|
|
@@ -24,10 +24,6 @@
|
|
|
24
24
|
"./eslint-recommended": {
|
|
25
25
|
"types": "./dist/eslint-recommended.d.ts",
|
|
26
26
|
"default": "./dist/eslint-recommended.js"
|
|
27
|
-
},
|
|
28
|
-
"./stylelint-recommended": {
|
|
29
|
-
"types": "./dist/stylelint-recommended.d.ts",
|
|
30
|
-
"default": "./dist/stylelint-recommended.js"
|
|
31
27
|
}
|
|
32
28
|
},
|
|
33
29
|
"dependencies": {
|
|
@@ -39,11 +35,6 @@
|
|
|
39
35
|
"eslint-plugin-tailwindcss": "^3.18.2",
|
|
40
36
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
41
37
|
"globals": "^17.4.0",
|
|
42
|
-
"stylelint": "^16.26.1",
|
|
43
|
-
"stylelint-config-standard": "^39.0.1",
|
|
44
|
-
"stylelint-config-tailwindcss": "^1.0.1",
|
|
45
|
-
"stylelint-no-unresolved-module": "^2.5.2",
|
|
46
|
-
"stylelint-no-unsupported-browser-features": "^8.1.1",
|
|
47
38
|
"typescript": "^5.9.3",
|
|
48
39
|
"typescript-eslint": "^8.56.1"
|
|
49
40
|
},
|
|
@@ -125,7 +125,6 @@ export default defineConfig([
|
|
|
125
125
|
devDependencies: [
|
|
126
126
|
"**/lib/**",
|
|
127
127
|
"**/eslint.config.{js,cjs,mjs}",
|
|
128
|
-
"**/stylelint.config.{js,cjs,mjs}",
|
|
129
128
|
"**/simplysm.{js,cjs,mjs}",
|
|
130
129
|
"**/vitest.config.{js,cjs,mjs}",
|
|
131
130
|
],
|
|
@@ -218,7 +217,6 @@ export default defineConfig([
|
|
|
218
217
|
devDependencies: [
|
|
219
218
|
"**/lib/**",
|
|
220
219
|
"**/eslint.config.ts",
|
|
221
|
-
"**/stylelint.config.ts",
|
|
222
220
|
"**/simplysm.ts",
|
|
223
221
|
"**/vitest.config.ts",
|
|
224
222
|
"**/vitest-e2e.config.ts",
|
|
@@ -258,7 +256,7 @@ export default defineConfig([
|
|
|
258
256
|
},
|
|
259
257
|
rules: {
|
|
260
258
|
// ─── Prevent mistakes ───
|
|
261
|
-
"solid/reactivity": "
|
|
259
|
+
"solid/reactivity": "off",
|
|
262
260
|
"solid/no-destructure": "error", // Props destructuring → reactivity loss
|
|
263
261
|
"solid/components-return-once": "error", // early return → bugs
|
|
264
262
|
"solid/jsx-no-duplicate-props": "error", // Duplicate props
|
|
@@ -289,17 +287,4 @@ export default defineConfig([
|
|
|
289
287
|
"tailwindcss/no-unnecessary-arbitrary-value": "error", // Prohibit unnecessary arbitrary values
|
|
290
288
|
},
|
|
291
289
|
},
|
|
292
|
-
// Test folders: disable solid/reactivity
|
|
293
|
-
{
|
|
294
|
-
files: [
|
|
295
|
-
"**/tests/**/*.ts",
|
|
296
|
-
"**/tests/**/*.tsx",
|
|
297
|
-
"**/tests-e2e/**/*.ts",
|
|
298
|
-
"**/tests-e2e/**/*.tsx",
|
|
299
|
-
],
|
|
300
|
-
rules: {
|
|
301
|
-
// In tests, signal access within async callbacks like waitFor is intended behavior
|
|
302
|
-
"solid/reactivity": "off",
|
|
303
|
-
},
|
|
304
|
-
},
|
|
305
290
|
]);
|
|
@@ -57,79 +57,6 @@ describe("no-hard-private rule", () => {
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
describe("code that should cause errors (invalid)", () => {
|
|
60
|
-
describe("ECMAScript # private field declaration", () => {
|
|
61
|
-
ruleTester.run("no-hard-private", rule, {
|
|
62
|
-
valid: [],
|
|
63
|
-
invalid: [
|
|
64
|
-
{
|
|
65
|
-
code: `
|
|
66
|
-
class MyClass {
|
|
67
|
-
#field = 1;
|
|
68
|
-
}
|
|
69
|
-
`,
|
|
70
|
-
output: `
|
|
71
|
-
class MyClass {
|
|
72
|
-
private _field = 1;
|
|
73
|
-
}
|
|
74
|
-
`,
|
|
75
|
-
errors: [{ messageId: "preferSoftPrivate" }],
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
describe("ECMAScript # private method declaration", () => {
|
|
82
|
-
ruleTester.run("no-hard-private", rule, {
|
|
83
|
-
valid: [],
|
|
84
|
-
invalid: [
|
|
85
|
-
{
|
|
86
|
-
code: `
|
|
87
|
-
class MyClass {
|
|
88
|
-
#method() {
|
|
89
|
-
return 1;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
`,
|
|
93
|
-
output: `
|
|
94
|
-
class MyClass {
|
|
95
|
-
private _method() {
|
|
96
|
-
return 1;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
`,
|
|
100
|
-
errors: [{ messageId: "preferSoftPrivate" }],
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
});
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
describe("# private field usage (this.#field)", () => {
|
|
107
|
-
ruleTester.run("no-hard-private", rule, {
|
|
108
|
-
valid: [],
|
|
109
|
-
invalid: [
|
|
110
|
-
{
|
|
111
|
-
code: `
|
|
112
|
-
class MyClass {
|
|
113
|
-
#field = 1;
|
|
114
|
-
method() {
|
|
115
|
-
return this.#field;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
`,
|
|
119
|
-
output: `
|
|
120
|
-
class MyClass {
|
|
121
|
-
private _field = 1;
|
|
122
|
-
method() {
|
|
123
|
-
return this._field;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
`,
|
|
127
|
-
errors: [{ messageId: "preferSoftPrivate" }, { messageId: "preferSoftPrivate" }],
|
|
128
|
-
},
|
|
129
|
-
],
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
|
|
133
60
|
describe("# private field usage in arrow function field", () => {
|
|
134
61
|
ruleTester.run("no-hard-private", rule, {
|
|
135
62
|
valid: [],
|
|
@@ -307,46 +307,5 @@ describe("no-subpath-imports-from-simplysm rule", () => {
|
|
|
307
307
|
});
|
|
308
308
|
});
|
|
309
309
|
|
|
310
|
-
describe("src path prohibited in default import", () => {
|
|
311
|
-
ruleTester.run("no-subpath-imports-from-simplysm", rule, {
|
|
312
|
-
valid: [],
|
|
313
|
-
invalid: [
|
|
314
|
-
{
|
|
315
|
-
code: `import SomeDefault from "@simplysm/sd-core-common/src/default";`,
|
|
316
|
-
output: `import SomeDefault from "@simplysm/sd-core-common";`,
|
|
317
|
-
errors: [
|
|
318
|
-
{
|
|
319
|
-
messageId: "noSubpathImport",
|
|
320
|
-
data: {
|
|
321
|
-
pkg: "sd-core-common",
|
|
322
|
-
importPath: "@simplysm/sd-core-common/src/default",
|
|
323
|
-
},
|
|
324
|
-
},
|
|
325
|
-
],
|
|
326
|
-
},
|
|
327
|
-
],
|
|
328
|
-
});
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
describe("src path prohibited in mixed import (default + named)", () => {
|
|
332
|
-
ruleTester.run("no-subpath-imports-from-simplysm", rule, {
|
|
333
|
-
valid: [],
|
|
334
|
-
invalid: [
|
|
335
|
-
{
|
|
336
|
-
code: `import SomeDefault, { Something } from "@simplysm/sd-core-common/src";`,
|
|
337
|
-
output: `import SomeDefault, { Something } from "@simplysm/sd-core-common";`,
|
|
338
|
-
errors: [
|
|
339
|
-
{
|
|
340
|
-
messageId: "noSubpathImport",
|
|
341
|
-
data: {
|
|
342
|
-
pkg: "sd-core-common",
|
|
343
|
-
importPath: "@simplysm/sd-core-common/src",
|
|
344
|
-
},
|
|
345
|
-
},
|
|
346
|
-
],
|
|
347
|
-
},
|
|
348
|
-
],
|
|
349
|
-
});
|
|
350
|
-
});
|
|
351
310
|
});
|
|
352
311
|
});
|
|
@@ -122,16 +122,6 @@ describe("recommended config", () => {
|
|
|
122
122
|
}
|
|
123
123
|
});
|
|
124
124
|
|
|
125
|
-
it("should set parserOptions.project to true in TS config", () => {
|
|
126
|
-
const tsConfig = recommended.find(
|
|
127
|
-
(config) => hasFiles(config) && flattenFiles(config.files).some((f) => f.includes("*.ts")),
|
|
128
|
-
) as ConfigItem & {
|
|
129
|
-
languageOptions?: { parserOptions?: { project?: unknown } };
|
|
130
|
-
};
|
|
131
|
-
expect(tsConfig).toBeDefined();
|
|
132
|
-
expect(tsConfig.languageOptions?.parserOptions?.project).toBe(true);
|
|
133
|
-
});
|
|
134
|
-
|
|
135
125
|
it("should apply solid plugin to TSX files", () => {
|
|
136
126
|
// Find config that includes solid plugin and handles .tsx files
|
|
137
127
|
// (in current implementation, **/*.ts and **/*.tsx are handled together)
|
|
@@ -66,21 +66,6 @@ describe("ts-no-throw-not-implemented-error rule", () => {
|
|
|
66
66
|
});
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
describe("usage with throw", () => {
|
|
70
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
71
|
-
valid: [],
|
|
72
|
-
invalid: [
|
|
73
|
-
{
|
|
74
|
-
code: `
|
|
75
|
-
import { NotImplementedError } from "@simplysm/core-common";
|
|
76
|
-
throw new NotImplementedError();
|
|
77
|
-
`,
|
|
78
|
-
errors: [{ messageId: "noThrowNotImplementedError" }],
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
|
|
84
69
|
describe("usage with message", () => {
|
|
85
70
|
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
86
71
|
valid: [],
|
|
@@ -116,52 +101,6 @@ describe("ts-no-throw-not-implemented-error rule", () => {
|
|
|
116
101
|
});
|
|
117
102
|
});
|
|
118
103
|
|
|
119
|
-
describe("also detects when assigned to variable", () => {
|
|
120
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
121
|
-
valid: [],
|
|
122
|
-
invalid: [
|
|
123
|
-
{
|
|
124
|
-
code: `
|
|
125
|
-
import { NotImplementedError } from "@simplysm/core-common";
|
|
126
|
-
const err = new NotImplementedError();
|
|
127
|
-
`,
|
|
128
|
-
errors: [{ messageId: "noThrowNotImplementedError" }],
|
|
129
|
-
},
|
|
130
|
-
],
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
describe("also detects when passed as function argument", () => {
|
|
135
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
136
|
-
valid: [],
|
|
137
|
-
invalid: [
|
|
138
|
-
{
|
|
139
|
-
code: `
|
|
140
|
-
import { NotImplementedError } from "@simplysm/core-common";
|
|
141
|
-
function handleError(err: Error) {}
|
|
142
|
-
handleError(new NotImplementedError());
|
|
143
|
-
`,
|
|
144
|
-
errors: [{ messageId: "noThrowNotImplementedError" }],
|
|
145
|
-
},
|
|
146
|
-
],
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
describe("usage with other imports", () => {
|
|
151
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
152
|
-
valid: [],
|
|
153
|
-
invalid: [
|
|
154
|
-
{
|
|
155
|
-
code: `
|
|
156
|
-
import { SdError, NotImplementedError } from "@simplysm/core-common";
|
|
157
|
-
throw new NotImplementedError();
|
|
158
|
-
`,
|
|
159
|
-
errors: [{ messageId: "noThrowNotImplementedError" }],
|
|
160
|
-
},
|
|
161
|
-
],
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
|
|
165
104
|
describe("multiple usages produce errors for each", () => {
|
|
166
105
|
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
167
106
|
valid: [],
|
|
@@ -196,26 +135,6 @@ describe("ts-no-throw-not-implemented-error rule", () => {
|
|
|
196
135
|
});
|
|
197
136
|
});
|
|
198
137
|
|
|
199
|
-
describe("namespace import with message", () => {
|
|
200
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
201
|
-
valid: [],
|
|
202
|
-
invalid: [
|
|
203
|
-
{
|
|
204
|
-
code: `
|
|
205
|
-
import * as CC from "@simplysm/core-common";
|
|
206
|
-
new CC.NotImplementedError("not yet implemented");
|
|
207
|
-
`,
|
|
208
|
-
errors: [
|
|
209
|
-
{
|
|
210
|
-
messageId: "noThrowNotImplementedError",
|
|
211
|
-
data: { text: "not yet implemented" },
|
|
212
|
-
},
|
|
213
|
-
],
|
|
214
|
-
},
|
|
215
|
-
],
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
|
|
219
138
|
describe("template literal argument falls back to default message", () => {
|
|
220
139
|
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
221
140
|
valid: [],
|
|
@@ -236,27 +155,6 @@ describe("ts-no-throw-not-implemented-error rule", () => {
|
|
|
236
155
|
});
|
|
237
156
|
});
|
|
238
157
|
|
|
239
|
-
describe("variable argument falls back to default message", () => {
|
|
240
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
241
|
-
valid: [],
|
|
242
|
-
invalid: [
|
|
243
|
-
{
|
|
244
|
-
code: `
|
|
245
|
-
import { NotImplementedError } from "@simplysm/core-common";
|
|
246
|
-
const msg = "dynamic message";
|
|
247
|
-
throw new NotImplementedError(msg);
|
|
248
|
-
`,
|
|
249
|
-
errors: [
|
|
250
|
-
{
|
|
251
|
-
messageId: "noThrowNotImplementedError",
|
|
252
|
-
data: { text: "Not implemented" },
|
|
253
|
-
},
|
|
254
|
-
],
|
|
255
|
-
},
|
|
256
|
-
],
|
|
257
|
-
});
|
|
258
|
-
});
|
|
259
|
-
|
|
260
158
|
describe("numeric argument falls back to default message", () => {
|
|
261
159
|
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
262
160
|
valid: [],
|
|
@@ -297,45 +195,6 @@ describe("ts-no-throw-not-implemented-error rule", () => {
|
|
|
297
195
|
});
|
|
298
196
|
});
|
|
299
197
|
|
|
300
|
-
describe("null argument falls back to default message", () => {
|
|
301
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
302
|
-
valid: [],
|
|
303
|
-
invalid: [
|
|
304
|
-
{
|
|
305
|
-
code: `
|
|
306
|
-
import { NotImplementedError } from "@simplysm/core-common";
|
|
307
|
-
throw new NotImplementedError(null);
|
|
308
|
-
`,
|
|
309
|
-
errors: [
|
|
310
|
-
{
|
|
311
|
-
messageId: "noThrowNotImplementedError",
|
|
312
|
-
data: { text: "Not implemented" },
|
|
313
|
-
},
|
|
314
|
-
],
|
|
315
|
-
},
|
|
316
|
-
],
|
|
317
|
-
});
|
|
318
|
-
});
|
|
319
|
-
|
|
320
|
-
describe("undefined argument falls back to default message", () => {
|
|
321
|
-
ruleTester.run("ts-no-throw-not-implemented-error", rule, {
|
|
322
|
-
valid: [],
|
|
323
|
-
invalid: [
|
|
324
|
-
{
|
|
325
|
-
code: `
|
|
326
|
-
import { NotImplementedError } from "@simplysm/core-common";
|
|
327
|
-
throw new NotImplementedError(undefined);
|
|
328
|
-
`,
|
|
329
|
-
errors: [
|
|
330
|
-
{
|
|
331
|
-
messageId: "noThrowNotImplementedError",
|
|
332
|
-
data: { text: "Not implemented" },
|
|
333
|
-
},
|
|
334
|
-
],
|
|
335
|
-
},
|
|
336
|
-
],
|
|
337
|
-
});
|
|
338
|
-
});
|
|
339
198
|
});
|
|
340
199
|
|
|
341
200
|
describe("namespace import from other packages is allowed", () => {
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
extends: string[];
|
|
3
|
-
plugins: string[];
|
|
4
|
-
rules: {
|
|
5
|
-
"plugin/no-unsupported-browser-features": (boolean | {
|
|
6
|
-
severity: string;
|
|
7
|
-
browsers: string[];
|
|
8
|
-
ignore: string[];
|
|
9
|
-
})[];
|
|
10
|
-
"declaration-block-no-redundant-longhand-properties": (boolean | {
|
|
11
|
-
ignoreShorthands: string[];
|
|
12
|
-
})[];
|
|
13
|
-
"plugin/no-unresolved-module": boolean;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
export default _default;
|
|
17
|
-
//# sourceMappingURL=stylelint-recommended.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stylelint-recommended.d.ts","sourceRoot":"","sources":["../src/stylelint-recommended.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,wBAkBE"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
var stylelint_recommended_default = {
|
|
2
|
-
extends: ["stylelint-config-standard", "stylelint-config-tailwindcss"],
|
|
3
|
-
plugins: ["stylelint-no-unsupported-browser-features", "stylelint-no-unresolved-module"],
|
|
4
|
-
rules: {
|
|
5
|
-
// Chrome 84+ compatibility check
|
|
6
|
-
"plugin/no-unsupported-browser-features": [
|
|
7
|
-
true,
|
|
8
|
-
{
|
|
9
|
-
severity: "error",
|
|
10
|
-
browsers: ["chrome >= 84"],
|
|
11
|
-
ignore: ["css-cascade-layers", "css-nesting", "css-overflow"]
|
|
12
|
-
}
|
|
13
|
-
],
|
|
14
|
-
// inset requires Chrome 87+, so enforce shorthand is disabled
|
|
15
|
-
"declaration-block-no-redundant-longhand-properties": [true, { ignoreShorthands: ["inset"] }],
|
|
16
|
-
// Check for file existence in @import and url()
|
|
17
|
-
"plugin/no-unresolved-module": true
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
export {
|
|
21
|
-
stylelint_recommended_default as default
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=stylelint-recommended.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/stylelint-recommended.ts"],
|
|
4
|
-
"mappings": "AAAA,IAAO,gCAAQ;AAAA,EACb,SAAS,CAAC,6BAA6B,8BAA8B;AAAA,EACrE,SAAS,CAAC,6CAA6C,gCAAgC;AAAA,EACvF,OAAO;AAAA;AAAA,IAEL,0CAA0C;AAAA,MACxC;AAAA,MACA;AAAA,QACE,UAAU;AAAA,QACV,UAAU,CAAC,cAAc;AAAA,QACzB,QAAQ,CAAC,sBAAsB,eAAe,cAAc;AAAA,MAC9D;AAAA,IACF;AAAA;AAAA,IAEA,sDAAsD,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,EAAE,CAAC;AAAA;AAAA,IAE5F,+BAA+B;AAAA,EACjC;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
extends: ["stylelint-config-standard", "stylelint-config-tailwindcss"],
|
|
3
|
-
plugins: ["stylelint-no-unsupported-browser-features", "stylelint-no-unresolved-module"],
|
|
4
|
-
rules: {
|
|
5
|
-
// Chrome 84+ compatibility check
|
|
6
|
-
"plugin/no-unsupported-browser-features": [
|
|
7
|
-
true,
|
|
8
|
-
{
|
|
9
|
-
severity: "error",
|
|
10
|
-
browsers: ["chrome >= 84"],
|
|
11
|
-
ignore: ["css-cascade-layers", "css-nesting", "css-overflow"],
|
|
12
|
-
},
|
|
13
|
-
],
|
|
14
|
-
// inset requires Chrome 87+, so enforce shorthand is disabled
|
|
15
|
-
"declaration-block-no-redundant-longhand-properties": [true, { ignoreShorthands: ["inset"] }],
|
|
16
|
-
// Check for file existence in @import and url()
|
|
17
|
-
"plugin/no-unresolved-module": true,
|
|
18
|
-
},
|
|
19
|
-
};
|