@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 CHANGED
@@ -1,8 +1,8 @@
1
1
  # @simplysm/lint
2
2
 
3
- Simplysm package - Lint configuration (ESLint + Stylelint)
3
+ Simplysm package - Lint configuration (ESLint)
4
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.
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 three separate entry points:
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, solid/reactivity 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` | error | Reactivity loss detection |
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,wBA4NG"}
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": "error",
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": "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",
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.75",
4
- "description": "Simplysm package - Lint configuration (ESLint + Stylelint)",
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": "error", // Reactivity loss (most important!)
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
- };