eslint-plugin-code-policy 0.2.0

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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +376 -0
  3. package/dist/chunk-URER6VHN.js +525 -0
  4. package/dist/chunk-URER6VHN.js.map +1 -0
  5. package/dist/chunk-YKNN7DF3.cjs +531 -0
  6. package/dist/chunk-YKNN7DF3.cjs.map +1 -0
  7. package/dist/configs/next.cjs +9 -0
  8. package/dist/configs/next.cjs.map +1 -0
  9. package/dist/configs/next.d.ts +14 -0
  10. package/dist/configs/next.d.ts.map +1 -0
  11. package/dist/configs/next.js +6 -0
  12. package/dist/configs/next.js.map +1 -0
  13. package/dist/configs/react.cjs +9 -0
  14. package/dist/configs/react.cjs.map +1 -0
  15. package/dist/configs/react.d.ts +14 -0
  16. package/dist/configs/react.d.ts.map +1 -0
  17. package/dist/configs/react.js +6 -0
  18. package/dist/configs/react.js.map +1 -0
  19. package/dist/configs/recommended.cjs +9 -0
  20. package/dist/configs/recommended.cjs.map +1 -0
  21. package/dist/configs/recommended.d.ts +14 -0
  22. package/dist/configs/recommended.d.ts.map +1 -0
  23. package/dist/configs/recommended.js +6 -0
  24. package/dist/configs/recommended.js.map +1 -0
  25. package/dist/configs/strict.cjs +9 -0
  26. package/dist/configs/strict.cjs.map +1 -0
  27. package/dist/configs/strict.d.ts +14 -0
  28. package/dist/configs/strict.d.ts.map +1 -0
  29. package/dist/configs/strict.js +6 -0
  30. package/dist/configs/strict.js.map +1 -0
  31. package/dist/index.cjs +18 -0
  32. package/dist/index.cjs.map +1 -0
  33. package/dist/index.d.ts +66 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +6 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/rules/atomic-file.d.ts +4 -0
  38. package/dist/rules/atomic-file.d.ts.map +1 -0
  39. package/dist/rules/no-cross-module-deep-imports.d.ts +31 -0
  40. package/dist/rules/no-cross-module-deep-imports.d.ts.map +1 -0
  41. package/dist/rules/no-inline-types.d.ts +4 -0
  42. package/dist/rules/no-inline-types.d.ts.map +1 -0
  43. package/dist/rules/public-api-imports.d.ts +4 -0
  44. package/dist/rules/public-api-imports.d.ts.map +1 -0
  45. package/dist/rules/view-logic-separation.d.ts +4 -0
  46. package/dist/rules/view-logic-separation.d.ts.map +1 -0
  47. package/package.json +92 -0
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ rules: {
3
+ 'code-policy/atomic-file': string;
4
+ 'code-policy/no-inline-types': string;
5
+ 'code-policy/view-logic-separation': string;
6
+ 'code-policy/public-api-imports': string;
7
+ 'code-policy/no-cross-module-deep-imports': string;
8
+ };
9
+ plugins: {
10
+ readonly 'code-policy': any;
11
+ };
12
+ };
13
+ export default _default;
14
+ //# sourceMappingURL=react.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../src/configs/react.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,wBAMC"}
@@ -0,0 +1,6 @@
1
+ import { init_react } from '../chunk-URER6VHN.js';
2
+ export { react_default as default } from '../chunk-URER6VHN.js';
3
+
4
+ init_react();
5
+ //# sourceMappingURL=react.js.map
6
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"react.js"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var chunkYKNN7DF3_cjs = require('../chunk-YKNN7DF3.cjs');
4
+
5
+ chunkYKNN7DF3_cjs.init_recommended();
6
+
7
+ module.exports = chunkYKNN7DF3_cjs.recommended_default;
8
+ //# sourceMappingURL=recommended.cjs.map
9
+ //# sourceMappingURL=recommended.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"recommended.cjs"}
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ plugins: {
3
+ readonly 'code-policy': any;
4
+ };
5
+ rules: {
6
+ 'code-policy/atomic-file': string;
7
+ 'code-policy/no-inline-types': string;
8
+ 'code-policy/view-logic-separation': string;
9
+ 'code-policy/public-api-imports': string;
10
+ 'code-policy/no-cross-module-deep-imports': string;
11
+ };
12
+ };
13
+ export default _default;
14
+ //# sourceMappingURL=recommended.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recommended.d.ts","sourceRoot":"","sources":["../../src/configs/recommended.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wBAkBC"}
@@ -0,0 +1,6 @@
1
+ import { init_recommended } from '../chunk-URER6VHN.js';
2
+ export { recommended_default as default } from '../chunk-URER6VHN.js';
3
+
4
+ init_recommended();
5
+ //# sourceMappingURL=recommended.js.map
6
+ //# sourceMappingURL=recommended.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"recommended.js"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var chunkYKNN7DF3_cjs = require('../chunk-YKNN7DF3.cjs');
4
+
5
+ chunkYKNN7DF3_cjs.init_strict();
6
+
7
+ module.exports = chunkYKNN7DF3_cjs.strict_default;
8
+ //# sourceMappingURL=strict.cjs.map
9
+ //# sourceMappingURL=strict.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"strict.cjs"}
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ rules: {
3
+ 'code-policy/atomic-file': string;
4
+ 'code-policy/no-inline-types': string;
5
+ 'code-policy/view-logic-separation': string;
6
+ 'code-policy/public-api-imports': string;
7
+ 'code-policy/no-cross-module-deep-imports': string;
8
+ };
9
+ plugins: {
10
+ readonly 'code-policy': any;
11
+ };
12
+ };
13
+ export default _default;
14
+ //# sourceMappingURL=strict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strict.d.ts","sourceRoot":"","sources":["../../src/configs/strict.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,wBAMC"}
@@ -0,0 +1,6 @@
1
+ import { init_strict } from '../chunk-URER6VHN.js';
2
+ export { strict_default as default } from '../chunk-URER6VHN.js';
3
+
4
+ init_strict();
5
+ //# sourceMappingURL=strict.js.map
6
+ //# sourceMappingURL=strict.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"strict.js"}
package/dist/index.cjs ADDED
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var chunkYKNN7DF3_cjs = require('./chunk-YKNN7DF3.cjs');
6
+
7
+ chunkYKNN7DF3_cjs.init_index();
8
+
9
+ Object.defineProperty(exports, "default", {
10
+ enumerable: true,
11
+ get: function () { return chunkYKNN7DF3_cjs.index_default; }
12
+ });
13
+ Object.defineProperty(exports, "plugin", {
14
+ enumerable: true,
15
+ get: function () { return chunkYKNN7DF3_cjs.plugin; }
16
+ });
17
+ //# sourceMappingURL=index.cjs.map
18
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,66 @@
1
+ declare const plugin: {
2
+ meta: {
3
+ name: string;
4
+ version: string;
5
+ };
6
+ rules: {
7
+ 'atomic-file': import("eslint").Rule.RuleModule;
8
+ 'no-inline-types': import("eslint").Rule.RuleModule;
9
+ 'view-logic-separation': import("eslint").Rule.RuleModule;
10
+ 'public-api-imports': import("eslint").Rule.RuleModule;
11
+ 'no-cross-module-deep-imports': import("eslint").Rule.RuleModule;
12
+ };
13
+ configs: {
14
+ recommended: {
15
+ plugins: {
16
+ readonly 'code-policy': any;
17
+ };
18
+ rules: {
19
+ 'code-policy/atomic-file': string;
20
+ 'code-policy/no-inline-types': string;
21
+ 'code-policy/view-logic-separation': string;
22
+ 'code-policy/public-api-imports': string;
23
+ 'code-policy/no-cross-module-deep-imports': string;
24
+ };
25
+ };
26
+ strict: {
27
+ rules: {
28
+ 'code-policy/atomic-file': string;
29
+ 'code-policy/no-inline-types': string;
30
+ 'code-policy/view-logic-separation': string;
31
+ 'code-policy/public-api-imports': string;
32
+ 'code-policy/no-cross-module-deep-imports': string;
33
+ };
34
+ plugins: {
35
+ readonly 'code-policy': any;
36
+ };
37
+ };
38
+ react: {
39
+ rules: {
40
+ 'code-policy/atomic-file': string;
41
+ 'code-policy/no-inline-types': string;
42
+ 'code-policy/view-logic-separation': string;
43
+ 'code-policy/public-api-imports': string;
44
+ 'code-policy/no-cross-module-deep-imports': string;
45
+ };
46
+ plugins: {
47
+ readonly 'code-policy': any;
48
+ };
49
+ };
50
+ next: {
51
+ rules: {
52
+ 'code-policy/atomic-file': string;
53
+ 'code-policy/no-inline-types': string;
54
+ 'code-policy/view-logic-separation': string;
55
+ 'code-policy/public-api-imports': string;
56
+ 'code-policy/no-cross-module-deep-imports': string;
57
+ };
58
+ plugins: {
59
+ readonly 'code-policy': any;
60
+ };
61
+ };
62
+ };
63
+ };
64
+ export default plugin;
65
+ export { plugin };
66
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBX,CAAA;AAED,eAAe,MAAM,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ import { init_index } from './chunk-URER6VHN.js';
2
+ export { index_default as default, plugin } from './chunk-URER6VHN.js';
3
+
4
+ init_index();
5
+ //# sourceMappingURL=index.js.map
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const _default: Rule.RuleModule;
3
+ export default _default;
4
+ //# sourceMappingURL=atomic-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomic-file.d.ts","sourceRoot":"","sources":["../../src/rules/atomic-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;wBA6J7B,IAAI,CAAC,UAAU;AAtIpB,wBAsIoB"}
@@ -0,0 +1,31 @@
1
+ import type { Rule } from 'eslint';
2
+ /**
3
+ * no-cross-module-deep-imports
4
+ *
5
+ * Prevents modules within a monorepo from bypassing each other's public API.
6
+ * A "deep import" is any relative import that traverses up two or more directory
7
+ * levels and then descends into another module's internal directory.
8
+ *
9
+ * Example monorepo:
10
+ * packages/core/src/utils/helper.ts
11
+ * packages/ui/src/Button.tsx
12
+ *
13
+ * ❌ Wrong (from Button.tsx):
14
+ * import { helper } from '../../core/src/utils/helper'
15
+ *
16
+ * ✅ Correct:
17
+ * import { helper } from '@myorg/core' // through published public API
18
+ *
19
+ * The rule detects the pattern by looking for relative imports that:
20
+ * 1. Go up at least `minParentTraversals` levels (default: 2)
21
+ * 2. Then descend into a directory matching one of `internalDirs` (default: ['src'])
22
+ *
23
+ * Options (object):
24
+ * - minParentTraversals: number (default 2) — how many `../` levels must be
25
+ * present before we start looking for an internal dir descent.
26
+ * - internalDirs: string[] (default ['src']) — directory names that signal
27
+ * internal code that should be accessed only via the public API.
28
+ */
29
+ declare const _default: Rule.RuleModule;
30
+ export default _default;
31
+ //# sourceMappingURL=no-cross-module-deep-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-cross-module-deep-imports.d.ts","sourceRoot":"","sources":["../../src/rules/no-cross-module-deep-imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;wBAmEE,IAAI,CAAC,UAAU;AAjEpB,wBAiEoB"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const _default: Rule.RuleModule;
3
+ export default _default;
4
+ //# sourceMappingURL=no-inline-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"no-inline-types.d.ts","sourceRoot":"","sources":["../../src/rules/no-inline-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;wBA4H7B,IAAI,CAAC,UAAU;AAxFpB,wBAwFoB"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const _default: Rule.RuleModule;
3
+ export default _default;
4
+ //# sourceMappingURL=public-api-imports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-api-imports.d.ts","sourceRoot":"","sources":["../../src/rules/public-api-imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;wBAsD7B,IAAI,CAAC,UAAU;AApDpB,wBAoDoB"}
@@ -0,0 +1,4 @@
1
+ import type { Rule } from 'eslint';
2
+ declare const _default: Rule.RuleModule;
3
+ export default _default;
4
+ //# sourceMappingURL=view-logic-separation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-logic-separation.d.ts","sourceRoot":"","sources":["../../src/rules/view-logic-separation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;wBAuH7B,IAAI,CAAC,UAAU;AA/EpB,wBA+EoB"}
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "eslint-plugin-code-policy",
3
+ "version": "0.2.0",
4
+ "description": "Architectural linting for TypeScript · enforce atomic files, explicit public APIs, clean runtime boundaries, and view/logic separation.",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./configs/recommended": {
16
+ "types": "./dist/configs/recommended.d.ts",
17
+ "import": "./dist/configs/recommended.js",
18
+ "require": "./dist/configs/recommended.cjs"
19
+ },
20
+ "./configs/strict": {
21
+ "types": "./dist/configs/strict.d.ts",
22
+ "import": "./dist/configs/strict.js",
23
+ "require": "./dist/configs/strict.cjs"
24
+ },
25
+ "./configs/react": {
26
+ "types": "./dist/configs/react.d.ts",
27
+ "import": "./dist/configs/react.js",
28
+ "require": "./dist/configs/react.cjs"
29
+ },
30
+ "./configs/next": {
31
+ "types": "./dist/configs/next.d.ts",
32
+ "import": "./dist/configs/next.js",
33
+ "require": "./dist/configs/next.cjs"
34
+ }
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "README.md",
39
+ "LICENSE"
40
+ ],
41
+ "keywords": [
42
+ "eslint",
43
+ "eslint-plugin",
44
+ "typescript",
45
+ "architectural-linting",
46
+ "atomic-file",
47
+ "public-api",
48
+ "module-boundaries",
49
+ "react",
50
+ "nextjs",
51
+ "monorepo",
52
+ "code-policy",
53
+ "flat-config"
54
+ ],
55
+ "author": {
56
+ "name": "Cristian Deluxe",
57
+ "url": "https://github.com/cristiandeluxe"
58
+ },
59
+ "license": "MIT",
60
+ "homepage": "https://github.com/VibraComet/eslint-plugin-code-policy#readme",
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "git+https://github.com/VibraComet/eslint-plugin-code-policy.git",
64
+ "directory": "packages/eslint-plugin-code-policy"
65
+ },
66
+ "bugs": {
67
+ "url": "https://github.com/VibraComet/eslint-plugin-code-policy/issues"
68
+ },
69
+ "publishConfig": {
70
+ "access": "public",
71
+ "provenance": true
72
+ },
73
+ "sideEffects": false,
74
+ "peerDependencies": {
75
+ "eslint": "^9.0.0",
76
+ "typescript": "^5.4.0"
77
+ },
78
+ "peerDependenciesMeta": {
79
+ "typescript": {
80
+ "optional": true
81
+ }
82
+ },
83
+ "devDependencies": {
84
+ "eslint": "^9.0.0",
85
+ "typescript": "^5.4.0",
86
+ "@types/eslint": "^9.0.0"
87
+ },
88
+ "scripts": {
89
+ "build": "tsup && tsc -p tsconfig.build.json",
90
+ "dev": "tsup --watch"
91
+ }
92
+ }