@simplysm/eslint-plugin 12.11.8 → 12.11.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/eslint-plugin",
3
- "version": "12.11.8",
3
+ "version": "12.11.10",
4
4
  "description": "심플리즘 패키지 - ESLINT 플러그인",
5
5
  "author": "김석래",
6
6
  "repository": {
@@ -22,6 +22,7 @@ export default [
22
22
  files: ["**/*.js", "**/*.jsx"],
23
23
  plugins: {
24
24
  import: importPlugin,
25
+ "@simplysm": plugin,
25
26
  },
26
27
  rules: {
27
28
  // 기본
@@ -38,7 +39,7 @@ export default [
38
39
  message: "Do not use ECMAScript private methods (e.g. #myMethod); use TypeScript \"private\" instead.",
39
40
  },
40
41
  ],*/
41
- "eqeqeq": ["error", "always", { "null": "ignore" }],
42
+ "eqeqeq": ["error", "always", { null: "ignore" }],
42
43
 
43
44
  "require-await": ["error"],
44
45
  // "semi": ["error"],
@@ -52,7 +53,7 @@ export default [
52
53
  "import/no-extraneous-dependencies": [
53
54
  "error",
54
55
  {
55
- "devDependencies": [
56
+ devDependencies: [
56
57
  "**/*.spec.js",
57
58
  "**/lib/**",
58
59
  "**/eslint.config.js",
@@ -61,6 +62,9 @@ export default [
61
62
  ],
62
63
  },
63
64
  ],
65
+
66
+ // simplysm
67
+ "@simplysm/no-subpath-imports-from-simplysm": ["error"],
64
68
  },
65
69
  },
66
70
  {
@@ -102,7 +106,7 @@ export default [
102
106
  message: "Do not use ECMAScript private methods (e.g. #myMethod); use TypeScript \"private\" instead.",
103
107
  },
104
108
  ],*/
105
- "eqeqeq": ["error", "always", { "null": "ignore" }],
109
+ "eqeqeq": ["error", "always", { null: "ignore" }],
106
110
 
107
111
  // 타입스크립트
108
112
  "@typescript-eslint/require-await": ["error"],
@@ -197,15 +201,13 @@ export default [
197
201
 
198
202
  //-- 심플리즘
199
203
  "@simplysm/ts-no-throw-not-implement-error": ["warn"],
200
-
204
+ "@simplysm/no-subpath-imports-from-simplysm": ["error"],
201
205
 
202
206
  // -- 아래 적용 검토가 필요한것
203
207
  "import/no-extraneous-dependencies": [
204
208
  "error",
205
209
  {
206
- "devDependencies": [
207
- "**/*.spec.ts",
208
- ],
210
+ devDependencies: ["**/*.spec.ts"],
209
211
  },
210
212
  ],
211
213
  /*"@simplysm/ts-no-exported-types": [
package/src/plugin.js CHANGED
@@ -2,6 +2,7 @@ import tsNoThrowNotImplementError from "./rules/ts-no-throw-not-implement-error.
2
2
  import ngTemplateNoTodoComments from "./rules/ng-template-no-todo-comments.js";
3
3
  import tsNoExportedTypes from "./rules/ts-no-exported-types.js";
4
4
  import tsNoBufferInTypedArrayContext from "./rules/ts-no-buffer-in-typedarray-context.js";
5
+ import noSubpathImportsFromSimplysm from "./rules/no-subpath-imports-from-simplysm.js";
5
6
 
6
7
  export default {
7
8
  rules: {
@@ -9,5 +10,6 @@ export default {
9
10
  "ts-no-exported-types": tsNoExportedTypes,
10
11
  "ts-no-buffer-in-typedarray-context": tsNoBufferInTypedArrayContext,
11
12
  "ng-template-no-todo-comments": ngTemplateNoTodoComments,
13
+ "no-subpath-imports-from-simplysm": noSubpathImportsFromSimplysm,
12
14
  },
13
- };
15
+ };
@@ -0,0 +1,40 @@
1
+ export default {
2
+ meta: {
3
+ type: "problem",
4
+ docs: {
5
+ description:
6
+ "@simplysm 패키지에서 서브경로 import를 금지합니다. (ex: @simplysm/pkg/src/x → 금지)",
7
+ recommended: "error",
8
+ },
9
+ schema: [],
10
+ messages: {
11
+ noSubpathImport:
12
+ "'@simplysm/{{pkg}}' 패키지는 루트까지만 import 가능합니다. 서브 경로(import '{{importPath}}')를 사용하지 마세요.",
13
+ },
14
+ },
15
+
16
+ create(context) {
17
+ return {
18
+ ImportDeclaration(node) {
19
+ const importPath = node.source.value;
20
+
21
+ if (typeof importPath !== "string") return;
22
+
23
+ if (importPath.startsWith("@simplysm/")) {
24
+ const parts = importPath.split("/");
25
+ // @simplysm/pkg (length 2)는 허용. 그 외는 금지.
26
+ if (parts.length > 2) {
27
+ context.report({
28
+ node: node.source,
29
+ messageId: "noSubpathImport",
30
+ data: {
31
+ pkg: parts[1],
32
+ importPath,
33
+ },
34
+ });
35
+ }
36
+ }
37
+ },
38
+ };
39
+ },
40
+ };