@rindle/client 0.1.6 → 0.3.1

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/query.js CHANGED
@@ -27,6 +27,8 @@ export function defineQuery(name, validateOrBuild, maybeBuild) {
27
27
  }
28
28
  // ----------------------------- fragments (FRAGMENT-COMPOSITION-DESIGN.md, Phase 0) -----------------------------
29
29
  const FRAGMENT_BRAND = Symbol("rindle.fragment");
30
+ const LOCAL_FRAGMENT_REF_BRAND = Symbol("rindle.localFragmentRef");
31
+ const FRAGMENT_REL_BRAND = Symbol("rindle.fragmentRelationship");
30
32
  /**
31
33
  * Define a co-located, composable {@link Fragment}: a named selection over `table`. The returned
32
34
  * value is callable (the `build` transform), so it threads through the existing `sub`/`Rels`
@@ -47,8 +49,145 @@ export function defineFragment(table, build) {
47
49
  export function isFragment(v) {
48
50
  return typeof v === "function" && v[FRAGMENT_BRAND] === true;
49
51
  }
52
+ function isLocalFragmentRef(v) {
53
+ return typeof v === "object" && v !== null && v[LOCAL_FRAGMENT_REF_BRAND] === true;
54
+ }
55
+ function markFragmentRelationship(rel) {
56
+ Object.defineProperty(rel, FRAGMENT_REL_BRAND, { value: true });
57
+ return rel;
58
+ }
59
+ export function isFragmentRelationship(rel) {
60
+ return rel[FRAGMENT_REL_BRAND] === true;
61
+ }
62
+ export function fragmentKey(ref) {
63
+ if (!isLocalFragmentRef(ref))
64
+ throw new Error("fragmentKey(): expected an opaque fragment ref.");
65
+ return stableKey({ table: ref.table, pk: ref.pk });
66
+ }
67
+ export function createLocalFragmentRef(fragment, pk, coverage) {
68
+ return createLocalFragmentRefForTable(fragment.table[SCHEMA].name, pk, coverage);
69
+ }
70
+ export function createLocalFragmentRefForTable(table, pk, coverage) {
71
+ return {
72
+ [LOCAL_FRAGMENT_REF_BRAND]: true,
73
+ source: "local",
74
+ table,
75
+ pk: { ...pk },
76
+ coverage,
77
+ };
78
+ }
79
+ export function createRootFragmentRef(fragment, query, coverageKey = stableKey({
80
+ ast: query.ast(),
81
+ remote: typeof query.name === "string" ? { name: query.name, args: query.args } : null,
82
+ })) {
83
+ const ast = query.ast();
84
+ const table = fragment.table[SCHEMA];
85
+ if (ast.table !== table.name) {
86
+ throw new Error(`useRoot(): the coverage query is over "${ast.table}" but the fragment is over "${table.name}".`);
87
+ }
88
+ const pk = primaryKeyFromWhere(ast, table.primaryKey);
89
+ return createLocalFragmentRef(fragment, pk, { key: coverageKey, query });
90
+ }
91
+ export function fragmentAst(fragment) {
92
+ return childAst(fragment.table, fragment);
93
+ }
94
+ export function localFragmentReadAst(fragment, ref, primaryKeyFor) {
95
+ const table = fragment.table[SCHEMA].name;
96
+ if (ref.table !== table) {
97
+ throw new Error(`useFragment(): the ref is for "${ref.table}" but the fragment is over "${table}".`);
98
+ }
99
+ const ast = localizeFragmentAst(fragmentAst(fragment), primaryKeyFor);
100
+ ast.where = andConditions(pkConditions(ref.pk), ast.where);
101
+ ast.one = true;
102
+ return ast;
103
+ }
104
+ export function localRootFragmentRefsAst(fragment, query, primaryKeyFor) {
105
+ const ast = query.ast();
106
+ const table = fragment.table[SCHEMA].name;
107
+ if (ast.table !== table) {
108
+ throw new Error(`useRoot(): the coverage query is over "${ast.table}" but the fragment is over "${table}".`);
109
+ }
110
+ const out = { ...ast, select: uniqSort([...primaryKeyFor(table)]) };
111
+ delete out.related;
112
+ return out;
113
+ }
114
+ export function localQueryReadAst(query, primaryKeyFor) {
115
+ return localizeFragmentAst(query.ast(), primaryKeyFor);
116
+ }
117
+ export function queryFromAst(ast) {
118
+ return {
119
+ ast: () => ast,
120
+ materialize: () => {
121
+ throw new Error("queryFromAst(): materialize() requires a Store; pass this query through Store/React.");
122
+ },
123
+ };
124
+ }
125
+ function primaryKeyFromWhere(ast, primaryKey) {
126
+ const found = new Map();
127
+ collectLiteralEquals(ast.where, found);
128
+ const pk = {};
129
+ for (const col of primaryKey) {
130
+ if (!found.has(col)) {
131
+ throw new Error(`useRoot(): the coverage query must constrain primary key column "${col}" with a literal equality.`);
132
+ }
133
+ pk[col] = found.get(col);
134
+ }
135
+ return pk;
136
+ }
137
+ function collectLiteralEquals(cond, out) {
138
+ if (!cond)
139
+ return;
140
+ if (cond.type === "and") {
141
+ for (const c of cond.conditions)
142
+ collectLiteralEquals(c, out);
143
+ return;
144
+ }
145
+ if (cond.type !== "simple" || cond.op !== "=")
146
+ return;
147
+ const leftCol = cond.left.type === "column" ? cond.left.name : undefined;
148
+ const rightCol = cond.right.type === "column" ? cond.right.name : undefined;
149
+ if (leftCol !== undefined && cond.right.type === "literal")
150
+ out.set(leftCol, cond.right.value);
151
+ else if (rightCol !== undefined && cond.left.type === "literal")
152
+ out.set(rightCol, cond.left.value);
153
+ }
154
+ function pkConditions(pk) {
155
+ return Object.keys(pk)
156
+ .sort()
157
+ .map((name) => fieldCondition(name, pk[name]));
158
+ }
159
+ function andConditions(conditions, tail) {
160
+ const all = tail ? [...conditions, tail] : conditions;
161
+ if (all.length === 0)
162
+ return undefined;
163
+ if (all.length === 1)
164
+ return all[0];
165
+ return { type: "and", conditions: all };
166
+ }
167
+ function localizeFragmentAst(ast, primaryKeyFor) {
168
+ const out = { ...ast };
169
+ if (ast.select !== undefined)
170
+ out.select = uniqSort([...ast.select, ...primaryKeyFor(ast.table)]);
171
+ if (ast.related !== undefined) {
172
+ out.related = ast.related.map((rel) => {
173
+ if (rel.subquery.aggregate !== undefined)
174
+ return rel;
175
+ if (!isFragmentRelationship(rel)) {
176
+ return { ...rel, subquery: localizeFragmentAst(rel.subquery, primaryKeyFor) };
177
+ }
178
+ const childPk = primaryKeyFor(rel.subquery.table);
179
+ const subquery = {
180
+ ...rel.subquery,
181
+ select: uniqSort([...childPk]),
182
+ };
183
+ delete subquery.related;
184
+ return markFragmentRelationship({ ...rel, subquery });
185
+ });
186
+ }
187
+ return out;
188
+ }
50
189
  function emptyState(table) {
51
- return { table, wheres: [], orderBy: [], related: [], one: false };
190
+ return { table, wheres: [], orderBy: [], related: [], one: false, groupBy: [] };
52
191
  }
53
192
  function compile(s) {
54
193
  const ast = { table: s.table };
@@ -70,6 +209,19 @@ function compile(s) {
70
209
  ast.one = true;
71
210
  if (s.select && s.select.length > 0)
72
211
  ast.select = s.select;
212
+ if (s.aggregate !== undefined)
213
+ ast.aggregate = s.aggregate;
214
+ if (s.groupBy.length > 0)
215
+ ast.groupBy = s.groupBy;
216
+ if (s.having !== undefined)
217
+ ast.having = s.having;
218
+ // The engine takes the aggregate lowering ONLY when `aggregate` is set (REDUCE-DESIGN.md §8 /
219
+ // builder `build_pipeline`); `groupBy`/`having` on the row spine would be silently ignored. Fail
220
+ // loudly so a forgotten `.count()` is a clear error, not a query that quietly returns all rows.
221
+ if ((ast.groupBy !== undefined || ast.having !== undefined) && ast.aggregate === undefined) {
222
+ throw new Error("groupBy()/having() require count(): a top-level GROUP BY / HAVING is only honored on an " +
223
+ "aggregate query (REDUCE-DESIGN.md §8) — add .count().");
224
+ }
73
225
  return ast;
74
226
  }
75
227
  /** Every base table an AST draws rows from — the root plus every related / `EXISTS` subquery (a
@@ -115,20 +267,30 @@ function childAst(child, build) {
115
267
  cq = build(cq);
116
268
  return cq.ast();
117
269
  }
270
+ function composeCorrelatedBuild(build, edge) {
271
+ if (edge === undefined)
272
+ return build;
273
+ if (!isFragment(build)) {
274
+ throw new Error("sub(): an edge callback is only supported when the child build is a Fragment.");
275
+ }
276
+ return (q) => edge(build(q));
277
+ }
118
278
  /** Resolve the two `sub`/`countAs`/`exists` call shapes to a common `{ child, corr, build }`:
119
279
  * either a named {@link Relationship} (`(rel, build?)`) or an explicit `(child, corr, build?)`. */
120
- function resolveCorrelated(a, b, c) {
280
+ function resolveCorrelated(a, b, c, d) {
121
281
  if (isRelationship(a)) {
122
282
  return {
123
283
  child: a.child,
124
284
  corr: { parent: [...a.correlation.parent], child: [...a.correlation.child] },
125
- build: b,
285
+ build: composeCorrelatedBuild(b, c),
286
+ fragment: isFragment(b),
126
287
  };
127
288
  }
128
289
  return {
129
290
  child: a,
130
291
  corr: b,
131
- build: c,
292
+ build: composeCorrelatedBuild(c, d),
293
+ fragment: isFragment(c),
132
294
  };
133
295
  }
134
296
  // ----------------------------- the merge pass (`include`, FRAGMENT-COMPOSITION-DESIGN §5) -----------
@@ -215,7 +377,8 @@ function mergeRelatedLists(base, add) {
215
377
  `same alias with different correlation/table/where/orderBy/limit. Give them distinct aliases ` +
216
378
  `or align them (FRAGMENT-COMPOSITION-DESIGN §10.2).`);
217
379
  }
218
- byAlias.set(alias, { ...existing, subquery: mergeSubqueryAst(existing.subquery, csq.subquery) });
380
+ const merged = { ...existing, subquery: mergeSubqueryAst(existing.subquery, csq.subquery) };
381
+ byAlias.set(alias, isFragmentRelationship(existing) || isFragmentRelationship(csq) ? markFragmentRelationship(merged) : merged);
219
382
  }
220
383
  return [...byAlias.values()].sort((a, b) => {
221
384
  const x = aliasOf(a);
@@ -270,15 +433,15 @@ guardAst) {
270
433
  const fragAst = childAst(fragTable, fragment);
271
434
  return makeQuery(meta, mergeIncludedFragment(s, fragAst), onMat, named, guardAst);
272
435
  },
273
- sub: (alias, childOrRel, b, c) => {
274
- const { child, corr, build } = resolveCorrelated(childOrRel, b, c);
436
+ sub: (alias, childOrRel, b, c, d) => {
437
+ const { child, corr, build, fragment } = resolveCorrelated(childOrRel, b, c, d);
275
438
  const sub = childAst(child, build);
276
439
  sub.alias = alias;
277
440
  const csq = {
278
441
  correlation: { parentField: corr.parent, childField: corr.child },
279
442
  subquery: sub,
280
443
  };
281
- return next({ related: [...s.related, csq] });
444
+ return next({ related: [...s.related, fragment ? markFragmentRelationship(csq) : csq] });
282
445
  },
283
446
  countAs: (alias, childOrRel, b, c) => {
284
447
  // Same correlated-child mechanism as `sub`, but mark the child a `count` aggregate:
@@ -293,6 +456,48 @@ guardAst) {
293
456
  };
294
457
  return next({ related: [...s.related, csq] });
295
458
  },
459
+ // Top-level aggregate (REDUCE-DESIGN §8): `count` reshapes this query into a `count(*)`;
460
+ // `groupBy` partitions it; `having` filters the post-aggregation rows. `having`'s callback gets
461
+ // a field binder over the aggregate's output columns (group cols + the synthetic `count`), so a
462
+ // predicate can name `count` — which lives on no base table — exactly like `where.<field>(…)`.
463
+ count: () => next({ aggregate: "count" }),
464
+ groupBy: (col) => next({ groupBy: [...s.groupBy, col] }),
465
+ having: (a, op, val) => {
466
+ // Overload 1 — top-level aggregate HAVING: `having((h) => h.count(gt(3)))`. The callback
467
+ // binds the aggregate's output columns (group cols + the synthetic `count`).
468
+ if (typeof a === "function") {
469
+ const build = a;
470
+ const h = new Proxy({}, {
471
+ get: (_t, prop) => (typeof prop === "string" ? (arg) => fieldCondition(prop, arg) : undefined),
472
+ });
473
+ return next({ having: build(h) });
474
+ }
475
+ // Overload 2 — filter THIS parent by a child aggregate's count:
476
+ // `.having("commentCount", ">", 10)` (PARENT-AGGREGATE-FILTER-DESIGN.md). Bind the existing
477
+ // `countAs(alias, …)` relationship and push a hidden EXISTS whose subquery clones the same
478
+ // correlation + child + `count` aggregate, plus a `HAVING count <op> val`. The engine lowers
479
+ // it to an EXISTS over a HAVING-filtered reduce; the display `countAs` is untouched.
480
+ const alias = a;
481
+ const display = s.related.find((r) => r.subquery.alias === alias && r.subquery.aggregate === "count");
482
+ if (!display) {
483
+ throw new Error(`having("${alias}", …): this query has no countAs("${alias}", …) relationship to filter ` +
484
+ `on — attach the child count aggregate first.`);
485
+ }
486
+ const gate = {
487
+ correlation: display.correlation,
488
+ subquery: {
489
+ ...display.subquery,
490
+ alias: `__having_${alias}`,
491
+ having: {
492
+ type: "simple",
493
+ op: op,
494
+ left: { type: "column", name: "count" },
495
+ right: { type: "literal", value: val },
496
+ },
497
+ },
498
+ };
499
+ return next({ wheres: [...s.wheres, { type: "correlatedSubquery", op: "EXISTS", related: gate }] });
500
+ },
296
501
  ast: () => {
297
502
  const a = compile(s);
298
503
  guardAst?.(a);
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { FlatChange, WireNode, WireSchema, WireValue } from "./types.ts";
2
+ /** A row named against its level's wire columns. */
3
+ export type NamedRow = Record<string, WireValue>;
4
+ /** One resolved change: a `FlatChange` lifted out of positional/indexed wire form into names,
5
+ * using the query's `WireSchema` (from `hello`) as the sole position→name source. */
6
+ export interface ResolvedChange {
7
+ /** Relationship-alias chain from the query root to the changed level (`[]` ⇒ the root rows). */
8
+ aliasChain: string[];
9
+ /** The alias of the changed level (`""` ⇒ root), i.e. the last of `aliasChain`. */
10
+ alias: string;
11
+ op: "add" | "remove" | "edit";
12
+ /** The affected row, named. For `edit` this is the NEW row; see `old` for the prior one. */
13
+ row: NamedRow;
14
+ /** The prior row, named (present only for `edit`). */
15
+ old?: NamedRow;
16
+ /** The PARENT row (named), for a nested/aggregate change — e.g. the `ticket_type` whose `sold`
17
+ * count moved. Taken from the path's last `parentRow`; absent for a root-level change. */
18
+ parent?: NamedRow;
19
+ /** Set when the changed level is a `countAs`/aggregate slot. The value is EXACT — read from the
20
+ * slot's projected count column (`WireRel.project.col`). */
21
+ aggregate?: {
22
+ alias: string;
23
+ value: WireValue;
24
+ previous?: WireValue;
25
+ };
26
+ /** The raw node whose children a consumer can dig a named sub-row out of (via {@link subRow}). On
27
+ * an `add` the engine always ships it; on a `remove` it is present only when the consumer opted
28
+ * into the removed subtree (see the `op` mapping below). */
29
+ node?: WireNode;
30
+ /** The changed level's `WireSchema` — used by {@link subRow} to resolve a named sub of `node`. */
31
+ levelSchema: WireSchema;
32
+ }
33
+ /** Lift one `FlatChange` into a {@link ResolvedChange} against the query's `WireSchema`, or `null`
34
+ * if its path doesn't resolve to a materialized level. */
35
+ export declare function resolveChange(schema: WireSchema, change: FlatChange): ResolvedChange | null;
36
+ /** Read a named sub-row off a change's `node` by relationship alias (e.g. the `guest` under an
37
+ * `rsvp`) — the `add` node, or a `remove`'s subtree when the consumer opted into it. The alias →
38
+ * wire slot mapping comes from the changed level's `WireSchema`. `null` when no node rode along. */
39
+ export declare function subRow(rc: ResolvedChange, alias: string): NamedRow | null;
40
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,UAAU,EAAW,QAAQ,EAAW,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhG,oDAAoD;AACpD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAEjD;sFACsF;AACtF,MAAM,WAAW,cAAc;IAC7B,gGAAgG;IAChG,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9B,4FAA4F;IAC5F,GAAG,EAAE,QAAQ,CAAC;IACd,sDAAsD;IACtD,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf;+FAC2F;IAC3F,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB;iEAC6D;IAC7D,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IACtE;;iEAE6D;IAC7D,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,kGAAkG;IAClG,WAAW,EAAE,UAAU,CAAC;CACzB;AA8BD;2DAC2D;AAC3D,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAuC3F;AAED;;qGAEqG;AACrG,wBAAgB,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQzE"}
@@ -0,0 +1,109 @@
1
+ // Positional → named change resolution: the inverse of the wire encoder.
2
+ //
3
+ // A backend ships per-query `FlatChange`s (types.ts): `{ path: PathSeg[], op: add|remove|edit }`,
4
+ // where `path` indexes into the view's relationship tree and rows are POSITIONAL cells. The view
5
+ // (view.ts) folds those into the materialized tree positionally; this module instead LIFTS one
6
+ // change out of positional/indexed wire form into NAMED rows, resolving it against the query's OWN
7
+ // `WireSchema` (the per-subscription view schema the engine ships once on its `hello` frame): per
8
+ // level the column NAMES in wire order, and the relationships in SLOT order (a gating exists/notExists
9
+ // slot is `child: null`; a `countAs` slot carries a `project` annotation). So `path[i].rel` indexes
10
+ // `schema.relationships[i]` directly, and a positional `row` names against `schema.columns` — both
11
+ // authoritative, straight from the engine.
12
+ //
13
+ // Resolving against the hello schema (rather than re-deriving positions from the query `Ast`) means
14
+ // we assume NOTHING about slot ordering and NOTHING about column order: it stays correct under
15
+ // `.select()` projections and any future slot layout. The result — named rows + an aggregate's exact
16
+ // new value — is what a higher layer (e.g. @rindle/narrator) renders into prose, but it is broadly
17
+ // useful to anything consuming a `FlatChange` (logging, devtools, change-driven overlays).
18
+ //
19
+ // NOTE on aggregates (`countAs`): the slot's `project.col` names the EXACT count cell in the child
20
+ // row, so a count change reports the exact new value (and previous, on an edit) — not a best-effort
21
+ // guess. A remove of the aggregate row means the count fell to its identity (`project.identity`).
22
+ /** Name positional `cells` against a level's wire `columns` (insertion = wire order). */
23
+ function nameRow(cells, cols) {
24
+ const out = {};
25
+ if (!cells)
26
+ return out;
27
+ for (let i = 0; i < cols.length; i++)
28
+ out[cols[i]] = cells[i] ?? null;
29
+ return out;
30
+ }
31
+ /** Walk a `path` from the root `WireSchema` down the relationship tree. Returns the reached level,
32
+ * the alias chain, and the LAST relationship traversed (its `project` marks an aggregate slot).
33
+ * `null` if a hop addresses an unknown or gating (`child: null`) slot. */
34
+ function descend(root, path) {
35
+ let level = root;
36
+ let lastRel = null;
37
+ const aliasChain = [];
38
+ for (const seg of path) {
39
+ const rel = level.relationships[seg.rel];
40
+ if (!rel || !rel.child)
41
+ return null; // unknown / gating slot — not a materialized level
42
+ lastRel = rel;
43
+ level = rel.child;
44
+ aliasChain.push(rel.name);
45
+ }
46
+ return { level, lastRel, aliasChain };
47
+ }
48
+ /** Lift one `FlatChange` into a {@link ResolvedChange} against the query's `WireSchema`, or `null`
49
+ * if its path doesn't resolve to a materialized level. */
50
+ export function resolveChange(schema, change) {
51
+ const here = descend(schema, change.path);
52
+ if (!here)
53
+ return null;
54
+ const { level, lastRel, aliasChain } = here;
55
+ const cols = level.columns;
56
+ const alias = aliasChain.length ? aliasChain[aliasChain.length - 1] : "";
57
+ const base = { aliasChain, alias, levelSchema: level };
58
+ // The parent row (for a nested/aggregate change) sits in the last path seg, named against the
59
+ // level one hop up.
60
+ if (change.path.length) {
61
+ const up = descend(schema, change.path.slice(0, -1));
62
+ const parentCells = change.path[change.path.length - 1].parentRow;
63
+ if (up)
64
+ base.parent = nameRow(parentCells, up.level.columns);
65
+ }
66
+ // A `countAs` slot carries a scalar `project` annotation on the relationship we descended through:
67
+ // `project.col` is the exact count cell, `project.identity` the empty value (0 for count).
68
+ const proj = lastRel?.project ?? null;
69
+ const agg = (cells) => (proj && cells ? (cells[proj.col] ?? null) : null);
70
+ const op = change.op;
71
+ if (op.tag === "add") {
72
+ const r = { ...base, op: "add", row: nameRow(op.node.row, cols), node: op.node };
73
+ if (proj)
74
+ r.aggregate = { alias, value: agg(op.node.row) };
75
+ return r;
76
+ }
77
+ if (op.tag === "remove") {
78
+ const r = { ...base, op: "remove", row: nameRow(op.row, cols) };
79
+ // The removed subtree rides along only when the consumer opted into it (the ArrayView attaches
80
+ // it client-side — `Store.subscribeChanges(_, { removedSubtree: true })`). When present, `subRow`
81
+ // resolves a removed row's nested subs exactly as on an `add`; absent, a remove is row-only.
82
+ if (op.node)
83
+ r.node = op.node;
84
+ if (proj)
85
+ r.aggregate = { alias, value: proj.identity };
86
+ return r;
87
+ }
88
+ // edit
89
+ const r = { ...base, op: "edit", row: nameRow(op.new, cols), old: nameRow(op.old, cols) };
90
+ if (proj)
91
+ r.aggregate = { alias, value: agg(op.new), previous: agg(op.old) };
92
+ return r;
93
+ }
94
+ /** Read a named sub-row off a change's `node` by relationship alias (e.g. the `guest` under an
95
+ * `rsvp`) — the `add` node, or a `remove`'s subtree when the consumer opted into it. The alias →
96
+ * wire slot mapping comes from the changed level's `WireSchema`. `null` when no node rode along. */
97
+ export function subRow(rc, alias) {
98
+ if (!rc.node)
99
+ return null;
100
+ const rel = rc.levelSchema.relationships.find((r) => r.name === alias);
101
+ if (!rel || !rel.child)
102
+ return null;
103
+ const slot = rc.node.rels.find((s) => s.rel === rel.slot);
104
+ const child = slot?.children[0];
105
+ if (!child)
106
+ return null;
107
+ return nameRow(child.row, rel.child.columns);
108
+ }
109
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"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"}