@rindle/optimistic 0.4.3 → 0.4.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-persist.js","sourceRoot":"","sources":["../src/local-persist.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rindle/optimistic",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,14 +25,15 @@
25
25
  "README.md"
26
26
  ],
27
27
  "dependencies": {
28
- "@rindle/remote": "0.4.3",
29
- "@rindle/wasm": "0.4.3",
30
- "@rindle/client": "0.4.3",
31
- "@rindle/normalized": "0.4.3"
28
+ "@rindle/remote": "0.4.4",
29
+ "@rindle/wasm": "0.4.4",
30
+ "@rindle/client": "0.4.4",
31
+ "@rindle/normalized": "0.4.4"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^22.10.0",
35
35
  "typescript": "^5.7.0",
36
+ "@rindle/narrator": "0.4.4",
36
37
  "@rindle/replica": "0.0.0"
37
38
  },
38
39
  "scripts": {
package/src/backend.ts CHANGED
@@ -48,6 +48,7 @@ import {
48
48
  LMID_QUERY_NAME,
49
49
  localTableNames,
50
50
  normalizedTableSchemas,
51
+ rowsEqual,
51
52
  tableSpec,
52
53
  toCell,
53
54
  } from "@rindle/client";
@@ -338,6 +339,12 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
338
339
  * pending delta `displayed = server_base ⊕ local_pending_delta` is applied from. */
339
340
  private readonly overlay = new AggOverlay();
340
341
  private handler: (qid: QueryId, ev: ChangeEvent) => void = () => {};
342
+ // The local qids whose reconcile-cycle batch delivery this release is their FIRST hydration (empty
343
+ // → full): their batch is the initial result set arriving as a delta, so it is stamped `catchUp`
344
+ // and the Store maps it to the `snapshot` change-phase (a narrator ignores it by default). Non-null
345
+ // only for the duration of the reconcile cycle in `onProgress`; a re-hydrate after a drop is a real
346
+ // footprint diff (genuine change) and is NOT remapped. See {@link ChangeEvent} `catchUp`.
347
+ private catchUpQids: Set<QueryId> | null = null;
341
348
  /** The Store's commit-boundary handler ({@link Backend.onCommitBoundary}), forwarded from the
342
349
  * local engine's `dispatch` brackets so the Store folds every affected view before notifying any
343
350
  * subscriber (cross-view-atomic notification). All this backend's data deltas originate from the
@@ -376,6 +383,9 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
376
383
  * touches its tables. Cached so `onPending` fires only on transitions (invoke ↔ confirm). */
377
384
  private readonly pendingState = new Map<QueryId, boolean>();
378
385
  private pendingHandler: (qid: QueryId, pending: boolean) => void = () => {};
386
+ /** The local-persistence write-through tap (`207-LOCAL-TABLE-PERSISTENCE-DESIGN.md` §5.1):
387
+ * {@link writeLocal} invokes it post-commit; {@link applyLocalReplica} deliberately does not. */
388
+ private localWriteObserver: ((mutations: Mutation[]) => void) | null = null;
379
389
 
380
390
  constructor(
381
391
  schema: Schema<S>,
@@ -384,7 +394,12 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
384
394
  opts: OptimisticBackendOptions,
385
395
  ) {
386
396
  this.local = new WasmBackend(schema);
387
- this.local.onEvent((qid, ev) => this.handler(qid, ev));
397
+ this.local.onEvent((qid, ev) => {
398
+ // Stamp a newly-hydrating query's reconcile batch as a catch-up (initial-hydration) delivery,
399
+ // so the Store phases it as a `snapshot` rather than narrating the whole first result set.
400
+ const stamped = ev.type === "batch" && this.catchUpQids?.has(qid) ? { ...ev, catchUp: true } : ev;
401
+ this.handler(qid, stamped);
402
+ });
388
403
  // Forward the local engine's commit brackets up to the Store (cross-view-atomic notification):
389
404
  // every data delta this backend emits comes from `this.local`, so its commit boundaries are ours.
390
405
  this.local.onCommitBoundary((phase) => this.boundaryHandler(phase));
@@ -570,9 +585,33 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
570
585
  * straight to the local engine, OUTSIDE the optimistic pending stack — a local table is
571
586
  * untracked, so it never rebases, reverts, or waits on a confirmation. Rejects a synced/tracked
572
587
  * table (the local engine's `writeLocal` is the chokepoint). Reconcile is synchronous and
573
- * non-reentrant (A5), so a local write can never interleave with an open server cycle. */
588
+ * non-reentrant (A5), so a local write can never interleave with an open server cycle.
589
+ *
590
+ * Fires the {@link onLocalWrite} observer AFTER the engine commit but BEFORE subscriber
591
+ * delivery — i.e. for exactly the batches that passed the M2 guard and committed (the
592
+ * persistence layer's write-through tap, `207-LOCAL-TABLE-PERSISTENCE-DESIGN.md` §5.1). A
593
+ * subscriber throwing during delivery re-raises out of this call, but only after the tap has
594
+ * seen the batch: a committed write can never be invisible to the persistence plane. */
574
595
  writeLocal(mutations: Mutation[]): void {
575
- this.local.writeLocal(mutations);
596
+ this.local.writeLocal(mutations, () => this.localWriteObserver?.(mutations));
597
+ }
598
+
599
+ /** The write-through tap for the local-persistence layer (207 §5.1): `observer` sees every
600
+ * {@link writeLocal} batch post-commit. One observer (the layer); a later registration
601
+ * replaces it. The observer must not throw — a persistence failure degrades durability, never
602
+ * the write path (P9); the layer catches internally. */
603
+ onLocalWrite(observer: (mutations: Mutation[]) => void): void {
604
+ this.localWriteObserver = observer;
605
+ }
606
+
607
+ /** Apply a REPLICATED local batch (a restore snapshot / a leader `commit` — 207 §5.1): delegates
608
+ * to the engine's `writeLocal`, so the M2 locality guard still fires (P8 — a corrupt record
609
+ * naming a synced table dies loudly here), but does NOT invoke the {@link onLocalWrite}
610
+ * observer — the echo guard is structural, so the persistence layer can never re-enter itself.
611
+ * `onCommitted` fires post-commit pre-delivery (same anchor as {@link writeLocal}'s tap): the
612
+ * layer updates its mirror there, so a subscriber throw can never desync mirror from engine. */
613
+ applyLocalReplica(mutations: Mutation[], onCommitted?: () => void): void {
614
+ this.local.writeLocal(mutations, onCommitted);
576
615
  }
577
616
 
578
617
  onEvent(handler: (qid: QueryId, ev: ChangeEvent) => void): void {
@@ -950,6 +989,9 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
950
989
  }
951
990
 
952
991
  private onProgress(frame: ProgressFrame): void {
992
+ // Snapshot which local views are already hydrated BEFORE this release folds: any that cross into
993
+ // hydrated below get their first result set as this cycle's batch, which must phase as a snapshot.
994
+ const wasHydrated = new Set(this.hydrated);
953
995
  // (1) Take every buffered frame at cv ≤ cvMin, in (cv, arrival) order, and fold it:
954
996
  // lmid system-query frames advance `confirmedLmid`; data frames fold through the
955
997
  // cross-query refcount into ONE net base delta — the §1.3 `D`. Confirmation and
@@ -983,9 +1025,20 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
983
1025
  const pendingChanged = this.pendingMutations.length !== before;
984
1026
 
985
1027
  // (3) The reconcile cycle — only when something can have changed: a base delta to
986
- // fold in, or a pending set that shrank (its optimistic layer must rewind out).
1028
+ // fold in, or a pending set that shrank (its optimistic layer must rewind out). The batch it
1029
+ // emits for any view that JUST became hydrated is that view's initial result set, so mark those
1030
+ // qids so the local-event forwarder stamps their batch `catchUp` (→ Store phases it `snapshot`).
987
1031
  if (muts.length || pendingChanged) {
988
- this.runReconcileCycle(muts);
1032
+ let newlyHydrated: Set<QueryId> | null = null;
1033
+ for (const qid of this.hydrated) {
1034
+ if (!wasHydrated.has(qid)) (newlyHydrated ??= new Set()).add(qid);
1035
+ }
1036
+ this.catchUpQids = newlyHydrated;
1037
+ try {
1038
+ this.runReconcileCycle(muts);
1039
+ } finally {
1040
+ this.catchUpQids = null;
1041
+ }
989
1042
  }
990
1043
 
991
1044
  // (4) ResultType is the SERVER CHANNEL's state only now (§7): `unknown` while not hydrated,
@@ -1478,10 +1531,3 @@ function intersects(a: Set<string>, b: Set<string>): boolean {
1478
1531
  return false;
1479
1532
  }
1480
1533
 
1481
- /** Elementwise equality over positional bare-cell rows (the synthetic `__agg` rows are all
1482
- * scalar cells — group key + count — so identity comparison suffices). */
1483
- function rowsEqual(a: WireValue[], b: WireValue[]): boolean {
1484
- if (a.length !== b.length) return false;
1485
- for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
1486
- return true;
1487
- }
package/src/client.ts CHANGED
@@ -22,6 +22,7 @@ import type { OptimisticBackend } from "./backend.ts";
22
22
  import type { ClientRegistry, MutationTx } from "./backend.ts";
23
23
  import { resetStableClientID, stableClientID } from "./client-id.ts";
24
24
  import { createOptimisticStore, type MutateFn } from "./index.ts";
25
+ import { attachLocalPersistence, type LocalPersistence, type PersistLocalOptions } from "./local-persist.ts";
25
26
  import type { Store } from "@rindle/client";
26
27
 
27
28
  /** Must mirror `DEFAULT_RINDLE_API_ROUTES` in `@rindle/api-server` (the app-wire contract;
@@ -61,6 +62,14 @@ export interface RindleClientOptions<S extends ColsMap, R extends ClientRegistry
61
62
  clientID?: string;
62
63
  /** A policy rejection's reason (the prediction's snap-back rides the lmid release). */
63
64
  onRejected?: (envelope: MutationEnvelope, reason: string) => void;
65
+ /** Persist `local: true` tables across reloads and keep them live-coherent across tabs
66
+ * (`207-LOCAL-TABLE-PERSISTENCE-DESIGN.md`). `user` is the storage identity (§3.2) — one IDB
67
+ * database per (origin, user); pass a sentinel like `"anon"` for a signed-out mode. When set,
68
+ * `createRindleClient` awaits the initial restore before returning, so the first render never
69
+ * flashes empty local state (§5.2). Logout is `deleteLocalPersistence(user)` — never implicit.
70
+ * Per-table opt-out: declare `table(name, { local: "session" })` for local state that must stay
71
+ * ephemeral and per-tab (e.g. selection) even with persistence on (§5.4). */
72
+ persistLocal?: PersistLocalOptions;
64
73
  queue?: { maxBatch?: number; retryDelayMs?: (attempt: number) => number };
65
74
  /** Development-only recovery knobs. Keep off in production: a mutation gap means state loss
66
75
  * or two writers sharing a clientID, and should be investigated. */
@@ -146,18 +155,34 @@ export async function createRindleClient<S extends ColsMap, R extends ClientRegi
146
155
  user: opts.user,
147
156
  });
148
157
 
158
+ // Local-table persistence (207 §5.2): attach immediately after the store exists — before any
159
+ // app write can reach `writeLocal` — and AWAIT the initial restore (one `getAll` over small
160
+ // tables) so the first render never flashes empty local state. Restored rows arrive as ordinary
161
+ // deltas, so correctness never needed the gate — only UX does.
162
+ let persistence: LocalPersistence | undefined;
163
+ if (opts.persistLocal) {
164
+ persistence = attachLocalPersistence(backend, opts.schema, opts.persistLocal);
165
+ await persistence.ready;
166
+ }
167
+
149
168
  // Drain folds before the tab goes away (FOLDED-MUTATIONS-DESIGN §0.1/§3): a fold deliberately
150
169
  // holds its server write through the debounce window, so an unclean navigation would otherwise
151
170
  // lose the applied-locally tail. `pagehide`/`beforeunload` is the last-chance flush; `close`
152
- // also drains. (Best-effort: an unclean crash still loses the tail an accepted cost, §0.1.)
171
+ // also drains. The same hook is the persistence layer's best-effort final forward/persist
172
+ // (207 §9 — bounds the unacked-tail loss). (Best-effort: an unclean crash still loses the
173
+ // tail — an accepted cost, §0.1.)
153
174
  const flushFolds = () => backend.flushFolds();
175
+ const onPageHide = () => {
176
+ flushFolds();
177
+ void persistence?.flush();
178
+ };
154
179
  // Structural typing — this package has no DOM lib, but the browser global carries these.
155
180
  const target = globalThis as unknown as {
156
181
  addEventListener?: (type: string, listener: () => void) => void;
157
182
  removeEventListener?: (type: string, listener: () => void) => void;
158
183
  };
159
- target.addEventListener?.("pagehide", flushFolds);
160
- target.addEventListener?.("beforeunload", flushFolds);
184
+ target.addEventListener?.("pagehide", onPageHide);
185
+ target.addEventListener?.("beforeunload", onPageHide);
161
186
 
162
187
  return {
163
188
  store,
@@ -167,8 +192,9 @@ export async function createRindleClient<S extends ColsMap, R extends ClientRegi
167
192
  clientID,
168
193
  close: () => {
169
194
  flushFolds();
170
- target.removeEventListener?.("pagehide", flushFolds);
171
- target.removeEventListener?.("beforeunload", flushFolds);
195
+ target.removeEventListener?.("pagehide", onPageHide);
196
+ target.removeEventListener?.("beforeunload", onPageHide);
197
+ persistence?.close(); // releases leadership + the channel + the IDB handle (207 P10)
172
198
  source.close();
173
199
  },
174
200
  };
package/src/index.ts CHANGED
@@ -49,6 +49,21 @@ export { createRindleClient } from "./client.ts";
49
49
  export type { RindleClient, RindleClientOptions } from "./client.ts";
50
50
  export { resetStableClientID, stableClientID } from "./client-id.ts";
51
51
 
52
+ // Local-table persistence (207-LOCAL-TABLE-PERSISTENCE-DESIGN.md): durable, cross-tab `local: true`
53
+ // tables. `createRindleClient` wires it via the `persistLocal` option; a standalone backend attaches
54
+ // with `attachLocalPersistence`; `deleteLocalPersistence` is the sanctioned logout hook (§3.2).
55
+ export { attachLocalPersistence, deleteLocalPersistence } from "./local-persist.ts";
56
+ export type {
57
+ LocalPersistence,
58
+ PersistChannel,
59
+ PersistDb,
60
+ PersistEnv,
61
+ PersistLocalOptions,
62
+ PersistMeta,
63
+ RowState,
64
+ StoredRow,
65
+ } from "./local-persist.ts";
66
+
52
67
  /** A {@link Store} over an {@link OptimisticBackend}, plus the named-mutator entry
53
68
  * (`mutate.createIssue(args)` — the §9 dream shape) and the §6 lifecycle surface. */
54
69
  export function createOptimisticStore<S extends ColsMap, R extends ClientRegistry>(