archprint 0.4.0 → 0.5.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 (77) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +48 -28
  3. package/dist/cli/generate.d.ts +15 -4
  4. package/dist/cli/generate.d.ts.map +1 -1
  5. package/dist/cli/generate.js +93 -44
  6. package/dist/cli/generate.js.map +1 -1
  7. package/dist/cli/program.d.ts +1 -0
  8. package/dist/cli/program.d.ts.map +1 -1
  9. package/dist/cli/program.js +124 -8
  10. package/dist/cli/program.js.map +1 -1
  11. package/dist/cli/recommend.d.ts +5 -1
  12. package/dist/cli/recommend.d.ts.map +1 -1
  13. package/dist/cli/recommend.js +42 -2
  14. package/dist/cli/recommend.js.map +1 -1
  15. package/dist/cli/report.d.ts +1 -0
  16. package/dist/cli/report.d.ts.map +1 -1
  17. package/dist/cli/report.js +21 -3
  18. package/dist/cli/report.js.map +1 -1
  19. package/dist/cli/wiring.d.ts.map +1 -1
  20. package/dist/cli/wiring.js +46 -22
  21. package/dist/cli/wiring.js.map +1 -1
  22. package/dist/detector/family-maturity.d.ts.map +1 -1
  23. package/dist/detector/family-maturity.js +0 -2
  24. package/dist/detector/family-maturity.js.map +1 -1
  25. package/dist/generator/console-isolation-emitters.d.ts +3 -0
  26. package/dist/generator/console-isolation-emitters.d.ts.map +1 -1
  27. package/dist/generator/console-isolation-emitters.js +5 -1
  28. package/dist/generator/console-isolation-emitters.js.map +1 -1
  29. package/dist/generator/deep-relative-emitters.d.ts +4 -0
  30. package/dist/generator/deep-relative-emitters.d.ts.map +1 -1
  31. package/dist/generator/deep-relative-emitters.js +4 -0
  32. package/dist/generator/deep-relative-emitters.js.map +1 -1
  33. package/dist/generator/depcruise-exempt.d.ts +5 -0
  34. package/dist/generator/depcruise-exempt.d.ts.map +1 -0
  35. package/dist/generator/depcruise-exempt.js +8 -0
  36. package/dist/generator/depcruise-exempt.js.map +1 -0
  37. package/dist/generator/dependency-internals-emitters.d.ts +1 -1
  38. package/dist/generator/dependency-internals-emitters.d.ts.map +1 -1
  39. package/dist/generator/dependency-internals-emitters.js +5 -2
  40. package/dist/generator/dependency-internals-emitters.js.map +1 -1
  41. package/dist/generator/env-access-emitters.d.ts +1 -1
  42. package/dist/generator/env-access-emitters.d.ts.map +1 -1
  43. package/dist/generator/env-access-emitters.js +3 -1
  44. package/dist/generator/env-access-emitters.js.map +1 -1
  45. package/dist/generator/eslint-preset-emitter.js +1 -1
  46. package/dist/generator/eslint-scope.d.ts +10 -0
  47. package/dist/generator/eslint-scope.d.ts.map +1 -0
  48. package/dist/generator/eslint-scope.js +37 -0
  49. package/dist/generator/eslint-scope.js.map +1 -0
  50. package/dist/generator/phantom-dependency-emitters.d.ts +1 -1
  51. package/dist/generator/phantom-dependency-emitters.d.ts.map +1 -1
  52. package/dist/generator/phantom-dependency-emitters.js +4 -1
  53. package/dist/generator/phantom-dependency-emitters.js.map +1 -1
  54. package/dist/generator/public-api-emitters.d.ts +1 -1
  55. package/dist/generator/public-api-emitters.d.ts.map +1 -1
  56. package/dist/generator/public-api-emitters.js +2 -1
  57. package/dist/generator/public-api-emitters.js.map +1 -1
  58. package/dist/generator/test-isolation-emitters.d.ts +3 -1
  59. package/dist/generator/test-isolation-emitters.d.ts.map +1 -1
  60. package/dist/generator/test-isolation-emitters.js +26 -2
  61. package/dist/generator/test-isolation-emitters.js.map +1 -1
  62. package/dist/generator/workspace-package-emitters.d.ts +1 -1
  63. package/dist/generator/workspace-package-emitters.d.ts.map +1 -1
  64. package/dist/generator/workspace-package-emitters.js +2 -0
  65. package/dist/generator/workspace-package-emitters.js.map +1 -1
  66. package/dist/index.d.ts +2 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +2 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/scanner/app-dirs.d.ts.map +1 -1
  71. package/dist/scanner/app-dirs.js +5 -2
  72. package/dist/scanner/app-dirs.js.map +1 -1
  73. package/dist/scanner/enforcers.d.ts +8 -0
  74. package/dist/scanner/enforcers.d.ts.map +1 -0
  75. package/dist/scanner/enforcers.js +74 -0
  76. package/dist/scanner/enforcers.js.map +1 -0
  77. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,74 @@
1
1
  # archprint
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - archprint now generates rules for the enforcers your repo actually uses. It detects whether you have
8
+ ESLint or dependency-cruiser and emits each rule for a tool you already run, instead of writing
9
+ dependency-cruiser configs you have no way to enforce. On an ESLint-only repo it expresses test
10
+ isolation as an ESLint `no-restricted-imports` rule; dependency-cruiser configs are only written when
11
+ dependency-cruiser is present. `archprint recommend` now names, per rule, the installed tool that will
12
+ enforce it (or what you would need to install).
13
+ - `archprint generate --readme` writes an `ADOPTION.md` in the output directory summarizing what is
14
+ enforced now, held for review, and worth adopting, each with the tool that enforces it. It is tracked
15
+ in the manifest, so `archprint eject` removes it too.
16
+ - `archprint generate` gains two output controls: `--emit <eslint|dependency-cruiser|all>` forces the
17
+ output format regardless of the tooling archprint detects, and `--no-graph` skips the layer dependency
18
+ graph (Mermaid and Graphviz).
19
+ - `archprint generate` gains finer output control: `--only <family>` emits a single rule family,
20
+ `--rules <ids>` emits only the named forbidden-import rule ids, and `--check` runs the generated
21
+ ESLint rules against your repo and reports whether they pass, so you can confirm before wiring.
22
+
23
+ ### Patch Changes
24
+
25
+ - Generated rules are now green-by-construction: a rule archprint says you "already follow" passes clean
26
+ when you wire it, instead of flagging code that was there all along. Emitted rules are scoped to exactly
27
+ the files the detector measured (test files and cli/config files are excluded, matching what the analysis
28
+ skips) and exempt the specific exceptions the confidence gate accepted. This covers the console,
29
+ environment-access, deep-relative-import, workspace-package, test-isolation, phantom-dependency, and
30
+ dependency-internals rules across both ESLint and dependency-cruiser. The ESLint import rules
31
+ (deep-relative, workspace, test) are also emitted as a single merged block so they no longer override one
32
+ another in flat config.
33
+ - More fixes so an "enforce now" rule cannot flag code it was mined from:
34
+
35
+ - The dependency-cruiser test-isolation, phantom-deps, no-internals, and public-API deep-import rules now
36
+ exclude test files (`__tests__`, `e2e`, `cypress`, `.test`/`.spec`/`e2e` suffixes), matching what the
37
+ analysis excludes.
38
+ - The public-API deep-import rule also exempts the tolerated deep importers the confidence gate already
39
+ accepted, so an "enforce now" rule cannot flag code it was mined from.
40
+ - no-internals matches only the internals directories the analysis measures (`src`, `internal`,
41
+ `internals`), not a package's normal `dist`/`lib` entry.
42
+ - no-internals and phantom-deps are now held for review (emitted with `--include-structural`) rather than
43
+ auto-enforced, because their rules match resolved paths or dependency types and can flag a package whose
44
+ public entry resolves through `src/`, or a workspace package with no local `package.json` entry.
45
+ - Phantom (undeclared) dependency checking is emitted only for dependency-cruiser; the ESLint form is
46
+ dropped because it flags test files and first-party path aliases the analysis excludes.
47
+ - `wire` only splices into a recognized flat-config array or factory (`defineConfig`, `tseslint.config`);
48
+ an unrecognized call such as `export default loadConfig()` bails instead of reporting a false success.
49
+ - `generate --check` reports files it could not parse instead of calling them clean.
50
+
51
+ - - `wire` parses your ESLint config with the TypeScript AST, so it reliably edits the common
52
+ `const config = [...]; export default config;` shape and is not fooled by `export default` appearing
53
+ inside a string or comment.
54
+ - archprint no longer writes rule files for a tool your repo does not use; pass `--emit all` to force
55
+ every format.
56
+ - The wired ESLint config and the shareable preset ignore archprint's own generated files, so linting
57
+ your repo never flags them.
58
+ - `archprint generate --check` reports only violations of the rules archprint generated.
59
+ - `archprint wire` now edits the common config shape where the ESLint flat config is bound to a name
60
+ and exported by reference (`const config = [...]; export default config;`, the default for Next.js and
61
+ many TypeScript projects) instead of falling back to a manual edit. It resolves the exported name to
62
+ its declaration, including a `defineConfig([...])` wrapper, and `archprint eject` reverses it as before.
63
+
64
+ ## 0.4.1
65
+
66
+ ### Patch Changes
67
+
68
+ - Scan repositories that declare a TypeScript project but have few source files. Archprint now recognizes
69
+ `tsconfig.base.json` (not only `tsconfig.json`) and always scans a repo that has a tsconfig, instead of failing
70
+ with a "no scannable app directory" error on TypeScript-light repos.
71
+
3
72
  ## 0.4.0
4
73
 
5
74
  ### Minor Changes
package/README.md CHANGED
@@ -17,20 +17,26 @@ Your `CLAUDE.md` is guidance. Your lint rules are enforcement. Archprint closes
17
17
  enforcement from patterns your codebase already demonstrates, so you adopt rules you can trust instead of
18
18
  authoring them by hand.
19
19
 
20
+ Validated at scale: `scan` and `recommend` ran across all 92,861 real public TypeScript repositories with zero
21
+ crashes, and the full `init`/`wire`/`eject` round-trip ran clean on a 2,000-repo stratified sample. A companion
22
+ benchmark, [AgentRuleBench](https://github.com/Tommkruix/agentrulebench), measures the guidance-vs-enforcement
23
+ question directly (a pre-registered, honest null result on the boundary it tested).
24
+
20
25
  **What auto-enforces vs. what you review.** Archprint is honest about which of its inferences it will stand
21
26
  behind unattended. An adversarial correctness audit (three rounds over four real repositories) found that the
22
27
  _mechanical_ families, ones grounded in unambiguous signals (no cycles, production must not import tests, no
23
- `console` in library code, no undeclared dependencies, deep-relative import style, public-API barrels, no
24
- reaching into a dependency's internals, and the DB/UI-in-server-entry rule), had zero false positives every
25
- round. So those auto-generate as enforcement. The _structural-inference_ families (layer and role boundaries,
26
- UI/data separation, entry purity, server/client, feature-slice and app isolation) infer a "layer" or "role"
27
- from paths, which can be wrong, so Archprint holds them for human review by default rather than silently
28
- enforcing them. Nothing whose inferred layer or role could be wrong is written as enforcement without you
29
- opting in.
30
-
31
- > Status: published on npm, pre-stable (0.x may break between minor versions). Production-ready today: the
32
- > insight commands (`scan`, `recommend`) and the auto-enforcement of the mechanical families above. The
33
- > structural families are review-only while they are hardened.
28
+ `console` in library code, no undeclared dependencies, deep-relative import style, public-API barrels, and the
29
+ DB/UI-in-server-entry rule), had zero false positives every round. So those auto-generate as enforcement. The
30
+ families held for human review by default, emitted only with `--include-structural`, are the ones that infer a
31
+ "layer" or "role" from paths, which can be wrong (layer and role boundaries, UI/data separation, entry purity,
32
+ server/client, feature-slice and app isolation), plus dependency hygiene, whose enforcement can over-flag.
33
+ Nothing that could be wrong is written as enforcement without you opting in.
34
+
35
+ > Status: published on npm and safe to try on your real repo. Every rule is review-gated by default,
36
+ > reversible in one command (`archprint eject`), and deterministic, and a rule archprint marks
37
+ > "enforce now" is checked to pass on your code before it says so. `scan` and `recommend` are stable;
38
+ > the structural families stay review-only while they are hardened. Versioning is 0.x: the CLI surface
39
+ > and rule-card format may still change before 1.0. The analysis is not experimental.
34
40
 
35
41
  ## What makes it different
36
42
 
@@ -75,10 +81,13 @@ archprint init apps/web
75
81
  # See the rules your repo already follows, with the evidence
76
82
  archprint scan apps/web
77
83
 
78
- # Write the auto-trusted (mechanical) rules to disk (rule files + tool configs).
84
+ # Write the auto-trusted (mechanical) rules to disk, only for the linters your repo uses.
79
85
  # Structural-inference rules are held for review; add --include-structural to emit them too.
80
86
  archprint generate apps/web --out archprint-rules
81
87
 
88
+ # Confirm the generated rules pass on your repo before wiring
89
+ archprint generate apps/web --check
90
+
82
91
  # Inspect the gate evidence behind one rule
83
92
  archprint explain AP-002 apps/web
84
93
 
@@ -157,8 +166,8 @@ regardless of framework.
157
166
  | Forbidden imports (marker based) | A role (route handler, server entry) must not import a target (the DB client, the UI layer) | Auto |
158
167
  | Circular dependencies | The module graph should stay acyclic (gated on how cycle free it already is) | Auto |
159
168
  | Test isolation | Production (non-test) code must not import test or spec files | Auto |
160
- | Dependency hygiene | Import third-party packages by their public entry, not a dependency's `src`/`internal` internals | Auto |
161
- | Dependency declaration | Every imported third-party package must be declared in `package.json` (no phantom/transitive deps) | Auto |
169
+ | Dependency hygiene | Import third-party packages by their public entry, not a dependency's `src`/`internal` internals | Review |
170
+ | Dependency declaration | Every imported third-party package must be declared in `package.json` (no phantom/transitive deps) | Review |
162
171
  | Import style | Prefer workspace aliases over deep relative imports (`../../../`) | Auto |
163
172
  | Console isolation | Library (non-CLI) code must not call `console.*` | Auto |
164
173
  | Public API (barrel) boundaries | Files outside a feature or package must import it through its `index` barrel, not deep import its internals | Auto |
@@ -197,11 +206,15 @@ zero rules.
197
206
 
198
207
  ## Output formats
199
208
 
200
- `archprint generate` writes into the formats your existing tools already read:
209
+ `archprint generate` writes only for the linters your repo actually uses, it detects ESLint and
210
+ dependency-cruiser and emits each rule for a tool you already run, so you are not left with config for a
211
+ tool you do not have. `--emit <eslint|dependency-cruiser|all>` forces the format. The formats it can
212
+ produce:
201
213
 
202
- - **dependency-cruiser** `forbidden` rulesets: by default the mechanical boundaries (public-API deep-import,
203
- test-isolation, dependency-internals); the structural ones (layer, role-layering, feature-slice,
204
- app-isolation, entry-purity) are written only with `--include-structural`, after you review them
214
+ - **dependency-cruiser** `forbidden` rulesets (when dependency-cruiser is present): by default the
215
+ mechanical boundaries (public-API deep-import, test-isolation); the review-held ones
216
+ (layer, role-layering, feature-slice, app-isolation, entry-purity, dependency-internals, phantom deps) are
217
+ written only with `--include-structural`, after you review them
205
218
  - **eslint-plugin-boundaries** element-types config, and **ESLint core** rules (`no-restricted-imports`) for
206
219
  import-style boundaries
207
220
  - **ESLint rule files** for marker based patterns: a rule card (`.md`), the rule (`.ts`), and a passing and a
@@ -213,6 +226,11 @@ zero rules.
213
226
  inside your existing Vitest or Jest suite
214
227
  - **Mermaid** and **Graphviz DOT** of the layer dependency graph, so the inferred architecture is visible and
215
228
  its violations are marked
229
+ - **`ADOPTION.md`**, a plain-language summary of what is enforced now, what is held for review, and what is
230
+ worth adopting, with the tool that enforces each rule (written by `init`, or `generate --readme`)
231
+
232
+ `generate --check` runs the generated ESLint rules against your repo and reports whether they pass, so you
233
+ can confirm before wiring.
216
234
 
217
235
  ## How it compares
218
236
 
@@ -236,15 +254,15 @@ orphans, reachability) and knip (dead code); rather than compete, it emits into
236
254
 
237
255
  ## Commands
238
256
 
239
- | Command | What it does |
240
- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
241
- | `archprint init [path]` | Zero-config setup: detect the stack, enforce the rules the code already follows, and write an `archprint.json` with the adopt tiers. `--include-structural`, `--out <dir>`, `--fast`, `--force`. |
242
- | `archprint scan [path]` | Report the rules the repo already follows, with evidence. `--deep` resolves through barrels and aliases. |
243
- | `archprint generate [path]` | Write the auto-trusted mechanical rules + tool configs; structural rules held for review. `--rule <id>` emits one reviewed rule (including a SUGGEST rule). `--include-structural`, `--out <dir>`, `--fast`. |
244
- | `archprint explain <id> [path]` | Show the gate breakdown for one rule, with a codeframe per exception plus how-to-fix, when-not-to-use, and how-to-enforce. |
245
- | `archprint recommend [path]` | Recommend a rule set from the repo's evidence and detected stack (works on a fresh repo too). |
246
- | `archprint wire` | Reference the generated rules from the enforcement tools your repo uses (flat eslint config, `.dependency-cruiser.json`) via a managed, reversible reference. `--out <dir>`, `--dry-run`. |
247
- | `archprint eject` | Remove archprint's generated files, its manifests, and any wired references. `--out <dir>`, `--dry-run`. |
257
+ | Command | What it does |
258
+ | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
259
+ | `archprint init [path]` | Zero-config setup: detect the stack, enforce the rules the code already follows, and write `archprint.json` plus a plain-language `ADOPTION.md`. `--include-structural`, `--out <dir>`, `--fast`, `--force`. |
260
+ | `archprint scan [path]` | Report the rules the repo already follows, with evidence. `--deep` resolves through barrels and aliases. |
261
+ | `archprint generate [path]` | Write the auto-trusted mechanical rules for the linters your repo uses; structural rules held for review. `--emit <eslint\|dependency-cruiser\|all>` forces the format, `--only <family>` and `--rules <ids>` narrow the output, `--check` runs the generated rules against your repo, `--readme` writes `ADOPTION.md`, `--rule <id>` emits one reviewed rule. Also `--include-structural`, `--no-graph`, `--out <dir>`, `--fast`. |
262
+ | `archprint explain <id> [path]` | Show the gate breakdown for one rule, with a codeframe per exception plus how-to-fix, when-not-to-use, and how-to-enforce. |
263
+ | `archprint recommend [path]` | Recommend a rule set from the repo's evidence and detected stack (works on a fresh repo too); names the installed tool that will enforce each rule. |
264
+ | `archprint wire` | Reference the generated rules from the enforcement tools your repo uses (flat eslint config, `.dependency-cruiser.json`) via a managed, reversible reference. `--out <dir>`, `--dry-run`. |
265
+ | `archprint eject` | Remove archprint's generated files, its manifests, and any wired references. `--out <dir>`, `--dry-run`. |
248
266
 
249
267
  ## Documentation
250
268
 
@@ -267,7 +285,9 @@ Same repo plus same version produces the same output. Analysis is pure and sorte
267
285
 
268
286
  ## Status and roadmap
269
287
 
270
- Pre-stable (`0.x`). The engine (twenty detectors, the confidence gate, and emitters for ESLint, a shareable
288
+ Versioning is 0.x (pre-1.0): the CLI surface and rule-card format may still change between minor versions,
289
+ but the analysis is not experimental and the tool is safe to adopt (every rule is review-gated and reversible
290
+ via `archprint eject`). The engine (twenty detectors, the confidence gate, and emitters for ESLint, a shareable
271
291
  preset, dependency-cruiser, ts-arch, and the layer graph) is in place and tested, and an adversarial
272
292
  correctness audit (three rounds, four real repositories) drove the false-positive rate on auto-generated rules
273
293
  to zero for the mechanical families, which is why those auto-enforce while the structural-inference families
@@ -1,6 +1,8 @@
1
1
  import type { GenerationStatus } from '../detector/confidence-gate.js';
2
+ import type { InstalledEnforcers } from '../scanner/enforcers.js';
3
+ import { type NoRestrictedImportsBlock } from '../generator/eslint-scope.js';
2
4
  import type { ScannedPattern, ScanResult } from './scan.js';
3
- export declare function writeRules(scan: ScanResult, outDir: string, statuses?: readonly GenerationStatus[]): string[];
5
+ export declare function writeRules(scan: ScanResult, outDir: string, statuses?: readonly GenerationStatus[], ids?: readonly string[]): string[];
4
6
  export declare function emitOne(pattern: ScannedPattern, appDir: string, outDir: string): string;
5
7
  export declare function writeLayerConfig(scan: ScanResult, outDir: string, statuses?: readonly GenerationStatus[]): string[];
6
8
  export declare function writePublicApiConfig(scan: ScanResult, outDir: string, statuses?: readonly GenerationStatus[]): string[];
@@ -8,12 +10,11 @@ export declare function writeFeatureSliceConfig(scan: ScanResult, outDir: string
8
10
  export declare function writeAppIsolationConfig(scan: ScanResult, outDir: string, statuses?: readonly GenerationStatus[]): string[];
9
11
  export declare function writeTestIsolationConfig(scan: ScanResult, outDir: string): string[];
10
12
  export declare function writeRoleLayeringConfig(scan: ScanResult, outDir: string, statuses?: readonly GenerationStatus[]): string[];
11
- export declare function writeDeepRelativeConfig(scan: ScanResult, outDir: string): string[];
12
13
  export declare function writeConsoleIsolationConfig(scan: ScanResult, outDir: string): string[];
14
+ export declare function writeMergedNoRestrictedImports(blocks: readonly (NoRestrictedImportsBlock | null)[], outDir: string): string[];
13
15
  export declare function writeServerClientConfig(scan: ScanResult, outDir: string): string[];
14
16
  export declare function writeUiDataConfig(scan: ScanResult, outDir: string): string[];
15
17
  export declare function writeStoriesIsolationConfig(scan: ScanResult, outDir: string): string[];
16
- export declare function writeWorkspacePackageConfig(scan: ScanResult, outDir: string): string[];
17
18
  export declare function writeEnvAccessConfig(scan: ScanResult, outDir: string): string[];
18
19
  export declare function writePhantomDependencyConfig(scan: ScanResult, outDir: string): string[];
19
20
  export declare function writeEntryPurityConfig(scan: ScanResult, outDir: string): string[];
@@ -28,12 +29,22 @@ export interface WrittenConfig {
28
29
  files: string[];
29
30
  label: string | null;
30
31
  }
31
- export declare function writeEnforcementConfigs(scan: ScanResult, outDir: string, options?: {
32
+ export declare const FAMILY_NAMES: readonly ["forbidden-imports", "layer", "role-layering", "public-api", "feature-slice", "app-isolation", "test-isolation", "dependency-hygiene", "entry-purity", "phantom-deps", "import-style", "console", "env-access", "workspace-package", "stories-isolation", "ui-data", "server-client"];
33
+ export declare function writeEnforcementConfigs(scan: ScanResult, outDir: string, options: {
32
34
  structural?: boolean;
35
+ enforcers: InstalledEnforcers;
36
+ graph?: boolean;
37
+ only?: string;
38
+ ruleIds?: readonly string[];
33
39
  }): WrittenConfig[];
34
40
  export declare function regenerateConfigs(scan: ScanResult, outDir: string, options: {
35
41
  structural?: boolean;
36
42
  version: string;
43
+ enforcers: InstalledEnforcers;
44
+ graph?: boolean;
45
+ adoptionReadme?: string;
46
+ only?: string;
47
+ ruleIds?: readonly string[];
37
48
  }): {
38
49
  configs: WrittenConfig[];
39
50
  removed: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAavE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAgBlE,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,gBAAgB,EAAa,EAChD,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,GACtB,MAAM,EAAE,CASV;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,gBAAgB,EAAa,GAC/C,MAAM,EAAE,CAaV;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,gBAAgB,EAAa,GAC/C,MAAM,EAAE,CAOV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,gBAAgB,EAAa,GAC/C,MAAM,EAAE,CAOV;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,gBAAgB,EAAa,GAC/C,MAAM,EAAE,CAOV;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOnF;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,gBAAgB,EAAa,GAC/C,MAAM,EAAE,CAOV;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOtF;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,SAAS,CAAC,wBAAwB,GAAG,IAAI,CAAC,EAAE,EACpD,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAOV;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOlF;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAO5E;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOtF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAO/E;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOvF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOjF;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAOzF;AAgBD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GACrC,MAAM,EAAE,CAQV;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAO5E;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,SAAS,gBAAgB,EAAa,GAC/C,MAAM,EAAE,CAWV;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAYrE;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAKD,eAAO,MAAM,YAAY,iSAkBf,CAAC;AAEX,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,GACA,aAAa,EAAE,CAmHjB;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IACP,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B,GACA;IAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAoBjD"}
@@ -3,7 +3,7 @@ import * as path from 'node:path';
3
3
  import { toDependencyCruiser, toEslintBoundaries } from '../generator/layer-emitters.js';
4
4
  import { toDependencyCruiserPublicApi } from '../generator/public-api-emitters.js';
5
5
  import { toDependencyCruiserFeatureSlice } from '../generator/feature-slice-emitters.js';
6
- import { toDependencyCruiserTestIsolation } from '../generator/test-isolation-emitters.js';
6
+ import { toDependencyCruiserTestIsolation, toEslintTestIsolation, } from '../generator/test-isolation-emitters.js';
7
7
  import { toDependencyCruiserAppIsolation } from '../generator/app-isolation-emitters.js';
8
8
  import { toDependencyCruiserDependencyInternals } from '../generator/dependency-internals-emitters.js';
9
9
  import { toDependencyCruiserRoleLayering } from '../generator/role-layering-emitters.js';
@@ -21,13 +21,17 @@ import { renderTsArchTests } from '../generator/tsarch-emitter.js';
21
21
  import { emitRuleArtifacts } from '../generator/rule-generator.js';
22
22
  import { buildForbiddenImportSpecs, renderEslintPluginSource, } from '../generator/eslint-plugin-emitter.js';
23
23
  import { renderEslintPreset } from '../generator/eslint-preset-emitter.js';
24
+ import { mergeNoRestrictedImports, } from '../generator/eslint-scope.js';
24
25
  import { cleanPreviousOutputs, removeIfEmpty, writeOutputsManifest } from './outputs-manifest.js';
25
26
  import { hasDependencyCruiserBlocks, hasEslintOutputs, writeDependencyCruiserAggregate, writeEslintAggregator, } from './wiring.js';
26
- export function writeRules(scan, outDir, statuses = ['AUTO']) {
27
+ export function writeRules(scan, outDir, statuses = ['AUTO'], ids) {
28
+ const wanted = ids ? new Set(ids.map((id) => id.toLowerCase())) : null;
27
29
  const written = [];
28
30
  for (const pattern of scan.patterns) {
29
31
  if (!statuses.includes(pattern.result.gate.status))
30
32
  continue;
33
+ if (wanted && !wanted.has(pattern.config.id.toLowerCase()))
34
+ continue;
31
35
  written.push(emitOne(pattern, scan.appDir, outDir));
32
36
  }
33
37
  return written;
@@ -95,22 +99,22 @@ export function writeRoleLayeringConfig(scan, outDir, statuses = ['AUTO']) {
95
99
  writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
96
100
  return [file];
97
101
  }
98
- export function writeDeepRelativeConfig(scan, outDir) {
99
- const config = toEslintDeepRelative(scan.deepRelative);
102
+ export function writeConsoleIsolationConfig(scan, outDir) {
103
+ const config = toEslintConsoleIsolation(scan.consoleIsolation);
100
104
  if (config === null)
101
105
  return [];
102
106
  mkdirSync(outDir, { recursive: true });
103
- const file = path.join(outDir, 'eslint.deep-relative.archprint.json');
107
+ const file = path.join(outDir, 'eslint.console-isolation.archprint.json');
104
108
  writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
105
109
  return [file];
106
110
  }
107
- export function writeConsoleIsolationConfig(scan, outDir) {
108
- const config = toEslintConsoleIsolation(scan.consoleIsolation);
109
- if (config === null)
111
+ export function writeMergedNoRestrictedImports(blocks, outDir) {
112
+ const merged = mergeNoRestrictedImports(blocks);
113
+ if (merged === null)
110
114
  return [];
111
115
  mkdirSync(outDir, { recursive: true });
112
- const file = path.join(outDir, 'eslint.console-isolation.archprint.json');
113
- writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
116
+ const file = path.join(outDir, 'eslint.no-restricted-imports.archprint.json');
117
+ writeFileSync(file, `${JSON.stringify(merged, null, 2)}\n`);
114
118
  return [file];
115
119
  }
116
120
  export function writeServerClientConfig(scan, outDir) {
@@ -140,15 +144,6 @@ export function writeStoriesIsolationConfig(scan, outDir) {
140
144
  writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
141
145
  return [file];
142
146
  }
143
- export function writeWorkspacePackageConfig(scan, outDir) {
144
- const config = toEslintWorkspacePackageApi(scan.workspacePackageApi);
145
- if (config === null)
146
- return [];
147
- mkdirSync(outDir, { recursive: true });
148
- const file = path.join(outDir, 'eslint.workspace-package.archprint.json');
149
- writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`);
150
- return [file];
151
- }
152
147
  export function writeEnvAccessConfig(scan, outDir) {
153
148
  const config = toEslintEnvAccess(scan.envAccess);
154
149
  if (config === null)
@@ -186,13 +181,18 @@ export function writeDependencyInternalsConfig(scan, outDir) {
186
181
  return [file];
187
182
  }
188
183
  function presetBlocks(scan, structural) {
189
- const blocks = [
184
+ const noRestrictedImports = [
190
185
  toEslintDeepRelative(scan.deepRelative),
186
+ toEslintTestIsolation(scan.testIsolation),
187
+ ];
188
+ if (structural)
189
+ noRestrictedImports.push(toEslintWorkspacePackageApi(scan.workspacePackageApi));
190
+ const blocks = [
191
+ mergeNoRestrictedImports(noRestrictedImports),
191
192
  toEslintConsoleIsolation(scan.consoleIsolation),
192
193
  ];
193
- if (structural) {
194
- blocks.push(toEslintEnvAccess(scan.envAccess), toEslintWorkspacePackageApi(scan.workspacePackageApi));
195
- }
194
+ if (structural)
195
+ blocks.push(toEslintEnvAccess(scan.envAccess));
196
196
  return blocks.filter((block) => block !== null);
197
197
  }
198
198
  export function writeEslintPreset(scan, outDir, options = {}) {
@@ -242,52 +242,101 @@ export function writeGraph(scan, outDir) {
242
242
  ];
243
243
  }
244
244
  const countAuto = (items) => items.filter((item) => item.gate.status === 'AUTO').length;
245
- export function writeEnforcementConfigs(scan, outDir, options = {}) {
245
+ export const FAMILY_NAMES = [
246
+ 'forbidden-imports',
247
+ 'layer',
248
+ 'role-layering',
249
+ 'public-api',
250
+ 'feature-slice',
251
+ 'app-isolation',
252
+ 'test-isolation',
253
+ 'dependency-hygiene',
254
+ 'entry-purity',
255
+ 'phantom-deps',
256
+ 'import-style',
257
+ 'console',
258
+ 'env-access',
259
+ 'workspace-package',
260
+ 'stories-isolation',
261
+ 'ui-data',
262
+ 'server-client',
263
+ ];
264
+ export function writeEnforcementConfigs(scan, outDir, options) {
246
265
  const structural = options.structural ?? false;
266
+ const emitDepcruise = options.enforcers.dependencyCruiser;
267
+ const emitEslint = options.enforcers.eslint || !options.enforcers.dependencyCruiser;
268
+ const pick = (family) => !options.only || options.only === family;
269
+ const bundles = options.only === undefined;
247
270
  const configs = [];
248
271
  const add = (files, label) => {
249
272
  if (files.length > 0)
250
273
  configs.push({ files, label });
251
274
  };
252
- add(writeRules(scan, outDir, ['AUTO']), null);
253
- add(writeEslintPlugin(scan, outDir), 'forbidden-import rules as a loadable eslint plugin');
254
- add(writeEslintPreset(scan, outDir, { structural }), 'shareable single-file eslint preset (portable; needs only eslint)');
255
- if (structural) {
275
+ const addIf = (condition, write, label) => {
276
+ if (condition)
277
+ add(write(), label);
278
+ };
279
+ addIf(emitEslint && pick('forbidden-imports'), () => writeRules(scan, outDir, ['AUTO'], options.ruleIds), null);
280
+ addIf(emitEslint && bundles, () => writeEslintPlugin(scan, outDir), 'forbidden-import rules as a loadable eslint plugin');
281
+ addIf(emitEslint && bundles, () => writeEslintPreset(scan, outDir, { structural }), 'shareable single-file eslint preset (portable; needs only eslint)');
282
+ if (structural && emitDepcruise && pick('layer'))
256
283
  add(writeLayerConfig(scan, outDir, ['AUTO']), `${countAuto(scan.layerBoundaries)} layer boundaries: dependency-cruiser and eslint-plugin-boundaries`);
284
+ if (structural && emitDepcruise && pick('role-layering'))
257
285
  add(writeRoleLayeringConfig(scan, outDir, ['AUTO']), `${countAuto(scan.roleLayering.boundaries)} role-layering boundaries: dependency-cruiser rules`);
258
- }
259
- add(writePublicApiConfig(scan, outDir, ['AUTO']), `${countAuto(scan.publicApi.groups)} public API boundaries: dependency-cruiser deep-import rules`);
260
- if (structural) {
286
+ addIf(emitDepcruise && pick('public-api'), () => writePublicApiConfig(scan, outDir, ['AUTO']), `${countAuto(scan.publicApi.groups)} public API boundaries: dependency-cruiser deep-import rules`);
287
+ if (structural && emitDepcruise && pick('feature-slice'))
261
288
  add(writeFeatureSliceConfig(scan, outDir, ['AUTO']), `${countAuto(scan.featureSlices.groups)} feature-slice boundaries: dependency-cruiser cross-slice rules`);
289
+ if (structural && emitDepcruise && pick('app-isolation'))
262
290
  add(writeAppIsolationConfig(scan, outDir, ['AUTO']), `${countAuto(scan.appIsolation.groups)} app boundaries: dependency-cruiser cross-app rules`);
263
- }
264
- add(writeTestIsolationConfig(scan, outDir), 'test isolation: dependency-cruiser not-to-test rule');
265
- add(writeDependencyInternalsConfig(scan, outDir), 'dependency hygiene: dependency-cruiser no-internals rule');
266
- if (structural)
291
+ if (pick('test-isolation') && !emitEslint && emitDepcruise)
292
+ add(writeTestIsolationConfig(scan, outDir), 'test isolation: dependency-cruiser not-to-test rule');
293
+ addIf(structural && emitDepcruise && pick('dependency-hygiene'), () => writeDependencyInternalsConfig(scan, outDir), 'dependency hygiene: dependency-cruiser no-internals rule');
294
+ if (structural && emitDepcruise && pick('entry-purity'))
267
295
  add(writeEntryPurityConfig(scan, outDir), 'entry purity: dependency-cruiser no-import-entry rule');
268
- add(writePhantomDependencyConfig(scan, outDir), 'dependency declaration: dependency-cruiser no-phantom-deps rule');
269
- add(writeDeepRelativeConfig(scan, outDir), 'import style: eslint no-restricted-imports rule');
270
- add(writeConsoleIsolationConfig(scan, outDir), 'console isolation: eslint no-console rule');
271
- if (structural) {
296
+ if (structural && emitDepcruise && pick('phantom-deps'))
297
+ add(writePhantomDependencyConfig(scan, outDir), 'dependency declaration: dependency-cruiser no-phantom-deps rule');
298
+ const noRestrictedImports = [];
299
+ if (emitEslint && pick('import-style'))
300
+ noRestrictedImports.push(toEslintDeepRelative(scan.deepRelative));
301
+ if (emitEslint && pick('test-isolation'))
302
+ noRestrictedImports.push(toEslintTestIsolation(scan.testIsolation));
303
+ if (structural && emitEslint && pick('workspace-package'))
304
+ noRestrictedImports.push(toEslintWorkspacePackageApi(scan.workspacePackageApi));
305
+ add(writeMergedNoRestrictedImports(noRestrictedImports, outDir), 'import boundaries: eslint no-restricted-imports (deep-relative / test / workspace, merged)');
306
+ addIf(emitEslint && pick('console'), () => writeConsoleIsolationConfig(scan, outDir), 'console isolation: eslint no-console rule');
307
+ if (structural && emitEslint && pick('env-access'))
272
308
  add(writeEnvAccessConfig(scan, outDir), 'env access: eslint no-restricted-properties rule');
273
- add(writeWorkspacePackageConfig(scan, outDir), 'workspace package API: eslint no-restricted-imports rule');
309
+ if (structural && emitDepcruise && pick('stories-isolation'))
274
310
  add(writeStoriesIsolationConfig(scan, outDir), 'stories isolation: dependency-cruiser no-import-stories rule');
311
+ if (structural && emitDepcruise && pick('ui-data'))
275
312
  add(writeUiDataConfig(scan, outDir), 'UI / data separation: dependency-cruiser no-ui-to-data rule');
313
+ if (structural && emitDepcruise && pick('server-client'))
276
314
  add(writeServerClientConfig(scan, outDir), 'server / client boundary: dependency-cruiser no-server-only-in-client rule');
277
- }
278
- if (structural)
315
+ if (structural && bundles)
279
316
  add(writeTsArchTests(scan, outDir, ['AUTO']), 'architecture boundaries: ts-arch dependency tests');
280
- add(writeGraph(scan, outDir), 'layer dependency graph: Mermaid and Graphviz DOT');
317
+ if (options.graph !== false && bundles)
318
+ add(writeGraph(scan, outDir), 'layer dependency graph: Mermaid and Graphviz DOT');
281
319
  return configs;
282
320
  }
283
321
  export function regenerateConfigs(scan, outDir, options) {
284
322
  const removed = cleanPreviousOutputs(outDir);
285
- const configs = writeEnforcementConfigs(scan, outDir, { structural: options.structural });
323
+ const configs = writeEnforcementConfigs(scan, outDir, {
324
+ structural: options.structural,
325
+ enforcers: options.enforcers,
326
+ graph: options.graph,
327
+ only: options.only,
328
+ ruleIds: options.ruleIds,
329
+ });
286
330
  const allPaths = configs.flatMap((config) => config.files);
287
331
  if (hasEslintOutputs(allPaths))
288
332
  allPaths.push(writeEslintAggregator(outDir));
289
333
  if (hasDependencyCruiserBlocks(allPaths))
290
334
  allPaths.push(writeDependencyCruiserAggregate(outDir));
335
+ if (options.adoptionReadme !== undefined && allPaths.length > 0) {
336
+ const readmePath = path.join(outDir, 'ADOPTION.md');
337
+ writeFileSync(readmePath, options.adoptionReadme);
338
+ allPaths.push(readmePath);
339
+ }
291
340
  if (allPaths.length > 0)
292
341
  writeOutputsManifest(outDir, allPaths, options.version);
293
342
  else
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Command } from 'commander';
2
2
  export declare function readVersion(): string;
3
+ export declare function runEslintCheck(appDir: string, outDir: string): Promise<void>;
3
4
  export declare function buildProgram(version?: string): Command;
4
5
  //# sourceMappingURL=program.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAyDD,wBAAgB,YAAY,CAAC,OAAO,SAAgB,GAAG,OAAO,CAmV7D"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAsCD,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDlF;AAoCD,wBAAgB,YAAY,CAAC,OAAO,SAAgB,GAAG,OAAO,CAga7D"}