@rindle/normalized 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/backend.d.ts CHANGED
@@ -19,6 +19,13 @@ export declare class NormalizedBackend<S extends ColsMap> implements Backend {
19
19
  private readonly sourceToRemote;
20
20
  private readonly resultTypes;
21
21
  private readonly hydrated;
22
+ /** Local qids that are JUST hydrating on the in-flight `onNormalized` snapshot — set only for the
23
+ * duration of its `local.mutate`, so the local-event forwarder stamps their fold `catchUp`: the
24
+ * whole first result set arrives as a `batch` (we hydrate the view by mutating the embedded engine,
25
+ * which speaks in batches — there is no second `snapshot`), and `catchUp` is the flag that tells the
26
+ * Store this batch IS hydration (retire the SSR seed, phase it as a snapshot for narration). The
27
+ * optimistic backend does the identical thing across its reconcile cycle. `null` outside a hydrate. */
28
+ private catchUpQids;
22
29
  private resultTypeHandler;
23
30
  /** The client's OWN typed per-table schemas (for CRIT#4 validation), fixed at construction. */
24
31
  private readonly clientTables;
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
package/dist/backend.js CHANGED
@@ -63,6 +63,13 @@ export class NormalizedBackend {
63
63
  sourceToRemote = new Map();
64
64
  resultTypes = new Map();
65
65
  hydrated = new Set();
66
+ /** Local qids that are JUST hydrating on the in-flight `onNormalized` snapshot — set only for the
67
+ * duration of its `local.mutate`, so the local-event forwarder stamps their fold `catchUp`: the
68
+ * whole first result set arrives as a `batch` (we hydrate the view by mutating the embedded engine,
69
+ * which speaks in batches — there is no second `snapshot`), and `catchUp` is the flag that tells the
70
+ * Store this batch IS hydration (retire the SSR seed, phase it as a snapshot for narration). The
71
+ * optimistic backend does the identical thing across its reconcile cycle. `null` outside a hydrate. */
72
+ catchUpQids = null;
66
73
  resultTypeHandler = () => { };
67
74
  /** The client's OWN typed per-table schemas (for CRIT#4 validation), fixed at construction. */
68
75
  clientTables;
@@ -80,8 +87,14 @@ export class NormalizedBackend {
80
87
  queryAggTables = new Map();
81
88
  constructor(schema, source) {
82
89
  this.local = new WasmBackend(schema);
83
- // The local engine's flat stream IS this backend's stream upward (→ the Store's views).
84
- this.local.onEvent((qid, ev) => this.handler(qid, ev));
90
+ // The local engine's flat stream IS this backend's stream upward (→ the Store's views). A
91
+ // just-hydrating query's first result set arrives here as a `batch` (we fold it by mutating the
92
+ // engine); stamp it `catchUp` so the Store treats it as hydration (retire the SSR seed, phase it
93
+ // as a snapshot) rather than an incremental change — see {@link catchUpQids}.
94
+ this.local.onEvent((qid, ev) => {
95
+ const stamped = ev.type === "batch" && this.catchUpQids?.has(qid) ? { ...ev, catchUp: true } : ev;
96
+ this.handler(qid, stamped);
97
+ });
85
98
  // Forward the local engine's commit brackets up to the Store (cross-view-atomic notification):
86
99
  // a normalized batch's net base mutations commit to `this.local` in one transaction, so its
87
100
  // commit boundary is ours — every view those rows touch then notifies together.
@@ -247,10 +260,42 @@ export class NormalizedBackend {
247
260
  // degenerates to all-adds; for a re-hydrate it removes rows that left during the gap. A
248
261
  // `batch` is an incremental delta → `applyBatch`.
249
262
  const muts = ev.type === "snapshot" ? this.sync.rehydrate(qid, ev.ops) : this.sync.applyBatch(qid, ev.ops);
250
- if (muts.length)
251
- void this.local.mutate(muts); // → local engine → flat stream → views
252
- if (ev.type === "snapshot")
253
- this.markSubHydrated(qid);
263
+ if (ev.type !== "snapshot") {
264
+ if (muts.length)
265
+ void this.local.mutate(muts); // incremental delta → local engine → views
266
+ return;
267
+ }
268
+ // A snapshot is the query's hydration point. Flip its views to `complete` BEFORE folding the rows
269
+ // (the Store retires the SSR seed only once the query is authoritative), and capture the local
270
+ // qids that transition into hydrated on THIS snapshot so the forwarder stamps their fold `catchUp`
271
+ // — the first result set is delivered by mutating the engine, i.e. as a `batch`, not a `snapshot`.
272
+ // (An already-live view reading the same rows sees them as a genuine incremental add, so it is NOT
273
+ // in this set and folds a normal batch.) Order mirrors the optimistic backend (hydrate → complete,
274
+ // THEN the catch-up delta).
275
+ const wasHydrated = new Set(this.hydrated);
276
+ this.markSubHydrated(qid);
277
+ let newly = null;
278
+ for (const localQid of this.hydrated) {
279
+ if (!wasHydrated.has(localQid))
280
+ (newly ??= new Set()).add(localQid);
281
+ }
282
+ this.catchUpQids = newly;
283
+ try {
284
+ if (muts.length)
285
+ void this.local.mutate(muts); // → local engine → flat stream → views
286
+ }
287
+ finally {
288
+ this.catchUpQids = null;
289
+ }
290
+ // A hydration can fold NOTHING: a 0-row result, or one whose rows are already present in the engine
291
+ // (fully covered by an already-hydrated sibling → the shared rows dedup to 0 net muts). Then no
292
+ // batch was emitted above, so the Store never saw the hydration point and the SSR seed would stay
293
+ // stuck. Signal it explicitly with an EMPTY catch-up per just-hydrated qid — the Store retires the
294
+ // seed and reveals whatever is already in the view's tree.
295
+ if (!muts.length && newly) {
296
+ for (const localQid of newly)
297
+ this.handler(localQid, { type: "batch", events: [], catchUp: true });
298
+ }
254
299
  }
255
300
  emitServerDelta(sourceQid, ev) {
256
301
  if (!this.devObservers.size)
@@ -1 +1 @@
1
- {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindle/normalized",
3
- "version": "0.4.4",
3
+ "version": "0.5.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,8 +25,8 @@
25
25
  "README.md"
26
26
  ],
27
27
  "dependencies": {
28
- "@rindle/client": "0.4.4",
29
- "@rindle/wasm": "0.4.4"
28
+ "@rindle/client": "0.5.0",
29
+ "@rindle/wasm": "0.5.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/node": "^22.10.0",
package/src/backend.ts CHANGED
@@ -87,6 +87,13 @@ export class NormalizedBackend<S extends ColsMap> implements Backend {
87
87
  private readonly sourceToRemote = new Map<QueryId, string>();
88
88
  private readonly resultTypes = new Map<QueryId, ResultType>();
89
89
  private readonly hydrated = new Set<QueryId>();
90
+ /** Local qids that are JUST hydrating on the in-flight `onNormalized` snapshot — set only for the
91
+ * duration of its `local.mutate`, so the local-event forwarder stamps their fold `catchUp`: the
92
+ * whole first result set arrives as a `batch` (we hydrate the view by mutating the embedded engine,
93
+ * which speaks in batches — there is no second `snapshot`), and `catchUp` is the flag that tells the
94
+ * Store this batch IS hydration (retire the SSR seed, phase it as a snapshot for narration). The
95
+ * optimistic backend does the identical thing across its reconcile cycle. `null` outside a hydrate. */
96
+ private catchUpQids: Set<QueryId> | null = null;
90
97
  private resultTypeHandler: (qid: QueryId, rt: ResultType) => void = () => {};
91
98
  /** The client's OWN typed per-table schemas (for CRIT#4 validation), fixed at construction. */
92
99
  private readonly clientTables: NormalizedTableSchema[];
@@ -105,8 +112,14 @@ export class NormalizedBackend<S extends ColsMap> implements Backend {
105
112
 
106
113
  constructor(schema: Schema<S>, source: NormalizedSource) {
107
114
  this.local = new WasmBackend(schema);
108
- // The local engine's flat stream IS this backend's stream upward (→ the Store's views).
109
- this.local.onEvent((qid, ev) => this.handler(qid, ev));
115
+ // The local engine's flat stream IS this backend's stream upward (→ the Store's views). A
116
+ // just-hydrating query's first result set arrives here as a `batch` (we fold it by mutating the
117
+ // engine); stamp it `catchUp` so the Store treats it as hydration (retire the SSR seed, phase it
118
+ // as a snapshot) rather than an incremental change — see {@link catchUpQids}.
119
+ this.local.onEvent((qid, ev) => {
120
+ const stamped = ev.type === "batch" && this.catchUpQids?.has(qid) ? { ...ev, catchUp: true } : ev;
121
+ this.handler(qid, stamped);
122
+ });
110
123
  // Forward the local engine's commit brackets up to the Store (cross-view-atomic notification):
111
124
  // a normalized batch's net base mutations commit to `this.local` in one transaction, so its
112
125
  // commit boundary is ours — every view those rows touch then notifies together.
@@ -270,8 +283,37 @@ export class NormalizedBackend<S extends ColsMap> implements Backend {
270
283
  // degenerates to all-adds; for a re-hydrate it removes rows that left during the gap. A
271
284
  // `batch` is an incremental delta → `applyBatch`.
272
285
  const muts = ev.type === "snapshot" ? this.sync.rehydrate(qid, ev.ops) : this.sync.applyBatch(qid, ev.ops);
273
- if (muts.length) void this.local.mutate(muts); // → local engine → flat stream → views
274
- if (ev.type === "snapshot") this.markSubHydrated(qid);
286
+ if (ev.type !== "snapshot") {
287
+ if (muts.length) void this.local.mutate(muts); // incremental delta → local engine → views
288
+ return;
289
+ }
290
+ // A snapshot is the query's hydration point. Flip its views to `complete` BEFORE folding the rows
291
+ // (the Store retires the SSR seed only once the query is authoritative), and capture the local
292
+ // qids that transition into hydrated on THIS snapshot so the forwarder stamps their fold `catchUp`
293
+ // — the first result set is delivered by mutating the engine, i.e. as a `batch`, not a `snapshot`.
294
+ // (An already-live view reading the same rows sees them as a genuine incremental add, so it is NOT
295
+ // in this set and folds a normal batch.) Order mirrors the optimistic backend (hydrate → complete,
296
+ // THEN the catch-up delta).
297
+ const wasHydrated = new Set(this.hydrated);
298
+ this.markSubHydrated(qid);
299
+ let newly: Set<QueryId> | null = null;
300
+ for (const localQid of this.hydrated) {
301
+ if (!wasHydrated.has(localQid)) (newly ??= new Set()).add(localQid);
302
+ }
303
+ this.catchUpQids = newly;
304
+ try {
305
+ if (muts.length) void this.local.mutate(muts); // → local engine → flat stream → views
306
+ } finally {
307
+ this.catchUpQids = null;
308
+ }
309
+ // A hydration can fold NOTHING: a 0-row result, or one whose rows are already present in the engine
310
+ // (fully covered by an already-hydrated sibling → the shared rows dedup to 0 net muts). Then no
311
+ // batch was emitted above, so the Store never saw the hydration point and the SSR seed would stay
312
+ // stuck. Signal it explicitly with an EMPTY catch-up per just-hydrated qid — the Store retires the
313
+ // seed and reveals whatever is already in the view's tree.
314
+ if (!muts.length && newly) {
315
+ for (const localQid of newly) this.handler(localQid, { type: "batch", events: [], catchUp: true });
316
+ }
275
317
  }
276
318
 
277
319
  private emitServerDelta(sourceQid: QueryId, ev: NormalizedEvent): void {