@cruba/crubal 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +97 -2
  3. package/dist/bin/crubal.d.ts +2 -0
  4. package/dist/bin/crubal.js +103 -0
  5. package/dist/bin/crubal.js.map +1 -0
  6. package/dist/src/access.d.ts +126 -0
  7. package/dist/src/access.js +517 -0
  8. package/dist/src/access.js.map +1 -0
  9. package/dist/src/arrival.d.ts +55 -0
  10. package/dist/src/arrival.js +124 -0
  11. package/dist/src/arrival.js.map +1 -0
  12. package/dist/src/browser.d.ts +10 -0
  13. package/dist/src/browser.js +13 -0
  14. package/dist/src/browser.js.map +1 -0
  15. package/dist/src/bundle.d.ts +66 -0
  16. package/dist/src/bundle.js +753 -0
  17. package/dist/src/bundle.js.map +1 -0
  18. package/dist/src/canonical.d.ts +6 -0
  19. package/dist/src/canonical.js +47 -0
  20. package/dist/src/canonical.js.map +1 -0
  21. package/dist/src/conditions.d.ts +28 -0
  22. package/dist/src/conditions.js +216 -0
  23. package/dist/src/conditions.js.map +1 -0
  24. package/dist/src/corpus.d.ts +8 -0
  25. package/dist/src/corpus.js +1207 -0
  26. package/dist/src/corpus.js.map +1 -0
  27. package/dist/src/defs.d.ts +151 -0
  28. package/dist/src/defs.js +611 -0
  29. package/dist/src/defs.js.map +1 -0
  30. package/dist/src/dictionary.d.ts +65 -0
  31. package/dist/src/dictionary.js +557 -0
  32. package/dist/src/dictionary.js.map +1 -0
  33. package/dist/src/exchange.d.ts +236 -0
  34. package/dist/src/exchange.js +1035 -0
  35. package/dist/src/exchange.js.map +1 -0
  36. package/dist/src/forms.d.ts +16 -0
  37. package/dist/src/forms.js +169 -0
  38. package/dist/src/forms.js.map +1 -0
  39. package/dist/src/index.d.ts +27 -0
  40. package/dist/src/index.js +29 -0
  41. package/dist/src/index.js.map +1 -0
  42. package/dist/src/lex.d.ts +21 -0
  43. package/dist/src/lex.js +142 -0
  44. package/dist/src/lex.js.map +1 -0
  45. package/dist/src/lifecycle.d.ts +84 -0
  46. package/dist/src/lifecycle.js +415 -0
  47. package/dist/src/lifecycle.js.map +1 -0
  48. package/dist/src/log.d.ts +78 -0
  49. package/dist/src/log.js +506 -0
  50. package/dist/src/log.js.map +1 -0
  51. package/dist/src/migrate.d.ts +111 -0
  52. package/dist/src/migrate.js +286 -0
  53. package/dist/src/migrate.js.map +1 -0
  54. package/dist/src/model.d.ts +68 -0
  55. package/dist/src/model.js +188 -0
  56. package/dist/src/model.js.map +1 -0
  57. package/dist/src/packages.d.ts +69 -0
  58. package/dist/src/packages.js +232 -0
  59. package/dist/src/packages.js.map +1 -0
  60. package/dist/src/print-text.d.ts +7 -0
  61. package/dist/src/print-text.js +216 -0
  62. package/dist/src/print-text.js.map +1 -0
  63. package/dist/src/publish.d.ts +27 -0
  64. package/dist/src/publish.js +275 -0
  65. package/dist/src/publish.js.map +1 -0
  66. package/dist/src/read-text.d.ts +10 -0
  67. package/dist/src/read-text.js +385 -0
  68. package/dist/src/read-text.js.map +1 -0
  69. package/dist/src/records.d.ts +31 -0
  70. package/dist/src/records.js +72 -0
  71. package/dist/src/records.js.map +1 -0
  72. package/dist/src/review.d.ts +22 -0
  73. package/dist/src/review.js +198 -0
  74. package/dist/src/review.js.map +1 -0
  75. package/dist/src/rules.d.ts +96 -0
  76. package/dist/src/rules.js +611 -0
  77. package/dist/src/rules.js.map +1 -0
  78. package/dist/src/schedule.d.ts +24 -0
  79. package/dist/src/schedule.js +126 -0
  80. package/dist/src/schedule.js.map +1 -0
  81. package/dist/src/std-packages.d.ts +9 -0
  82. package/dist/src/std-packages.js +268 -0
  83. package/dist/src/std-packages.js.map +1 -0
  84. package/dist/src/store.d.ts +164 -0
  85. package/dist/src/store.js +538 -0
  86. package/dist/src/store.js.map +1 -0
  87. package/dist/src/tree.d.ts +35 -0
  88. package/dist/src/tree.js +159 -0
  89. package/dist/src/tree.js.map +1 -0
  90. package/dist/src/units-table.d.ts +1 -0
  91. package/dist/src/units-table.js +200 -0
  92. package/dist/src/units-table.js.map +1 -0
  93. package/dist/src/units.d.ts +42 -0
  94. package/dist/src/units.js +98 -0
  95. package/dist/src/units.js.map +1 -0
  96. package/dist/src/views.d.ts +216 -0
  97. package/dist/src/views.js +761 -0
  98. package/dist/src/views.js.map +1 -0
  99. package/package.json +60 -4
@@ -0,0 +1,275 @@
1
+ // publish.ts: cutting a version (docs/design/publishing.md; spec 4.8, 5.11, 10.5, 11.4, 11.5). A member
2
+ // that didn't change keeps its version; one that did takes the date. A breaking change needs a recipe step
3
+ // that covers it, from the previous version to this one; a recipe is refused when nothing broke.
4
+ import { checkRecipe } from "./migrate.js";
5
+ import { bundleHash, bundleOf, parsePackage, signBundle } from "./bundle.js";
6
+ import { serialize } from "./canonical.js";
7
+ import { CrubalError } from "./tree.js";
8
+ const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
9
+ const same = (a, b) => serialize((a ?? null)) === serialize((b ?? null));
10
+ /** Where a member's JSON lives in a bundle, by its `member:name` key. */
11
+ const SECTIONS = { facet: ["facets", "facet"], class: ["classes", "class"], rule: ["rules", "rule"], contract: ["contracts", "contract"], view: ["views", "view"], shape: ["shapes", "shape"], filter: ["filters", "filter"], kind: ["kinds", "kind"], utility: ["utilities", "utility"] };
12
+ function membersOf(b) {
13
+ const out = new Map();
14
+ for (const [member, [section, key]] of Object.entries(SECTIONS))
15
+ for (const x of b[section] ?? [])
16
+ if (isObj(x))
17
+ out.set(`${member}:${x[key]}`, x);
18
+ return out;
19
+ }
20
+ const withoutVersion = (o) => {
21
+ const { version: _v, ...rest } = o;
22
+ return rest;
23
+ };
24
+ /** Classify a facet's change (4.8). */
25
+ function facetChange(was, now) {
26
+ const why = [];
27
+ const recipe = [];
28
+ const st = { kind: "unchanged" };
29
+ const bump = (k, w, r) => {
30
+ const rank = { unchanged: 0, safe: 1, minor: 2, breaking: 3, new: 1, retired: 3 };
31
+ if (rank[k] > rank[st.kind])
32
+ st.kind = k;
33
+ why.push(w);
34
+ if (r)
35
+ recipe.push(r);
36
+ };
37
+ const vals = (o) => (o.values ?? []).map((v) => String(v.value));
38
+ const aliases = (o) => [...(o.aliases ?? []), ...(o.values ?? []).flatMap((v) => v.aliases ?? [])];
39
+ if (!same(was.type, now.type))
40
+ bump("breaking", "type changed", "merge + review");
41
+ for (const k of ["label", "ask", "describe", "same-as"])
42
+ if (!same(was[k], now[k]))
43
+ bump("safe", `${k} changed`);
44
+ const addedAliases = aliases(now).filter((a) => !aliases(was).includes(a));
45
+ const removedAliases = aliases(was).filter((a) => !aliases(now).includes(a));
46
+ if (addedAliases.length)
47
+ bump("safe", `alias added: ${addedAliases.join(", ")}`);
48
+ if (removedAliases.length)
49
+ bump("minor", `alias removed: ${removedAliases.join(", ")}`);
50
+ const addedValues = vals(now).filter((v) => !vals(was).includes(v));
51
+ const removedValues = vals(was).filter((v) => !vals(now).includes(v));
52
+ if (addedValues.length)
53
+ bump("safe", `value added: ${addedValues.join(", ")}`);
54
+ if (removedValues.length)
55
+ bump("breaking", `value removed: ${removedValues.join(", ")}`, "rename or merge");
56
+ if (was.open !== true && now.open === true)
57
+ bump("safe", "list opened");
58
+ if (was.open === true && now.open !== true)
59
+ bump("breaking", "list closed", "review");
60
+ if (was.fixed !== true && now.fixed === true)
61
+ bump("breaking", "list fixed", "review");
62
+ const pickN = (o) => (o.pick === undefined ? 1 : o.pick === "any" ? Number.POSITIVE_INFINITY : Number(o.pick));
63
+ if (pickN(now) > pickN(was))
64
+ bump("safe", "pick widened");
65
+ if (pickN(now) < pickN(was))
66
+ bump("breaking", "pick narrowed", "review");
67
+ const num = (v) => (v === undefined ? undefined : Number(v));
68
+ if (num(now.length) !== num(was.length))
69
+ bump((num(now.length) ?? Number.POSITIVE_INFINITY) >= (num(was.length) ?? Number.POSITIVE_INFINITY) ? "safe" : "breaking", "length changed", "review");
70
+ if (!same(was.range, now.range)) {
71
+ const wr = isObj(was.range) ? was.range : undefined;
72
+ const nr = isObj(now.range) ? now.range : undefined;
73
+ const wider = !nr || (wr && Number(nr.min) <= Number(wr.min) && Number(nr.max) >= Number(wr.max));
74
+ bump(wider ? "safe" : "breaking", "range changed", wider ? undefined : "review");
75
+ }
76
+ const PREC = ["year", "month", "day", "hour", "minute", "second"];
77
+ if (!same(was.precision, now.precision)) {
78
+ const w = was.precision === undefined ? "any" : String(was.precision);
79
+ const n = now.precision === undefined ? "any" : String(now.precision);
80
+ bump(n === "any" || (w !== "any" && PREC.indexOf(n) >= PREC.indexOf(w)) ? "safe" : "breaking", "precision changed", "review");
81
+ }
82
+ if (num(now.places) !== num(was.places))
83
+ bump((num(now.places) ?? Number.POSITIVE_INFINITY) >= (num(was.places) ?? Number.POSITIVE_INFINITY) ? "safe" : "breaking", "places changed", "review");
84
+ if (!same(was.unit, now.unit))
85
+ bump("breaking", "unit changed", "convert");
86
+ if (was.required !== true && now.required === true)
87
+ bump("breaking", "required added", "review");
88
+ if (was.state !== "retired" && now.state === "retired")
89
+ bump("retired", "retired", "review or move");
90
+ if (was.state === "candidate" && (now.state ?? "active") === "active")
91
+ bump("safe", "promoted");
92
+ if (!same(was.combine, now.combine))
93
+ bump("breaking", "combine changed", "recompute");
94
+ for (const k of ["unique", "na", "when", "to", "identity", "agree-by", "ordered", "ranked", "scored", "words", "qualifiers", "accepts", "zone", "facets", "transitions"])
95
+ if (!same(was[k], now[k]))
96
+ bump(k === "unique" || k === "when" ? "breaking" : "safe", `${k} changed`, k === "unique" || k === "when" ? "review" : undefined);
97
+ for (const k of new Set([...Object.keys(was), ...Object.keys(now)]))
98
+ if (k.includes(":") && !same(was[k], now[k]))
99
+ bump("safe", `${k} changed`);
100
+ return { member: `facet:${now.facet}`, kind: st.kind, why, ...(recipe.length ? { recipe } : {}) };
101
+ }
102
+ /** Classify a class's change (5.11). */
103
+ function classChange(was, now) {
104
+ const why = [];
105
+ const st = { kind: "unchanged" };
106
+ const bump = (k, w) => {
107
+ const rank = { unchanged: 0, safe: 1, minor: 2, breaking: 3, new: 1, retired: 3 };
108
+ if (rank[k] > rank[st.kind])
109
+ st.kind = k;
110
+ why.push(w);
111
+ };
112
+ const lines = (o) => new Map((o.facets ?? []).filter((l) => typeof l.facet === "string").map((l) => [`${l.level ? `${l.level}::` : ""}${l.facet}`, l]));
113
+ for (const k of ["label", "describe"])
114
+ if (!same(was[k], now[k]))
115
+ bump("safe", `${k} changed`);
116
+ const wl = lines(was);
117
+ const nl = lines(now);
118
+ for (const [k, l] of nl) {
119
+ const w = wl.get(k);
120
+ if (!w) {
121
+ bump(l.level && !wl.has(k.replace(/^\w+::/, "")) ? "safe" : "safe", `line added: ${k}`);
122
+ continue;
123
+ }
124
+ if (w.required !== true && l.required === true)
125
+ bump("breaking", `${k} made required`);
126
+ if (Array.isArray(l.values) && (!Array.isArray(w.values) || w.values.some((v) => !l.values.includes(v))))
127
+ bump("breaking", `${k} values narrowed`);
128
+ if (Array.isArray(w.values) && Array.isArray(l.values) && l.values.some((v) => !w.values.includes(v)))
129
+ bump("safe", `${k} values widened`);
130
+ if (l.length !== undefined && (w.length === undefined || Number(l.length) < Number(w.length)))
131
+ bump("breaking", `${k} length narrowed`);
132
+ if (!same(w.when, l.when))
133
+ bump("safe", `${k} when changed`);
134
+ }
135
+ for (const k of wl.keys())
136
+ if (!nl.has(k)) {
137
+ // A plain line removed leaves values unasked (safe); a level line removed stops projecting the key to the
138
+ // records below, and that change MUST carry its instruction (10.7).
139
+ if (k.includes("::"))
140
+ bump("breaking", `projection stopped: ${k}`);
141
+ else
142
+ bump("safe", `line removed: ${k} (values become unasked)`);
143
+ }
144
+ const wf = was.for ?? [];
145
+ const nf = now.for ?? [];
146
+ if (wf.length && nf.length && wf.some((k) => !nf.includes(k)))
147
+ bump("breaking", "for narrowed");
148
+ if (!wf.length && nf.length)
149
+ bump("breaking", "for narrowed");
150
+ const wu = was.uses ?? [];
151
+ const nu = now.uses ?? [];
152
+ if (nu.some((u) => !wu.includes(u)))
153
+ bump("safe", "used class added");
154
+ if (wu.some((u) => !nu.includes(u)))
155
+ bump("safe", "used class removed");
156
+ const slots = (o) => (o.parts ?? []).map((p) => String(p.slot));
157
+ if (slots(was).some((s) => !slots(now).includes(s)))
158
+ bump("breaking", "part slot removed");
159
+ if (!same(was.parts, now.parts) && st.kind === "unchanged")
160
+ bump("safe", "parts changed");
161
+ if (was.state !== "retired" && now.state === "retired")
162
+ bump("retired", "retired");
163
+ const order = (o) => (o.facets ?? []).map((l) => l.section ?? l.facet).join("|");
164
+ if (order(was) !== order(now) && st.kind === "unchanged")
165
+ bump("safe", "order or sections changed");
166
+ return { member: `class:${now.class}`, kind: st.kind, why, ...(st.kind === "breaking" ? { recipe: ["review"] } : {}) };
167
+ }
168
+ /** A show rule: its `then` is `key shown to audience` (12.4), visibility and never a test of data. */
169
+ const isShow = (rule) => / shown to /.test(String(rule.then ?? ""));
170
+ /** Classify every member against the previous bundle. */
171
+ export function classify(previous, next) {
172
+ const was = previous ? membersOf(previous) : new Map();
173
+ const now = membersOf(next);
174
+ const out = [];
175
+ for (const [key, n] of now) {
176
+ const w = was.get(key);
177
+ if (!w) {
178
+ // A new must rule breaks data that breaks it (4.8); every other new member is safe. A show rule
179
+ // (`shown to`, 12.4) decides who sees a value and tests no data, so it never breaks any.
180
+ const hard = key.startsWith("rule:") && n.strength === "must" && !isShow(n) && !!previous;
181
+ out.push({ member: key, kind: hard ? "breaking" : "new", why: ["new"], ...(hard ? { recipe: ["review"] } : {}) });
182
+ continue;
183
+ }
184
+ if (same(withoutVersion(w), withoutVersion(n))) {
185
+ out.push({ member: key, kind: "unchanged", why: [] });
186
+ continue;
187
+ }
188
+ if (key.startsWith("facet:"))
189
+ out.push(facetChange(w, n));
190
+ else if (key.startsWith("class:"))
191
+ out.push(classChange(w, n));
192
+ else if (key.startsWith("rule:")) {
193
+ const hard = n.strength === "must" && w.strength !== "must" && !isShow(n);
194
+ out.push({ member: key, kind: hard ? "breaking" : "safe", why: ["changed"], ...(hard ? { recipe: ["review"] } : {}) });
195
+ }
196
+ else
197
+ out.push({ member: key, kind: "safe", why: ["changed"] });
198
+ }
199
+ for (const key of was.keys())
200
+ if (!now.has(key))
201
+ out.push({ member: key, kind: "retired", why: ["removed"], recipe: ["review or move"] });
202
+ return out;
203
+ }
204
+ /**
205
+ * Cut a version: versions by diff, the recipe check, `previous`, hash and signature. Throws a CrubalError
206
+ * naming what is missing. Returns the bundle and the classification.
207
+ */
208
+ export function publish(source, o) {
209
+ const parsed = typeof source === "string" ? parsePackage(source) : source;
210
+ const b = bundleOf(parsed);
211
+ if (o.records?.length)
212
+ b.records = o.records;
213
+ const changes = classify(o.previous, b);
214
+ const prevMembers = (o.previous?.members ?? {});
215
+ const members = {};
216
+ // Versions: unchanged keeps the previous version; everything else takes the date (`.2`… for a second cut that day).
217
+ let suffix = "";
218
+ if (o.previous && String(o.previous.version).split(".")[0] === o.date)
219
+ suffix = `.${Number(String(o.previous.version).split(".")[1] ?? 1) + 1}`;
220
+ const version = `${o.date}${suffix}`;
221
+ for (const [member, [section, key]] of Object.entries(SECTIONS)) {
222
+ for (const x of b[section] ?? []) {
223
+ const name = `${member}:${x[key]}`;
224
+ const change = changes.find((c) => c.member === name);
225
+ const keep = change?.kind === "unchanged" && typeof prevMembers[name] === "string";
226
+ const v = keep ? String(prevMembers[name]) : version;
227
+ x.version = v;
228
+ members[name] = v;
229
+ }
230
+ }
231
+ b.members = members;
232
+ b.version = version;
233
+ // Recipes (10.5 (5), 11.4): a breaking member needs a step that covers it, in a recipe from the previous version.
234
+ // Every recipe's own checks (10.5 (2) to (4)) against the version it reaches: the corpus ran them, publish didn't.
235
+ for (const r of parsed.recipes)
236
+ checkRecipe(r, parsed.dict);
237
+ const recipes = b.recipes ?? [];
238
+ const from = o.previous ? `${b.package} /${o.previous.version}` : undefined;
239
+ const to = `${b.package} /${version}`;
240
+ const covering = recipes.filter((r) => isObj(r.migration) && r.migration.from === from && (r.migration.to === to || String(r.migration.to).startsWith(`${b.package} /`)));
241
+ const covered = new Set(covering.flatMap((r) => (r.steps ?? []).map((s) => `facet:${s.facet}`)));
242
+ const anyReview = covering.some((r) => (r.steps ?? []).some((s) => s.review !== undefined));
243
+ const breaking = changes.filter((c) => c.kind === "breaking" || c.kind === "retired");
244
+ for (const c of breaking) {
245
+ // A class that stops projecting a key carries the instruction for it (10.7), under the version it reaches.
246
+ const stopped = c.why.filter((w) => w.startsWith("projection stopped: ")).map((w) => w.slice("projection stopped: ".length));
247
+ if (stopped.length) {
248
+ const name = c.member.slice("class:".length);
249
+ const issuers = [`class:${name}/${version}`, `class:${name}/${o.date}`];
250
+ const have = issuers.flatMap((i) => parsed.instructions.get(i) ?? []);
251
+ for (const line of stopped) {
252
+ const key = line.replace(/^\w+::/, "");
253
+ if (!have.some((i) => i.op === "-" && i.key === key))
254
+ throw new CrubalError(`${c.member} stops projecting ${line} and carries no instruction for it: needs \`instructions: class:${name}/${version}\` with \`-${key}\` (10.7)`);
255
+ }
256
+ if (c.why.every((w) => w.startsWith("projection stopped: ")))
257
+ continue;
258
+ }
259
+ const ok = c.member.startsWith("facet:") ? covered.has(c.member) : anyReview || covered.size > 0;
260
+ if (!ok)
261
+ throw new CrubalError(`${c.member} is a breaking change (${c.why.join("; ")}) and no recipe from ${from ?? "the previous version"} covers it: needs ${c.recipe?.join(", ") ?? "a step"}`);
262
+ }
263
+ // A recipe of fills and recomputes alone is a backfill (10.3): it may ride a version where nothing broke.
264
+ const backfill = (r) => (r.steps ?? []).every((s) => isObj(s.fill) || s.recompute === true);
265
+ if (!breaking.length && covering.some((r) => !backfill(r)))
266
+ throw new CrubalError(`a recipe from ${from} is present but nothing broke`);
267
+ for (const r of covering)
268
+ r.migration.to = to;
269
+ if (o.previous)
270
+ b.previous = String(o.previous.version);
271
+ if (o.key)
272
+ return { bundle: signBundle(b, o.key.d, o.key.x), changes };
273
+ return { bundle: { ...b, hash: `sha256:${bundleHash(b)}` }, changes };
274
+ }
275
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Dictionary, Facet } from "./defs.ts";
2
+ import { writeText } from "./lex.ts";
3
+ import { type Json, type Wrapper } from "./model.ts";
4
+ /** The language version this reader knows (11.8). */
5
+ export declare const LANGUAGE = 2;
6
+ /** Read CRUBAL data text into a border wrapper (spec chapter 3.8). */
7
+ export declare function readText(source: string, dict: Dictionary): Wrapper;
8
+ export { writeText };
9
+ /** Read one value's text under a facet, as if it had been written on that facet's line. */
10
+ export declare function readUnder(f: Facet, text: string, dict: Dictionary, line?: number): Json | undefined;