archprint 0.13.1 → 0.15.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 (134) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +21 -12
  3. package/dist/cli/adopted-rules.d.ts +30 -2
  4. package/dist/cli/adopted-rules.d.ts.map +1 -1
  5. package/dist/cli/adopted-rules.js +158 -2
  6. package/dist/cli/adopted-rules.js.map +1 -1
  7. package/dist/cli/allow.d.ts.map +1 -1
  8. package/dist/cli/allow.js +21 -4
  9. package/dist/cli/allow.js.map +1 -1
  10. package/dist/cli/allowed-evidence.d.ts.map +1 -1
  11. package/dist/cli/allowed-evidence.js +183 -1
  12. package/dist/cli/allowed-evidence.js.map +1 -1
  13. package/dist/cli/check-evaluate.d.ts.map +1 -1
  14. package/dist/cli/check-evaluate.js +124 -0
  15. package/dist/cli/check-evaluate.js.map +1 -1
  16. package/dist/cli/generate.d.ts +4 -4
  17. package/dist/cli/generate.d.ts.map +1 -1
  18. package/dist/cli/generate.js +115 -42
  19. package/dist/cli/generate.js.map +1 -1
  20. package/dist/cli/layout.d.ts +5 -2
  21. package/dist/cli/layout.d.ts.map +1 -1
  22. package/dist/cli/layout.js +43 -10
  23. package/dist/cli/layout.js.map +1 -1
  24. package/dist/cli/migrate.d.ts.map +1 -1
  25. package/dist/cli/migrate.js +1 -2
  26. package/dist/cli/migrate.js.map +1 -1
  27. package/dist/cli/program.d.ts.map +1 -1
  28. package/dist/cli/program.js +10 -6
  29. package/dist/cli/program.js.map +1 -1
  30. package/dist/cli/recommend.d.ts +3 -0
  31. package/dist/cli/recommend.d.ts.map +1 -1
  32. package/dist/cli/recommend.js +28 -8
  33. package/dist/cli/recommend.js.map +1 -1
  34. package/dist/cli/report.js +1 -1
  35. package/dist/cli/report.js.map +1 -1
  36. package/dist/detector/cycle-detector.d.ts +5 -0
  37. package/dist/detector/cycle-detector.d.ts.map +1 -1
  38. package/dist/detector/cycle-detector.js +20 -0
  39. package/dist/detector/cycle-detector.js.map +1 -1
  40. package/dist/detector/dependency-internals-detector.d.ts.map +1 -1
  41. package/dist/detector/dependency-internals-detector.js +6 -20
  42. package/dist/detector/dependency-internals-detector.js.map +1 -1
  43. package/dist/detector/entry-purity-detector.d.ts +7 -0
  44. package/dist/detector/entry-purity-detector.d.ts.map +1 -1
  45. package/dist/detector/entry-purity-detector.js +21 -10
  46. package/dist/detector/entry-purity-detector.js.map +1 -1
  47. package/dist/detector/phantom-dependency-detector.d.ts +7 -0
  48. package/dist/detector/phantom-dependency-detector.d.ts.map +1 -1
  49. package/dist/detector/phantom-dependency-detector.js +18 -39
  50. package/dist/detector/phantom-dependency-detector.js.map +1 -1
  51. package/dist/detector/server-client-detector.d.ts +5 -0
  52. package/dist/detector/server-client-detector.d.ts.map +1 -1
  53. package/dist/detector/server-client-detector.js +8 -3
  54. package/dist/detector/server-client-detector.js.map +1 -1
  55. package/dist/generator/app-isolation-emitters.d.ts +1 -0
  56. package/dist/generator/app-isolation-emitters.d.ts.map +1 -1
  57. package/dist/generator/app-isolation-emitters.js +2 -1
  58. package/dist/generator/app-isolation-emitters.js.map +1 -1
  59. package/dist/generator/depcruise-exempt.d.ts +4 -0
  60. package/dist/generator/depcruise-exempt.d.ts.map +1 -1
  61. package/dist/generator/depcruise-exempt.js +7 -0
  62. package/dist/generator/depcruise-exempt.js.map +1 -1
  63. package/dist/generator/dependency-internals-emitters.d.ts +2 -1
  64. package/dist/generator/dependency-internals-emitters.d.ts.map +1 -1
  65. package/dist/generator/dependency-internals-emitters.js +7 -3
  66. package/dist/generator/dependency-internals-emitters.js.map +1 -1
  67. package/dist/generator/entry-purity-emitters.d.ts +7 -3
  68. package/dist/generator/entry-purity-emitters.d.ts.map +1 -1
  69. package/dist/generator/entry-purity-emitters.js +19 -5
  70. package/dist/generator/entry-purity-emitters.js.map +1 -1
  71. package/dist/generator/env-access-emitters.d.ts +1 -0
  72. package/dist/generator/env-access-emitters.d.ts.map +1 -1
  73. package/dist/generator/env-access-emitters.js +1 -0
  74. package/dist/generator/env-access-emitters.js.map +1 -1
  75. package/dist/generator/eslint-app-emitter.d.ts +59 -0
  76. package/dist/generator/eslint-app-emitter.d.ts.map +1 -0
  77. package/dist/generator/eslint-app-emitter.js +275 -0
  78. package/dist/generator/eslint-app-emitter.js.map +1 -0
  79. package/dist/generator/eslint-preset-emitter.d.ts +2 -2
  80. package/dist/generator/eslint-preset-emitter.d.ts.map +1 -1
  81. package/dist/generator/eslint-preset-emitter.js +6 -6
  82. package/dist/generator/eslint-preset-emitter.js.map +1 -1
  83. package/dist/generator/feature-slice-emitters.d.ts +1 -0
  84. package/dist/generator/feature-slice-emitters.d.ts.map +1 -1
  85. package/dist/generator/feature-slice-emitters.js +2 -1
  86. package/dist/generator/feature-slice-emitters.js.map +1 -1
  87. package/dist/generator/layer-emitters.d.ts.map +1 -1
  88. package/dist/generator/layer-emitters.js +2 -6
  89. package/dist/generator/layer-emitters.js.map +1 -1
  90. package/dist/generator/phantom-dependency-emitters.d.ts +2 -1
  91. package/dist/generator/phantom-dependency-emitters.d.ts.map +1 -1
  92. package/dist/generator/phantom-dependency-emitters.js +7 -3
  93. package/dist/generator/phantom-dependency-emitters.js.map +1 -1
  94. package/dist/generator/role-layering-emitters.d.ts +2 -0
  95. package/dist/generator/role-layering-emitters.d.ts.map +1 -1
  96. package/dist/generator/role-layering-emitters.js +2 -1
  97. package/dist/generator/role-layering-emitters.js.map +1 -1
  98. package/dist/generator/server-client-emitters.d.ts +10 -3
  99. package/dist/generator/server-client-emitters.d.ts.map +1 -1
  100. package/dist/generator/server-client-emitters.js +23 -4
  101. package/dist/generator/server-client-emitters.js.map +1 -1
  102. package/dist/generator/stories-isolation-emitters.d.ts +1 -0
  103. package/dist/generator/stories-isolation-emitters.d.ts.map +1 -1
  104. package/dist/generator/stories-isolation-emitters.js +2 -1
  105. package/dist/generator/stories-isolation-emitters.js.map +1 -1
  106. package/dist/generator/ui-data-isolation-emitters.d.ts +1 -0
  107. package/dist/generator/ui-data-isolation-emitters.d.ts.map +1 -1
  108. package/dist/generator/ui-data-isolation-emitters.js +2 -1
  109. package/dist/generator/ui-data-isolation-emitters.js.map +1 -1
  110. package/dist/generator/workspace-package-emitters.d.ts +1 -0
  111. package/dist/generator/workspace-package-emitters.d.ts.map +1 -1
  112. package/dist/generator/workspace-package-emitters.js +1 -0
  113. package/dist/generator/workspace-package-emitters.js.map +1 -1
  114. package/dist/scanner/directives.d.ts +6 -0
  115. package/dist/scanner/directives.d.ts.map +1 -0
  116. package/dist/scanner/directives.js +35 -0
  117. package/dist/scanner/directives.js.map +1 -0
  118. package/dist/scanner/package-name.d.ts +10 -0
  119. package/dist/scanner/package-name.d.ts.map +1 -0
  120. package/dist/scanner/package-name.js +37 -0
  121. package/dist/scanner/package-name.js.map +1 -0
  122. package/dist/scanner/resolve-import.d.ts +5 -0
  123. package/dist/scanner/resolve-import.d.ts.map +1 -1
  124. package/dist/scanner/resolve-import.js +22 -19
  125. package/dist/scanner/resolve-import.js.map +1 -1
  126. package/dist/scanner/role-classifier.d.ts +11 -2
  127. package/dist/scanner/role-classifier.d.ts.map +1 -1
  128. package/dist/scanner/role-classifier.js +13 -39
  129. package/dist/scanner/role-classifier.js.map +1 -1
  130. package/package.json +2 -2
  131. package/dist/generator/eslint-layer-emitter.d.ts +0 -29
  132. package/dist/generator/eslint-layer-emitter.d.ts.map +0 -1
  133. package/dist/generator/eslint-layer-emitter.js +0 -121
  134. package/dist/generator/eslint-layer-emitter.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # archprint
2
2
 
3
+ ## 0.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - `generate --only <family>` and `generate --rules <ids>` now add to the rules you adopted before instead of replacing them. Earlier, a scoped run kept only what it generated, so `--only layer` on a repo with no layer rules removed every adopted rule and `.archprint/eslint.mjs` with them. A scoped run now lists the rules it kept and names any earlier rule the current code no longer supports. A plain `archprint generate` still resets to the default rule set.
8
+
9
+ ### Patch Changes
10
+
11
+ - `.archprint/config.json` now records every rule written to `.archprint/eslint.mjs` or `.archprint/dependency-cruiser.json`. Env access, workspace-package API, role layering, feature slices, app isolation, stories isolation and UI/data separation were enforced but missing from the adopted rules, so `archprint check` did not report them and `archprint allow` refused them. The enforced, report-only and held-for-review lists in `config.json`, the `--readme` section and the `init` summary now follow the adopted rules: a held rule you adopt with `--rules` is listed as adopted, and a recommended rule you did not adopt is listed as report only rather than as adopted.
12
+
13
+ If your CI pins an archprint version (for example the GitHub Action's `archprint-version`), use 0.15.0 or later there too: an older `archprint check` stops with an error on a `config.json` that records these rules.
14
+
15
+ ## 0.14.0
16
+
17
+ ### Minor Changes
18
+
19
+ - Undeclared (phantom) dependencies and the server/client boundary can now be enforced with plain ESLint, like layer boundaries. When your repo does not use dependency-cruiser, `generate --include-structural` writes them into `.archprint/eslint.mjs` as `archprint/no-phantom-dependencies` and `archprint/no-server-only-in-client`, with no extra plugin, and they pass on the code they were generated from. The phantom-dependency rule reads your `package.json` each time ESLint starts, so declaring a package is enough; no regenerate. Both rules are now adopted, whichever tool enforces them: `archprint check` reports a new break and `archprint allow` accepts one.
20
+
21
+ Circular dependencies are now enforced. When your code has no cycle (and enough files to say so), `generate` and `init` adopt the rule `no-cycles`, without `--include-structural`, and `archprint check` reports each import that closes a new cycle in a pull request; to accept a cycle, allow every file in it. There is no lint rule for cycles, because finding one needs the whole import graph. The phantom-dependency and server/client rules still need `--include-structural`. Older archprint versions do not recognize these adopted rules, so update archprint in CI (for example the GitHub Action's `archprint-version`) before you regenerate.
22
+
23
+ Fixes: the server/client rule written for dependency-cruiser flagged every server module that correctly imports `server-only`, and missed the client component importing it; it now covers exactly the client components and server-only modules the scan found. A module that only mentions "server-only" in a comment or a string is no longer treated as server-only. A "use client" directive after a byte-order mark or a shebang line is recognized. `#` subpath imports and `scheme:` specifiers (such as `bun:test`) are no longer reported as undeclared packages.
24
+
25
+ - Package internals and entry purity can now be enforced with plain ESLint too. When your repo does not use dependency-cruiser, `generate --include-structural` writes `archprint/no-dependency-internals` (importing a package's `src` or `internal` folders) and `archprint/no-import-framework-entry` (importing a page, layout or route handler from other code) into `.archprint/eslint.mjs`. Both pass on the code they were generated from and are adopted, so `archprint check` reports a new break and `archprint allow` accepts one. The entry rule recognizes pages and routes by their path, so new routes are covered without regenerating.
26
+
27
+ Fixes: the entry-purity rule written for dependency-cruiser flagged a page importing another page, test files, and the imports that already existed when it was generated; it now exempts all three. Package-internals evidence no longer counts `#` subpath imports or `scheme:` specifiers as packages.
28
+
3
29
  ## 0.13.1
4
30
 
5
31
  ### Patch Changes
package/README.md CHANGED
@@ -200,7 +200,9 @@ folder's purpose incorrectly. So only the **mechanical** families, which rest on
200
200
  without review: forbidden imports (AP-001, AP-002), circular dependencies, test isolation, import style, console
201
201
  isolation, and public-API barrels. An adversarial correctness audit (three rounds over four real repositories)
202
202
  found zero false positives in these every round. All of them except circular dependencies are written as lint
203
- rules; for cycles, Archprint reports the result but does not write a rule yet.
203
+ rules; a cycle-free codebase with enough files for the gate adopts "no circular dependencies", which
204
+ `archprint check` enforces on each pull request (cycles need the whole import graph, so there is no lint rule for
205
+ them).
204
206
 
205
207
  The **structural** families infer a "layer" or "role" from paths, which can be wrong (layer and role boundaries,
206
208
  UI/data separation, entry purity, server/client, feature-slice and app isolation, env access, workspace package
@@ -217,7 +219,8 @@ connecting them, use `archprint generate --check`.
217
219
  ## What it can detect
218
220
 
219
221
  **Ships as:** **Auto** = turned on as enforcement (mechanical families). **Review** = held for your review by
220
- default; emit with `--include-structural`. **Report** = shown only, never enforced.
222
+ default; emit with `--include-structural`. **Check** = enforced by `archprint check` on each pull request. **Report** =
223
+ shown only, never enforced.
221
224
 
222
225
  Archprint recognizes the stack (Next.js, Nest, SvelteKit, Nuxt, Remix) and classifies UI components across React
223
226
  (`.tsx`), Angular (`.component.ts`, `.directive.ts`), and Vue and Svelte single-file components (it reads the
@@ -226,7 +229,7 @@ Archprint recognizes the stack (Next.js, Nest, SvelteKit, Nuxt, Remix) and class
226
229
  | Detector | Rule it can infer | Ships as |
227
230
  | ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------- |
228
231
  | Forbidden imports (AP-001, AP-002) | AP-001: a request entry (route handler) must not import the DB client. AP-002: a server entry must not import the UI layer | Auto |
229
- | Circular dependencies | The module graph should stay acyclic (gated on how cycle free it already is); reported, no lint rule written yet | Report |
232
+ | Circular dependencies | The module graph should stay acyclic; adopted when there are no cycles, and `archprint check` reports a new one | Check |
230
233
  | Test isolation | Production (non-test) code must not import test or spec files | Auto |
231
234
  | Dependency hygiene | Import third-party packages by their public entry, not a dependency's `src`/`internal` internals | Review |
232
235
  | Dependency declaration | Every imported third-party package must be declared in `package.json` (no phantom/transitive deps) | Review |
@@ -247,7 +250,7 @@ Archprint recognizes the stack (Next.js, Nest, SvelteKit, Nuxt, Remix) and class
247
250
  | Transitive reachability | A layer boundary that a plain import rule passes but that leaks through an intermediary layer | Report |
248
251
 
249
252
  `recommend` (and `init`) sort every rule family into tiers: rules your code already follows (enforce now), rules
250
- your code follows that Archprint reports but does not write yet (circular dependencies today), rules with thin
253
+ your code follows that Archprint reports but does not write, rules with thin
251
254
  evidence (review and adopt), and rules that comparable repos commonly follow but yours does not yet (adopt from day
252
255
  one). Each recommendation carries the share of comparable repos (your detected stack, else
253
256
  overall) that already enforce that rule, mined from a census of tens of thousands of public TypeScript
@@ -268,16 +271,17 @@ format.
268
271
  held for review, and worth adopting, and the list of managed outputs `eject` removes.
269
272
  - **`.archprint/eslint.mjs`** (when ESLint is present): one self-contained ESLint flat-config file that inlines
270
273
  every inferred ESLint rule (marker-based forbidden imports, `no-restricted-imports` import-style boundaries,
271
- console isolation, and layer boundaries when you include structural rules and do not use dependency-cruiser)
274
+ console isolation, and, when you include structural rules and do not use dependency-cruiser, layer boundaries,
275
+ undeclared (phantom) dependencies, the server/client boundary, package internals and entry purity)
272
276
  and needs no extra plugins: it adds rules to your existing ESLint setup, which already parses your TypeScript.
273
277
  So you can commit it, publish it, or hand it to another repo and adopt it in one line
274
278
  (`import archprint from './.archprint/eslint.mjs'`). Layer boundaries are the exception: they find your app
275
279
  relative to the file, so they only apply where it was generated. It self-ignores `**/.archprint/**`. The
276
- forbidden-import (AP-) and layer rules ship as a generated local eslint plugin inside it, so wiring the eslint
277
- config enforces them too, no extra install.
280
+ forbidden-import (AP-) rules and those structural rules ship as a generated local eslint plugin inside it, so
281
+ wiring the eslint config enforces them too, no extra install.
278
282
  - **`.archprint/dependency-cruiser.json`** (when dependency-cruiser is present): one `forbidden` ruleset with the
279
283
  mechanical boundaries (public-API deep-import, test-isolation); the review-held ones (layer, role-layering,
280
- feature-slice, app-isolation, entry-purity, dependency-internals, phantom deps) are added only with
284
+ feature-slice, app-isolation, entry-purity, dependency-internals, phantom deps, server/client) are added only with
281
285
  `--include-structural`, after you review them.
282
286
  - **A managed section in your `README.md`** summarizing what is enforced now, followed but only reported, held for
283
287
  review, and worth adopting (written by `init`, or `generate --readme`), plus a managed `.prettierignore` entry so
@@ -350,6 +354,11 @@ jobs:
350
354
  `generate`, and checks only the rules recorded there: the mechanical rules, plus layer boundaries once you adopt
351
355
  them with `--include-structural`. Rules adopted in the same
352
356
  pull request are listed but never counted against it.
357
+ - **Imports that resolve to nothing are TypeScript's job.** Run `tsc --noEmit` in CI, or rely on the type check
358
+ `next build` runs by default: it reports a missing module (TS2307) with your project's own module resolution.
359
+ Archprint does not generate this rule, and on a TypeScript app `import/no-unresolved` or dependency-cruiser's
360
+ `not-to-unresolvable` tend to report false errors on `paths` aliases, package `exports` and bundler suffixes such
361
+ as `?raw`.
353
362
  - **A justified exception needs a reason.** When a file has a real reason to break a rule, record it:
354
363
  `npx archprint allow AP-001 app/api/health/route.ts --reason "Health check queries the database directly"`.
355
364
  It goes in the `allowed` list of `.archprint/config.json`, `check` stops counting it and lists it with its reason
@@ -481,8 +490,8 @@ reachability) and knip (dead code); rather than compete, it writes the rules it
481
490
  fresh repo too), and names the installed tool that will enforce each rule it can write.
482
491
  - **`archprint generate [path]`**: writes the auto-trusted mechanical rules to `.archprint/` for the linters your
483
492
  repo uses; structural rules are held for review. `--emit <eslint|dependency-cruiser|all>` forces the format,
484
- `--only <family>` and `--rules <ids>` narrow the output (`--rules` keeps only the rules it names, such as
485
- `AP-002`, `import-style` or the layer rule `no-lib-to-app`), `--check` runs the generated rules against your repo,
493
+ `--only <family>` and `--rules <ids>` adopt one family or the rules they name (such as `AP-002`, `import-style`
494
+ or the layer rule `no-lib-to-app`) and keep the rules you adopted before, `--check` runs the generated rules against your repo,
486
495
  `--readme` adds the README section, `--expand` also writes the per-family files, cards, fixtures and graph, and
487
496
  `--rule <id>` emits one reviewed rule. Also `--include-structural`, `--no-graph`, `--out <dir>`, `--fast`.
488
497
  - **`archprint check [path]`**: reports the violations of your adopted rules that a change introduces, compared
@@ -555,8 +564,8 @@ Without dependency-cruiser, each boundary becomes an ESLint rule in `.archprint/
555
564
  `archprint/no-utils-to-app`, with no extra plugin; with dependency-cruiser, it goes there instead. The rule
556
565
  exempts the files that already break the boundary, so your lint stays green, and it catches a new import across
557
566
  the boundary, by relative path or alias. `archprint check` reports a new break in a pull request, and
558
- `archprint allow` records a justified exception. `--rules` keeps only the rules it names, so list every rule you
559
- want in the same run. If your CI pins archprint (for example the GitHub Action's `archprint-version`), use 0.13.0
567
+ `archprint allow` records a justified exception. `--rules` adds the rules it names to the ones you adopted before,
568
+ so you can adopt boundaries one run at a time; a plain `archprint generate` resets to the default rule set. If your CI pins archprint (for example the GitHub Action's `archprint-version`), use 0.13.0
560
569
  or later there first. The [rules reference](https://tommkruix.github.io/archprint/rules#layer-boundaries-review)
561
570
  says exactly which imports and files the rule reads.
562
571
 
@@ -1,5 +1,8 @@
1
1
  import type { Role } from '../scanner/role-classifier.js';
2
+ import type { AppIsolationGroup } from '../detector/app-isolation-detector.js';
3
+ import type { FeatureSliceGroup } from '../detector/feature-slice-detector.js';
2
4
  import type { LayerBoundary } from '../detector/layer-detector.js';
5
+ import type { RoleBoundary } from '../detector/role-layering-detector.js';
3
6
  import type { ScannedPattern, ScanResult } from './scan.js';
4
7
  /** Where 0.9.0 to 0.11.x kept the adopted rules, before they moved into config.json. */
5
8
  export declare const LEGACY_RULES_FILE = "rules.json";
@@ -28,18 +31,43 @@ export interface PublicApiRule extends RuleBase {
28
31
  dir: string;
29
32
  }
30
33
  export interface SingleFamilyRule extends RuleBase {
31
- family: 'test-isolation' | 'console-isolation' | 'import-style';
34
+ family: 'test-isolation' | 'console-isolation' | 'import-style' | 'phantom-deps' | 'server-client' | 'dependency-hygiene' | 'entry-purity' | 'cycles' | 'env-access' | 'workspace-package-api' | 'stories-isolation' | 'ui-data';
32
35
  }
33
36
  export interface LayerRule extends RuleBase {
34
37
  family: 'layer';
35
38
  from: string;
36
39
  to: string;
37
40
  }
38
- export type AdoptedRule = ForbiddenImportRule | PublicApiRule | LayerRule | SingleFamilyRule;
41
+ export interface RoleLayeringRule extends RuleBase {
42
+ family: 'role-layering';
43
+ from: Role;
44
+ to: Role;
45
+ }
46
+ export interface SiblingIsolationRule extends RuleBase {
47
+ family: 'feature-slice' | 'app-isolation';
48
+ container: string;
49
+ }
50
+ export type AdoptedRule = ForbiddenImportRule | PublicApiRule | LayerRule | RoleLayeringRule | SiblingIsolationRule | SingleFamilyRule;
39
51
  export declare function forbiddenImportRule(pattern: ScannedPattern, mode: ResolutionMode): AdoptedRule;
40
52
  export declare function testIsolationRule(scan: ScanResult): AdoptedRule;
41
53
  export declare function consoleIsolationRule(scan: ScanResult): AdoptedRule;
42
54
  export declare function importStyleRule(scan: ScanResult): AdoptedRule;
55
+ export declare function phantomDependencyRule(scan: ScanResult): AdoptedRule;
56
+ export declare function serverClientRule(scan: ScanResult): AdoptedRule;
57
+ export declare function dependencyInternalsRule(scan: ScanResult): AdoptedRule;
58
+ export declare function entryPurityRule(scan: ScanResult): AdoptedRule;
59
+ export declare function envAccessRule(scan: ScanResult): AdoptedRule;
60
+ export declare function workspacePackageRule(scan: ScanResult): AdoptedRule;
61
+ export declare function storiesIsolationRule(scan: ScanResult): AdoptedRule;
62
+ export declare function uiDataRule(scan: ScanResult): AdoptedRule;
63
+ export declare function roleLayeringRule(boundary: RoleBoundary): RoleLayeringRule;
64
+ export declare function featureSliceRule(group: FeatureSliceGroup): SiblingIsolationRule;
65
+ export declare function appIsolationRule(group: AppIsolationGroup): SiblingIsolationRule;
66
+ export declare const NO_CYCLES_RULE = "no-cycles";
67
+ /** Whether the code has no cycle and enough files to say so: only then is no-cycles a rule it follows. */
68
+ export declare const isCycleFree: (scan: ScanResult) => boolean;
69
+ /** Adopted only while the code has no cycle: then it is a rule the code already follows. */
70
+ export declare function cycleRule(scan: ScanResult): AdoptedRule;
43
71
  export declare function publicApiRules(scan: ScanResult): AdoptedRule[];
44
72
  export declare function layerRule(boundary: LayerBoundary): LayerRule;
45
73
  export declare const byRuleId: (a: AdoptedRule, b: AdoptedRule) => number;
@@ -1 +1 @@
1
- {"version":3,"file":"adopted-rules.d.ts","sourceRoot":"","sources":["../../src/cli/adopted-rules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAKnE,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5D,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAG9C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;IACnD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAiB,SAAQ,QAAQ;IAChD,MAAM,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,cAAc,CAAC;CACjE;AAED,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,aAAa,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAQ7F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,GAAG,WAAW,CAW9F;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAS/D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CASlE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,CAS7D;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,EAAE,CAW9D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,SAAS,CAc5D;AAED,eAAO,MAAM,QAAQ,GAAI,GAAG,WAAW,EAAE,GAAG,WAAW,KAAG,MAAkC,CAAC;AAE7F,qBAAa,iBAAkB,SAAQ,KAAK;CAAG;AA2E/C,wCAAwC;AACxC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAQ1E;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,IAAI,CAGjF;AAED,2FAA2F;AAC3F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,IAAI,CAKrE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAgB3D"}
1
+ {"version":3,"file":"adopted-rules.d.ts","sourceRoot":"","sources":["../../src/cli/adopted-rules.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,20 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import * as path from 'node:path';
3
+ import { appIsolationRuleName } from '../generator/app-isolation-emitters.js';
4
+ import { ENV_ACCESS_RULE } from '../generator/env-access-emitters.js';
5
+ import { featureSliceRuleName } from '../generator/feature-slice-emitters.js';
3
6
  import { layerRuleName } from '../generator/layer-emitters.js';
7
+ import { DEPENDENCY_INTERNALS_RULE } from '../generator/dependency-internals-emitters.js';
8
+ import { ENTRY_PURITY_RULE } from '../generator/entry-purity-emitters.js';
9
+ import { PHANTOM_DEPENDENCY_RULE } from '../generator/phantom-dependency-emitters.js';
4
10
  import { publicApiRuleName } from '../generator/public-api-emitters.js';
11
+ import { roleLayeringRuleName } from '../generator/role-layering-emitters.js';
12
+ import { SERVER_CLIENT_RULE } from '../generator/server-client-emitters.js';
13
+ import { STORIES_ISOLATION_RULE } from '../generator/stories-isolation-emitters.js';
14
+ import { UI_DATA_RULE } from '../generator/ui-data-isolation-emitters.js';
15
+ import { WORKSPACE_PACKAGE_RULE } from '../generator/workspace-package-emitters.js';
5
16
  import { configPath, configSection, readConfigSection } from './archprint-config.js';
6
- import { FAMILY_STATEMENTS } from './rule-statements.js';
17
+ import { appIsolationStatement, boundaryStatement, FAMILY_STATEMENTS, sliceStatement, } from './rule-statements.js';
7
18
  /** Where 0.9.0 to 0.11.x kept the adopted rules, before they moved into config.json. */
8
19
  export const LEGACY_RULES_FILE = 'rules.json';
9
20
  const LEGACY_RULES_FORMAT = 1;
@@ -54,6 +65,131 @@ export function importStyleRule(scan) {
54
65
  evidence: evidenceOf(analysis.gate, analysis.relativeImporterCount, analysis.offenderCount),
55
66
  };
56
67
  }
68
+ export function phantomDependencyRule(scan) {
69
+ const analysis = scan.phantomDependencies;
70
+ return {
71
+ id: PHANTOM_DEPENDENCY_RULE,
72
+ family: 'phantom-deps',
73
+ statement: FAMILY_STATEMENTS['phantom-deps'],
74
+ mode: 'fast',
75
+ evidence: evidenceOf(analysis.gate, analysis.externalImporterCount, analysis.offenderCount),
76
+ };
77
+ }
78
+ export function serverClientRule(scan) {
79
+ const analysis = scan.serverClient;
80
+ return {
81
+ id: SERVER_CLIENT_RULE,
82
+ family: 'server-client',
83
+ statement: FAMILY_STATEMENTS['server-client'],
84
+ mode: 'fast',
85
+ evidence: evidenceOf(analysis.gate, analysis.clientCount, analysis.offenderCount),
86
+ };
87
+ }
88
+ export function dependencyInternalsRule(scan) {
89
+ const analysis = scan.dependencyInternals;
90
+ return {
91
+ id: DEPENDENCY_INTERNALS_RULE,
92
+ family: 'dependency-hygiene',
93
+ statement: FAMILY_STATEMENTS['dependency-hygiene'],
94
+ mode: 'fast',
95
+ evidence: evidenceOf(analysis.gate, analysis.externalImporterCount, analysis.offenderCount),
96
+ };
97
+ }
98
+ export function entryPurityRule(scan) {
99
+ const analysis = scan.entryPurity;
100
+ return {
101
+ id: ENTRY_PURITY_RULE,
102
+ family: 'entry-purity',
103
+ statement: FAMILY_STATEMENTS['entry-purity'],
104
+ mode: 'fast',
105
+ evidence: evidenceOf(analysis.gate, analysis.entryCount, analysis.offenderCount),
106
+ };
107
+ }
108
+ export function envAccessRule(scan) {
109
+ const analysis = scan.envAccess;
110
+ return {
111
+ id: ENV_ACCESS_RULE,
112
+ family: 'env-access',
113
+ statement: FAMILY_STATEMENTS['env-access'],
114
+ mode: 'fast',
115
+ evidence: evidenceOf(analysis.gate, analysis.subjectFileCount, analysis.offenderCount),
116
+ };
117
+ }
118
+ export function workspacePackageRule(scan) {
119
+ const analysis = scan.workspacePackageApi;
120
+ return {
121
+ id: WORKSPACE_PACKAGE_RULE,
122
+ family: 'workspace-package-api',
123
+ statement: FAMILY_STATEMENTS['workspace-package-api'],
124
+ mode: 'fast',
125
+ evidence: evidenceOf(analysis.gate, analysis.consumerCount, analysis.offenderCount),
126
+ };
127
+ }
128
+ export function storiesIsolationRule(scan) {
129
+ const analysis = scan.storiesIsolation;
130
+ return {
131
+ id: STORIES_ISOLATION_RULE,
132
+ family: 'stories-isolation',
133
+ statement: FAMILY_STATEMENTS['stories-isolation'],
134
+ mode: 'fast',
135
+ evidence: evidenceOf(analysis.gate, analysis.storyCount, analysis.offenderCount),
136
+ };
137
+ }
138
+ export function uiDataRule(scan) {
139
+ const analysis = scan.uiDataIsolation;
140
+ return {
141
+ id: UI_DATA_RULE,
142
+ family: 'ui-data',
143
+ statement: FAMILY_STATEMENTS['ui-data'],
144
+ mode: 'fast',
145
+ evidence: evidenceOf(analysis.gate, analysis.componentCount, analysis.offenderCount),
146
+ };
147
+ }
148
+ export function roleLayeringRule(boundary) {
149
+ return {
150
+ id: roleLayeringRuleName(boundary.from, boundary.to),
151
+ family: 'role-layering',
152
+ from: boundary.from,
153
+ to: boundary.to,
154
+ statement: boundaryStatement(boundary.from, boundary.to),
155
+ mode: 'fast',
156
+ evidence: evidenceOf(boundary.gate, boundary.roleFileCount, boundary.violatingFileCount),
157
+ };
158
+ }
159
+ export function featureSliceRule(group) {
160
+ return {
161
+ id: featureSliceRuleName(group.container),
162
+ family: 'feature-slice',
163
+ container: group.container,
164
+ statement: sliceStatement(group.container),
165
+ mode: 'fast',
166
+ evidence: evidenceOf(group.gate, group.sliceFileCount, group.crossImporterCount),
167
+ };
168
+ }
169
+ export function appIsolationRule(group) {
170
+ return {
171
+ id: appIsolationRuleName(group.container),
172
+ family: 'app-isolation',
173
+ container: group.container,
174
+ statement: appIsolationStatement(group.container),
175
+ mode: 'fast',
176
+ evidence: evidenceOf(group.gate, group.appFileCount, group.crossImporterCount),
177
+ };
178
+ }
179
+ export const NO_CYCLES_RULE = 'no-cycles';
180
+ /** Whether the code has no cycle and enough files to say so: only then is no-cycles a rule it follows. */
181
+ export const isCycleFree = (scan) => scan.cycles.cycles.length === 0 && scan.cycles.gate.status === 'AUTO';
182
+ /** Adopted only while the code has no cycle: then it is a rule the code already follows. */
183
+ export function cycleRule(scan) {
184
+ const analysis = scan.cycles;
185
+ return {
186
+ id: NO_CYCLES_RULE,
187
+ family: 'cycles',
188
+ statement: FAMILY_STATEMENTS.cycles,
189
+ mode: 'fast',
190
+ evidence: evidenceOf(analysis.gate, analysis.fileCount, analysis.filesInCycles),
191
+ };
192
+ }
57
193
  export function publicApiRules(scan) {
58
194
  return scan.publicApi.groups
59
195
  .filter((group) => group.gate.status === 'AUTO')
@@ -84,9 +220,21 @@ const FAMILIES = new Set([
84
220
  'forbidden-imports',
85
221
  'public-api',
86
222
  'layer',
223
+ 'phantom-deps',
224
+ 'server-client',
225
+ 'dependency-hygiene',
226
+ 'entry-purity',
227
+ 'cycles',
87
228
  'test-isolation',
88
229
  'console-isolation',
89
230
  'import-style',
231
+ 'env-access',
232
+ 'workspace-package-api',
233
+ 'stories-isolation',
234
+ 'ui-data',
235
+ 'role-layering',
236
+ 'feature-slice',
237
+ 'app-isolation',
90
238
  ]);
91
239
  const MAX_PATTERN_LENGTH = 200;
92
240
  const PATTERN_FLAGS = /^[imsu]*$/;
@@ -127,10 +275,14 @@ function validateRule(rule, file) {
127
275
  if (candidate.family === 'public-api' && typeof candidate.dir !== 'string') {
128
276
  return invalid(`rule ${candidate.id} has no directory`);
129
277
  }
130
- if (candidate.family === 'layer' &&
278
+ if ((candidate.family === 'layer' || candidate.family === 'role-layering') &&
131
279
  (typeof candidate.from !== 'string' || typeof candidate.to !== 'string')) {
132
280
  return invalid(`rule ${candidate.id} has no layers`);
133
281
  }
282
+ if ((candidate.family === 'feature-slice' || candidate.family === 'app-isolation') &&
283
+ typeof candidate.container !== 'string') {
284
+ return invalid(`rule ${candidate.id} has no directory`);
285
+ }
134
286
  return rule;
135
287
  }
136
288
  function parseRuleList(rules, file) {
@@ -175,7 +327,11 @@ export function ruleDefinitionKey(rule) {
175
327
  case 'public-api':
176
328
  return JSON.stringify([...common, rule.dir]);
177
329
  case 'layer':
330
+ case 'role-layering':
178
331
  return JSON.stringify([...common, rule.from, rule.to]);
332
+ case 'feature-slice':
333
+ case 'app-isolation':
334
+ return JSON.stringify([...common, rule.container]);
179
335
  default:
180
336
  return JSON.stringify(common);
181
337
  }
@@ -1 +1 @@
1
- {"version":3,"file":"adopted-rules.js","sourceRoot":"","sources":["../../src/cli/adopted-rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adopted-rules.js","sourceRoot":"","sources":["../../src/cli/adopted-rules.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"allow.d.ts","sourceRoot":"","sources":["../../src/cli/allow.ts"],"names":[],"mappings":"AAaA,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAExC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAOD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAiDtD"}
1
+ {"version":3,"file":"allow.d.ts","sourceRoot":"","sources":["../../src/cli/allow.ts"],"names":[],"mappings":"AAaA,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAExC,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA0BD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAgDtD"}
package/dist/cli/allow.js CHANGED
@@ -7,7 +7,24 @@ import { readConfig } from './archprint-config.js';
7
7
  import { evaluateRules } from './check-evaluate.js';
8
8
  export class AllowError extends Error {
9
9
  }
10
- const regenerateHint = (rule) => `Run archprint generate to update the ${rule.family === 'layer' ? 'generated' : 'ESLint'} rules.`;
10
+ const GENERATED_FOR_EITHER_ENFORCER = new Set([
11
+ 'layer',
12
+ 'phantom-deps',
13
+ 'server-client',
14
+ ]);
15
+ /** Families whose generated dependency-cruiser rules do not read the allowed list. */
16
+ const UNEXEMPTED_BY_GENERATE = new Set([
17
+ 'public-api',
18
+ 'role-layering',
19
+ 'feature-slice',
20
+ 'app-isolation',
21
+ 'stories-isolation',
22
+ 'ui-data',
23
+ ]);
24
+ /** What to run so the generated rules follow the change; nothing when regenerating would not change them. */
25
+ const regenerateHint = (rule) => rule.family === 'cycles' || UNEXEMPTED_BY_GENERATE.has(rule.family)
26
+ ? ''
27
+ : ` Run archprint generate to update the ${GENERATED_FOR_EITHER_ENFORCER.has(rule.family) ? 'generated' : 'ESLint'} rules.`;
11
28
  const toPosix = (value) => value.split(path.sep).join('/');
12
29
  export function runAllow(options) {
13
30
  const outDir = path.resolve(options.cwd, options.out);
@@ -39,7 +56,7 @@ export function runAllow(options) {
39
56
  throw new AllowError(`There is no allowed exception for ${rule.id} in ${file}.`);
40
57
  }
41
58
  writeAllowed(outDir, others);
42
- return `Removed the exception for ${rule.id} in ${file}. ${regenerateHint(rule)}`;
59
+ return `Removed the exception for ${rule.id} in ${file}.${regenerateHint(rule)}`;
43
60
  }
44
61
  const reason = options.reason?.trim() ?? '';
45
62
  if (reason === '') {
@@ -51,9 +68,9 @@ export function runAllow(options) {
51
68
  }
52
69
  const entry = { rule: rule.id, file, reason };
53
70
  writeAllowed(outDir, [...others, entry]);
54
- const lint = rule.family === 'public-api'
71
+ const lint = UNEXEMPTED_BY_GENERATE.has(rule.family)
55
72
  ? ' dependency-cruiser does not read this list, so add the exception there too if you use it.'
56
- : ` ${regenerateHint(rule)}`;
73
+ : regenerateHint(rule);
57
74
  return `Allowed ${rule.id} in ${file}. archprint check accepts it now.${lint}`;
58
75
  }
59
76
  //# sourceMappingURL=allow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allow.js","sourceRoot":"","sources":["../../src/cli/allow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"allow.js","sourceRoot":"","sources":["../../src/cli/allow.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"allowed-evidence.d.ts","sourceRoot":"","sources":["../../src/cli/allowed-evidence.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;AA0B5D,gHAAgH;AAChH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAU/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,UAAU,CAuHnF"}
1
+ {"version":3,"file":"allowed-evidence.d.ts","sourceRoot":"","sources":["../../src/cli/allowed-evidence.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,KAAK,aAAa,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;AAoK5D,gHAAgH;AAChH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAU/D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,UAAU,CAuKnF"}