@graview/core 0.1.14 → 0.1.15

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 (86) hide show
  1. package/README.md +12 -4
  2. package/dist/capabilities.js +1 -1
  3. package/dist/capabilities.js.map +1 -1
  4. package/dist/cli/check/hidden-reads.js +1 -1
  5. package/dist/cli/check/hidden-reads.js.map +1 -1
  6. package/dist/compiled.d.ts +19 -0
  7. package/dist/compiled.d.ts.map +1 -0
  8. package/dist/compiled.js +60 -0
  9. package/dist/compiled.js.map +1 -0
  10. package/dist/conformance/fixtures.d.ts.map +1 -1
  11. package/dist/conformance/fixtures.js +22 -0
  12. package/dist/conformance/fixtures.js.map +1 -1
  13. package/dist/document/blocks.d.ts.map +1 -1
  14. package/dist/document/blocks.js +2 -1
  15. package/dist/document/blocks.js.map +1 -1
  16. package/dist/document/compile.d.ts +4 -29
  17. package/dist/document/compile.d.ts.map +1 -1
  18. package/dist/document/compile.js +72 -382
  19. package/dist/document/compile.js.map +1 -1
  20. package/dist/document/compiled.d.ts +130 -0
  21. package/dist/document/compiled.d.ts.map +1 -0
  22. package/dist/document/compiled.js +466 -0
  23. package/dist/document/compiled.js.map +1 -0
  24. package/dist/document/edit.d.ts.map +1 -1
  25. package/dist/document/edit.js +1 -1
  26. package/dist/document/edit.js.map +1 -1
  27. package/dist/document/index.d.ts +4 -1
  28. package/dist/document/index.d.ts.map +1 -1
  29. package/dist/document/index.js +3 -1
  30. package/dist/document/index.js.map +1 -1
  31. package/dist/document/remembered.d.ts +6 -0
  32. package/dist/document/remembered.d.ts.map +1 -0
  33. package/dist/document/remembered.js +16 -0
  34. package/dist/document/remembered.js.map +1 -0
  35. package/dist/document/rules.d.ts.map +1 -1
  36. package/dist/document/rules.js +2 -1
  37. package/dist/document/rules.js.map +1 -1
  38. package/dist/document/schema.d.ts.map +1 -1
  39. package/dist/document/schema.js +10 -2
  40. package/dist/document/schema.js.map +1 -1
  41. package/dist/document/template-parse.d.ts +18 -0
  42. package/dist/document/template-parse.d.ts.map +1 -0
  43. package/dist/document/template-parse.js +124 -0
  44. package/dist/document/template-parse.js.map +1 -0
  45. package/dist/document/template.d.ts +1 -17
  46. package/dist/document/template.d.ts.map +1 -1
  47. package/dist/document/template.js +6 -115
  48. package/dist/document/template.js.map +1 -1
  49. package/dist/document/thumbnail.d.ts +4 -1
  50. package/dist/document/thumbnail.d.ts.map +1 -1
  51. package/dist/document/thumbnail.js +32 -4
  52. package/dist/document/thumbnail.js.map +1 -1
  53. package/dist/document/to-document.d.ts +1 -4
  54. package/dist/document/to-document.d.ts.map +1 -1
  55. package/dist/document/to-document.js +2 -9
  56. package/dist/document/to-document.js.map +1 -1
  57. package/dist/document/views.d.ts.map +1 -1
  58. package/dist/document/views.js +1 -1
  59. package/dist/document/views.js.map +1 -1
  60. package/dist/index.d.ts +1 -1
  61. package/dist/index.d.ts.map +1 -1
  62. package/dist/index.js +1 -1
  63. package/dist/index.js.map +1 -1
  64. package/dist/mutations/define-mutation.d.ts +12 -0
  65. package/dist/mutations/define-mutation.d.ts.map +1 -1
  66. package/dist/mutations/define-mutation.js +37 -9
  67. package/dist/mutations/define-mutation.js.map +1 -1
  68. package/dist/mutations/derive-edits.js +1 -1
  69. package/dist/mutations/derive-edits.js.map +1 -1
  70. package/dist/refusal.d.ts +11 -6
  71. package/dist/refusal.d.ts.map +1 -1
  72. package/dist/refusal.js +11 -6
  73. package/dist/refusal.js.map +1 -1
  74. package/dist/refused.d.ts +13 -6
  75. package/dist/refused.d.ts.map +1 -1
  76. package/dist/refused.js +14 -7
  77. package/dist/refused.js.map +1 -1
  78. package/dist/scaffold/project.d.ts.map +1 -1
  79. package/dist/scaffold/project.js +1 -0
  80. package/dist/scaffold/project.js.map +1 -1
  81. package/dist/schema/json-schema.d.ts.map +1 -1
  82. package/dist/schema/json-schema.js +4 -1
  83. package/dist/schema/json-schema.js.map +1 -1
  84. package/dist/version.d.ts +1 -1
  85. package/dist/version.js +1 -1
  86. package/package.json +5 -1
@@ -0,0 +1,466 @@
1
+ import { createSchema, defineInvariant, defineMutation, defineNode, RuleBudgetError, withArticle, } from "../index.js";
2
+ import { refTo } from "../mutations/node-ref.js";
3
+ import { ActRefusal } from "../refused.js";
4
+ import * as z from "../schema/zod.js";
5
+ import { evaluateExpr, ExprBudgetError, ExprEvalError } from "./expr/evaluate.js";
6
+ import { error } from "./findings.js";
7
+ import { renderTemplate } from "./template.js";
8
+ import { rememberDocument } from "./remembered.js";
9
+ /*
10
+ * A COMPILED APP, HANDED TO THE PAGE (FR-123).
11
+ *
12
+ * Compiling a document is two halves. The first reads it — the format, its
13
+ * upgrades, every reference and expression judged, every template and rule
14
+ * parsed — and says what each act asks for and does. The second builds the
15
+ * GraviewApp from that: zod schemas for the fields and arguments, and the
16
+ * closures that run acts, judge rules and say labels.
17
+ *
18
+ * The first half's answer is plain data, `CompiledApp`, and this module is
19
+ * the second half alone. `compileDocumentWithoutCheck` is the first half
20
+ * then `build` — so a host that compiled a document on its server can hand
21
+ * the page `serializeCompiled(compiled)` as JSON, and the page's `appFrom`
22
+ * builds the same app without the reader, the validator, the expression
23
+ * parser or the view checker. What stays is what an app needs to RUN in the
24
+ * page: the field schemas the store validates with, the evaluator that
25
+ * judges guards, rules, computed values and template parts, and the
26
+ * template renderer that says labels and refusals.
27
+ *
28
+ * A compiled app is the host's own data, from its own server, and is
29
+ * trusted as the document it was compiled from is: `appFrom` checks its
30
+ * format and that its parts match its document, so a stale one cached from
31
+ * another build is refused by name and the page compiles the document
32
+ * instead, but it does not judge the document again.
33
+ */
34
+ /** The format a compiled app says it is in; another is refused, never misread (docs/stability.md). */
35
+ export const COMPILED_FORMAT = "graview-compiled@1";
36
+ export const SUBJECT_ARG = "id";
37
+ export const refName = (v) => (typeof v === "string" && /^\$[A-Za-z][A-Za-z0-9]*$/.test(v) ? v.slice(1) : undefined);
38
+ /** What one of these is called, when the kind says nothing: the first required word-ish field. */
39
+ export function defaultLabelField(spec) {
40
+ const entries = Object.entries(spec.fields);
41
+ return (entries.find(([, f]) => f.required && (f.type === "string" || f.type === "text"))?.[0] ??
42
+ entries.find(([, f]) => f.type === "string")?.[0]);
43
+ }
44
+ /*
45
+ * A FIELD'S SCHEMA, in zod/mini (schema/zod.ts): a page that builds an app
46
+ * in the browser pays for the checks it calls, not for classic zod whole
47
+ * (FR-57). The checks, their messages and their definitions are the ones
48
+ * classic's methods make.
49
+ */
50
+ export function fieldSchema(spec, optional) {
51
+ let schema;
52
+ switch (spec.type) {
53
+ case "string":
54
+ schema = z.string().check(z.maxLength(500));
55
+ break;
56
+ case "text":
57
+ schema = z.string().check(z.maxLength(20_000));
58
+ break;
59
+ case "number":
60
+ case "integer": {
61
+ // Its range (FR-114) is the schema's: every form, tool and apply reads it from here.
62
+ const range = [
63
+ ...(spec.type === "integer" ? [z.int()] : []),
64
+ ...(spec.min === undefined ? [] : [z.gte(spec.min)]),
65
+ ...(spec.max === undefined ? [] : [z.lte(spec.max)]),
66
+ ...(spec.step === undefined ? [] : [z.multipleOf(spec.step)]),
67
+ ];
68
+ schema = range.length > 0 ? z.number().check(...range) : z.number();
69
+ break;
70
+ }
71
+ case "boolean":
72
+ schema = z.boolean();
73
+ break;
74
+ case "date":
75
+ schema = z.string().check(z.regex(/^\d{4}-\d{2}-\d{2}$/, "a date like 2026-10-02"));
76
+ break;
77
+ case "datetime":
78
+ schema = z.string().check(z.refine((s) => !Number.isNaN(Date.parse(s)), "a date and time like 2026-10-02T14:30:00Z"));
79
+ break;
80
+ case "enum":
81
+ schema = z.enum(spec.options);
82
+ break;
83
+ case "list":
84
+ schema = z.array(spec.of === "number" ? z.number() : spec.of === "date" ? z.string().check(z.regex(/^\d{4}-\d{2}-\d{2}$/)) : z.string().check(z.maxLength(500))).check(z.maxLength(200));
85
+ break;
86
+ case "url":
87
+ schema = z.url();
88
+ break;
89
+ case "email":
90
+ schema = z.email();
91
+ break;
92
+ }
93
+ if (spec.description)
94
+ schema = schema.check(z.describe(spec.description));
95
+ return optional ? z.optional(schema) : schema;
96
+ }
97
+ const argSchema = (arg) => ("field" in arg ? fieldSchema(arg.field, arg.optional) : "ref" in arg ? refTo(arg.ref) : z.optional(z.unknown()));
98
+ /*
99
+ * An act's own refusal is the framework's typed one (FR-110), which a host
100
+ * shows rather than calling it a failure. Its condition, and a value it
101
+ * could not work out, are `refused` (FR-119); a call naming what is not
102
+ * there, or a subject of the wrong kind, says `invalid` — the call as sent.
103
+ */
104
+ /** The compiled app each app was built from, so it can be handed on. */
105
+ const PLANS = new WeakMap();
106
+ /**
107
+ * A compiled document as JSON-safe data, for a host to hand its pages: the
108
+ * app minus its functions, every expression and template already parsed.
109
+ * `appFrom` builds the same app from it. The findings are the ones this
110
+ * compile said — `compileDocument`'s, checker and all, when that compiled it.
111
+ */
112
+ export function serializeCompiled(compiled) {
113
+ const plan = PLANS.get(compiled.app);
114
+ if (!plan)
115
+ throw new Error("this app was not compiled from a document: serializeCompiled takes what compileDocument, compileDocumentWithoutCheck or appFrom returned");
116
+ return { ...plan, findings: [...compiled.findings] };
117
+ }
118
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
119
+ const sameNames = (a, b) => isRecord(b) && Object.keys(a ?? {}).length === Object.keys(b).length && Object.keys(a ?? {}).every((name) => Object.prototype.hasOwnProperty.call(b, name));
120
+ /**
121
+ * The app a compiled document describes, built in the page without the
122
+ * compiler (FR-123). `compiled` is what the host's server made with
123
+ * `serializeCompiled`, read back from JSON. Another format, or parts that do
124
+ * not match their document, is refused with a finding — `compiled-format`
125
+ * or `compiled-shape` — and the page compiles the document instead.
126
+ */
127
+ export function appFrom(compiled, options = {}) {
128
+ const format = isRecord(compiled) ? compiled["format"] : undefined;
129
+ if (format !== COMPILED_FORMAT) {
130
+ return { ok: false, findings: [error("compiled-format", "format", format === undefined ? "this is not a compiled Graview app" : `this compiled app is ${JSON.stringify(format)}, and this build reads ${COMPILED_FORMAT}`, "compile the document instead")] };
131
+ }
132
+ const plan = compiled;
133
+ const document = plan.document;
134
+ const whole = isRecord(document) &&
135
+ typeof document.name === "string" &&
136
+ isRecord(document.kinds) &&
137
+ sameNames(document.kinds, plan.kinds) &&
138
+ sameNames(document.acts, plan.acts) &&
139
+ sameNames(document.rules, plan.rules) &&
140
+ Array.isArray(plan.edges) &&
141
+ Array.isArray(plan.findings);
142
+ const torn = { ok: false, findings: [error("compiled-shape", "", "this compiled app's parts do not match its document", "compile the document instead")] };
143
+ if (!whole)
144
+ return torn;
145
+ // One torn on its way — a plan that is not there, a list that is not one — is refused as torn, never thrown out of the page.
146
+ try {
147
+ return build(plan, options);
148
+ }
149
+ catch {
150
+ return torn;
151
+ }
152
+ }
153
+ /** The app, from a compiled document: the second half of compiling one, and all of `appFrom`. */
154
+ export function build(plan, options = {}) {
155
+ const { document } = plan;
156
+ const today = options.today ?? (() => new Date().toISOString().slice(0, 10));
157
+ const edges = new Map(plan.edges.map(([name, edge]) => [name, edge]));
158
+ const shapes = new Map();
159
+ for (const [kind, spec] of Object.entries(document.kinds)) {
160
+ const computed = plan.kinds[kind]?.computed;
161
+ shapes.set(kind, {
162
+ fields: new Set(Object.keys(spec.fields)),
163
+ edges: new Map(Object.entries(spec.edges ?? {}).map(([name, e]) => [name, e.cardinality ?? "many"])),
164
+ ...(computed ? { computed: new Map(computed.map(([name, expr]) => [name, expr])) } : {}),
165
+ });
166
+ }
167
+ // What `{x | money}` says in a label, a sentence or a refusal: the app's currency and locale (FR-100).
168
+ const { accent: _accent, name: _wordmark, ...money } = document.brand ?? {};
169
+ // ── kinds ────────────────────────────────────────────────────────────────
170
+ const definitions = Object.entries(document.kinds).map(([kind, spec]) => {
171
+ const shape = {};
172
+ for (const [field, f] of Object.entries(spec.fields))
173
+ shape[field] = fieldSchema(f, !f.required);
174
+ const { label: labelParts, describe: describeParts } = plan.kinds[kind] ?? {};
175
+ const computed = Object.entries(spec.computed ?? {}).map(([name, field]) => [name, typeof field === "string" ? { expr: field } : field]);
176
+ // A computed field's words are said like a field's: its label, where it has one.
177
+ const labels = Object.fromEntries([
178
+ ...Object.entries(spec.fields).filter(([, f]) => f.label).map(([n, f]) => [n, f.label]),
179
+ ...computed.filter(([, c]) => c.label).map(([n, c]) => [n, c.label]),
180
+ ]);
181
+ // Defaults stay out of the zod schema (hydration must not invent values) and ride beside it, for a repair to read.
182
+ const defaults = Object.fromEntries(Object.entries(spec.fields).filter(([, f]) => f.default !== undefined).map(([n, f]) => [n, f.default]));
183
+ const edgeDecls = Object.fromEntries(Object.entries(spec.edges ?? {}).map(([n, e]) => [
184
+ n,
185
+ {
186
+ to: e.to,
187
+ ...(e.cardinality ? { cardinality: e.cardinality } : {}),
188
+ ...(e.description ? { description: e.description } : {}),
189
+ ...(e.inverse ? { inverse: e.inverse } : {}),
190
+ ...(e.appendOnly ? { appendOnly: e.appendOnly } : {}),
191
+ },
192
+ ]));
193
+ return defineNode(kind, {
194
+ fields: z.object(shape),
195
+ edges: edgeDecls,
196
+ ...(spec.plural ? { plural: spec.plural } : {}),
197
+ ...(spec.noun ? { noun: spec.noun } : {}),
198
+ ...(spec.description ? { description: spec.description } : {}),
199
+ ...(labelParts ? { label: (node) => renderTemplate(labelParts, { node: node, kinds: shapes, today: today(), money }) || node.id } : {}),
200
+ ...(describeParts ? { describe: (node) => renderTemplate(describeParts, { node: node, kinds: shapes, today: today(), money }) } : {}),
201
+ ...(spec.lifecycle ? { lifecycle: { field: spec.lifecycle.field, retired: spec.lifecycle.retired } } : {}),
202
+ ...(spec.figure ? { figure: spec.figure } : {}),
203
+ ...(spec.computed && Object.keys(spec.computed).length > 0 ? { computed: spec.computed } : {}),
204
+ ...(Object.keys(labels).length > 0 || spec.glance ? { display: { ...(Object.keys(labels).length > 0 ? { labels } : {}), ...(spec.glance ? { glance: [...spec.glance] } : {}) } } : {}),
205
+ ...(Object.keys(defaults).length > 0 ? { defaults } : {}),
206
+ });
207
+ });
208
+ const schema = createSchema(definitions);
209
+ function labelFor(node) {
210
+ const definition = schema.tryDefinition(node.kind);
211
+ return definition?.label?.(node) ?? node.id;
212
+ }
213
+ // ── acts ─────────────────────────────────────────────────────────────────
214
+ const mutations = [];
215
+ for (const [name, act] of Object.entries(document.acts ?? {})) {
216
+ const planned = plan.acts[name];
217
+ const { title, effects, guard, refusal, destructive, idempotent, creates, connects, severs, writes, writesOther, sets } = planned;
218
+ const args = new Map(planned.args);
219
+ const shape = {};
220
+ for (const [arg, a] of args)
221
+ shape[arg] = argSchema(a);
222
+ const subjectKinds = act.on === undefined ? [] : Array.isArray(act.on) ? act.on : [act.on];
223
+ const exprs = new Map(planned.exprs);
224
+ mutations.push(defineMutation(name, {
225
+ input: z.object(shape),
226
+ title,
227
+ ...(act.description ? { description: act.description } : {}),
228
+ ...(act.fromTheOtherEnd ? { fromTheOtherEnd: act.fromTheOtherEnd } : {}),
229
+ ...(args.has(SUBJECT_ARG) ? { subject: { kinds: subjectKinds.length > 0 ? subjectKinds : "*", arg: SUBJECT_ARG } } : {}),
230
+ ...(destructive ? { destructive: true } : {}),
231
+ ...(idempotent ? { idempotent: true } : {}),
232
+ ...(creates.length > 0 ? { creates } : {}),
233
+ ...(connects.length > 0 ? { connects } : {}),
234
+ ...(severs.length > 0 ? { severs } : {}),
235
+ // Said even when empty (FR-110): a document act's writes are read off it, so nothing guesses them from its arguments' names.
236
+ writes,
237
+ ...(Object.keys(writesOther).length > 0 ? { writesOther } : {}),
238
+ ...(Object.keys(sets).length > 0 ? { sets } : {}),
239
+ describe: (input, graph) => {
240
+ const subject = typeof input[SUBJECT_ARG] === "string" ? graph.getNode(input[SUBJECT_ARG]) : undefined;
241
+ const what = subject ? labelFor(subject) : Object.values(input).find((v) => typeof v === "string");
242
+ return what ? `${title}: ${String(what)}` : title;
243
+ },
244
+ apply(context, input) {
245
+ const graph = context.graph;
246
+ const subjectId = typeof input[SUBJECT_ARG] === "string" ? input[SUBJECT_ARG] : undefined;
247
+ const subject = subjectId ? graph.getNode(subjectId) : undefined;
248
+ if (subjectId && !subject)
249
+ throw new ActRefusal(`there is no record "${subjectId}"`, "invalid");
250
+ if (subject && subjectKinds.length > 0 && !subjectKinds.includes(subject.kind))
251
+ throw new ActRefusal(`"${title}" acts on ${subjectKinds.join(" or ")}, not on ${withArticle(subject.kind)}`, "invalid");
252
+ const bindings = {};
253
+ for (const [k, v] of Object.entries(input))
254
+ if (v !== undefined)
255
+ bindings[k] = v;
256
+ if (guard && subject) {
257
+ let allowed;
258
+ try {
259
+ allowed = evaluateExpr(guard, { graph, subject, kinds: shapes, bindings, today: today() });
260
+ }
261
+ catch (e) {
262
+ if (e instanceof ExprEvalError)
263
+ throw new ActRefusal(`"${title}" could not be judged: ${e.sentence}`);
264
+ throw e;
265
+ }
266
+ if (allowed !== true) {
267
+ throw new ActRefusal(refusal ? renderTemplate(refusal, { node: subject, kinds: shapes, graph, bindings, today: today(), money }) : `"${title}" is not allowed for ${labelFor(subject)} right now`);
268
+ }
269
+ }
270
+ const made = new Map();
271
+ const resolve = (value, current) => {
272
+ if (value && typeof value === "object" && !Array.isArray(value) && "expr" in value) {
273
+ try {
274
+ return evaluateExpr(exprs.get(value.expr), { graph, subject: current ?? subject ?? null, kinds: shapes, bindings, today: today() });
275
+ }
276
+ catch (e) {
277
+ if (e instanceof ExprEvalError)
278
+ throw new ActRefusal(`"${title}" could not work out a value: ${e.sentence}`);
279
+ throw e;
280
+ }
281
+ }
282
+ const ref = refName(value);
283
+ if (ref === undefined)
284
+ return typeof value === "string" && value.startsWith("$$") ? value.slice(1) : value;
285
+ if (ref === "subject")
286
+ return subjectId;
287
+ if (ref === "now")
288
+ return new Date().toISOString();
289
+ if (ref === "today")
290
+ return today();
291
+ if (made.has(ref))
292
+ return made.get(ref);
293
+ return input[ref];
294
+ };
295
+ for (const effect of effects) {
296
+ if ("create" in effect) {
297
+ const kind = document.kinds[effect.create];
298
+ const node = { kind: effect.create };
299
+ for (const [field, f] of Object.entries(kind.fields))
300
+ if (f.default !== undefined)
301
+ node[field] = f.default;
302
+ for (const [field, value] of Object.entries(effect.set ?? {})) {
303
+ const v = resolve(value, undefined);
304
+ if (v !== undefined)
305
+ node[field] = v;
306
+ }
307
+ const labelField = defaultLabelField(kind);
308
+ const id = context.freshId(String((labelField && node[labelField]) ?? effect.create), effect.create);
309
+ context.addNode({ id, ...node });
310
+ if (effect.as)
311
+ made.set(effect.as, id);
312
+ }
313
+ else if ("connect" in effect || "sever" in effect) {
314
+ const kind = "connect" in effect ? effect.connect : effect.sever;
315
+ const from = String(resolve(effect.from, undefined) ?? "");
316
+ const to = String(resolve(effect.to, undefined) ?? "");
317
+ if (!graph.has(from) && ![...made.values()].includes(from))
318
+ throw new ActRefusal(`there is no record "${from}"`, "invalid");
319
+ if (!graph.has(to) && ![...made.values()].includes(to))
320
+ throw new ActRefusal(`there is no record "${to}"`, "invalid");
321
+ if ("connect" in effect) {
322
+ if (edges.get(kind)?.cardinality === "one")
323
+ for (const existing of graph.out(from, kind))
324
+ if (existing.id !== to)
325
+ context.removeEdge({ kind, from, to: existing.id });
326
+ if (!graph.out(from, kind).some((n) => n.id === to))
327
+ context.addEdge({ kind, from, to });
328
+ }
329
+ else {
330
+ context.removeEdge({ kind, from, to });
331
+ }
332
+ }
333
+ else if ("set" in effect) {
334
+ const targetId = String(resolve(effect.target ?? "$subject", undefined) ?? "");
335
+ const target = graph.getNode(targetId);
336
+ if (!target && ![...made.values()].includes(targetId))
337
+ throw new ActRefusal(`there is no record "${targetId}"`, "invalid");
338
+ const patch = {};
339
+ for (const [field, value] of Object.entries(effect.set)) {
340
+ const v = resolve(value, target);
341
+ if (v !== undefined)
342
+ patch[field] = v;
343
+ }
344
+ if (Object.keys(patch).length > 0)
345
+ context.patchNode(targetId, patch);
346
+ }
347
+ else if ("remove" in effect) {
348
+ const id = String(resolve(effect.remove, undefined) ?? "");
349
+ if (!graph.has(id))
350
+ throw new ActRefusal(`there is no record "${id}"`, "invalid");
351
+ context.removeNode(id);
352
+ }
353
+ else if ("replace" in effect && subject) {
354
+ // The subject's links of each relation, at its own end, severed — all but the one being made (FR-115).
355
+ const kept = input["to"];
356
+ for (const relation of effect.replace) {
357
+ const fromSubject = edges.get(relation)?.from.includes(subject.kind) ?? true;
358
+ for (const other of fromSubject ? graph.out(subject.id, relation) : graph.in(subject.id, relation)) {
359
+ if (relation === effect.keep && other.id === kept)
360
+ continue;
361
+ context.removeEdge(fromSubject ? { kind: relation, from: subject.id, to: other.id } : { kind: relation, from: other.id, to: subject.id });
362
+ }
363
+ }
364
+ }
365
+ }
366
+ },
367
+ }));
368
+ }
369
+ // ── rules ────────────────────────────────────────────────────────────────
370
+ const invariants = [];
371
+ for (const [name, rule] of Object.entries(document.rules ?? {})) {
372
+ const { title, require, when, says } = plan.rules[name];
373
+ const repairs = rule.repairs ?? [];
374
+ const judge = (graph, subject) => {
375
+ const ctx = { graph, subject, kinds: shapes, today: today() };
376
+ let holds;
377
+ /*
378
+ * A RULE THAT CANNOT ANSWER IS THE ENGINE'S TO SAY (FR-29). Out of
379
+ * budget it throws RuleBudgetError, and the violation's status is
380
+ * `over-budget`; any other mistake (a word added to a number) is
381
+ * `could-not-judge`. Both name the rule and its subject, and neither
382
+ * is a hang or a crash that takes the other rules down.
383
+ */
384
+ try {
385
+ if (when && evaluateExpr(when, ctx) !== true)
386
+ return [];
387
+ holds = evaluateExpr(require, ctx) === true;
388
+ }
389
+ catch (e) {
390
+ if (e instanceof ExprBudgetError)
391
+ throw new RuleBudgetError(e.sentence);
392
+ if (e instanceof ExprEvalError)
393
+ throw new Error(e.sentence);
394
+ throw e;
395
+ }
396
+ if (holds)
397
+ return [];
398
+ const repairList = repairs.flatMap((r) => {
399
+ const act = document.acts?.[r.act];
400
+ const args = {};
401
+ if (subject && (act?.on || /^(edit|remove)-/.test(r.act)))
402
+ args[SUBJECT_ARG] = subject.id;
403
+ for (const [k, v] of Object.entries(r.args ?? {}))
404
+ args[k] = refName(v) === "subject" ? subject?.id : v;
405
+ const declared = act ? plan.acts[r.act].args : [];
406
+ const missing = declared.filter(([k, a]) => a.required && args[k] === undefined).map(([k]) => k);
407
+ return [{ mutation: r.act, label: r.label ?? act?.title ?? r.act.replace(/-/g, " "), args, ...(missing.length > 0 ? { missing } : {}) }];
408
+ });
409
+ return [
410
+ {
411
+ invariant: name,
412
+ ...(subject ? { subjectId: subject.id } : {}),
413
+ label: title,
414
+ message: says ? renderTemplate(says, { node: subject, kinds: shapes, graph, today: today(), money }) : subject ? `${labelFor(subject)}: ${title}` : title,
415
+ nodeIds: subject ? [subject.id] : [],
416
+ repairs: repairList,
417
+ },
418
+ ];
419
+ };
420
+ const declared = {
421
+ label: title,
422
+ judgement: { require: rule.require, ...(rule.when ? { when: rule.when } : {}), ...(rule.says ? { says: rule.says } : {}) },
423
+ ...(rule.description ? { description: rule.description } : {}),
424
+ ...(repairs.length > 0 ? { repairs: repairs.map((r) => r.act) } : {}),
425
+ };
426
+ invariants.push((rule.over === "graph"
427
+ ? defineInvariant(name, { scope: "graph", ...declared, evaluate: ({ graph }) => judge(graph, null) })
428
+ : defineInvariant(name, { scope: { kind: rule.over }, ...declared, evaluate: ({ graph, subject }) => judge(graph, subject) })));
429
+ }
430
+ // ── policy, brand, the rest ──────────────────────────────────────────────
431
+ /*
432
+ * WHO SEES WHAT is the app's, in the framework's one meaning (FR-02):
433
+ * absent, everybody sees everything; present, a kind no sight names is
434
+ * seen by nobody but the system, and `own` is the principal's own records.
435
+ */
436
+ const policy = document.policy
437
+ ? {
438
+ grants: document.policy.grants,
439
+ ...(document.policy.sees ? { sees: document.policy.sees } : {}),
440
+ ...(document.roles ? { roles: document.roles } : {}),
441
+ }
442
+ : undefined;
443
+ const app = {
444
+ name: document.name,
445
+ schema,
446
+ mutations,
447
+ invariants,
448
+ ...(policy ? { policy } : {}),
449
+ ...(plan.brand ? { brand: plan.brand } : {}),
450
+ ...(document.modules ? { modules: document.modules } : {}),
451
+ ...(document.lenses ? { lenses: document.lenses } : {}),
452
+ // The arrangement is the app's (FR-80): every face reads it beside the places.
453
+ ...(document.pages ? { pages: document.pages } : {}),
454
+ ...(document.settings ? { settings: document.settings } : {}),
455
+ // The document's views are the declaration's view specs (FR-03): data the framework draws.
456
+ ...(plan.viewSpecs ? { viewSpecs: plan.viewSpecs } : {}),
457
+ // And its home view, about no one record, is the app's home (FR-81).
458
+ ...(plan.home ? { home: plan.home } : {}),
459
+ version: document.version ?? 1,
460
+ };
461
+ // `toDocument(app)` gives this document back, byte for byte; `serializeCompiled(…)` this compiled app.
462
+ rememberDocument(app, document);
463
+ PLANS.set(app, plan);
464
+ return { ok: true, app, document, findings: plan.findings, sights: document.policy?.sees, kinds: shapes };
465
+ }
466
+ //# sourceMappingURL=compiled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiled.js","sourceRoot":"","sources":["../../src/document/compiled.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/document/edit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAWL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AA2BrB,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,GAC5H;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,CAAC;AAElE,+CAA+C;AAC/C,eAAO,MAAM,QAAQ,maA6BX,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,uFAAuF;AACvF,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAm4DzF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,CAsB9F;AAED,0HAA0H;AAC1H,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;KAAE,CAAC;CACrI;AAED,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7F;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAiBjL"}
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../src/document/edit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAWL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AA4BrB,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAA;CAAE,GAC5H;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAA;CAAE,CAAC;AAElE,+CAA+C;AAC/C,eAAO,MAAM,QAAQ,maA6BX,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/C,uFAAuF;AACvF,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAm4DzF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,CAsB9F;AAED,0HAA0H;AAC1H,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;KAAE,CAAC;CACrI;AAED,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAClB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7F;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACzE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,IAAI,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAiBjL"}
@@ -9,7 +9,7 @@ import { ActSpec, EDGE_NAME, EdgeSpec, FIELD_NAME, FIELD_TYPES, FieldSpec, KindS
9
9
  import { SHIPPED_LENSES, isShippedLens, SHIPPED_LENS_NAMES } from "../places.js";
10
10
  import { placeSlug } from "../views/types.js";
11
11
  import { computedOf, validateComputed } from "./computed.js";
12
- import { parseTemplate, templateBraces, TemplateError } from "./template.js";
12
+ import { parseTemplate, templateBraces, TemplateError } from "./template-parse.js";
13
13
  import { validateViews, VIEW_SLOTS } from "./views.js";
14
14
  /** The ops, for tool schemas and the guide. */
15
15
  export const EDIT_OPS = [