@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
@@ -0,0 +1,169 @@
1
+ import * as Schema from "effect/Schema";
2
+ import { Manifest } from "./manifest.js";
3
+ // The manifest's shape as a JSON Schema, generated from the same codec that
4
+ // decodes it, so the two cannot disagree. A YAML file names it in a header
5
+ // comment and a JSON file in a `$schema` key; either way the editor completes
6
+ // keys and flags a misspelled one before the loader ever runs.
7
+ //
8
+ // Three things the codec does not know are added here: the `defs` map, the
9
+ // `{ use }` reference form that may stand in for any object, and the
10
+ // `{ include }` form that may stand in for any object or list — all belong to
11
+ // the passes that run before decoding.
12
+ export const MANIFEST_SCHEMA_ID = "https://dataquail.github.io/goodbones/schema/architecture.schema.json";
13
+ // The schema an included file names: one node of the tree, with the two keys
14
+ // a file of its own may carry at the top.
15
+ export const MANIFEST_NODE_SCHEMA_ID = "https://dataquail.github.io/goodbones/schema/architecture-node.schema.json";
16
+ const entriesOf = (value) => Object.entries(value);
17
+ const isObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
18
+ const isList = (value) => Array.isArray(value);
19
+ // The generator names the recursive schemas after its own internal wrappers,
20
+ // numbered in the order it meets them. A stable name is what a `$ref` in an
21
+ // error message or a docs page can point at: the tree's node, and an
22
+ // objective's detector — told apart by what each declares, since the order
23
+ // moves with the manifest's shape.
24
+ const definitionNameOf = (name, definition) => {
25
+ if (!/^(Suspend|Union)_\d*$/.test(name))
26
+ return name;
27
+ const text = JSON.stringify(definition);
28
+ if (text.includes('"children"'))
29
+ return "ManifestNode";
30
+ if (text.includes('"all"'))
31
+ return "Detector";
32
+ return name;
33
+ };
34
+ const DEFINITION_NAMES = {};
35
+ const USE_REFERENCE = "#/$defs/Use";
36
+ const INCLUDE_REFERENCE = "#/$defs/Include";
37
+ const Use = {
38
+ type: "object",
39
+ description: "A reference to a fragment under the top-level `defs`. Replaced by a copy of the fragment before the manifest is decoded; any other key written beside `use` overrides the fragment's key of the same name.",
40
+ properties: { use: { type: "string" } },
41
+ required: ["use"],
42
+ };
43
+ const Include = {
44
+ type: "object",
45
+ description: "A reference to another YAML or JSON file, relative to this one. Replaced by that file's whole value before the manifest is decoded; a list item naming a file that holds a list is spliced in. Nothing may be written beside `include`.",
46
+ properties: { include: { type: "string" } },
47
+ required: ["include"],
48
+ additionalProperties: false,
49
+ };
50
+ // Every object schema below the root becomes "this object, or a `use` of a
51
+ // fragment shaped like it, or an `include` of a file holding one", and every
52
+ // list schema "this list, or an `include` of a file holding one". The
53
+ // expansion passes replace a reference wherever it stands, so the schema
54
+ // admits one wherever the value may stand.
55
+ const admitReferences = (value) => {
56
+ if (Array.isArray(value))
57
+ return value.map(admitReferences);
58
+ if (!isObject(value))
59
+ return value;
60
+ const rebuilt = {};
61
+ for (const [key, entry] of entriesOf(value)) {
62
+ if (key === "$ref" && typeof entry === "string") {
63
+ const name = entry.replace(/^#\/\$defs\//, "");
64
+ rebuilt[key] = `#/$defs/${DEFINITION_NAMES[name] ?? name}`;
65
+ }
66
+ else {
67
+ rebuilt[key] = admitReferences(entry);
68
+ }
69
+ }
70
+ if (rebuilt.type === "object" && "properties" in rebuilt) {
71
+ return { anyOf: [{ $ref: USE_REFERENCE }, { $ref: INCLUDE_REFERENCE }, rebuilt] };
72
+ }
73
+ if (rebuilt.type === "array") {
74
+ return { anyOf: [{ $ref: INCLUDE_REFERENCE }, rebuilt] };
75
+ }
76
+ return rebuilt;
77
+ };
78
+ const DEFS_PROPERTY = {
79
+ type: "object",
80
+ description: 'Named fragments, referenced elsewhere in the manifest as `{ use: "<name>" }`. A fragment may itself contain `use`. Every file\'s `defs` share one namespace.',
81
+ additionalProperties: true,
82
+ };
83
+ const SCHEMA_PROPERTY = {
84
+ type: "string",
85
+ description: "For editors. Ignored by the loader.",
86
+ };
87
+ // A `Record` whose keys are checked — the campaign and objective ids —
88
+ // generates as `patternProperties`, which alone admits any other key beside
89
+ // the matching ones. Closed here, so an editor flags an id in the wrong
90
+ // shape as the loader would.
91
+ const withKeyPatterns = (value) => {
92
+ if (Array.isArray(value))
93
+ return value.map(withKeyPatterns);
94
+ if (!isObject(value))
95
+ return value;
96
+ const rebuilt = {};
97
+ for (const [childKey, entry] of entriesOf(value))
98
+ rebuilt[childKey] = withKeyPatterns(entry);
99
+ if (rebuilt.type === "object" &&
100
+ "patternProperties" in rebuilt &&
101
+ !("additionalProperties" in rebuilt)) {
102
+ rebuilt.additionalProperties = false;
103
+ }
104
+ return rebuilt;
105
+ };
106
+ export const manifestJsonSchema = (options = {}) => {
107
+ const whole = options.extensions === undefined || options.extensions.length === 0
108
+ ? Manifest
109
+ : Schema.Struct(Object.assign({}, Manifest.fields, ...options.extensions));
110
+ const generated = Schema.toJsonSchemaDocument(whole);
111
+ const { properties, ...root } = generated.schema;
112
+ if (properties === undefined || !isObject(properties)) {
113
+ throw new Error("the manifest schema generated with no properties");
114
+ }
115
+ for (const [name, definition] of entriesOf(generated.definitions)) {
116
+ DEFINITION_NAMES[name] = definitionNameOf(name, definition);
117
+ }
118
+ const definitions = {};
119
+ for (const [name, definition] of entriesOf(generated.definitions)) {
120
+ definitions[DEFINITION_NAMES[name] ?? name] = admitReferences(definition);
121
+ }
122
+ return {
123
+ $schema: "https://json-schema.org/draft/2020-12/schema",
124
+ $id: MANIFEST_SCHEMA_ID,
125
+ title: "Architecture manifest",
126
+ description: "One manifest of a repository's architecture, read by @goodbones/cli and @goodbones/oxlint. See https://dataquail.github.io/goodbones/architecture-rules/manifest/.",
127
+ ...root,
128
+ properties: {
129
+ $schema: SCHEMA_PROPERTY,
130
+ defs: DEFS_PROPERTY,
131
+ ...Object.fromEntries(entriesOf(properties).map(([key, value]) => [key, withKeyPatterns(admitReferences(value))])),
132
+ },
133
+ $defs: { ...definitions, Use, Include },
134
+ };
135
+ };
136
+ // One node of the tree as a file of its own — what a per-package
137
+ // `architecture.yaml` that the root manifest `include`s is shaped like. The
138
+ // node's object form, with the `$schema` and `defs` keys such a file may carry
139
+ // at the top, over the same definitions as the whole manifest.
140
+ export const manifestNodeJsonSchema = (options = {}) => {
141
+ const whole = manifestJsonSchema(options);
142
+ const definitions = whole.$defs;
143
+ if (definitions === undefined || !isObject(definitions)) {
144
+ throw new Error("the manifest schema generated with no definitions");
145
+ }
146
+ const node = definitions.ManifestNode;
147
+ const variants = node !== undefined && isObject(node) ? node.anyOf : undefined;
148
+ const object = variants !== undefined && isList(variants)
149
+ ? variants.find((variant) => isObject(variant) && variant.type === "object")
150
+ : undefined;
151
+ if (object === undefined || !isObject(object)) {
152
+ throw new Error("the manifest schema generated with no object form of a node");
153
+ }
154
+ const { $id: _id, $schema: _schema, ...rest } = object;
155
+ return {
156
+ $schema: "https://json-schema.org/draft/2020-12/schema",
157
+ $id: MANIFEST_NODE_SCHEMA_ID,
158
+ title: "Architecture manifest node",
159
+ description: "One node of an architecture manifest's tree, as a file the manifest includes. See https://dataquail.github.io/goodbones/architecture-rules/manifest/#splitting-the-manifest-include.",
160
+ ...rest,
161
+ properties: {
162
+ $schema: SCHEMA_PROPERTY,
163
+ defs: DEFS_PROPERTY,
164
+ ...(rest.properties !== undefined && isObject(rest.properties) ? rest.properties : {}),
165
+ },
166
+ $defs: definitions,
167
+ };
168
+ };
169
+ //# sourceMappingURL=json-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../../../src/manifest/json-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,+DAA+D;AAC/D,EAAE;AACF,2EAA2E;AAC3E,qEAAqE;AACrE,8EAA8E;AAC9E,uCAAuC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAC7B,uEAAuE,CAAC;AAE1E,6EAA6E;AAC7E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAClC,4EAA4E,CAAC;AAK/E,MAAM,SAAS,GAAG,CAAC,KAAiB,EAA+C,EAAE,CACnF,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAExB,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAuB,EAAE,CACzD,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,MAAM,GAAG,CAAC,KAAgB,EAAqC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE7F,6EAA6E;AAC7E,4EAA4E;AAC5E,qEAAqE;AACrE,2EAA2E;AAC3E,mCAAmC;AACnC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,UAAqB,EAAU,EAAE;IACvE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,cAAc,CAAC;IACvD,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAA2B,EAAE,CAAC;AAEpD,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C,MAAM,GAAG,GAAe;IACtB,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,4MAA4M;IAC9M,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IACvC,QAAQ,EAAE,CAAC,KAAK,CAAC;CAClB,CAAC;AAEF,MAAM,OAAO,GAAe;IAC1B,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,yOAAyO;IAC3O,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;IAC3C,QAAQ,EAAE,CAAC,SAAS,CAAC;IACrB,oBAAoB,EAAE,KAAK;CAC5B,CAAC;AAEF,2EAA2E;AAC3E,6EAA6E;AAC7E,sEAAsE;AACtE,yEAAyE;AACzE,2CAA2C;AAC3C,MAAM,eAAe,GAAG,CAAC,KAAgB,EAAa,EAAE;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,IAAI,GAAG,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,WAAW,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;QACzD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IACpF,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAe;IAChC,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,8JAA8J;IAChK,oBAAoB,EAAE,IAAI;CAC3B,CAAC;AAEF,MAAM,eAAe,GAAe;IAClC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,qCAAqC;CACnD,CAAC;AAEF,uEAAuE;AACvE,4EAA4E;AAC5E,wEAAwE;AACxE,6BAA6B;AAC7B,MAAM,eAAe,GAAG,CAAC,KAAgB,EAAa,EAAE;IACtD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7F,IACE,OAAO,CAAC,IAAI,KAAK,QAAQ;QACzB,mBAAmB,IAAI,OAAO;QAC9B,CAAC,CAAC,sBAAsB,IAAI,OAAO,CAAC,EACpC,CAAC;QACD,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAWF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAO,GAA8B,EAAE,EAAc,EAAE;IACxF,MAAM,KAAK,GACT,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;QACjE,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAGlD,CAAC;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC;IACjD,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,gBAAgB,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,WAAW,GAA8B,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,OAAO,EAAE,8CAA8C;QACvD,GAAG,EAAE,kBAAkB;QACvB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,oKAAoK;QACtK,GAAG,IAAI;QACP,UAAU,EAAE;YACV,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,aAAa;YACnB,GAAG,MAAM,CAAC,WAAW,CACnB,SAAS,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,eAAe,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5F;SACF;QACD,KAAK,EAAE,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE;KACxC,CAAC;AACJ,CAAC,CAAC;AAEF,iEAAiE;AACjE,4EAA4E;AAC5E,+EAA+E;AAC/E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAO,GAA8B,EAAE,EAAc,EAAE;IAC5F,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;IAChC,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/E,MAAM,MAAM,GACV,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC;QACxC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC5E,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;IACvD,OAAO;QACL,OAAO,EAAE,8CAA8C;QACvD,GAAG,EAAE,uBAAuB;QAC5B,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,sLAAsL;QACxL,GAAG,IAAI;QACP,UAAU,EAAE;YACV,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,aAAa;YACnB,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;SACvF;QACD,KAAK,EAAE,WAAW;KACnB,CAAC;AACJ,CAAC,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import * as Result from "effect/Result";
2
2
  import * as Schema from "effect/Schema";
3
+ import * as SchemaIssue from "effect/SchemaIssue";
3
4
  import { DeclarationKind, ResolveConfig } from "../domain/architecture-config.js";
4
5
  import { ConfigInvalid } from "../domain/architecture-error.js";
6
+ import { renderManifestPath, } from "../domain/manifest-location.js";
7
+ import { expandManifest, originOf } from "./expand.js";
5
8
  // A manifest is a tree of nodes keyed by path pattern, where everything the
6
9
  // architecture says about a part of the tree is written at that part of the tree.
7
10
  // A node is a folder (it has `children` and/or `files`) or a file (its key names
@@ -88,7 +91,7 @@ const Members = Schema.Struct({
88
91
  // is about; exactly one demand says what is required of them, and none means
89
92
  // `forbid` — a selected site is the violation. Stated on a folder it covers
90
93
  // the subtree, like `members`.
91
- const SurfaceConvention = Schema.Union([
94
+ export const SurfaceConvention = Schema.Union([
92
95
  Schema.Literals(["kebab-case", "camelCase", "PascalCase", "snake_case"]),
93
96
  Schema.Struct({ regex: Schema.String }),
94
97
  ]);
@@ -195,11 +198,38 @@ const CoverageFloors = Schema.Struct({
195
198
  surface: Schema.optionalKey(Schema.Finite),
196
199
  graph: Schema.optionalKey(Schema.Finite),
197
200
  });
201
+ // Ceilings on the conformance measures — what `architecture conformance`
202
+ // counts and `check` does not otherwise gate: the files no family reaches,
203
+ // the nodes no file is under, the allowances nothing imports through, and
204
+ // the fragment entries used at fewer than half the nodes granted them. Each
205
+ // is a count that only goes down: lowered when the number falls, never
206
+ // raised to make a red run green.
207
+ const ConformanceCeilings = Schema.Struct({
208
+ residue: Schema.optionalKey(Schema.Finite),
209
+ vacant: Schema.optionalKey(Schema.Finite),
210
+ slack: Schema.optionalKey(Schema.Finite),
211
+ concentration: Schema.optionalKey(Schema.Finite),
212
+ });
198
213
  const Limits = Schema.Struct({
199
214
  unrestricted: Schema.optionalKey(Schema.Finite),
200
215
  partial: Schema.optionalKey(Schema.Finite),
201
216
  coverage: Schema.optionalKey(CoverageFloors),
217
+ conformance: Schema.optionalKey(ConformanceCeilings),
218
+ });
219
+ const decodeTree = Schema.decodeUnknownResult(Schema.Record(Schema.String, ManifestNodeSchema), {
220
+ errors: "all",
221
+ onExcessProperty: "error",
202
222
  });
223
+ // A tree of nodes, as an `endState` is once rebased: decoded like the
224
+ // manifest's own, every issue listed.
225
+ export const decodeManifestTree = (raw) => {
226
+ const decoded = decodeTree(raw);
227
+ return Result.isFailure(decoded)
228
+ ? Result.fail(flatten(decoded.failure.issue)
229
+ .issues.map((issue) => `${renderManifestPath(pathOf(issue))}: ${issue.message}`)
230
+ .join("\n"))
231
+ : Result.succeed(decoded.success);
232
+ };
203
233
  export const Manifest = Schema.Struct({
204
234
  // How an import specifier becomes a file. Every pattern below is matched
205
235
  // against a resolved path, so this is what makes the rest of the file mean
@@ -220,7 +250,12 @@ export const Manifest = Schema.Struct({
220
250
  tree: Schema.Record(Schema.String, ManifestNodeSchema),
221
251
  });
222
252
  export const globsOf = (globs) => typeof globs === "string" ? [globs] : globs;
223
- const decode = Schema.decodeUnknownResult(Manifest);
253
+ // Every issue, not the first: a manifest is edited by hand, and the reader
254
+ // fixing one line wants to know about the other three. A key the schema does
255
+ // not declare is refused rather than dropped — a misspelled `matchNot` that
256
+ // decoded to nothing would be a rule quietly enforcing less than it says.
257
+ const decode = Schema.decodeUnknownResult(Manifest, { errors: "all", onExcessProperty: "error" });
258
+ const flatten = SchemaIssue.makeFormatterStandardSchemaV1();
224
259
  const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
225
260
  const isList = (value) => Array.isArray(value);
226
261
  // The three resolver options that used to sit on `resolve` itself, when every
@@ -295,9 +330,96 @@ const normalizeLegacyMembers = (input) => {
295
330
  const tree = Object.fromEntries(Object.entries(input.tree).map(([key, value]) => [key, node(key, value)]));
296
331
  return { input: { ...input, tree }, notices };
297
332
  };
298
- export const decodeManifest = (configPath, input) => {
299
- const resolve = normalizeLegacyResolve(input);
333
+ const fileLabelOf = (configPath) => configPath.split(/[\\/]/).at(-1) ?? configPath;
334
+ // A position carries its own file when the value was written in a file the
335
+ // manifest `include`d; otherwise it is in the manifest file itself.
336
+ const positionOf = (file, locate, path) => {
337
+ const found = locate?.(path) ?? null;
338
+ return found === null
339
+ ? null
340
+ : `${found.file ?? file}:${String(found.line)}:${String(found.column)}`;
341
+ };
342
+ // One line per issue: where in the file, which path, what was wrong — and,
343
+ // when the value came in through a `use`, the reference that pulled it in,
344
+ // since the fragment's own line may sit far from where the reader is looking.
345
+ const describeIssue = (configPath, locate, substitutions, path, detail) => {
346
+ const file = fileLabelOf(configPath);
347
+ const origin = originOf(substitutions, path);
348
+ const at = positionOf(file, locate, origin.path);
349
+ const via = origin.via.map(({ at: ref, name }) => {
350
+ const position = positionOf(file, locate, ref);
351
+ return `via \`use: ${JSON.stringify(name)}\`${position === null ? "" : ` at ${position}`}`;
352
+ });
353
+ return (` ${at === null ? "" : `${at} `}${renderManifestPath(origin.path)}: ${detail}` +
354
+ (via.length === 0 ? "" : ` (${via.join(", ")})`));
355
+ };
356
+ // The standard-schema formatter flattens the issue tree to `{ path, message }`
357
+ // pairs; a path segment may arrive wrapped as `{ key }`.
358
+ const pathOf = (issue) => (issue.path ?? []).map((segment) => (typeof segment === "object" ? segment.key : segment));
359
+ export const decodeManifest = (configPath, input, options = {}) => {
360
+ const expanded = expandManifest(input);
361
+ if (Result.isFailure(expanded)) {
362
+ return Result.fail(new ConfigInvalid({
363
+ configPath,
364
+ detail: "the manifest does not expand:\n" +
365
+ describeIssue(configPath, options.locate, [], expanded.failure.path, expanded.failure.detail),
366
+ }));
367
+ }
368
+ const { substitutions, value } = expanded.success;
369
+ const extensions = options.extensions ?? [];
370
+ const describe = (path, detail) => describeIssue(configPath, options.locate, substitutions, path, detail);
371
+ // The keys a family the core does not own claims are split off here. What
372
+ // is left is decoded by the core's codec with excess properties refused, so
373
+ // a key nobody claims is still the misspelling it always was.
374
+ const claimed = new Map();
375
+ for (const extension of extensions) {
376
+ for (const key of extension.manifestKeys) {
377
+ const already = claimed.get(key);
378
+ if (already !== undefined) {
379
+ return Result.fail(new ConfigInvalid({
380
+ configPath,
381
+ detail: `two loaded families both claim the manifest key \`${key}\` ` +
382
+ `("${already}" and "${extension.id}"). Load one of them.`,
383
+ }));
384
+ }
385
+ claimed.set(key, extension.id);
386
+ }
387
+ }
388
+ const core = isRecord(value)
389
+ ? Object.fromEntries(Object.entries(value).filter(([key]) => !claimed.has(key)))
390
+ : value;
391
+ const resolve = normalizeLegacyResolve(core);
300
392
  const members = normalizeLegacyMembers(resolve.input);
301
- return Result.map(Result.mapError(decode(members.input), (issue) => new ConfigInvalid({ configPath, detail: String(issue) })), (manifest) => ({ manifest, notices: [...resolve.notices, ...members.notices] }));
393
+ const decoded = decode(members.input);
394
+ if (Result.isFailure(decoded)) {
395
+ const lines = flatten(decoded.failure.issue).issues.map((issue) => describeIssue(configPath, options.locate, substitutions, pathOf(issue), issue.message));
396
+ return Result.fail(new ConfigInvalid({
397
+ configPath,
398
+ detail: `the manifest does not decode:\n${lines.join("\n")}`,
399
+ }));
400
+ }
401
+ // Each family decodes its own slice, and renders its issues the way the
402
+ // core renders its own. One family's failure is reported on its own: the
403
+ // core's decode already succeeded, so there is nothing to collect it with.
404
+ const decodedExtensions = new Map();
405
+ for (const extension of extensions) {
406
+ const slice = isRecord(value)
407
+ ? Object.fromEntries(extension.manifestKeys.flatMap((key) => (key in value ? [[key, value[key]]] : [])))
408
+ : {};
409
+ const result = extension.decode(slice, describe);
410
+ if (Result.isFailure(result)) {
411
+ return Result.fail(new ConfigInvalid({
412
+ configPath,
413
+ detail: `the manifest does not decode:\n${result.failure.join("\n")}`,
414
+ }));
415
+ }
416
+ decodedExtensions.set(extension.id, result.success);
417
+ }
418
+ return Result.succeed({
419
+ manifest: decoded.success,
420
+ extensions: decodedExtensions,
421
+ notices: [...resolve.notices, ...members.notices],
422
+ substitutions,
423
+ });
302
424
  };
303
425
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/manifest/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/manifest/manifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ // A campaign's `syntax` term asks a question the facts cannot answer: does
2
+ // this file contain an expression of this shape? A syntax matcher parses one
3
+ // file and finds every node matching a rule, returning the matched text, what
4
+ // each metavariable captured, where it sits, and the named declaration it
5
+ // sits in. The rule object is the engine's own — ast-grep's, for the one
6
+ // matcher that exists — and is carried opaquely; the matcher validates it.
7
+ //
8
+ // The matcher knows nothing about imports. Narrowing a capture by what its
9
+ // identifier is bound to is done in the core, against the file's facts and
10
+ // the resolver, so a second engine has only this port to implement.
11
+ export {};
12
+ //# sourceMappingURL=syntax-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax-matcher.js","sourceRoot":"","sources":["../../../src/ports/syntax-matcher.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,oEAAoE"}
@@ -4,4 +4,5 @@
4
4
  export { makeFactExtractorFake } from "./infrastructure/fact-extractor-fake.js";
5
5
  export { makeFileSystemFake } from "./infrastructure/file-system-fake.js";
6
6
  export { makeModuleResolverFake } from "./infrastructure/module-resolver-fake.js";
7
+ export { makeSyntaxMatcherFake } from "./infrastructure/syntax-matcher-fake.js";
7
8
  //# sourceMappingURL=testing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,0CAA0C;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../src/testing.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,0CAA0C;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAoB,MAAM,yCAAyC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodbones/core",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0-beta.11",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Architecture policy as one manifest of your repository, language-agnostic: the manifest schema, the evaluators for imports, exports, members, surface, structure and the import graph, the ports a language pack implements, and the loader that turns a manifest into a policy every rule of which has proven it can fire.",
@@ -33,20 +33,26 @@
33
33
  "types": "./build/dts/testing.d.ts",
34
34
  "default": "./build/esm/testing.js"
35
35
  },
36
+ "./schema/architecture.schema.json": "./schema/architecture.schema.json",
37
+ "./schema/architecture-node.schema.json": "./schema/architecture-node.schema.json",
38
+ "./schema/conformance.schema.json": "./schema/conformance.schema.json",
36
39
  "./package.json": "./package.json"
37
40
  },
38
41
  "types": "./build/dts/index.d.ts",
39
42
  "files": [
40
43
  "build/dts",
41
44
  "build/esm",
45
+ "schema",
42
46
  "src",
43
47
  "!src/**/*.test.ts"
44
48
  ],
45
49
  "dependencies": {
46
- "effect": "4.0.0-beta.94"
50
+ "effect": "4.0.0-beta.94",
51
+ "yaml": "^2.9.0"
47
52
  },
48
53
  "devDependencies": {
49
- "@types/node": "^25.9.4"
54
+ "@types/node": "^25.9.4",
55
+ "ajv": "^8.20.0"
50
56
  },
51
57
  "nx": {
52
58
  "includedScripts": []