@_linked/core 2.10.0 → 2.10.1-next.20260702053252

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 (58) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/lib/cjs/index.d.ts +1 -1
  3. package/lib/cjs/index.js.map +1 -1
  4. package/lib/cjs/queries/CreateBuilder.js +3 -2
  5. package/lib/cjs/queries/CreateBuilder.js.map +1 -1
  6. package/lib/cjs/queries/DeleteBuilder.js +1 -1
  7. package/lib/cjs/queries/DeleteBuilder.js.map +1 -1
  8. package/lib/cjs/queries/FieldSet.d.ts +32 -4
  9. package/lib/cjs/queries/FieldSet.js +127 -12
  10. package/lib/cjs/queries/FieldSet.js.map +1 -1
  11. package/lib/cjs/queries/MutationSerialization.d.ts +39 -40
  12. package/lib/cjs/queries/MutationSerialization.js +113 -87
  13. package/lib/cjs/queries/MutationSerialization.js.map +1 -1
  14. package/lib/cjs/queries/QueryBuilder.d.ts +2 -2
  15. package/lib/cjs/queries/QueryBuilder.js +11 -16
  16. package/lib/cjs/queries/QueryBuilder.js.map +1 -1
  17. package/lib/cjs/queries/QueryBuilderSerialization.d.ts +17 -81
  18. package/lib/cjs/queries/QueryBuilderSerialization.js +21 -295
  19. package/lib/cjs/queries/QueryBuilderSerialization.js.map +1 -1
  20. package/lib/cjs/queries/UpdateBuilder.js +3 -3
  21. package/lib/cjs/queries/UpdateBuilder.js.map +1 -1
  22. package/lib/cjs/queries/ZcExpression.d.ts +68 -0
  23. package/lib/cjs/queries/ZcExpression.js +369 -0
  24. package/lib/cjs/queries/ZcExpression.js.map +1 -0
  25. package/lib/cjs/queries/lowerMutationJSON.d.ts +15 -2
  26. package/lib/cjs/queries/lowerMutationJSON.js +68 -46
  27. package/lib/cjs/queries/lowerMutationJSON.js.map +1 -1
  28. package/lib/cjs/shapes/SHACL.js +10 -0
  29. package/lib/cjs/shapes/SHACL.js.map +1 -1
  30. package/lib/esm/index.d.ts +1 -1
  31. package/lib/esm/index.js.map +1 -1
  32. package/lib/esm/queries/CreateBuilder.js +3 -2
  33. package/lib/esm/queries/CreateBuilder.js.map +1 -1
  34. package/lib/esm/queries/DeleteBuilder.js +1 -1
  35. package/lib/esm/queries/DeleteBuilder.js.map +1 -1
  36. package/lib/esm/queries/FieldSet.d.ts +32 -4
  37. package/lib/esm/queries/FieldSet.js +129 -14
  38. package/lib/esm/queries/FieldSet.js.map +1 -1
  39. package/lib/esm/queries/MutationSerialization.d.ts +39 -40
  40. package/lib/esm/queries/MutationSerialization.js +112 -86
  41. package/lib/esm/queries/MutationSerialization.js.map +1 -1
  42. package/lib/esm/queries/QueryBuilder.d.ts +2 -2
  43. package/lib/esm/queries/QueryBuilder.js +11 -16
  44. package/lib/esm/queries/QueryBuilder.js.map +1 -1
  45. package/lib/esm/queries/QueryBuilderSerialization.d.ts +17 -81
  46. package/lib/esm/queries/QueryBuilderSerialization.js +21 -260
  47. package/lib/esm/queries/QueryBuilderSerialization.js.map +1 -1
  48. package/lib/esm/queries/UpdateBuilder.js +3 -3
  49. package/lib/esm/queries/UpdateBuilder.js.map +1 -1
  50. package/lib/esm/queries/ZcExpression.d.ts +68 -0
  51. package/lib/esm/queries/ZcExpression.js +361 -0
  52. package/lib/esm/queries/ZcExpression.js.map +1 -0
  53. package/lib/esm/queries/lowerMutationJSON.d.ts +15 -2
  54. package/lib/esm/queries/lowerMutationJSON.js +69 -47
  55. package/lib/esm/queries/lowerMutationJSON.js.map +1 -1
  56. package/lib/esm/shapes/SHACL.js +10 -0
  57. package/lib/esm/shapes/SHACL.js.map +1 -1
  58. package/package.json +1 -1
@@ -0,0 +1,369 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.segmentsToPath = segmentsToPath;
4
+ exports.pathToSegmentIds = pathToSegmentIds;
5
+ exports.encodeValueExpr = encodeValueExpr;
6
+ exports.decodeValueExpr = decodeValueExpr;
7
+ exports.encodeCondition = encodeCondition;
8
+ exports.decodeCondition = decodeCondition;
9
+ const ExpressionNode_js_1 = require("../expressions/ExpressionNode.js");
10
+ const PropertyPath_js_1 = require("./PropertyPath.js");
11
+ const COMPARISON_OPS = new Set([
12
+ '=',
13
+ '!=',
14
+ '>',
15
+ '>=',
16
+ '<',
17
+ '<=',
18
+ ]);
19
+ const COMBINATORS = new Set(['and', 'or', 'not']);
20
+ // ---------------------------------------------------------------------------
21
+ // Path helpers
22
+ // ---------------------------------------------------------------------------
23
+ /** PropertyShape id = `{shapeId}/{label}` (SHACL.ts), so the label is the last segment. */
24
+ function labelOf(segmentIri) {
25
+ const i = segmentIri.lastIndexOf('/');
26
+ return i >= 0 ? segmentIri.slice(i + 1) : segmentIri;
27
+ }
28
+ /** Property-shape IRIs → a dotted label path. */
29
+ function segmentsToPath(segmentIds) {
30
+ return segmentIds.map(labelOf).join('.');
31
+ }
32
+ /** A dotted label path → its property-shape IRIs, resolved against `shape`. */
33
+ function pathToSegmentIds(shape, path) {
34
+ return (0, PropertyPath_js_1.walkPropertyPath)(shape, path).segments.map((s) => s.id);
35
+ }
36
+ // ---------------------------------------------------------------------------
37
+ // refs merging
38
+ // ---------------------------------------------------------------------------
39
+ function mergeRefs(into, from) {
40
+ for (const [k, v] of from)
41
+ into.set(k, v);
42
+ }
43
+ // ---------------------------------------------------------------------------
44
+ // VALUE tier
45
+ // ---------------------------------------------------------------------------
46
+ /** Encode an IR expression used as a value/operand into a Z-c value. */
47
+ function encodeValueExpr(ir, refs) {
48
+ switch (ir.kind) {
49
+ case 'literal_expr': {
50
+ const v = ir.value;
51
+ if (v instanceof Date)
52
+ return { date: v.toISOString() };
53
+ return v;
54
+ }
55
+ case 'reference_expr':
56
+ if (ir.contextName !== undefined)
57
+ return { $ctx: ir.contextName };
58
+ return { id: ir.value };
59
+ case 'context_property_expr':
60
+ return { $ctx: ir.contextName, path: labelOf(ir.property) };
61
+ case 'property_expr': {
62
+ const segs = refs.get(ir.sourceAlias);
63
+ return { path: segs ? segmentsToPath(segs) : labelOf(ir.property) };
64
+ }
65
+ case 'alias_expr': {
66
+ const segs = refs.get(ir.alias);
67
+ // A bare alias_expr as a value is the node at the end of the traversal.
68
+ return { path: segs ? segmentsToPath(segs) : ir.alias };
69
+ }
70
+ case 'binary_expr':
71
+ return [
72
+ ir.operator,
73
+ encodeValueExpr(ir.left, refs),
74
+ encodeValueExpr(ir.right, refs),
75
+ ];
76
+ case 'logical_expr':
77
+ return [ir.operator, ...ir.expressions.map((e) => encodeValueExpr(e, refs))];
78
+ case 'not_expr':
79
+ return ['not', encodeValueExpr(ir.expression, refs)];
80
+ case 'function_expr':
81
+ return [ir.name, ...ir.args.map((a) => encodeValueExpr(a, refs))];
82
+ case 'aggregate_expr':
83
+ return [ir.name, ...ir.args.map((a) => encodeValueExpr(a, refs))];
84
+ default:
85
+ throw new Error(`Cannot encode expression of kind '${ir.kind}'`);
86
+ }
87
+ }
88
+ /** Decode a Z-c value back into an IR expression + its placeholder refs. */
89
+ function decodeValueExpr(zc, shape) {
90
+ // S-expr array
91
+ if (Array.isArray(zc)) {
92
+ const [head, ...operands] = zc;
93
+ const refs = new Map();
94
+ const args = operands.map((o) => {
95
+ const { ir, refs: r } = decodeValueExpr(o, shape);
96
+ mergeRefs(refs, r);
97
+ return ir;
98
+ });
99
+ return { ir: headToIR(head, args), refs };
100
+ }
101
+ // Objects: recognized value-objects
102
+ if (zc !== null && typeof zc === 'object') {
103
+ const o = zc;
104
+ if ('id' in o) {
105
+ return { ir: { kind: 'reference_expr', value: o.id }, refs: new Map() };
106
+ }
107
+ if ('$ctx' in o) {
108
+ if (typeof o.path === 'string') {
109
+ const property = pathToSegmentIds(shape, o.path).pop();
110
+ return {
111
+ ir: { kind: 'context_property_expr', contextName: o.$ctx, property },
112
+ refs: new Map(),
113
+ };
114
+ }
115
+ return { ir: { kind: 'reference_expr', contextName: o.$ctx }, refs: new Map() };
116
+ }
117
+ if ('date' in o) {
118
+ return { ir: { kind: 'literal_expr', value: new Date(o.date) }, refs: new Map() };
119
+ }
120
+ if ('path' in o) {
121
+ return propertyOrAlias(shape, o.path);
122
+ }
123
+ if ('list' in o) {
124
+ throw new Error('A {list} value is only valid as an in/nin operand');
125
+ }
126
+ }
127
+ // bare scalar literal
128
+ return { ir: { kind: 'literal_expr', value: zc }, refs: new Map() };
129
+ }
130
+ /**
131
+ * Resolve a dotted path to its expression node:
132
+ * - empty path `""` → `alias_expr` (the bare subject, e.g. `p.equals(x)`);
133
+ * - any non-empty path → `property_expr` (a property access, relation or not —
134
+ * `p.bestFriend.equals(x)` compares the property value, no traversal).
135
+ */
136
+ function propertyOrAlias(shape, path) {
137
+ const node = path === ''
138
+ ? (0, ExpressionNode_js_1.tracedAliasExpression)([])
139
+ : (0, ExpressionNode_js_1.tracedPropertyExpression)(pathToSegmentIds(shape, path));
140
+ return { ir: node.ir, refs: node._refs };
141
+ }
142
+ /** Build an IR node from an S-expr head symbol/name + decoded args. */
143
+ function headToIR(head, args) {
144
+ if (head === 'and' || head === 'or') {
145
+ return { kind: 'logical_expr', operator: head, expressions: args };
146
+ }
147
+ if (head === 'not') {
148
+ return { kind: 'not_expr', expression: args[0] };
149
+ }
150
+ if (COMPARISON_OPS.has(head) || '+-*/'.includes(head)) {
151
+ return { kind: 'binary_expr', operator: head, left: args[0], right: args[1] };
152
+ }
153
+ if (AGGREGATES.has(head)) {
154
+ return { kind: 'aggregate_expr', name: head, args };
155
+ }
156
+ // default: a named function (verbatim IR function name, e.g. STRLEN)
157
+ return { kind: 'function_expr', name: head, args };
158
+ }
159
+ const AGGREGATES = new Set(['count', 'sum', 'avg', 'min', 'max']);
160
+ // ---------------------------------------------------------------------------
161
+ // CONDITION tier
162
+ // ---------------------------------------------------------------------------
163
+ /** Encode a where-clause node (boolean) into a Z-c condition. */
164
+ function encodeCondition(node, shape) {
165
+ if (node instanceof ExpressionNode_js_1.ExistsCondition) {
166
+ return encodeExists(node, shape);
167
+ }
168
+ return encodeBoolExpr(node.ir, node._refs, shape);
169
+ }
170
+ function encodeExists(ec, shape) {
171
+ const rel = segmentsToPath(ec.pathSegmentIds);
172
+ let quantifier;
173
+ let predIr = ec.predicate.ir;
174
+ const predRefs = ec.predicate._refs;
175
+ if (!ec.negated) {
176
+ quantifier = 'some';
177
+ }
178
+ else if (predIr.kind === 'not_expr') {
179
+ // every(fn) was built as NOT EXISTS(NOT fn) — unwrap the inner predicate.
180
+ quantifier = 'every';
181
+ predIr = predIr.expression;
182
+ }
183
+ else {
184
+ quantifier = 'none';
185
+ }
186
+ let base = {
187
+ [`${rel}.${quantifier}`]: encodeBoolExpr(predIr, predRefs, shape),
188
+ };
189
+ // Fold any chained and/or conditions into nested logical combinators.
190
+ for (const { op, condition } of ec.chain) {
191
+ const c = encodeCondition(condition instanceof ExpressionNode_js_1.ExistsCondition ? condition : condition, shape);
192
+ base = { [op]: [base, c] };
193
+ }
194
+ return base;
195
+ }
196
+ /** Encode a boolean IR expression into a Z-c condition (path-keyed where possible). */
197
+ function encodeBoolExpr(ir, refs, shape) {
198
+ if (ir.kind === 'logical_expr') {
199
+ const parts = ir.expressions.map((e) => encodeBoolExpr(e, refs, shape));
200
+ if (ir.operator === 'and') {
201
+ const merged = tryMergeAnd(parts);
202
+ if (merged)
203
+ return merged;
204
+ }
205
+ return { [ir.operator]: parts };
206
+ }
207
+ if (ir.kind === 'not_expr') {
208
+ return { not: encodeBoolExpr(ir.expression, refs, shape) };
209
+ }
210
+ if (ir.kind === 'binary_expr' && COMPARISON_OPS.has(ir.operator)) {
211
+ const key = pathKeyOf(ir.left, refs);
212
+ if (key !== null) {
213
+ const value = encodeValueExpr(ir.right, refs);
214
+ if (ir.operator === '=')
215
+ return { [key]: value };
216
+ return { [key]: { [ir.operator]: value } };
217
+ }
218
+ }
219
+ // Fallback: S-expr (boolean expression that isn't a simple path-keyed shape).
220
+ return encodeValueExpr(ir, refs);
221
+ }
222
+ /** A path key for a left operand that is a single property/alias/context property. */
223
+ function pathKeyOf(ir, refs) {
224
+ if (ir.kind === 'property_expr') {
225
+ const segs = refs.get(ir.sourceAlias);
226
+ return segs ? segmentsToPath(segs) : labelOf(ir.property);
227
+ }
228
+ if (ir.kind === 'alias_expr') {
229
+ const segs = refs.get(ir.alias);
230
+ return segs ? segmentsToPath(segs) : null;
231
+ }
232
+ if (ir.kind === 'context_property_expr') {
233
+ return null; // a context property on the LHS is uncommon; use S-expr
234
+ }
235
+ return null;
236
+ }
237
+ /** Merge AND conjuncts into one path-keyed object iff all are distinct single-key path conditions. */
238
+ function tryMergeAnd(parts) {
239
+ const out = {};
240
+ for (const p of parts) {
241
+ if (Array.isArray(p) || typeof p !== 'object' || p === null)
242
+ return null;
243
+ const keys = Object.keys(p);
244
+ if (keys.length !== 1)
245
+ return null;
246
+ const k = keys[0];
247
+ if (COMBINATORS.has(k) || k in out)
248
+ return null;
249
+ out[k] = p[k];
250
+ }
251
+ return out;
252
+ }
253
+ /** Decode a Z-c condition into a runtime WherePath (`{expressionNode}` | `{existsCondition}`). */
254
+ function decodeCondition(zc, shape) {
255
+ const node = decodeConditionNode(zc, shape);
256
+ return node instanceof ExpressionNode_js_1.ExistsCondition
257
+ ? { existsCondition: node }
258
+ : { expressionNode: node };
259
+ }
260
+ function decodeConditionNode(zc, shape) {
261
+ // S-expr fallback
262
+ if (Array.isArray(zc)) {
263
+ const { ir, refs } = decodeValueExpr(zc, shape);
264
+ return new ExpressionNode_js_1.ExpressionNode(ir, refs);
265
+ }
266
+ const o = zc;
267
+ const keys = Object.keys(o);
268
+ // Combinators
269
+ if (keys.length === 1 && COMBINATORS.has(keys[0])) {
270
+ const k = keys[0];
271
+ if (k === 'not') {
272
+ const inner = decodeConditionNode(o.not, shape);
273
+ if (inner instanceof ExpressionNode_js_1.ExistsCondition)
274
+ return inner.not();
275
+ return new ExpressionNode_js_1.ExpressionNode({ kind: 'not_expr', expression: inner.ir }, inner._refs);
276
+ }
277
+ // and / or
278
+ const elems = o[k].map((c) => decodeConditionNode(c, shape));
279
+ // An exists-chain: first operand is an ExistsCondition → fold the rest as its chain.
280
+ if (elems[0] instanceof ExpressionNode_js_1.ExistsCondition) {
281
+ let ec = elems[0];
282
+ for (let i = 1; i < elems.length; i++) {
283
+ ec = (k === 'and' ? ec.and(elems[i]) : ec.or(elems[i]));
284
+ }
285
+ return ec;
286
+ }
287
+ const refs = new Map();
288
+ const expressions = elems.map((e) => {
289
+ mergeRefs(refs, e._refs);
290
+ return e.ir;
291
+ });
292
+ return new ExpressionNode_js_1.ExpressionNode({ kind: 'logical_expr', operator: k, expressions }, refs);
293
+ }
294
+ // Single quantifier key: "rel.some" | "rel.every" | "rel.none"
295
+ if (keys.length === 1) {
296
+ const q = matchQuantifier(keys[0]);
297
+ if (q) {
298
+ const predicate = expressionNodeFromCondition(o[keys[0]], shape);
299
+ const segmentIds = pathToSegmentIds(shape, q.rel);
300
+ if (q.kind === 'some')
301
+ return new ExpressionNode_js_1.ExistsCondition(segmentIds, predicate, false);
302
+ if (q.kind === 'none')
303
+ return new ExpressionNode_js_1.ExistsCondition(segmentIds, predicate, true);
304
+ // every(fn) = NOT EXISTS(NOT fn)
305
+ return new ExpressionNode_js_1.ExistsCondition(segmentIds, new ExpressionNode_js_1.ExpressionNode({ kind: 'not_expr', expression: predicate.ir }, predicate._refs), true);
306
+ }
307
+ }
308
+ // Path-keyed condition(s): one or more `path: value|opMap` → AND of comparisons.
309
+ const refs = new Map();
310
+ const comparisons = [];
311
+ for (const key of keys) {
312
+ const left = propertyOrAlias(shape, key);
313
+ mergeRefs(refs, left.refs);
314
+ const v = o[key];
315
+ for (const cmp of comparisonsFor(left.ir, v, shape, refs))
316
+ comparisons.push(cmp);
317
+ }
318
+ const ir = comparisons.length === 1
319
+ ? comparisons[0]
320
+ : { kind: 'logical_expr', operator: 'and', expressions: comparisons };
321
+ return new ExpressionNode_js_1.ExpressionNode(ir, refs);
322
+ }
323
+ function comparisonsFor(left, value, shape, refs) {
324
+ // operator map: { ">": 18, "<": 65 }
325
+ if (isOpMap(value)) {
326
+ return Object.entries(value).map(([op, v]) => {
327
+ const r = decodeValueExpr(v, shape);
328
+ mergeRefs(refs, r.refs);
329
+ return { kind: 'binary_expr', operator: op, left, right: r.ir };
330
+ });
331
+ }
332
+ // implicit equals
333
+ const r = decodeValueExpr(value, shape);
334
+ mergeRefs(refs, r.refs);
335
+ return [{ kind: 'binary_expr', operator: '=', left, right: r.ir }];
336
+ }
337
+ /** An object whose keys are all operator symbols (not a recognized value-object). */
338
+ function isOpMap(value) {
339
+ if (Array.isArray(value) || value === null || typeof value !== 'object')
340
+ return false;
341
+ const keys = Object.keys(value);
342
+ if (keys.length === 0)
343
+ return false;
344
+ if (keys.some((k) => k === 'id' || k === '$ctx' || k === 'path' || k === 'date' || k === 'list')) {
345
+ return false;
346
+ }
347
+ // Only comparison operators form an op-map. `in`/`nin` are intentionally NOT
348
+ // recognized here: there is no matching IR operator or encoder path yet, so
349
+ // accepting them would only produce a broken decode (backlog 002, G7).
350
+ return keys.every((k) => COMPARISON_OPS.has(k));
351
+ }
352
+ function matchQuantifier(key) {
353
+ for (const kind of ['some', 'every', 'none']) {
354
+ if (key.endsWith(`.${kind}`)) {
355
+ return { rel: key.slice(0, -(kind.length + 1)), kind };
356
+ }
357
+ }
358
+ return null;
359
+ }
360
+ /** A quantifier predicate decodes to an ExpressionNode (its inner boolean). */
361
+ function expressionNodeFromCondition(zc, shape) {
362
+ const node = decodeConditionNode(zc, shape);
363
+ if (node instanceof ExpressionNode_js_1.ExistsCondition) {
364
+ // Nested exists as a predicate is uncommon; wrap is not representable here.
365
+ throw new Error('Nested exists inside a quantifier predicate is not supported');
366
+ }
367
+ return node;
368
+ }
369
+ //# sourceMappingURL=ZcExpression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZcExpression.js","sourceRoot":"","sources":["../../../src/queries/ZcExpression.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,23 @@
1
+ /**
2
+ * Lower mutation DSL-JSON to canonical IR.
3
+ *
4
+ * This is the **IR side** of mutation (de)serialization, kept deliberately
5
+ * separate from the IR-free wire codec in `MutationSerialization.ts`. The
6
+ * canonical-IR builders (`IRMutation` / `IRLower` / …) are reachable only from
7
+ * here and from `lower()`, so a client that serializes mutations to JSON and
8
+ * forwards them (without ever lowering) tree-shakes the whole IR pipeline away.
9
+ */
10
+ import type { NodeShape } from '../shapes/SHACL.js';
1
11
  import { type NodeDescriptionValue } from './QueryFactory.js';
2
12
  import type { IRCreateQuery } from './CreateQuery.js';
3
13
  import type { IRUpdateQuery } from './UpdateQuery.js';
4
14
  import type { IRDeleteQuery } from './DeleteQuery.js';
5
15
  import { type MutationJSON, type MutationNodeDataJSON } from './MutationSerialization.js';
6
- /** Rebuild a normalized node description from JSON, resolving labels via the shape. */
7
- export declare function decodeNodeData(json: MutationNodeDataJSON): NodeDescriptionValue;
16
+ /**
17
+ * Rebuild a normalized node description from path-keyed JSON, resolving labels via the
18
+ * shape. `shape` is the shape inferred from context; `__shape` overrides it.
19
+ */
20
+ export declare function decodeNodeData(json: MutationNodeDataJSON, shape?: NodeShape): NodeDescriptionValue;
8
21
  /**
9
22
  * Lower a mutation DSL-JSON envelope to the canonical IR mutation the dataset
10
23
  * expects. Mirrors the IR that `lower()` produces from the live builder.
@@ -17,6 +17,7 @@ const IRMutation_js_1 = require("./IRMutation.js");
17
17
  const ContextRef_js_1 = require("./ContextRef.js");
18
18
  const wireVersion_js_1 = require("./wireVersion.js");
19
19
  const MutationSerialization_js_1 = require("./MutationSerialization.js");
20
+ const ZcExpression_js_1 = require("./ZcExpression.js");
20
21
  function requireShape(shapeId) {
21
22
  var _a;
22
23
  const shape = (_a = (0, ShapeClass_js_1.getShapeClass)(shapeId)) === null || _a === void 0 ? void 0 : _a.shape;
@@ -25,53 +26,72 @@ function requireShape(shapeId) {
25
26
  }
26
27
  return shape;
27
28
  }
28
- /** Decode a tagged value to the normalized form the canonical-IR builders consume. */
29
- function decodeValue(json) {
30
- switch (json.kind) {
31
- case 'unset':
32
- return undefined;
33
- case 'lit':
34
- return json.value;
35
- case 'date':
36
- return new Date(json.value);
37
- case 'ref':
38
- return { id: json.id };
39
- case 'ctxRef': {
40
- // Lowering path: a mutation must hit a concrete node, so resolve the
41
- // context now and throw if it isn't set.
42
- const id = (0, ContextRef_js_1.resolveContextId)(json.name, true);
43
- return { id };
44
- }
45
- case 'node':
46
- return decodeNodeData(json.data);
47
- case 'array':
48
- return json.items.map((item) => decodeValue(item));
49
- case 'setMod': {
50
- const mod = {};
51
- if (json.add) {
52
- mod.$add = json.add.map((v) => decodeValue(v));
53
- }
54
- if (json.remove)
55
- mod.$remove = json.remove.map((id) => ({ id }));
56
- return mod;
29
+ /**
30
+ * Decode a Z-c value to the normalized form the canonical-IR builders consume.
31
+ * `currentShape` resolves computed `{path}`/S-expr; `prop` gives a nested node's shape.
32
+ */
33
+ function decodeValue(json, currentShape, prop) {
34
+ var _a;
35
+ // S-expr computed value (no IR on the wire)
36
+ if (Array.isArray(json)) {
37
+ const { ir, refs } = (0, ZcExpression_js_1.decodeValueExpr)(json, currentShape);
38
+ return new ExpressionNode_js_1.ExpressionNode(ir, refs);
39
+ }
40
+ if (json === null)
41
+ return null;
42
+ if (typeof json !== 'object')
43
+ return json; // bare scalar literal
44
+ const o = json;
45
+ if ('unset' in o)
46
+ return undefined;
47
+ if ('date' in o)
48
+ return new Date(o.date);
49
+ if ('$ctx' in o) {
50
+ // Lowering path: a mutation must hit a concrete node, so resolve the
51
+ // context now and throw if it isn't set.
52
+ const id = (0, ContextRef_js_1.resolveContextId)(o.$ctx, true);
53
+ return { id };
54
+ }
55
+ if ('id' in o)
56
+ return { id: o.id };
57
+ if ('list' in o) {
58
+ return o.list.map((item) => decodeValue(item, currentShape, prop));
59
+ }
60
+ if ('add' in o || 'remove' in o) {
61
+ const mod = {};
62
+ if (o.add) {
63
+ mod.$add = o.add.map((v) => decodeValue(v, currentShape, prop));
57
64
  }
58
- case 'expr':
59
- return new ExpressionNode_js_1.ExpressionNode(json.ir, (0, MutationSerialization_js_1.recordToRefs)(json.refs));
65
+ if (o.remove)
66
+ mod.$remove = o.remove.map((id) => ({ id }));
67
+ return mod;
68
+ }
69
+ if ('path' in o) {
70
+ const { ir, refs } = (0, ZcExpression_js_1.decodeValueExpr)(json, currentShape);
71
+ return new ExpressionNode_js_1.ExpressionNode(ir, refs);
60
72
  }
73
+ // Otherwise: a bare path-keyed nested-node create.
74
+ return decodeNodeData(o, (_a = (0, MutationSerialization_js_1.valueShapeOf)(prop)) !== null && _a !== void 0 ? _a : currentShape);
61
75
  }
62
- /** Rebuild a normalized node description from JSON, resolving labels via the shape. */
63
- function decodeNodeData(json) {
64
- const shape = requireShape(json.shape);
65
- const fields = json.fields.map((f) => {
66
- const prop = shape.getPropertyShape(f.prop);
76
+ /**
77
+ * Rebuild a normalized node description from path-keyed JSON, resolving labels via the
78
+ * shape. `shape` is the shape inferred from context; `__shape` overrides it.
79
+ */
80
+ function decodeNodeData(json, shape) {
81
+ const nodeShape = typeof json.__shape === 'string' ? requireShape(json.__shape) : shape;
82
+ const fields = [];
83
+ for (const [key, val] of Object.entries(json)) {
84
+ if (key === '__id' || key === '__shape' || val === undefined)
85
+ continue;
86
+ const prop = nodeShape.getPropertyShape(key);
67
87
  if (!prop) {
68
- throw new Error(`Property '${f.prop}' not found on shape '${shape.label || shape.id}'`);
88
+ throw new Error(`Property '${key}' not found on shape '${nodeShape.label || nodeShape.id}'`);
69
89
  }
70
- return { prop, val: decodeValue(f.value) };
71
- });
72
- const desc = { shape, fields };
73
- if (json.id)
74
- desc.__id = json.id;
90
+ fields.push({ prop, val: decodeValue(val, nodeShape, prop) });
91
+ }
92
+ const desc = { shape: nodeShape, fields };
93
+ if (typeof json.__id === 'string')
94
+ desc.__id = json.__id;
75
95
  return desc;
76
96
  }
77
97
  function lowerWhere(shape, json) {
@@ -86,14 +106,16 @@ function lowerWhere(shape, json) {
86
106
  function lowerMutationJSON(json) {
87
107
  (0, wireVersion_js_1.assertWireVersion)(json.v);
88
108
  switch (json.op) {
89
- case 'create':
109
+ case 'create': {
110
+ const shape = requireShape(json.shape);
90
111
  return (0, IRMutation_js_1.buildCanonicalCreateMutationIR)({
91
- shape: requireShape(json.shape),
92
- description: decodeNodeData(json.data),
112
+ shape,
113
+ description: decodeNodeData(json.data, shape),
93
114
  });
115
+ }
94
116
  case 'update': {
95
117
  const shape = requireShape(json.shape);
96
- const updates = decodeNodeData(json.data);
118
+ const updates = decodeNodeData(json.data, shape);
97
119
  if (json.mode === 'for') {
98
120
  // A `{$ctx}` target resolves against the current context map; a mutation
99
121
  // must hit a concrete subject, so an unresolved context throws.
@@ -1 +1 @@
1
- {"version":3,"file":"lowerMutationJSON.js","sourceRoot":"","sources":["../../../src/queries/lowerMutationJSON.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAmGH,wCAcC;AAeD,8CAmDC;AAhKD,wEAAgE;AAChE,0DAAqD;AAErD,iFAGwC;AACxC,iDAAuC;AACvC,2DAAsD;AACtD,6CAA4C;AAC5C,mDAOyB;AAIzB,mDAAmE;AACnE,qDAAmD;AACnD,yEAKoC;AAEpC,SAAS,YAAY,CAAC,OAAe;;IACnC,MAAM,KAAK,GAAG,MAAA,IAAA,6BAAa,EAAC,OAAO,CAAC,0CAAE,KAAK,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,UAAU,OAAO,oGAAoG,CACtH,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sFAAsF;AACtF,SAAS,WAAW,CAAC,IAAuB;IAC1C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,KAAK;YACR,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,KAAK;YACR,OAAO,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAC,CAAC;QACvB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,qEAAqE;YACrE,yCAAyC;YACzC,MAAM,EAAE,GAAG,IAAA,gCAAgB,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAE,CAAC;YAC9C,OAAO,EAAC,EAAE,EAAoB,CAAC;QACjC,CAAC;QACD,KAAK,MAAM;YACT,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAA+B,CAAC;QACjE,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CACnB,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAA8B,CACzD,CAAC;QACJ,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAyB,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAiC,CAAC;YACjF,CAAC;YACD,IAAI,IAAI,CAAC,MAAM;gBAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAC,EAAE,EAAC,CAAC,CAAC,CAAC;YAC/D,OAAO,GAAsB,CAAC;QAChC,CAAC;QACD,KAAK,MAAM;YACT,OAAO,IAAI,kCAAc,CACvB,IAAI,CAAC,EAAE,EACP,IAAA,uCAAY,EAAC,IAAI,CAAC,IAAI,CAAC,CACM,CAAC;IACpC,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,SAAgB,cAAc,CAAC,IAA0B;IACvD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,MAAM,GAA8B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9D,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CACb,aAAa,CAAC,CAAC,IAAI,yBAAyB,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,GAAG,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,EAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,EAA4B,CAAC;IACtE,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAyB,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;IACnD,IAAI,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CACjB,KAAgB,EAChB,IAAmB;IAEnB,MAAM,SAAS,GAAG,IAAA,mDAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,IAAA,sBAAO,EAAC,SAAS,CAAC,CAAC,CAAC;IACxD,OAAO,IAAA,2BAAc,EAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB,CAC/B,IAAkB;IAElB,IAAA,kCAAiB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,IAAA,8CAA8B,EAAC;gBACpC,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC/B,WAAW,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC,CAAC,CAAC;QACL,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxB,yEAAyE;gBACzE,gEAAgE;gBAChE,MAAM,EAAE,GAAG,IAAA,gCAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC;oBACxC,CAAC,CAAC,IAAA,gCAAgB,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAClB,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAC3D,CAAC;gBACD,OAAO,IAAA,8CAA8B,EAAC,EAAC,EAAE,EAAE,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,KAA+B,CAAC;YACpC,IAAI,aAA2C,CAAC;YAChD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,KAAK;oBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAChF,CAAC,EAAC,KAAK,EAAE,aAAa,EAAC,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,IAAA,mDAAmC,EAAC,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAC,CAAC,CAAC;QACrF,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxB,OAAO,IAAA,8CAA8B,EAAC;oBACpC,KAAK;oBACL,mEAAmE;oBACnE,kDAAkD;oBAClD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACvB,IAAA,gCAAgB,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAE,IAAA,gCAAgB,EAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAE,EAAC,CAAC,CAAC,CAAC,EAAC,EAAE,EAAC,CACrE;iBACF,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxB,OAAO,IAAA,iDAAiC,EAAC,EAAC,KAAK,EAAC,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,EAAC,KAAK,EAAE,aAAa,EAAC,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7D,OAAO,IAAA,mDAAmC,EAAC,EAAC,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"lowerMutationJSON.js","sourceRoot":"","sources":["../../../src/queries/lowerMutationJSON.ts"],"names":[],"mappings":"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"}
@@ -322,7 +322,17 @@ const connectValueShape = (config, propertyKey, property) => {
322
322
  }
323
323
  }
324
324
  };
325
+ /**
326
+ * The DSL-JSON where-clause combinators. A property may not be named after one,
327
+ * because a condition key in those positions has no `{path}` escape (the key is a
328
+ * bare string). See documentation/dsl-json.md (Reserved words).
329
+ */
330
+ const RESERVED_PROPERTY_LABELS = new Set(['and', 'or', 'not']);
325
331
  function registerPropertyShape(shape, propertyShape) {
332
+ if (RESERVED_PROPERTY_LABELS.has(propertyShape.label)) {
333
+ throw new Error(`Property label '${propertyShape.label}' is reserved (a DSL-JSON boolean combinator) ` +
334
+ `and cannot be used as a property name. See documentation/dsl-json.md (Reserved words).`);
335
+ }
326
336
  const inherited = shape.getPropertyShape(propertyShape.label, true);
327
337
  const existing = shape.getPropertyShape(propertyShape.label, false);
328
338
  if (!existing && inherited) {