@goodbones/core 0.1.0-beta.1 → 0.1.0-beta.11

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 (150) hide show
  1. package/build/dts/core/coverage.d.ts +20 -0
  2. package/build/dts/core/coverage.d.ts.map +1 -1
  3. package/build/dts/core/graph.d.ts +2 -0
  4. package/build/dts/core/graph.d.ts.map +1 -1
  5. package/build/dts/core/imports.d.ts +3 -1
  6. package/build/dts/core/imports.d.ts.map +1 -1
  7. package/build/dts/core/slack.d.ts +22 -0
  8. package/build/dts/core/slack.d.ts.map +1 -0
  9. package/build/dts/core/structure.d.ts +1 -0
  10. package/build/dts/core/structure.d.ts.map +1 -1
  11. package/build/dts/domain/architecture-config.d.ts +19 -3
  12. package/build/dts/domain/architecture-config.d.ts.map +1 -1
  13. package/build/dts/domain/architecture-error.d.ts +8 -0
  14. package/build/dts/domain/architecture-error.d.ts.map +1 -1
  15. package/build/dts/domain/facts.d.ts +1 -0
  16. package/build/dts/domain/facts.d.ts.map +1 -1
  17. package/build/dts/domain/manifest-location.d.ts +9 -0
  18. package/build/dts/domain/manifest-location.d.ts.map +1 -0
  19. package/build/dts/domain/snapshot.d.ts +356 -0
  20. package/build/dts/domain/snapshot.d.ts.map +1 -0
  21. package/build/dts/domain/violation.d.ts +1 -1
  22. package/build/dts/domain/violation.d.ts.map +1 -1
  23. package/build/dts/index.d.ts +22 -10
  24. package/build/dts/index.d.ts.map +1 -1
  25. package/build/dts/infrastructure/file-system-fake.d.ts.map +1 -1
  26. package/build/dts/infrastructure/file-system-live.d.ts.map +1 -1
  27. package/build/dts/infrastructure/manifest-file.d.ts +11 -2
  28. package/build/dts/infrastructure/manifest-file.d.ts.map +1 -1
  29. package/build/dts/infrastructure/manifest-include.d.ts +16 -0
  30. package/build/dts/infrastructure/manifest-include.d.ts.map +1 -0
  31. package/build/dts/infrastructure/syntax-matcher-fake.d.ts +10 -0
  32. package/build/dts/infrastructure/syntax-matcher-fake.d.ts.map +1 -0
  33. package/build/dts/infrastructure/walk.d.ts +12 -1
  34. package/build/dts/infrastructure/walk.d.ts.map +1 -1
  35. package/build/dts/load/extension.d.ts +33 -0
  36. package/build/dts/load/extension.d.ts.map +1 -0
  37. package/build/dts/load/policy.d.ts +10 -0
  38. package/build/dts/load/policy.d.ts.map +1 -1
  39. package/build/dts/manifest/compile.d.ts +11 -1
  40. package/build/dts/manifest/compile.d.ts.map +1 -1
  41. package/build/dts/manifest/expand.d.ts +27 -0
  42. package/build/dts/manifest/expand.d.ts.map +1 -0
  43. package/build/dts/manifest/extension.d.ts +8 -0
  44. package/build/dts/manifest/extension.d.ts.map +1 -0
  45. package/build/dts/manifest/glob.d.ts +1 -0
  46. package/build/dts/manifest/glob.d.ts.map +1 -1
  47. package/build/dts/manifest/infer.d.ts +55 -0
  48. package/build/dts/manifest/infer.d.ts.map +1 -0
  49. package/build/dts/manifest/json-schema.d.ts +14 -0
  50. package/build/dts/manifest/json-schema.d.ts.map +1 -0
  51. package/build/dts/manifest/manifest.d.ts +26 -1
  52. package/build/dts/manifest/manifest.d.ts.map +1 -1
  53. package/build/dts/ports/file-system.d.ts +1 -0
  54. package/build/dts/ports/file-system.d.ts.map +1 -1
  55. package/build/dts/ports/language.d.ts +4 -0
  56. package/build/dts/ports/language.d.ts.map +1 -1
  57. package/build/dts/ports/syntax-matcher.d.ts +21 -0
  58. package/build/dts/ports/syntax-matcher.d.ts.map +1 -0
  59. package/build/dts/testing.d.ts +1 -0
  60. package/build/dts/testing.d.ts.map +1 -1
  61. package/build/esm/core/coverage.js +107 -32
  62. package/build/esm/core/coverage.js.map +1 -1
  63. package/build/esm/core/graph.js +45 -0
  64. package/build/esm/core/graph.js.map +1 -1
  65. package/build/esm/core/imports.js +14 -9
  66. package/build/esm/core/imports.js.map +1 -1
  67. package/build/esm/core/slack.js +76 -0
  68. package/build/esm/core/slack.js.map +1 -0
  69. package/build/esm/core/structure.js +6 -3
  70. package/build/esm/core/structure.js.map +1 -1
  71. package/build/esm/domain/architecture-config.js +28 -4
  72. package/build/esm/domain/architecture-config.js.map +1 -1
  73. package/build/esm/domain/architecture-error.js +27 -0
  74. package/build/esm/domain/architecture-error.js.map +1 -1
  75. package/build/esm/domain/manifest-location.js +21 -0
  76. package/build/esm/domain/manifest-location.js.map +1 -0
  77. package/build/esm/domain/snapshot.js +181 -0
  78. package/build/esm/domain/snapshot.js.map +1 -0
  79. package/build/esm/domain/violation.js.map +1 -1
  80. package/build/esm/index.js +28 -9
  81. package/build/esm/index.js.map +1 -1
  82. package/build/esm/infrastructure/file-system-fake.js +10 -0
  83. package/build/esm/infrastructure/file-system-fake.js.map +1 -1
  84. package/build/esm/infrastructure/file-system-live.js +9 -1
  85. package/build/esm/infrastructure/file-system-live.js.map +1 -1
  86. package/build/esm/infrastructure/manifest-file.js +158 -7
  87. package/build/esm/infrastructure/manifest-file.js.map +1 -1
  88. package/build/esm/infrastructure/manifest-include.js +187 -0
  89. package/build/esm/infrastructure/manifest-include.js.map +1 -0
  90. package/build/esm/infrastructure/syntax-matcher-fake.js +33 -0
  91. package/build/esm/infrastructure/syntax-matcher-fake.js.map +1 -0
  92. package/build/esm/infrastructure/walk.js +106 -4
  93. package/build/esm/infrastructure/walk.js.map +1 -1
  94. package/build/esm/load/extension.js +2 -0
  95. package/build/esm/load/extension.js.map +1 -0
  96. package/build/esm/load/policy.js +49 -2
  97. package/build/esm/load/policy.js.map +1 -1
  98. package/build/esm/manifest/compile.js +50 -27
  99. package/build/esm/manifest/compile.js.map +1 -1
  100. package/build/esm/manifest/expand.js +116 -0
  101. package/build/esm/manifest/expand.js.map +1 -0
  102. package/build/esm/manifest/extension.js +2 -0
  103. package/build/esm/manifest/extension.js.map +1 -0
  104. package/build/esm/manifest/glob.js +3 -0
  105. package/build/esm/manifest/glob.js.map +1 -1
  106. package/build/esm/manifest/infer.js +455 -0
  107. package/build/esm/manifest/infer.js.map +1 -0
  108. package/build/esm/manifest/json-schema.js +169 -0
  109. package/build/esm/manifest/json-schema.js.map +1 -0
  110. package/build/esm/manifest/manifest.js +127 -5
  111. package/build/esm/manifest/manifest.js.map +1 -1
  112. package/build/esm/ports/syntax-matcher.js +12 -0
  113. package/build/esm/ports/syntax-matcher.js.map +1 -0
  114. package/build/esm/testing.js +1 -0
  115. package/build/esm/testing.js.map +1 -1
  116. package/package.json +9 -3
  117. package/schema/architecture-node.schema.json +1518 -0
  118. package/schema/architecture.schema.json +4498 -0
  119. package/schema/conformance.schema.json +1019 -0
  120. package/src/core/coverage.ts +164 -34
  121. package/src/core/graph.ts +48 -0
  122. package/src/core/imports.ts +29 -13
  123. package/src/core/slack.ts +135 -0
  124. package/src/core/structure.ts +15 -8
  125. package/src/domain/architecture-config.ts +31 -4
  126. package/src/domain/architecture-error.ts +30 -0
  127. package/src/domain/facts.ts +9 -4
  128. package/src/domain/manifest-location.ts +41 -0
  129. package/src/domain/snapshot.ts +402 -0
  130. package/src/domain/violation.ts +4 -1
  131. package/src/index.ts +149 -7
  132. package/src/infrastructure/file-system-fake.ts +12 -0
  133. package/src/infrastructure/file-system-live.ts +8 -1
  134. package/src/infrastructure/manifest-file.ts +204 -8
  135. package/src/infrastructure/manifest-include.ts +318 -0
  136. package/src/infrastructure/syntax-matcher-fake.ts +51 -0
  137. package/src/infrastructure/walk.ts +127 -3
  138. package/src/load/extension.ts +66 -0
  139. package/src/load/policy.ts +77 -2
  140. package/src/manifest/compile.ts +81 -30
  141. package/src/manifest/expand.ts +183 -0
  142. package/src/manifest/extension.ts +41 -0
  143. package/src/manifest/glob.ts +5 -0
  144. package/src/manifest/infer.ts +643 -0
  145. package/src/manifest/json-schema.ts +210 -0
  146. package/src/manifest/manifest.ts +206 -10
  147. package/src/ports/file-system.ts +3 -0
  148. package/src/ports/language.ts +17 -0
  149. package/src/ports/syntax-matcher.ts +42 -0
  150. package/src/testing.ts +1 -0
@@ -3,7 +3,7 @@ import * as Schema from "effect/Schema";
3
3
  // matched against a repo-relative, forward-slash path — the same vocabulary
4
4
  // dependency-cruiser rules are written in, so a rule ported from there keeps its
5
5
  // pattern character-for-character. A list matches when ANY member matches.
6
- const PatternList = Schema.Union([Schema.String, Schema.Array(Schema.String)]);
6
+ export const PatternList = Schema.Union([Schema.String, Schema.Array(Schema.String)]);
7
7
  // An import edge is a violation when the importer matches `from` (and not
8
8
  // `fromNot`) AND the resolved target matches `to` (and not `toNot`). Omitting
9
9
  // `to` means "any target", which is how a rule expresses "this folder may not
@@ -14,7 +14,7 @@ const PatternList = Schema.Union([Schema.String, Schema.Array(Schema.String)]);
14
14
  // importer path. `to` is the target in one of three forms, and the form is its
15
15
  // dependency kind: a repo-relative resolved path is `local`, `{ external }`
16
16
  // names a third-party package, `{ builtin }` names a runtime module.
17
- const ImportProbeTarget = Schema.Union([
17
+ export const ImportProbeTarget = Schema.Union([
18
18
  Schema.String,
19
19
  Schema.Struct({ external: Schema.String }),
20
20
  Schema.Struct({ builtin: Schema.String }),
@@ -23,6 +23,27 @@ const ImportProbe = Schema.Struct({
23
23
  from: Schema.String,
24
24
  to: ImportProbeTarget,
25
25
  });
26
+ // One entry of an `imports` allowlist, as the author wrote it and where. An
27
+ // allowlist rule compiles its entries into `toNot` patterns and `externals`
28
+ // names, which is all evaluation needs; this is the other direction — from a
29
+ // pattern back to the line in the manifest that put it there — so a report
30
+ // can say which line no import uses. Slack is the signature of an allowlist
31
+ // widened to make a build green, and it is only visible with the entry kept.
32
+ export const Allowance = Schema.Struct({
33
+ // The manifest node that declared the entry, as rule names name nodes.
34
+ node: Schema.String,
35
+ // `allow` is a path glob; `external` is a package name.
36
+ kind: Schema.Literals(["allow", "external"]),
37
+ // The entry as written, after alias expansion.
38
+ entry: Schema.String,
39
+ // For an `allow`: the compiled target pattern, as `toNot` carries it.
40
+ pattern: Schema.optionalKey(Schema.String),
41
+ // The `defs` fragment the entry arrived through, when the node wrote
42
+ // `use: <name>` rather than the entry itself. Slack is attributed to the
43
+ // fragment then: the node's authors wrote one word, and the line to delete
44
+ // is in `defs`.
45
+ fragment: Schema.optionalKey(Schema.String),
46
+ });
26
47
  export const ImportRule = Schema.Struct({
27
48
  name: Schema.String,
28
49
  message: Schema.String,
@@ -31,6 +52,9 @@ export const ImportRule = Schema.Struct({
31
52
  fromNot: Schema.optionalKey(PatternList),
32
53
  to: Schema.optionalKey(PatternList),
33
54
  toNot: Schema.optionalKey(PatternList),
55
+ // Where each `toNot` pattern and `externals` name came from, for an
56
+ // allowlist lowered from a manifest. A hand-written rule carries none.
57
+ allowances: Schema.optionalKey(Schema.Array(Allowance)),
34
58
  // Third-party packages this rule permits, by package name. An external
35
59
  // target is judged by its package, never by where the language's resolver
36
60
  // happened to find it on disk — `to`/`toNot` patterns are for the
@@ -66,7 +90,7 @@ export const ExportFix = Schema.Literals(["subpath-namespace-import"]);
66
90
  // Which binding form an import site used. A rule that fences off a factory
67
91
  // function cares about `named`; one steering people to namespace subpath imports
68
92
  // cares that `named` was used at all.
69
- const BindingKind = Schema.Literals(["named", "default", "namespace"]);
93
+ export const BindingKind = Schema.Literals(["named", "default", "namespace"]);
70
94
  // `source`, when present, is a snippet the loading adapter parses: the probe
71
95
  // then holds only if a binding named `symbol` comes out of the parser and the
72
96
  // rule covers it, with every edge in the snippet taken to resolve to `to`.
@@ -127,7 +151,7 @@ export const DeclarationKind = Schema.Literals([
127
151
  // identifiers (the hooks a tier may reach for). Which declarations a `members`
128
152
  // rule speaks to is `declares`' to say, so the vocabulary carries no language's
129
153
  // split between types and values.
130
- const MemberSubject = Schema.Literals(["members", "calls"]);
154
+ export const MemberSubject = Schema.Literals(["members", "calls"]);
131
155
  // `source`, when present, is a snippet the loading adapter parses: the probe
132
156
  // then holds only if a site named `name` comes out of the parser and the rule
133
157
  // reports it — the declaration shape is the parser's to judge, not `in`'s.
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-config.js","sourceRoot":"","sources":["../../../src/domain/architecture-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"architecture-config.js","sourceRoot":"","sources":["../../../src/domain/architecture-config.ts"],"names":[],"mappings":"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"}
@@ -38,4 +38,31 @@ export class ImportUnresolved extends Schema.TaggedErrorClass("ImportUnresolved"
38
38
  return `${this.fromFile} imports "${this.specifier}", which does not resolve: ${this.detail}`;
39
39
  }
40
40
  }
41
+ // A `report` term whose source cannot be read: a command that could not be
42
+ // spawned, or a file that is not there. The live source raises it once per
43
+ // spec and keeps it, as it would have kept the report, so a lint over eight
44
+ // hundred files does not attempt the spawn eight hundred times; the plugin
45
+ // catches it and reports it once. The message says what to do, because a
46
+ // command is forked from whichever process asks — the CLI, or oxlint with
47
+ // the plugin loaded, which is the linter itself — and Linux's default
48
+ // overcommit heuristic refuses to fork a process holding one mapping larger
49
+ // than RAM and swap, which the linter's AST buffers become mid-lint.
50
+ export class ReportUnavailable extends Schema.TaggedErrorClass("ReportUnavailable")("ReportUnavailable", {
51
+ // "command" or "file", and the value as authored.
52
+ kind: Schema.Literals(["command", "file"]),
53
+ source: Schema.String,
54
+ detail: Schema.String,
55
+ }) {
56
+ get message() {
57
+ return this.kind === "command"
58
+ ? `the report command \`${this.source}\` could not be run: ${this.detail}. The command ` +
59
+ `is forked from the process that asks for the report — \`architecture check\`, or ` +
60
+ `oxlint with the plugin loaded, which is the linter itself, and Linux can refuse to ` +
61
+ `fork the linter once it holds more memory than the machine could back. A report an ` +
62
+ `earlier step writes, named by \`file:\` instead of \`command:\`, is the form for CI ` +
63
+ `and the editor.`
64
+ : `the report file ${this.source} cannot be read: ${this.detail}. A \`report\` term's ` +
65
+ `\`file\` is written by an earlier step; run that first, or name a \`command\`.`;
66
+ }
67
+ }
41
68
  //# sourceMappingURL=architecture-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"architecture-error.js","sourceRoot":"","sources":["../../../src/domain/architecture-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,gFAAgF;AAChF,6EAA6E;AAC7E,qCAAqC;AAErC,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,gBAAgB,CAAgB,eAAe,CAAC,CACxF,eAAe,EACf,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CACrD;IACC,IAAa,OAAO;QAClB,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,gBAAgB,CAAiB,gBAAgB,CAAC,CAC3F,gBAAgB,EAChB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;IACC,IAAa,OAAO;QAClB,OAAO,SAAS,IAAI,CAAC,QAAQ,yBAAyB,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,SAAS,CACxF,IAAI,CAAC,OAAO,CACb,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;CACF;AAED,iFAAiF;AACjF,gFAAgF;AAChF,qEAAqE;AACrE,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,gBAAgB,CAAe,cAAc,CAAC,CACrF,cAAc,EACd;IACE,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;IACC,IAAa,OAAO;QAClB,OAAO,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,gBAAgB,CAAmB,kBAAkB,CAAC,CACjG,kBAAkB,EAClB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;IACC,IAAa,OAAO;QAClB,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChG,CAAC;CACF"}
1
+ {"version":3,"file":"architecture-error.js","sourceRoot":"","sources":["../../../src/domain/architecture-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,gFAAgF;AAChF,6EAA6E;AAC7E,qCAAqC;AAErC,MAAM,OAAO,aAAc,SAAQ,MAAM,CAAC,gBAAgB,CAAgB,eAAe,CAAC,CACxF,eAAe,EACf,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CACrD;IACC,IAAa,OAAO;QAClB,OAAO,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,gBAAgB,CAAiB,gBAAgB,CAAC,CAC3F,gBAAgB,EAChB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;IACC,IAAa,OAAO;QAClB,OAAO,SAAS,IAAI,CAAC,QAAQ,yBAAyB,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,SAAS,CACxF,IAAI,CAAC,OAAO,CACb,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,CAAC;CACF;AAED,iFAAiF;AACjF,gFAAgF;AAChF,qEAAqE;AACrE,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,gBAAgB,CAAe,cAAc,CAAC,CACrF,cAAc,EACd;IACE,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;IACC,IAAa,OAAO;QAClB,OAAO,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1F,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,gBAAgB,CAAmB,kBAAkB,CAAC,CACjG,kBAAkB,EAClB;IACE,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CACF;IACC,IAAa,OAAO;QAClB,OAAO,GAAG,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,SAAS,8BAA8B,IAAI,CAAC,MAAM,EAAE,CAAC;IAChG,CAAC;CACF;AAED,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,sEAAsE;AACtE,4EAA4E;AAC5E,qEAAqE;AACrE,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,gBAAgB,CAC5D,mBAAmB,CACpB,CAAC,mBAAmB,EAAE;IACrB,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;IACA,IAAa,OAAO;QAClB,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS;YAC5B,CAAC,CAAC,wBAAwB,IAAI,CAAC,MAAM,wBAAwB,IAAI,CAAC,MAAM,gBAAgB;gBACpF,mFAAmF;gBACnF,qFAAqF;gBACrF,qFAAqF;gBACrF,sFAAsF;gBACtF,iBAAiB;YACrB,CAAC,CAAC,mBAAmB,IAAI,CAAC,MAAM,oBAAoB,IAAI,CAAC,MAAM,wBAAwB;gBACnF,gFAAgF,CAAC;IACzF,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ // Where in the manifest file a value was written. A decode error that names a
2
+ // path is something the reader has to find; one that names a line is something
3
+ // an editor can jump to. The host that read the file knows its lines; the
4
+ // decoder knows the path — the locator is how the second asks the first.
5
+ const isIdentifier = (key) => /^[A-Za-z_$][\w$]*$/.test(key);
6
+ // `tree["~/core/"].members[0].subject` — dotted where a key reads as a name,
7
+ // bracketed where it does not, so a node key that is a path pattern stays
8
+ // legible.
9
+ export const renderManifestPath = (path) => path.length === 0
10
+ ? "(root)"
11
+ : path
12
+ .map((segment, index) => {
13
+ if (typeof segment === "number")
14
+ return `[${String(segment)}]`;
15
+ const key = String(segment);
16
+ if (isIdentifier(key))
17
+ return index === 0 ? key : `.${key}`;
18
+ return `[${JSON.stringify(key)}]`;
19
+ })
20
+ .join("");
21
+ //# sourceMappingURL=manifest-location.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-location.js","sourceRoot":"","sources":["../../../src/domain/manifest-location.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,0EAA0E;AAC1E,yEAAyE;AAsBzE,MAAM,YAAY,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE9E,6EAA6E;AAC7E,0EAA0E;AAC1E,WAAW;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAkB,EAAU,EAAE,CAC/D,IAAI,CAAC,MAAM,KAAK,CAAC;IACf,CAAC,CAAC,QAAQ;IACV,CAAC,CAAC,IAAI;SACD,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,YAAY,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QAC5D,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC"}
@@ -0,0 +1,181 @@
1
+ import * as Schema from "effect/Schema";
2
+ // The conformance snapshot: one JSON document per run saying how far the
3
+ // tree is from the manifest. `architecture conformance --json` emits it, a
4
+ // pull-request check compares two of them, an agent reads one before it
5
+ // edits, and a service that keeps history stores them — so it is a wire
6
+ // format, defined here with a schema before anything consumes it, and
7
+ // versioned so a document that grows it can say which one it grew.
8
+ //
9
+ // Three things it says that `check` does not: the residue (what no family
10
+ // reaches), the slack (what the allowlists permit and nothing uses), and the
11
+ // violations ordered by how much of the graph each fix drags along. Every
12
+ // entry that names a violation names it by its line-independent fingerprint,
13
+ // which is what lets one be tracked across commits.
14
+ export const SNAPSHOT_SCHEMA_ID = "https://dataquail.github.io/goodbones/schema/conformance.schema.json";
15
+ export const SNAPSHOT_VERSION = 2;
16
+ const describe = (schema, description) => schema.annotate({ description });
17
+ const COVERAGE_FAMILIES = ["imports", "structure", "members", "surface", "graph"];
18
+ // The kinds `Violation` carries, spelled here as a schema; the `satisfies`
19
+ // below keeps the two lists one.
20
+ const VIOLATION_KINDS = [
21
+ "import",
22
+ "export",
23
+ "structure",
24
+ "member",
25
+ "surface",
26
+ "graph",
27
+ "campaign",
28
+ ];
29
+ const Path = describe(Schema.String, "Repo-relative, with forward slashes.");
30
+ const FamilyCoverage = Schema.Struct({
31
+ covered: describe(Schema.Finite, "Files this family reaches."),
32
+ total: describe(Schema.Finite, "Files walked."),
33
+ floor: Schema.optionalKey(describe(Schema.Finite, "The fraction the manifest's `limits.coverage` states for this family, when it states one.")),
34
+ });
35
+ export const CONFORMANCE_MEASURES = ["residue", "vacant", "slack", "concentration"];
36
+ // One conformance measure as `check` holds it: the count, and the ceiling
37
+ // the manifest's `limits.conformance` states for it, when it states one.
38
+ const MeasureCount = Schema.Struct({
39
+ count: describe(Schema.Finite, "What the measure counts today."),
40
+ ceiling: Schema.optionalKey(describe(Schema.Finite, "The count the manifest's `limits.conformance` states for this measure, when it states one.")),
41
+ });
42
+ export const SnapshotViolation = Schema.Struct({
43
+ fingerprint: describe(Schema.String, "kind|rule|file|subject — line-independent, so it survives edits to the file it names; the baseline's key."),
44
+ kind: Schema.Literals(VIOLATION_KINDS),
45
+ ruleName: describe(Schema.String, "The manifest node path the rule was lowered from."),
46
+ file: Path,
47
+ subject: describe(Schema.NullOr(Schema.String), "The other end of the violated relationship — the resolved target, the restricted symbol, the missing sibling — or null when the file alone is the violation."),
48
+ message: Schema.String,
49
+ baselined: describe(Schema.Boolean, "Carried by the baseline, so `check` does not fail on it."),
50
+ ledgered: describe(Schema.Boolean, "For a campaign hit: carried by the objective's ledger, so `check` does not fail on it."),
51
+ objective: Schema.optionalKey(describe(Schema.String, "For a campaign hit: the objective that fired.")),
52
+ sector: Schema.optionalKey(describe(Schema.String, "For a campaign hit: the sector the hit falls in.")),
53
+ entry: Schema.optionalKey(describe(Schema.String, "For a campaign hit: its ledger entry, relative to the sector's root.")),
54
+ });
55
+ const AllowanceKind = describe(Schema.Literals(["allow", "external"]), "`allow` is a path glob under `imports.allow`; `external` a package name under `imports.external`.");
56
+ const Entry = describe(Schema.String, "The entry as written, after alias expansion.");
57
+ export const SnapshotSlack = Schema.Struct({
58
+ node: describe(Schema.String, "The manifest node that wrote the entry — or, when `fragment` is set, the `defs` fragment it was written in."),
59
+ kind: AllowanceKind,
60
+ entry: Entry,
61
+ fragment: Schema.optionalKey(describe(Schema.String, "Present when the entry arrived through `use`. The nodes that referenced the fragment wrote one word, so the entry is reported once, against the fragment, rather than once per node.")),
62
+ of: Schema.optionalKey(describe(Schema.Finite, "With `fragment`: how many non-vacant nodes were granted the entry through it. None of them uses it.")),
63
+ });
64
+ export const SnapshotConcentration = Schema.Struct({
65
+ fragment: describe(Schema.String, "The `defs` fragment the entry was written in."),
66
+ kind: AllowanceKind,
67
+ entry: Entry,
68
+ usedAt: describe(Schema.Finite, "Nodes granted the entry through the fragment that use it."),
69
+ of: describe(Schema.Finite, "Non-vacant nodes granted the entry through the fragment."),
70
+ });
71
+ export const SnapshotVacancy = Schema.Struct({
72
+ node: describe(Schema.String, "The manifest node."),
73
+ allowances: describe(Schema.Finite, "Distinct entries the node wrote, `allow` and `external` together."),
74
+ });
75
+ // One objective's burn-down: what its ledger says, summed over its sectors.
76
+ export const SnapshotObjective = Schema.Struct({
77
+ id: describe(Schema.String, "The objective's id; its ledger is `<ledger>/<campaign>/<objective>.json`."),
78
+ phase: describe(Schema.NullOr(Schema.String), "The phase naming the objective, or `null` for one no phase names — in window everywhere."),
79
+ initial: describe(Schema.Finite, "Holdouts recorded as each sector entered the window, summed."),
80
+ allowed: describe(Schema.Finite, "Holdouts added since by `objectives concede` or a re-baseline, each with a concession."),
81
+ count: describe(Schema.Finite, "Holdouts in the ledger now, every sector summed."),
82
+ cleared: describe(Schema.Finite, "Holdouts removed by `objectives clear` because they stopped firing."),
83
+ closed: describe(Schema.Finite, "Holdouts still firing when a sector left the window — not progress."),
84
+ progress: describe(Schema.Finite, "`1 - count / (initial + allowed - closed)`: how much of everything ever ledgered has been paid down."),
85
+ lastCleared: describe(Schema.NullOr(Schema.String), "When a holdout last left the ledger, ISO 8601 — the stall clock's reading; `null` with no ledger."),
86
+ concessions: describe(Schema.Finite, "How many times a count was allowed to go up."),
87
+ complete: describe(Schema.Boolean, "No holdouts remain."),
88
+ ledgered: describe(Schema.Boolean, "Whether a ledger exists. An objective with none has been declared and not yet cleared."),
89
+ });
90
+ // One phase of the ladder, and how many sectors stand at it.
91
+ export const SnapshotPhase = Schema.Struct({
92
+ id: describe(Schema.String, "The phase's id."),
93
+ defined: describe(Schema.Boolean, "Whether the phase names criteria. An open phase has only an intent, and is last."),
94
+ sectors: describe(Schema.Finite, "How many sectors are derived to stand at this phase."),
95
+ });
96
+ // One sector: where it stands, and its residue toward its next phase.
97
+ export const SnapshotSector = Schema.Struct({
98
+ name: describe(Schema.String, "The sector's identity, as its perimeter names it."),
99
+ phase: describe(Schema.NullOr(Schema.String), "The phase the sector is derived to stand at, or `null` when it is past the last one."),
100
+ reached: describe(Schema.NullOr(Schema.String), "The furthest phase the sector's record says it has reached; `null` before its first `clear`."),
101
+ files: describe(Schema.Finite, "How many files the sector claims."),
102
+ residue: describe(Schema.Record(Schema.String, Schema.Finite), "One dimension per objective in window for the sector: its holdouts there, never summed."),
103
+ stalled: describe(Schema.Boolean, "Holdouts remain for the sector and nothing has been cleared, attested or noted within `staleAfter`."),
104
+ });
105
+ // One campaign: its objectives' burn-down, the distribution of its sectors
106
+ // over its phases, the legacy remainder, and what changed in its plan.
107
+ export const SnapshotCampaign = Schema.Struct({
108
+ id: describe(Schema.String, "The campaign's id; its ledgers are under `<ledger>/<id>/`."),
109
+ title: Schema.optionalKey(describe(Schema.String, "The campaign's title, when it states one.")),
110
+ owner: Schema.optionalKey(describe(Schema.String, "Who is running the campaign, as the manifest names them.")),
111
+ count: describe(Schema.Finite, "Holdouts across every objective and sector."),
112
+ progress: describe(Schema.Finite, "Cleared over everything ever ledgered, across the campaign's objectives."),
113
+ objectives: describe(Schema.Array(SnapshotObjective), "Every objective, in manifest order."),
114
+ phases: describe(Schema.Array(SnapshotPhase), "The ladder, in order, with how many sectors stand at each phase."),
115
+ sectors: describe(Schema.Array(SnapshotSector), "Every sector the perimeter births, by name."),
116
+ legacy: describe(Schema.Struct({
117
+ files: describe(Schema.Finite, "Files in the scope no sector claims."),
118
+ holdouts: describe(Schema.Finite, "Holdouts in the legacy, under the first phase's objectives — where a holdout moved out of a sector lands."),
119
+ }), "The unclaimed remainder of the scope, which stands at the first phase and is not a sink."),
120
+ plan: describe(Schema.Struct({
121
+ refined: describe(Schema.Array(Schema.String), "Phases refined since the last `clear`: an open phase that gained criteria, or a new one. Free."),
122
+ changed: describe(Schema.Array(Schema.String), "Defined phases whose definition changed since the last `clear` — what a reviewer reads every time."),
123
+ unreceipted: describe(Schema.Array(Schema.String), "Changed phases carrying no new concession; `check` fails on them."),
124
+ }), "What changed in the plan, refinements and changes apart."),
125
+ stalled: describe(Schema.Boolean, "Holdouts remain and nothing has been cleared, attested or noted within the campaign's `staleAfter`."),
126
+ complete: describe(Schema.Boolean, "No holdouts remain in any objective."),
127
+ onComplete: describe(Schema.Literals(["keep", "remove"]), "What the manifest asks once complete: keep the campaign as a guard, or remove it."),
128
+ ledgered: describe(Schema.Boolean, "Whether every objective has a ledger."),
129
+ });
130
+ export const Snapshot = Schema.Struct({
131
+ version: describe(Schema.Literal(SNAPSHOT_VERSION), "The shape of this document."),
132
+ manifest: describe(Schema.Struct({
133
+ path: describe(Path, "The file the policy was read from — the root file, when split with `include`."),
134
+ sha256: describe(Schema.String, "A hash of that file's bytes, so two snapshots can say whether the policy changed between them."),
135
+ }), "The policy this snapshot was taken against — the repository's own, or the one `--against` named."),
136
+ roots: describe(Schema.Array(Path), "The directories walked."),
137
+ files: describe(Schema.Finite, "Files walked."),
138
+ ok: describe(Schema.Boolean, "What `check` would exit with: true when no reportable violation, unresolved import, stale baseline entry or coverage shortfall exists."),
139
+ coverage: describe(Schema.Struct(Object.fromEntries(COVERAGE_FAMILIES.map((family) => [family, FamilyCoverage]))), "Per family, how many walked files it reaches. Structure counts enumerated folders only."),
140
+ conformance: describe(Schema.Struct(Object.fromEntries(CONFORMANCE_MEASURES.map((measure) => [measure, MeasureCount]))), "Per measure, the count `check` holds to the manifest's `limits.conformance`: residue files, vacant nodes, slack allowances, and fragment entries used at fewer than half the nodes granted them. The lists below name what each counts."),
141
+ residue: describe(Schema.Struct({
142
+ files: describe(Schema.Array(Path), "Files no family reaches, sorted."),
143
+ folders: describe(Schema.Array(Path), "Folders every walked file of which is residue, each the topmost such folder."),
144
+ }), "What the policy has nothing to say about. A file in an open folder under no allowlist is claimed, not policed, and counts."),
145
+ vacant: describe(Schema.Array(SnapshotVacancy), "Nodes that state an import allowlist and select no walked file, in manifest order. Every allowance on one is unused by construction, so none is counted as slack; the node is a tier declared ahead of its first file, or a pattern that no longer matches. Residue is files no node reaches; this is nodes no file reaches."),
146
+ violations: describe(Schema.Array(SnapshotViolation), "Every finding, baselined ones included, ordered so the ones cheapest to fix come first: by the height of the violated target in the import graph, leaves first."),
147
+ unresolved: describe(Schema.Array(Schema.Struct({ file: Path, specifier: Schema.String, detail: Schema.String })), "Imports the resolver could not turn into a file. Every rule about one enforces nothing."),
148
+ stale: describe(Schema.Array(Schema.String), "Baseline entries the code no longer produces."),
149
+ baseline: describe(Schema.Struct({
150
+ size: describe(Schema.Finite, "Entries in the baseline file."),
151
+ }), "The debt the policy is carrying. The ratchet: it may only shrink."),
152
+ cycles: describe(Schema.Finite, "Strongly connected components of more than one file, or a file importing itself, anywhere in the walked graph — in a cycles rule's scope or not."),
153
+ slack: describe(Schema.Array(SnapshotSlack), "Allowances no observed import uses, in manifest order, vacant nodes excluded. A manifest inferred from the tree has none on the day it is written; every entry here is permission nothing needs. An entry that arrived through `use` is reported once, against the fragment, and only when no node granted it uses it."),
154
+ concentration: describe(Schema.Array(SnapshotConcentration), "Fragment entries used at some of the nodes granted them and not the rest. Not slack — the fragment's line is needed somewhere — but a per-file permission written as a many-node allowance, which is what an allowlist widened to make one build green looks like."),
155
+ adoption: describe(Schema.Struct({
156
+ unrestricted: describe(Schema.Array(Schema.String), "Nodes that say `unrestricted: true`."),
157
+ partial: describe(Schema.Array(Schema.String), "Nodes that say `partial: true`."),
158
+ }), 'The tiers that said "not tightened yet", by name; `limits` caps how many may.'),
159
+ campaigns: describe(Schema.Array(SnapshotCampaign), "Every campaign the manifest declares, in manifest order, with its burn-down. Campaign hits are not counted in `coverage` or `residue`: a campaign is scoped by construction."),
160
+ });
161
+ // Decodes a document some other run wrote — the base of a pull request, a
162
+ // stored one — refusing a key the shape does not declare, so a consumer never
163
+ // reads a field that a later version renamed.
164
+ export const decodeSnapshot = Schema.decodeUnknownResult(Snapshot, {
165
+ errors: "all",
166
+ onExcessProperty: "error",
167
+ });
168
+ // The document's shape as a JSON Schema, generated from the same codec, so
169
+ // the two cannot disagree. Published beside the manifest's.
170
+ export const snapshotJsonSchema = () => {
171
+ const generated = Schema.toJsonSchemaDocument(Snapshot);
172
+ return {
173
+ $schema: "https://json-schema.org/draft/2020-12/schema",
174
+ $id: SNAPSHOT_SCHEMA_ID,
175
+ title: "Conformance snapshot",
176
+ description: "How far a repository's tree is from its architecture manifest, as `architecture conformance --json` reports it. See https://dataquail.github.io/goodbones/architecture-rules/enforcement/conformance/.",
177
+ ...generated.schema,
178
+ ...(Object.keys(generated.definitions).length === 0 ? {} : { $defs: generated.definitions }),
179
+ };
180
+ };
181
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/domain/snapshot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"violation.js","sourceRoot":"","sources":["../../../src/domain/violation.ts"],"names":[],"mappings":"AAcA,+EAA+E;AAC/E,gFAAgF;AAChF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAU,EAAE,CAC5D,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE1F,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAU,EAAE,CAC5D,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC"}
1
+ {"version":3,"file":"violation.js","sourceRoot":"","sources":["../../../src/domain/violation.ts"],"names":[],"mappings":"AAiBA,+EAA+E;AAC/E,gFAAgF;AAChF,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAU,EAAE,CAC5D,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE1F,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAoB,EAAU,EAAE,CAC5D,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC"}
@@ -3,20 +3,39 @@
3
3
  // manifest into a policy. A host composes these with a language pack and the
4
4
  // live file system; a language pack implements the ports. Nothing here names a
5
5
  // language. The fakes are under `@goodbones/core/testing`.
6
+ //
7
+ // A family the core does not own — `campaigns`, in @goodbones/campaigns —
8
+ // arrives as a `PolicyExtension` the host passes to `loadPolicy`: it claims
9
+ // its own manifest keys, decodes them with its own codec, and reads its state
10
+ // back off `LoadedPolicy.extensions`. What such a family needs from here is
11
+ // exported deliberately: the glob primitives its lowering must match
12
+ // character for character, the pattern vocabulary its detectors share with
13
+ // the other families, and `lowerManifest` itself, which an `endState` runs a
14
+ // sector-relative tree through.
6
15
  export { baselineOf, decodeBaseline, EMPTY_BASELINE, makeBaselineFilter, serializeBaseline, staleEntriesOf, unbaselined, } from "./core/baseline.js";
7
- export { coverageOf, coverageShortfalls, fractionsOf, } from "./core/coverage.js";
16
+ export { coverageOf, coverageShortfalls, fractionsOf, reachOf, residueOf, vacancyOf, } from "./core/coverage.js";
8
17
  export { compileExportRule, compileExportRules, evaluateBindingEdge, evaluateSelectedBindings, exportRulesFailingTheirProbe, exportRulesSelecting, } from "./core/exports.js";
9
- export { compileGraphRules, EMPTY_GRAPH_RULES, evaluateGraph, graphRulesFailingTheirProbe, hasGraphRules, } from "./core/graph.js";
10
- export { compileImportRule, compileImportRules, evaluateImportEdge, evaluateSelectedEdge, probeTargetOf, rulesFailingTheirProbe, rulesSelecting, } from "./core/imports.js";
18
+ export { compileGraphRules, cyclesIn, EMPTY_GRAPH_RULES, evaluateGraph, graphRulesFailingTheirProbe, hasGraphRules, heightOf, } from "./core/graph.js";
19
+ export { compileImportRule, compileImportRules, evaluateImportEdge, evaluateResolvedEdge, evaluateSelectedEdge, probeTargetOf, rulesFailingTheirProbe, rulesSelecting, } from "./core/imports.js";
11
20
  export { compileMemberRules, evaluateMemberSite, memberRulesFailingTheirProbe, memberRulesSelecting, } from "./core/members.js";
12
- export { compileStructure, EMPTY_STRUCTURE, evaluateStructure, requiredSiblingsOf, structureRulesFailingTheirProbe, } from "./core/structure.js";
21
+ export { compilePatterns, firstFromMatch, matchesAny, sourcesOf, targetAllowed, validateTargetPatterns, } from "./core/patterns.js";
22
+ export { slackOf, } from "./core/slack.js";
23
+ export { compileStructure, EMPTY_STRUCTURE, evaluateStructure, requiredSiblingsOf, siblingsOf, structureRulesFailingTheirProbe, } from "./core/structure.js";
13
24
  export { compileSurfaceRules, evaluateSurface, surfaceRulesFailingTheirProbe, surfaceRulesSelecting, } from "./core/surface.js";
14
- export { ConfigInvalid, ImportUnresolved, PatternInvalid, ScopeInvalid, } from "./domain/architecture-error.js";
25
+ export { BindingKind, DeclarationKind, ImportProbeTarget, MemberSubject, PatternList, } from "./domain/architecture-config.js";
26
+ export { ConfigInvalid, ImportUnresolved, PatternInvalid, ReportUnavailable, ScopeInvalid, } from "./domain/architecture-error.js";
27
+ export { renderManifestPath, } from "./domain/manifest-location.js";
28
+ export { CONFORMANCE_MEASURES, decodeSnapshot, SNAPSHOT_SCHEMA_ID, SNAPSHOT_VERSION, snapshotJsonSchema, Snapshot as SnapshotSchema, } from "./domain/snapshot.js";
15
29
  export { fingerprintOf, formatMessage, } from "./domain/violation.js";
16
30
  export { makeFileSystemLive } from "./infrastructure/file-system-live.js";
17
- export { DEFAULT_CONFIG_FILENAME, readManifestFile } from "./infrastructure/manifest-file.js";
18
- export { listSourceFiles } from "./infrastructure/walk.js";
31
+ export { findManifestFile, formatManifestYaml, MANIFEST_FILENAMES, readManifestFile, } from "./infrastructure/manifest-file.js";
32
+ export { expandIncludes, } from "./infrastructure/manifest-include.js";
33
+ export { listPackageRoots, listSourceFiles, listWorkspaceProjects, } from "./infrastructure/walk.js";
19
34
  export { loadPolicy } from "./load/policy.js";
20
- export { lowerManifest } from "./manifest/compile.js";
21
- export { decodeManifest, Manifest as ManifestSchema, } from "./manifest/manifest.js";
35
+ export { CONVENTIONS, expandAliases, lowerManifest, } from "./manifest/compile.js";
36
+ export { expandManifest, originOf, } from "./manifest/expand.js";
37
+ export { anchored, globToRegExp, globToRegexSource, prefixed, } from "./manifest/glob.js";
38
+ export { candidatesOf, inferManifest, singularOf, } from "./manifest/infer.js";
39
+ export { MANIFEST_NODE_SCHEMA_ID, MANIFEST_SCHEMA_ID, manifestJsonSchema, manifestNodeJsonSchema, } from "./manifest/json-schema.js";
40
+ export { decodeManifest, decodeManifestTree, globsOf, Manifest as ManifestSchema, SurfaceConvention, } from "./manifest/manifest.js";
22
41
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,+EAA+E;AAC/E,2DAA2D;AAC3D,OAAO,EAGL,UAAU,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAIL,UAAU,EACV,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,4BAA4B,EAC5B,oBAAoB,GAGrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EAEb,2BAA2B,EAC3B,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EAEpB,aAAa,EACb,sBAAsB,EACtB,cAAc,GAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,+BAA+B,GAChC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,mBAAmB,EACnB,eAAe,EACf,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAoB3B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,gCAAgC,CAAC;AAOxC,OAAO,EACL,aAAa,EACb,aAAa,GAGd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAuB,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAqB,UAAU,EAAwB,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAqB,aAAa,EAAsB,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAEL,cAAc,EAGd,QAAQ,IAAI,cAAc,GAC3B,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,16 @@ export const makeFileSystemFake = (present, contents = {}) => {
5
5
  return {
6
6
  exists: (repoRelativePath) => paths.has(repoRelativePath),
7
7
  readText: (repoRelativePath) => contents[repoRelativePath] ?? null,
8
+ list: (repoRelativeDir) => {
9
+ const prefix = repoRelativeDir === "" ? "" : `${repoRelativeDir}/`;
10
+ return [
11
+ ...new Set([...paths]
12
+ .filter((one) => one.startsWith(prefix))
13
+ .map((one) => one.slice(prefix.length).split("/")[0] ?? "")),
14
+ ]
15
+ .filter((one) => one !== "")
16
+ .sort();
17
+ },
8
18
  };
9
19
  };
10
20
  //# sourceMappingURL=file-system-fake.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system-fake.js","sourceRoot":"","sources":["../../../src/infrastructure/file-system-fake.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAyB,EACzB,QAAQ,GAAqC,EAAE,EACnC,EAAE;IACd,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO;QACL,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACzD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI;KACnE,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"file-system-fake.js","sourceRoot":"","sources":["../../../src/infrastructure/file-system-fake.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,OAAyB,EACzB,QAAQ,GAAqC,EAAE,EACnC,EAAE;IACd,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO;QACL,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACzD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI;QAClE,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,eAAe,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC;YACnE,OAAO;gBACL,GAAG,IAAI,GAAG,CACR,CAAC,GAAG,KAAK,CAAC;qBACP,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;qBACvC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAC9D;aACF;iBACE,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;iBAC3B,IAAI,EAAE,CAAC;QACZ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { existsSync, readFileSync } from "node:fs";
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import * as path from "node:path";
3
3
  // One lint run asks about the same sibling many times — every handler in a
4
4
  // folder resolves the same `../../infrastructure/...` shape — so the answers are
@@ -22,6 +22,14 @@ export const makeFileSystemLive = (repoRoot) => {
22
22
  return null;
23
23
  }
24
24
  },
25
+ list: (repoRelativeDir) => {
26
+ try {
27
+ return readdirSync(path.resolve(repoRoot, repoRelativeDir)).sort();
28
+ }
29
+ catch {
30
+ return [];
31
+ }
32
+ },
25
33
  };
26
34
  };
27
35
  //# sourceMappingURL=file-system-live.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system-live.js","sourceRoot":"","sources":["../../../src/infrastructure/file-system-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,2EAA2E;AAC3E,iFAAiF;AACjF,oCAAoC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAc,EAAE;IACjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YACxC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACpE,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"file-system-live.js","sourceRoot":"","sources":["../../../src/infrastructure/file-system-live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,2EAA2E;AAC3E,iFAAiF;AACjF,oCAAoC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAgB,EAAc,EAAE;IACjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,MAAM,CAAC;YACxC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;YACpE,KAAK,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,CAAC;YACxE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE;YACxB,IAAI,CAAC;gBACH,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}