@simplysm/lint 13.0.28 → 13.0.30
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 +25 -26
- package/dist/eslint-recommended.d.ts.map +1 -1
- package/dist/eslint-recommended.js +10 -2
- package/dist/eslint-recommended.js.map +1 -1
- package/dist/rules/no-hard-private.d.ts.map +1 -1
- package/dist/rules/no-hard-private.js.map +1 -1
- package/dist/rules/no-subpath-imports-from-simplysm.d.ts.map +1 -1
- package/dist/rules/no-subpath-imports-from-simplysm.js.map +1 -1
- package/dist/rules/ts-no-throw-not-implemented-error.d.ts.map +1 -1
- package/dist/rules/ts-no-throw-not-implemented-error.js.map +1 -1
- package/dist/utils/create-rule.d.ts.map +1 -1
- package/dist/utils/create-rule.js.map +1 -1
- package/package.json +4 -4
- package/src/eslint-recommended.ts +14 -4
- package/src/rules/no-hard-private.ts +9 -3
- package/src/rules/no-subpath-imports-from-simplysm.ts +4 -2
- package/src/rules/ts-no-throw-not-implemented-error.ts +13 -3
- package/src/utils/create-rule.ts +2 -1
package/README.md
CHANGED
|
@@ -13,25 +13,7 @@ npm install @simplysm/lint
|
|
|
13
13
|
pnpm add @simplysm/lint
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
This plugin depends on the following packages:
|
|
19
|
-
|
|
20
|
-
| Package | Description |
|
|
21
|
-
|---------|-------------|
|
|
22
|
-
| `eslint` | ESLint core |
|
|
23
|
-
| `typescript` | TypeScript compiler |
|
|
24
|
-
| `typescript-eslint` | TypeScript ESLint parser and plugin |
|
|
25
|
-
| `eslint-plugin-import` | Rules for import/export |
|
|
26
|
-
| `eslint-plugin-unused-imports` | Auto-remove unused imports |
|
|
27
|
-
| `eslint-plugin-solid` | SolidJS-specific rules |
|
|
28
|
-
| `eslint-plugin-tailwindcss` | Tailwind CSS-specific rules |
|
|
29
|
-
| `globals` | Global variable definitions |
|
|
30
|
-
| `stylelint` | Stylelint core |
|
|
31
|
-
| `stylelint-config-standard` | Standard Stylelint rules |
|
|
32
|
-
| `stylelint-config-tailwindcss` | Tailwind CSS-specific Stylelint rules |
|
|
33
|
-
| `stylelint-no-unsupported-browser-features` | Browser compatibility checker |
|
|
34
|
-
| `stylelint-no-unresolved-module` | Import/url() file existence checker |
|
|
16
|
+
All required linting libraries (eslint, typescript-eslint, stylelint, etc.) are included as dependencies and do not need to be installed separately.
|
|
35
17
|
|
|
36
18
|
## Configuration
|
|
37
19
|
|
|
@@ -39,20 +21,37 @@ This plugin depends on the following packages:
|
|
|
39
21
|
|
|
40
22
|
#### Using recommended config (recommended)
|
|
41
23
|
|
|
42
|
-
The `recommended`
|
|
24
|
+
The `eslint-recommended` entry point exports a comprehensive flat config array that includes custom rules, TypeScript rules, SolidJS rules, and Tailwind CSS rules. This is sufficient for most cases.
|
|
43
25
|
|
|
44
26
|
```javascript
|
|
45
|
-
import
|
|
27
|
+
import simplysmConfigs from "@simplysm/lint/eslint-recommended";
|
|
46
28
|
|
|
47
29
|
export default [
|
|
48
|
-
|
|
49
|
-
|
|
30
|
+
...simplysmConfigs,
|
|
31
|
+
];
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
To extend with additional settings (e.g., specifying a Tailwind config path):
|
|
35
|
+
|
|
36
|
+
```javascript
|
|
37
|
+
import simplysmConfigs from "@simplysm/lint/eslint-recommended";
|
|
38
|
+
|
|
39
|
+
export default [
|
|
40
|
+
...simplysmConfigs,
|
|
41
|
+
{
|
|
42
|
+
files: ["**/*.{ts,tsx}"],
|
|
43
|
+
settings: {
|
|
44
|
+
tailwindcss: {
|
|
45
|
+
config: "tailwind.config.ts",
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
50
49
|
];
|
|
51
50
|
```
|
|
52
51
|
|
|
53
|
-
#### Using only specific rules
|
|
52
|
+
#### Using only the ESLint plugin with specific rules
|
|
54
53
|
|
|
55
|
-
To selectively apply only certain custom rules
|
|
54
|
+
To selectively apply only certain custom rules, import the plugin from `eslint-plugin`:
|
|
56
55
|
|
|
57
56
|
```javascript
|
|
58
57
|
import simplysm from "@simplysm/lint/eslint-plugin";
|
|
@@ -316,7 +315,7 @@ throw new CC.NotImplementedError(); // Warning
|
|
|
316
315
|
|
|
317
316
|
## recommended Config Details
|
|
318
317
|
|
|
319
|
-
Full list of rules included in the `recommended` config.
|
|
318
|
+
Full list of rules included in the `eslint-recommended` config.
|
|
320
319
|
|
|
321
320
|
### Global Ignore Patterns
|
|
322
321
|
|
|
@@ -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,wBAuMG"}
|
|
@@ -91,7 +91,12 @@ var eslint_recommended_default = defineConfig([
|
|
|
91
91
|
"import/no-extraneous-dependencies": [
|
|
92
92
|
"error",
|
|
93
93
|
{
|
|
94
|
-
devDependencies: [
|
|
94
|
+
devDependencies: [
|
|
95
|
+
"**/lib/**",
|
|
96
|
+
"**/eslint.config.js",
|
|
97
|
+
"**/simplysm.js",
|
|
98
|
+
"**/vitest.config.js"
|
|
99
|
+
]
|
|
95
100
|
}
|
|
96
101
|
],
|
|
97
102
|
// JS/TS 공통
|
|
@@ -121,7 +126,10 @@ var eslint_recommended_default = defineConfig([
|
|
|
121
126
|
"@typescript-eslint/return-await": ["error", "in-try-catch"],
|
|
122
127
|
"@typescript-eslint/no-floating-promises": "error",
|
|
123
128
|
"@typescript-eslint/no-shadow": "error",
|
|
124
|
-
"@typescript-eslint/no-unnecessary-condition": [
|
|
129
|
+
"@typescript-eslint/no-unnecessary-condition": [
|
|
130
|
+
"error",
|
|
131
|
+
{ allowConstantLoopConditions: true }
|
|
132
|
+
],
|
|
125
133
|
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
|
126
134
|
// "@typescript-eslint/non-nullable-type-assertion-style": "error",
|
|
127
135
|
"@typescript-eslint/prefer-reduce-type-parameter": "error",
|
|
@@ -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;AAYvB,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
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-hard-private.d.ts","sourceRoot":"","sources":["../../src/rules/no-hard-private.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"no-hard-private.d.ts","sourceRoot":"","sources":["../../src/rules/no-hard-private.ts"],"names":[],"mappings":"AAmBA;;;;;;;;;GASG;;;;AACH,wBAgHG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/rules/no-hard-private.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,sBAAqC;AAE9C,SAAS,kBAAkB;
|
|
4
|
+
"mappings": "AAAA,SAAS,sBAAqC;AAE9C,SAAS,kBAAkB;AAO3B,SAAS,+BACP,MACsC;AACtC,SACE,MAAM,SAAS,eAAe,sBAC9B,MAAM,SAAS,eAAe,oBAC9B,MAAM,SAAS,eAAe;AAElC;AAYA,IAAO,0BAAQ,WAAW;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,aAAa;AAAA,IACf;AAAA,IACA,UAAU;AAAA,MACR,mBACE;AAAA,MACF,cACE;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT,QAAQ,CAAC;AAAA,EACX;AAAA,EACA,gBAAgB,CAAC;AAAA,EACjB,OAAO,SAAS;AACd,UAAM,aAAa,QAAQ;AAE3B,UAAM,aAA4B,CAAC;AAEnC,WAAO;AAAA;AAAA,MAEL,YAAY,MAA0B;AACpC,cAAM,cAAc,oBAAI,IAAY;AACpC,mBAAW,UAAU,KAAK,MAAM;AAC9B,cAAI,EAAE,SAAS,QAAS;AACxB,gBAAM,MAAM,OAAO;AACnB,cAAI,IAAI,SAAS,eAAe,YAAY;AAC1C,wBAAY,IAAI,IAAI,IAAI;AAAA,UAC1B;AAAA,QACF;AACA,mBAAW,KAAK,WAAW;AAAA,MAC7B;AAAA,MAEA,mBAAmB;AACjB,mBAAW,IAAI;AAAA,MACjB;AAAA;AAAA,MAGA,qHACE,MACA;AACA,cAAM,SAAS,KAAK;AACpB,YAAI,CAAC,+BAA+B,MAAM,GAAG;AAC3C;AAAA,QACF;AAEA,cAAM,iBAAiB,KAAK;AAC5B,cAAM,aAAa,IAAI,cAAc;AACrC,cAAM,sBAAsB,WAAW,GAAG,EAAE;AAG5C,YAAI,qBAAqB,IAAI,UAAU,GAAG;AACxC,kBAAQ,OAAO;AAAA,YACb;AAAA,YACA,WAAW;AAAA,YACX,MAAM,EAAE,MAAM,eAAe;AAAA,UAC/B,CAAC;AACD;AAAA,QACF;AAEA,gBAAQ,OAAO;AAAA,UACb;AAAA,UACA,WAAW;AAAA,UACX,IAAI,OAAO;AACT,kBAAM,QAAmB,CAAC;AAG1B,kBAAM,KAAK,MAAM,YAAY,MAAM,UAAU,CAAC;AAG9C,gBAAI,OAAO,iBAAiB,MAAM;AAEhC,kBAAI,sBAAsB,WAAW,cAAc,MAAM;AAIzD,kBAAI,OAAO,WAAW,SAAS,GAAG;AAChC,sBAAM,gBAAgB,OAAO,WAAW,GAAG,EAAE;AAC7C,sCAAsB,WAAW,cAAc,aAAa;AAAA,cAC9D;AAMA,kBAAI,uBAAuB,MAAM;AAC/B,uBAAO,CAAC;AAAA,cACV;AACA,oBAAM,KAAK,MAAM,iBAAiB,qBAAqB,UAAU,CAAC;AAAA,YACpE;AAEA,mBAAO;AAAA,UACT;AAAA,QACF,CAAC;AAAA,MACH;AAAA;AAAA,MAGA,uCAAuC,MAAkC;AACvE,cAAM,iBAAiB,KAAK;AAC5B,gBAAQ,OAAO;AAAA,UACb;AAAA,UACA,WAAW;AAAA,UACX,IAAI,OAAO;AACT,mBAAO,MAAM,YAAY,MAAM,IAAI,cAAc,EAAE;AAAA,UACrD;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"no-subpath-imports-from-simplysm.d.ts","sourceRoot":"","sources":["../../src/rules/no-subpath-imports-from-simplysm.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;;;;AACH,
|
|
1
|
+
{"version":3,"file":"no-subpath-imports-from-simplysm.d.ts","sourceRoot":"","sources":["../../src/rules/no-subpath-imports-from-simplysm.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;;;;AACH,wBAmEG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/rules/no-subpath-imports-from-simplysm.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,gBAAgB,gBAAgB;AACzC,SAAS,kBAAkB;AAW3B,IAAO,2CAAQ,WAAW;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,
|
|
4
|
+
"mappings": "AAAA,SAAS,gBAAgB,gBAAgB;AACzC,SAAS,kBAAkB;AAW3B,IAAO,2CAAQ,WAAW;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,aACE;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT,QAAQ,CAAC;AAAA,IACT,UAAU;AAAA,MACR,iBACE;AAAA,IACJ;AAAA,EACF;AAAA,EACA,gBAAgB,CAAC;AAAA,EACjB,OAAO,SAAS;AACd,aAAS,eAAe,YAAoC,YAAoB;AAC9E,UAAI,CAAC,WAAW,WAAW,YAAY,EAAG;AAE1C,YAAM,QAAQ,WAAW,MAAM,GAAG;AAIlC,UAAI,MAAM,UAAU,KAAK,MAAM,CAAC,MAAM,OAAO;AAC3C,cAAM,YAAY,aAAa,MAAM,CAAC,CAAC;AACvC,gBAAQ,OAAO;AAAA,UACb,MAAM;AAAA,UACN,WAAW;AAAA,UACX,MAAM;AAAA,YACJ,KAAK,MAAM,CAAC;AAAA,YACZ;AAAA,UACF;AAAA,UACA,IAAI,OAAO;AACT,kBAAM,QAAQ,WAAW,IAAI,CAAC;AAC9B,mBAAO,MAAM,YAAY,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,EAAE;AAAA,UACrE;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO;AAAA;AAAA,MAEL,kBAAkB,MAAM;AACtB,uBAAe,KAAK,QAAQ,KAAK,OAAO,KAAK;AAAA,MAC/C;AAAA;AAAA,MAGA,iBAAiB,MAAM;AACrB,YAAI,KAAK,OAAO,SAAS,eAAe,QAAS;AACjD,cAAM,aAAa,KAAK,OAAO;AAC/B,YAAI,OAAO,eAAe,SAAU;AACpC,uBAAe,KAAK,QAAQ,UAAU;AAAA,MACxC;AAAA;AAAA,MAGA,uBAAuB,MAAM;AAC3B,YAAI,CAAC,KAAK,OAAQ;AAClB,uBAAe,KAAK,QAAQ,KAAK,OAAO,KAAK;AAAA,MAC/C;AAAA;AAAA,MAGA,qBAAqB,MAAM;AACzB,uBAAe,KAAK,QAAQ,KAAK,OAAO,KAAK;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ts-no-throw-not-implemented-error.d.ts","sourceRoot":"","sources":["../../src/rules/ts-no-throw-not-implemented-error.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;;;;AACH,
|
|
1
|
+
{"version":3,"file":"ts-no-throw-not-implemented-error.d.ts","sourceRoot":"","sources":["../../src/rules/ts-no-throw-not-implemented-error.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;GAaG;;;;AACH,wBA+FG"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/rules/ts-no-throw-not-implemented-error.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,gBAAgB,gBAA+B;AACxD,SAAS,kBAAkB;AAgB3B,IAAO,4CAAQ,WAAW;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,aAAa;AAAA,IACf;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,UAAU;AAAA,MACR,4BAA4B;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,gBAAgB,CAAC;AAAA,EACjB,OAAO,SAAS;AAOd,aAAS,uBACP,YACA,sBACS;AACT,YAAM,QAAQ,QAAQ,WAAW,SAAS,UAAU;AACpD,YAAM,WAAW,SAAS,aAAa,OAAO,WAAW,IAAI;AAC7D,UAAI,CAAC,SAAU,QAAO;AAEtB,iBAAW,OAAO,SAAS,MAAM;AAC/B,YAAI,IAAI,SAAS,gBAAiB;AAClC,YAAI,IAAI,OAAO,SAAS,eAAe,kBAAmB;AAC1D,YAAI,IAAI,OAAO,OAAO,UAAU,wBAAyB;AAGzD,YAAI,IAAI,KAAK,SAAS,eAAe,mBAAmB,wBAAwB,MAAM;AACpF,gBAAM,WAAW,IAAI,KAAK;AAC1B,
|
|
4
|
+
"mappings": "AAAA,SAAS,gBAAgB,gBAA+B;AACxD,SAAS,kBAAkB;AAgB3B,IAAO,4CAAQ,WAAW;AAAA,EACxB,MAAM;AAAA,EACN,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,aAAa;AAAA,IACf;AAAA,IACA,QAAQ,CAAC;AAAA,IACT,UAAU;AAAA,MACR,4BAA4B;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,gBAAgB,CAAC;AAAA,EACjB,OAAO,SAAS;AAOd,aAAS,uBACP,YACA,sBACS;AACT,YAAM,QAAQ,QAAQ,WAAW,SAAS,UAAU;AACpD,YAAM,WAAW,SAAS,aAAa,OAAO,WAAW,IAAI;AAC7D,UAAI,CAAC,SAAU,QAAO;AAEtB,iBAAW,OAAO,SAAS,MAAM;AAC/B,YAAI,IAAI,SAAS,gBAAiB;AAClC,YAAI,IAAI,OAAO,SAAS,eAAe,kBAAmB;AAC1D,YAAI,IAAI,OAAO,OAAO,UAAU,wBAAyB;AAGzD,YAAI,IAAI,KAAK,SAAS,eAAe,mBAAmB,wBAAwB,MAAM;AACpF,gBAAM,WAAW,IAAI,KAAK;AAC1B,cACE,SAAS,SAAS,eAAe,cACjC,SAAS,SAAS,sBAClB;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAGA,YACE,IAAI,KAAK,SAAS,eAAe,4BACjC,wBAAwB,MACxB;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,MACL,cAAc,MAA8B;AAC1C,YAAI,eAAe;AAGnB,YAAI,KAAK,OAAO,SAAS,eAAe,YAAY;AAClD,yBAAe,uBAAuB,KAAK,QAAQ,qBAAqB;AAAA,QAC1E,WAIE,KAAK,OAAO,SAAS,eAAe,oBACpC,KAAK,OAAO,SAAS,SAAS,eAAe,cAC7C,KAAK,OAAO,SAAS,SAAS,yBAC9B,KAAK,OAAO,OAAO,SAAS,eAAe,YAC3C;AACA,yBAAe,uBAAuB,KAAK,OAAO,QAAQ,MAAS;AAAA,QACrE;AAEA,YAAI,CAAC,aAAc;AAEnB,YAAI,MAAM;AACV,cAAM,WAAW,KAAK,UAAU,GAAG,CAAC;AACpC,YACE,UAAU,SAAS,eAAe,WAClC,OAAO,SAAS,UAAU,YAC1B,SAAS,UAAU,IACnB;AACA,gBAAM,SAAS;AAAA,QACjB;AAEA,gBAAQ,OAAO;AAAA,UACb;AAAA,UACA,WAAW;AAAA,UACX,MAAM,EAAE,MAAM,IAAI;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF,CAAC;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-rule.d.ts","sourceRoot":"","sources":["../../src/utils/create-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,UAAU;;
|
|
1
|
+
{"version":3,"file":"create-rule.d.ts","sourceRoot":"","sources":["../../src/utils/create-rule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,UAAU;;CAGtB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/create-rule.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,mBAAmB;AAmBrB,MAAM,aAAa,YAAY;AAAA,EACpC,CAAC,
|
|
4
|
+
"mappings": "AAAA,SAAS,mBAAmB;AAmBrB,MAAM,aAAa,YAAY;AAAA,EACpC,CAAC,SACC,sFAAsF,IAAI;AAC9F;",
|
|
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.30",
|
|
4
4
|
"description": "심플리즘 패키지 - Lint 설정 (ESLint + Stylelint)",
|
|
5
5
|
"author": "김석래",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@typescript-eslint/utils": "^8.
|
|
33
|
+
"@typescript-eslint/utils": "^8.56.0",
|
|
34
34
|
"eslint": "^9.39.2",
|
|
35
35
|
"eslint-plugin-import": "^2.32.0",
|
|
36
36
|
"eslint-plugin-solid": "^0.14.5",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"stylelint-no-unresolved-module": "^2.5.2",
|
|
44
44
|
"stylelint-no-unsupported-browser-features": "^8.1.1",
|
|
45
45
|
"typescript": "^5.9.3",
|
|
46
|
-
"typescript-eslint": "^8.
|
|
46
|
+
"typescript-eslint": "^8.56.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/eslint-plugin-tailwindcss": "^3.17.0",
|
|
50
|
-
"@typescript-eslint/rule-tester": "^8.
|
|
50
|
+
"@typescript-eslint/rule-tester": "^8.56.0"
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -36,7 +36,8 @@ const noNodeBuiltinsRules: FlatConfig.Rules = {
|
|
|
36
36
|
"error",
|
|
37
37
|
{
|
|
38
38
|
name: "Buffer",
|
|
39
|
-
message:
|
|
39
|
+
message:
|
|
40
|
+
"Uint8Array를 사용하세요. 복잡한 연산은 @simplysm/core-common의 BytesUtils를 사용하세요.",
|
|
40
41
|
},
|
|
41
42
|
],
|
|
42
43
|
"no-restricted-imports": [
|
|
@@ -45,7 +46,8 @@ const noNodeBuiltinsRules: FlatConfig.Rules = {
|
|
|
45
46
|
paths: [
|
|
46
47
|
{
|
|
47
48
|
name: "buffer",
|
|
48
|
-
message:
|
|
49
|
+
message:
|
|
50
|
+
"Uint8Array를 사용하세요. 복잡한 연산은 @simplysm/core-common의 BytesUtils를 사용하세요.",
|
|
49
51
|
},
|
|
50
52
|
{
|
|
51
53
|
name: "events",
|
|
@@ -120,7 +122,12 @@ export default defineConfig([
|
|
|
120
122
|
"import/no-extraneous-dependencies": [
|
|
121
123
|
"error",
|
|
122
124
|
{
|
|
123
|
-
devDependencies: [
|
|
125
|
+
devDependencies: [
|
|
126
|
+
"**/lib/**",
|
|
127
|
+
"**/eslint.config.js",
|
|
128
|
+
"**/simplysm.js",
|
|
129
|
+
"**/vitest.config.js",
|
|
130
|
+
],
|
|
124
131
|
},
|
|
125
132
|
],
|
|
126
133
|
|
|
@@ -153,7 +160,10 @@ export default defineConfig([
|
|
|
153
160
|
"@typescript-eslint/return-await": ["error", "in-try-catch"],
|
|
154
161
|
"@typescript-eslint/no-floating-promises": "error",
|
|
155
162
|
"@typescript-eslint/no-shadow": "error",
|
|
156
|
-
"@typescript-eslint/no-unnecessary-condition": [
|
|
163
|
+
"@typescript-eslint/no-unnecessary-condition": [
|
|
164
|
+
"error",
|
|
165
|
+
{ allowConstantLoopConditions: true },
|
|
166
|
+
],
|
|
157
167
|
"@typescript-eslint/no-unnecessary-type-assertion": "error",
|
|
158
168
|
// "@typescript-eslint/non-nullable-type-assertion-style": "error",
|
|
159
169
|
"@typescript-eslint/prefer-reduce-type-parameter": "error",
|
|
@@ -2,9 +2,14 @@ import { AST_NODE_TYPES, type TSESTree } from "@typescript-eslint/utils";
|
|
|
2
2
|
import type { RuleFix } from "@typescript-eslint/utils/ts-eslint";
|
|
3
3
|
import { createRule } from "../utils/create-rule";
|
|
4
4
|
|
|
5
|
-
type ClassMemberWithAccessibility =
|
|
5
|
+
type ClassMemberWithAccessibility =
|
|
6
|
+
| TSESTree.PropertyDefinition
|
|
7
|
+
| TSESTree.MethodDefinition
|
|
8
|
+
| TSESTree.AccessorProperty;
|
|
6
9
|
|
|
7
|
-
function isClassMemberWithAccessibility(
|
|
10
|
+
function isClassMemberWithAccessibility(
|
|
11
|
+
node: TSESTree.Node | undefined,
|
|
12
|
+
): node is ClassMemberWithAccessibility {
|
|
8
13
|
return (
|
|
9
14
|
node?.type === AST_NODE_TYPES.PropertyDefinition ||
|
|
10
15
|
node?.type === AST_NODE_TYPES.MethodDefinition ||
|
|
@@ -30,7 +35,8 @@ export default createRule({
|
|
|
30
35
|
description: '하드 프라이빗 필드(#) 대신 TypeScript "private _" 스타일을 강제한다.',
|
|
31
36
|
},
|
|
32
37
|
messages: {
|
|
33
|
-
preferSoftPrivate:
|
|
38
|
+
preferSoftPrivate:
|
|
39
|
+
'하드 프라이빗 필드(#)는 허용되지 않습니다. "private _" 스타일을 사용하세요.',
|
|
34
40
|
nameConflict:
|
|
35
41
|
'하드 프라이빗 필드 "#{{name}}"을 "_{{name}}"으로 변환할 수 없습니다. 동일한 이름의 멤버가 이미 존재합니다.',
|
|
36
42
|
},
|
|
@@ -15,12 +15,14 @@ export default createRule({
|
|
|
15
15
|
meta: {
|
|
16
16
|
type: "problem",
|
|
17
17
|
docs: {
|
|
18
|
-
description:
|
|
18
|
+
description:
|
|
19
|
+
"@simplysm 패키지에서 'src' 서브경로 import를 금지한다. (ex: @simplysm/pkg/src/x → 금지)",
|
|
19
20
|
},
|
|
20
21
|
fixable: "code",
|
|
21
22
|
schema: [],
|
|
22
23
|
messages: {
|
|
23
|
-
noSubpathImport:
|
|
24
|
+
noSubpathImport:
|
|
25
|
+
"'@simplysm/{{pkg}}' 패키지는 'src' 서브경로를 import할 수 없습니다: '{{importPath}}'",
|
|
24
26
|
},
|
|
25
27
|
},
|
|
26
28
|
defaultOptions: [],
|
|
@@ -51,13 +51,19 @@ export default createRule({
|
|
|
51
51
|
// named/aliased import: import { NotImplementedError } 또는 import { NotImplementedError as NIE }
|
|
52
52
|
if (def.node.type === AST_NODE_TYPES.ImportSpecifier && expectedImportedName != null) {
|
|
53
53
|
const imported = def.node.imported;
|
|
54
|
-
if (
|
|
54
|
+
if (
|
|
55
|
+
imported.type === AST_NODE_TYPES.Identifier &&
|
|
56
|
+
imported.name === expectedImportedName
|
|
57
|
+
) {
|
|
55
58
|
return true;
|
|
56
59
|
}
|
|
57
60
|
}
|
|
58
61
|
|
|
59
62
|
// namespace import: import * as CC
|
|
60
|
-
if (
|
|
63
|
+
if (
|
|
64
|
+
def.node.type === AST_NODE_TYPES.ImportNamespaceSpecifier &&
|
|
65
|
+
expectedImportedName == null
|
|
66
|
+
) {
|
|
61
67
|
return true;
|
|
62
68
|
}
|
|
63
69
|
}
|
|
@@ -88,7 +94,11 @@ export default createRule({
|
|
|
88
94
|
|
|
89
95
|
let msg = "미구현";
|
|
90
96
|
const firstArg = node.arguments.at(0);
|
|
91
|
-
if (
|
|
97
|
+
if (
|
|
98
|
+
firstArg?.type === AST_NODE_TYPES.Literal &&
|
|
99
|
+
typeof firstArg.value === "string" &&
|
|
100
|
+
firstArg.value !== ""
|
|
101
|
+
) {
|
|
92
102
|
msg = firstArg.value;
|
|
93
103
|
}
|
|
94
104
|
|
package/src/utils/create-rule.ts
CHANGED
|
@@ -18,5 +18,6 @@ import { ESLintUtils } from "@typescript-eslint/utils";
|
|
|
18
18
|
* ```
|
|
19
19
|
*/
|
|
20
20
|
export const createRule = ESLintUtils.RuleCreator(
|
|
21
|
-
(name) =>
|
|
21
|
+
(name) =>
|
|
22
|
+
`https://github.com/kslhunter/simplysm/blob/master/packages/eslint-plugin/README.md#${name}`,
|
|
22
23
|
);
|