@sdd-method/sdd-cli 1.23.0 → 1.24.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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/catalogue/aggregate.d.ts.map +1 -1
- package/dist/lib/catalogue/aggregate.js +50 -1
- package/dist/lib/catalogue/aggregate.js.map +1 -1
- package/dist/lib/catalogue/canonical-schema.yaml +260 -312
- package/dist/lib/catalogue/rubric-coverage-map.yaml +60 -60
- package/dist/lib/metamodel/roundtrip-gate.d.ts +52 -0
- package/dist/lib/metamodel/roundtrip-gate.d.ts.map +1 -0
- package/dist/lib/metamodel/roundtrip-gate.js +297 -0
- package/dist/lib/metamodel/roundtrip-gate.js.map +1 -0
- package/dist/lib/metamodel/schema-projection.d.ts +60 -0
- package/dist/lib/metamodel/schema-projection.d.ts.map +1 -0
- package/dist/lib/metamodel/schema-projection.js +254 -0
- package/dist/lib/metamodel/schema-projection.js.map +1 -0
- package/dist/lib/metamodel/tql-subset-parser.d.ts +38 -0
- package/dist/lib/metamodel/tql-subset-parser.d.ts.map +1 -0
- package/dist/lib/metamodel/tql-subset-parser.js +275 -0
- package/dist/lib/metamodel/tql-subset-parser.js.map +1 -0
- package/dist/verbs/metamodel.d.ts +3 -0
- package/dist/verbs/metamodel.d.ts.map +1 -0
- package/dist/verbs/metamodel.js +28 -0
- package/dist/verbs/metamodel.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-projection.js","sourceRoot":"","sources":["../../../src/lib/metamodel/schema-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare class ParseError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
export declare const VALUE_TYPES: Set<string>;
|
|
5
|
+
export declare const META_TYPES: Set<string>;
|
|
6
|
+
export interface Annotations {
|
|
7
|
+
readonly key: boolean;
|
|
8
|
+
/** @card(1..1) */
|
|
9
|
+
readonly required: boolean;
|
|
10
|
+
/** @card(0..) */
|
|
11
|
+
readonly multi: boolean;
|
|
12
|
+
/** @card(0..1) */
|
|
13
|
+
readonly optional: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface TypeDecl {
|
|
16
|
+
readonly owns: Map<string, Annotations>;
|
|
17
|
+
readonly plays: Map<string, Annotations>;
|
|
18
|
+
readonly relates: Map<string, Annotations>;
|
|
19
|
+
}
|
|
20
|
+
export interface ParsedTypes {
|
|
21
|
+
/** attribute label -> value type */
|
|
22
|
+
readonly attrs: Map<string, string>;
|
|
23
|
+
readonly entities: Map<string, TypeDecl>;
|
|
24
|
+
readonly relations: Map<string, TypeDecl>;
|
|
25
|
+
/** "<relation>:<role>" -> the ONE entity/relation label that plays it */
|
|
26
|
+
readonly players: Map<string, string>;
|
|
27
|
+
}
|
|
28
|
+
export type MetaValue = string | number | boolean;
|
|
29
|
+
export type MetaRow = Record<string, MetaValue | readonly MetaValue[]>;
|
|
30
|
+
/** meta type -> rows in file order */
|
|
31
|
+
export type ParsedMeta = Map<string, MetaRow[]>;
|
|
32
|
+
/** A `#` outside a string literal starts a comment. */
|
|
33
|
+
export declare function stripComment(line: string): string;
|
|
34
|
+
/** Parse the type-system file. `fileLabel` names the file in error locations. */
|
|
35
|
+
export declare function parseTypes(text: string, fileLabel?: string): ParsedTypes;
|
|
36
|
+
/** Parse the meta-rows file. Tokenises each body in ONE pass so extraction and validation cannot disagree. */
|
|
37
|
+
export declare function parseMeta(text: string, fileLabel?: string): ParsedMeta;
|
|
38
|
+
//# sourceMappingURL=tql-subset-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tql-subset-parser.d.ts","sourceRoot":"","sources":["../../../src/lib/metamodel/tql-subset-parser.ts"],"names":[],"mappings":"AAuBA,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,eAAO,MAAM,WAAW,aAA0E,CAAC;AAEnG,eAAO,MAAM,UAAU,aAWrB,CAAC;AAKH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,yEAAyE;IACzE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAClD,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,SAAS,EAAE,CAAC,CAAC;AACvE,sCAAsC;AACtC,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAoBhD,uDAAuD;AACvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUjD;AA8CD,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAyB,GAAG,WAAW,CAiFxF;AAKD,8GAA8G;AAC9G,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAA8B,GAAG,UAAU,CAuC3F"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
// The documented TypeQL subset — PARSER (M-ADR 0210 §4.2).
|
|
2
|
+
//
|
|
3
|
+
// This module reads the authored form of a fact-based model and nothing else: it knows
|
|
4
|
+
// the subset's grammar and refuses, with a located error, anything outside it. It knows
|
|
5
|
+
// nothing about catalogues, YAML or projections — that is `schema-projection.ts`. The split
|
|
6
|
+
// is deliberate: a store extending the subset extends the parser; the method's projection
|
|
7
|
+
// is one consumer of the parsed model among possible others.
|
|
8
|
+
//
|
|
9
|
+
// Fail-closed (M-ADR 0200 §4.3): a construct the parser does not recognise is a ParseError,
|
|
10
|
+
// never a skip. The five blindnesses measured in the prototype this replaces — `@values`,
|
|
11
|
+
// an `@card` form outside the subset, a role with two players, a value-type/family
|
|
12
|
+
// contradiction, a content change that must be visible — are each refused here or made
|
|
13
|
+
// visible to the projection, and the round-trip gate proves that with mutation controls
|
|
14
|
+
// before every verdict.
|
|
15
|
+
//
|
|
16
|
+
// Grammar (one declaration per line; `#` outside a string literal starts a comment):
|
|
17
|
+
// define
|
|
18
|
+
// attribute <label>, value <string|integer|double|boolean|date|datetime>;
|
|
19
|
+
// entity <label>[, owns <attr> [@key] [@card(1..1)|@card(0..1)|@card(0..)]][, plays <rel>:<role> [...]] ...;
|
|
20
|
+
// relation <label>[, relates <role> [@card(1..1)|@card(0..1)|@card(0..)]][, owns ...][, plays ...] ...;
|
|
21
|
+
// Meta rows (the second file):
|
|
22
|
+
// insert $m isa <meta-type>, has <key> <"string"|int|true|false>[, has ...];
|
|
23
|
+
export class ParseError extends Error {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = "ParseError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const VALUE_TYPES = new Set(["string", "integer", "double", "boolean", "date", "datetime"]);
|
|
30
|
+
export const META_TYPES = new Set([
|
|
31
|
+
"schema-meta",
|
|
32
|
+
"catalogue-meta",
|
|
33
|
+
"column-meta",
|
|
34
|
+
"fk-meta",
|
|
35
|
+
"column-enum-meta",
|
|
36
|
+
"enum-meta",
|
|
37
|
+
"enum-value-meta",
|
|
38
|
+
"enum-value-property",
|
|
39
|
+
"coverage-meta",
|
|
40
|
+
"relationship-meta",
|
|
41
|
+
]);
|
|
42
|
+
/** Meta keys whose values are lists (repeated `has` on one row). */
|
|
43
|
+
const LIST_KEYS = new Set(["m-external-for-profile"]);
|
|
44
|
+
function unlit(s, where) {
|
|
45
|
+
let out = "";
|
|
46
|
+
for (let i = 0; i < s.length; i++) {
|
|
47
|
+
const c = s[i];
|
|
48
|
+
if (c === "\\" && i + 1 < s.length) {
|
|
49
|
+
const n = s[i + 1];
|
|
50
|
+
const map = { n: "\n", t: "\t", '"': '"', "\\": "\\" };
|
|
51
|
+
const r = map[n];
|
|
52
|
+
if (r === undefined)
|
|
53
|
+
throw new ParseError(`${where}: bad escape \\${n}`);
|
|
54
|
+
out += r;
|
|
55
|
+
i++;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
out += c;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
/** A `#` outside a string literal starts a comment. */
|
|
64
|
+
export function stripComment(line) {
|
|
65
|
+
let out = "";
|
|
66
|
+
let q = false;
|
|
67
|
+
for (let i = 0; i < line.length; i++) {
|
|
68
|
+
const c = line[i];
|
|
69
|
+
if (c === '"' && (i === 0 || line[i - 1] !== "\\"))
|
|
70
|
+
q = !q;
|
|
71
|
+
if (c === "#" && !q)
|
|
72
|
+
break;
|
|
73
|
+
out += c;
|
|
74
|
+
}
|
|
75
|
+
return out.trim();
|
|
76
|
+
}
|
|
77
|
+
const CARD_RE = /^@card\((\d+)\.\.(\d*)\)$/;
|
|
78
|
+
function parseAnnotations(tokens, where) {
|
|
79
|
+
let key = false;
|
|
80
|
+
let required = false;
|
|
81
|
+
let multi = false;
|
|
82
|
+
let optional = false;
|
|
83
|
+
for (const t of tokens) {
|
|
84
|
+
if (t === "@key") {
|
|
85
|
+
key = true;
|
|
86
|
+
}
|
|
87
|
+
else if (t.startsWith("@card(")) {
|
|
88
|
+
const m = CARD_RE.exec(t);
|
|
89
|
+
if (!m)
|
|
90
|
+
throw new ParseError(`${where}: unparseable cardinality ${JSON.stringify(t)}`);
|
|
91
|
+
const lo = m[1];
|
|
92
|
+
const hi = m[2];
|
|
93
|
+
if (lo === "1" && hi === "1")
|
|
94
|
+
required = true;
|
|
95
|
+
else if (lo === "0" && hi === "")
|
|
96
|
+
multi = true;
|
|
97
|
+
else if (lo === "0" && hi === "1")
|
|
98
|
+
optional = true;
|
|
99
|
+
else
|
|
100
|
+
throw new ParseError(`${where}: cardinality ${t} cannot be projected onto the catalogue schema (only @card(1..1), @card(0..1) or @card(0..) are in the subset)`);
|
|
101
|
+
}
|
|
102
|
+
else if (t.startsWith("@values")) {
|
|
103
|
+
throw new ParseError(`${where}: @values(...) is not admitted in this projection — vocabularies bind through column_enums meta rows or a recorded absence (M-ADR 0210 §4.5)`);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
throw new ParseError(`${where}: unknown token ${JSON.stringify(t)}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return { key, required, multi, optional };
|
|
110
|
+
}
|
|
111
|
+
function splitClauses(body, where) {
|
|
112
|
+
// refuse before the naive split can be fooled by a comma inside the parenthesis
|
|
113
|
+
if (body.includes("@values")) {
|
|
114
|
+
throw new ParseError(`${where}: @values(...) is not admitted in this projection (M-ADR 0210 §4.5)`);
|
|
115
|
+
}
|
|
116
|
+
return body.split(",").map((c) => c.trim());
|
|
117
|
+
}
|
|
118
|
+
const ATTR_RE = /^attribute ([a-z][a-z0-9-]*), value ([a-z]+)$/;
|
|
119
|
+
const TYPE_RE = /^(entity|relation) ([a-z][a-z0-9-]*)(?:, (.*))?$/;
|
|
120
|
+
/** Parse the type-system file. `fileLabel` names the file in error locations. */
|
|
121
|
+
export function parseTypes(text, fileLabel = "catalogue-schema.tql") {
|
|
122
|
+
const attrs = new Map();
|
|
123
|
+
const entities = new Map();
|
|
124
|
+
const relations = new Map();
|
|
125
|
+
const seen = new Set();
|
|
126
|
+
const lines = text.split(/\r?\n/);
|
|
127
|
+
for (let ln = 1; ln <= lines.length; ln++) {
|
|
128
|
+
let line = stripComment(lines[ln - 1]);
|
|
129
|
+
if (line === "" || line === "define")
|
|
130
|
+
continue;
|
|
131
|
+
const where = `${fileLabel}:${ln}`;
|
|
132
|
+
if (!line.endsWith(";"))
|
|
133
|
+
throw new ParseError(`${where}: declaration must end with ';' — one declaration per line`);
|
|
134
|
+
line = line.slice(0, -1);
|
|
135
|
+
const am = ATTR_RE.exec(line);
|
|
136
|
+
if (am) {
|
|
137
|
+
const lab = am[1];
|
|
138
|
+
const vt = am[2];
|
|
139
|
+
if (!VALUE_TYPES.has(vt))
|
|
140
|
+
throw new ParseError(`${where}: unknown value type ${JSON.stringify(vt)}`);
|
|
141
|
+
if (seen.has(lab))
|
|
142
|
+
throw new ParseError(`${where}: duplicate declaration of ${JSON.stringify(lab)}`);
|
|
143
|
+
seen.add(lab);
|
|
144
|
+
attrs.set(lab, vt);
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
const tm = TYPE_RE.exec(line);
|
|
148
|
+
if (!tm)
|
|
149
|
+
throw new ParseError(`${where}: not in the subset: ${JSON.stringify(line.slice(0, 100))}`);
|
|
150
|
+
const kind = tm[1];
|
|
151
|
+
const lab = tm[2];
|
|
152
|
+
const body = tm[3];
|
|
153
|
+
if (seen.has(lab))
|
|
154
|
+
throw new ParseError(`${where}: duplicate declaration of ${JSON.stringify(lab)}`);
|
|
155
|
+
seen.add(lab);
|
|
156
|
+
const decl = { owns: new Map(), plays: new Map(), relates: new Map() };
|
|
157
|
+
for (const clause of body !== undefined ? splitClauses(body, where) : []) {
|
|
158
|
+
const w = clause.split(/\s+/).filter((x) => x !== "");
|
|
159
|
+
if (w.length === 0)
|
|
160
|
+
throw new ParseError(`${where}: empty clause`);
|
|
161
|
+
const head = w[0];
|
|
162
|
+
if (head === "owns") {
|
|
163
|
+
if (w.length < 2)
|
|
164
|
+
throw new ParseError(`${where}: owns without attribute`);
|
|
165
|
+
if (decl.owns.has(w[1]))
|
|
166
|
+
throw new ParseError(`${where}: ${lab} owns ${w[1]} twice`);
|
|
167
|
+
decl.owns.set(w[1], parseAnnotations(w.slice(2), where));
|
|
168
|
+
}
|
|
169
|
+
else if (head === "plays") {
|
|
170
|
+
if (w.length < 2 || !w[1].includes(":"))
|
|
171
|
+
throw new ParseError(`${where}: plays needs <relation>:<role>`);
|
|
172
|
+
if (decl.plays.has(w[1]))
|
|
173
|
+
throw new ParseError(`${where}: ${lab} plays ${w[1]} twice`);
|
|
174
|
+
decl.plays.set(w[1], parseAnnotations(w.slice(2), where));
|
|
175
|
+
}
|
|
176
|
+
else if (head === "relates") {
|
|
177
|
+
if (kind !== "relation")
|
|
178
|
+
throw new ParseError(`${where}: only a relation relates`);
|
|
179
|
+
if (w.length < 2)
|
|
180
|
+
throw new ParseError(`${where}: relates without role`);
|
|
181
|
+
if (decl.relates.has(w[1]))
|
|
182
|
+
throw new ParseError(`${where}: ${lab} relates ${w[1]} twice`);
|
|
183
|
+
decl.relates.set(w[1], parseAnnotations(w.slice(2), where));
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
throw new ParseError(`${where}: unknown clause ${JSON.stringify(head)}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
(kind === "entity" ? entities : relations).set(lab, decl);
|
|
190
|
+
}
|
|
191
|
+
// every owned attribute must be declared; every role must exist; a role has at most ONE player
|
|
192
|
+
const playersAll = new Map();
|
|
193
|
+
for (const [lab, d] of [...entities, ...relations]) {
|
|
194
|
+
for (const a of d.owns.keys()) {
|
|
195
|
+
if (!attrs.has(a))
|
|
196
|
+
throw new ParseError(`${lab} owns undeclared attribute ${JSON.stringify(a)}`);
|
|
197
|
+
}
|
|
198
|
+
for (const rr of d.plays.keys()) {
|
|
199
|
+
const idx = rr.indexOf(":");
|
|
200
|
+
const rel = rr.slice(0, idx);
|
|
201
|
+
const role = rr.slice(idx + 1);
|
|
202
|
+
const r = relations.get(rel);
|
|
203
|
+
if (!r)
|
|
204
|
+
throw new ParseError(`${lab} plays role of undeclared relation ${JSON.stringify(rel)}`);
|
|
205
|
+
if (!r.relates.has(role))
|
|
206
|
+
throw new ParseError(`${lab} plays undeclared role ${JSON.stringify(rr)}`);
|
|
207
|
+
const list = playersAll.get(rr) ?? [];
|
|
208
|
+
list.push(lab);
|
|
209
|
+
playersAll.set(rr, list);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const players = new Map();
|
|
213
|
+
for (const [rr, ps] of playersAll) {
|
|
214
|
+
if (ps.length > 1) {
|
|
215
|
+
throw new ParseError(`role ${rr} has ${ps.length} players (${ps.join(", ")}); the projection can carry exactly one and refuses to pick`);
|
|
216
|
+
}
|
|
217
|
+
players.set(rr, ps[0]);
|
|
218
|
+
}
|
|
219
|
+
return { attrs, entities, relations, players };
|
|
220
|
+
}
|
|
221
|
+
const ROW_RE = /^insert \$m isa ([a-z][a-z0-9-]*), (.*);$/;
|
|
222
|
+
const TOK_RE = /has ([a-z][a-z0-9-]*) ("(?:[^"\\]|\\.)*"|-?\d+|true|false)/y;
|
|
223
|
+
/** Parse the meta-rows file. Tokenises each body in ONE pass so extraction and validation cannot disagree. */
|
|
224
|
+
export function parseMeta(text, fileLabel = "catalogue-schema-meta.tql") {
|
|
225
|
+
const rows = new Map();
|
|
226
|
+
const lines = text.split(/\r?\n/);
|
|
227
|
+
for (let ln = 1; ln <= lines.length; ln++) {
|
|
228
|
+
const line = stripComment(lines[ln - 1]);
|
|
229
|
+
if (line === "")
|
|
230
|
+
continue;
|
|
231
|
+
const where = `${fileLabel}:${ln}`;
|
|
232
|
+
const m = ROW_RE.exec(line);
|
|
233
|
+
if (!m)
|
|
234
|
+
throw new ParseError(`${where}: not in the subset: ${JSON.stringify(line.slice(0, 100))}`);
|
|
235
|
+
const typ = m[1];
|
|
236
|
+
const body = m[2];
|
|
237
|
+
if (!META_TYPES.has(typ))
|
|
238
|
+
throw new ParseError(`${where}: unknown meta type ${JSON.stringify(typ)}`);
|
|
239
|
+
const acc = new Map();
|
|
240
|
+
let i = 0;
|
|
241
|
+
for (;;) {
|
|
242
|
+
TOK_RE.lastIndex = i;
|
|
243
|
+
const t = TOK_RE.exec(body);
|
|
244
|
+
if (!t)
|
|
245
|
+
throw new ParseError(`${where}: meta row body not in the subset at offset ${i}: ${JSON.stringify(body.slice(i, i + 60))}`);
|
|
246
|
+
const k = t[1];
|
|
247
|
+
const v = t[2];
|
|
248
|
+
let val;
|
|
249
|
+
if (v.startsWith('"'))
|
|
250
|
+
val = unlit(v.slice(1, -1), where);
|
|
251
|
+
else if (v === "true" || v === "false")
|
|
252
|
+
val = v === "true";
|
|
253
|
+
else
|
|
254
|
+
val = Number.parseInt(v, 10);
|
|
255
|
+
const list = acc.get(k) ?? [];
|
|
256
|
+
list.push(val);
|
|
257
|
+
acc.set(k, list);
|
|
258
|
+
i = TOK_RE.lastIndex;
|
|
259
|
+
if (i === body.length)
|
|
260
|
+
break;
|
|
261
|
+
if (body.startsWith(", ", i))
|
|
262
|
+
i += 2;
|
|
263
|
+
else
|
|
264
|
+
throw new ParseError(`${where}: expected ', has ...' at offset ${i}: ${JSON.stringify(body.slice(i, i + 40))}`);
|
|
265
|
+
}
|
|
266
|
+
const row = {};
|
|
267
|
+
for (const [k, vs] of acc)
|
|
268
|
+
row[k] = LIST_KEYS.has(k) ? vs : vs[0];
|
|
269
|
+
const list = rows.get(typ) ?? [];
|
|
270
|
+
list.push(row);
|
|
271
|
+
rows.set(typ, list);
|
|
272
|
+
}
|
|
273
|
+
return rows;
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=tql-subset-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tql-subset-parser.js","sourceRoot":"","sources":["../../../src/lib/metamodel/tql-subset-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metamodel.d.ts","sourceRoot":"","sources":["../../src/verbs/metamodel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWzC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BxD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { runMetamodelRoundtrip } from "../lib/metamodel/roundtrip-gate.js";
|
|
2
|
+
export function registerMetamodel(program) {
|
|
3
|
+
const metamodel = program
|
|
4
|
+
.command("metamodel")
|
|
5
|
+
.description("The catalogue metamodel's authored form (TypeQL subset) and its generated projections — M-ADR 0210");
|
|
6
|
+
metamodel
|
|
7
|
+
.command("roundtrip")
|
|
8
|
+
.description("Round-trip gate: parse the authored .tql pair fail-closed, regenerate catalogue-schema.yaml and rubric-coverage-map.yaml, " +
|
|
9
|
+
"and require each committed projection to be byte-identical. Seven mutation controls run before any verdict. " +
|
|
10
|
+
"Exit 0 pass · 1 differs · 2 authored form does not parse · 3 a control did not fire.")
|
|
11
|
+
.option("--root <path>", "Canonical method repo root (defaults to cwd)")
|
|
12
|
+
.option("--write", "Regenerate and overwrite both committed projections")
|
|
13
|
+
.option("--self-test", "Run the mutation controls alone and report")
|
|
14
|
+
.option("--migrate <old-schema.yaml>", "Semantic comparison against an OLD schema projection (run once at a flip or emitter change)")
|
|
15
|
+
.option("--migrate-map <old-map.yaml>", "With --migrate: also compare the coverage map against an OLD map")
|
|
16
|
+
.action(async (opts) => {
|
|
17
|
+
const mode = opts.write ? "write" : opts.selfTest ? "self-test" : opts.migrate !== undefined ? "migrate" : "steady";
|
|
18
|
+
const result = await runMetamodelRoundtrip({
|
|
19
|
+
...(opts.root !== undefined ? { root: opts.root } : {}),
|
|
20
|
+
mode,
|
|
21
|
+
...(opts.migrate !== undefined ? { oldSchema: opts.migrate } : {}),
|
|
22
|
+
...(opts.migrateMap !== undefined ? { oldMap: opts.migrateMap } : {}),
|
|
23
|
+
}, (s) => process.stdout.write(s));
|
|
24
|
+
if (result.exitCode !== 0)
|
|
25
|
+
process.exit(result.exitCode);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=metamodel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metamodel.js","sourceRoot":"","sources":["../../src/verbs/metamodel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAU3E,MAAM,UAAU,iBAAiB,CAAC,OAAgB;IAChD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,oGAAoG,CAAC,CAAC;IAErH,SAAS;SACN,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CACV,4HAA4H;QAC1H,8GAA8G;QAC9G,sFAAsF,CACzF;SACA,MAAM,CAAC,eAAe,EAAE,8CAA8C,CAAC;SACvE,MAAM,CAAC,SAAS,EAAE,qDAAqD,CAAC;SACxE,MAAM,CAAC,aAAa,EAAE,4CAA4C,CAAC;SACnE,MAAM,CAAC,6BAA6B,EAAE,6FAA6F,CAAC;SACpI,MAAM,CAAC,8BAA8B,EAAE,kEAAkE,CAAC;SAC1G,MAAM,CAAC,KAAK,EAAE,IAAsB,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpH,MAAM,MAAM,GAAG,MAAM,qBAAqB,CACxC;YACE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,IAAI;YACJ,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtE,EACD,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/B,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC"}
|