@rindle/optimistic 0.4.2 → 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.2",
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/client": "0.4.2",
29
- "@rindle/wasm": "0.4.2",
30
- "@rindle/remote": "0.4.2",
31
- "@rindle/normalized": "0.4.2"
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
@@ -41,12 +41,16 @@
41
41
  import {
42
42
  CLIENT_MUTATIONS_SCHEMA,
43
43
  driveMutationSync,
44
+ insertCell,
45
+ insertPlan,
44
46
  isGeneratorMutator,
45
47
  isoTx,
46
48
  LMID_QUERY_NAME,
47
49
  localTableNames,
48
50
  normalizedTableSchemas,
51
+ rowsEqual,
49
52
  tableSpec,
53
+ toCell,
50
54
  } from "@rindle/client";
51
55
  import type {
52
56
  Ast,
@@ -54,6 +58,7 @@ import type {
54
58
  BackendDevObserver,
55
59
  ChangeEvent,
56
60
  ColsMap,
61
+ ColType,
57
62
  IsoTx,
58
63
  KeyedRow,
59
64
  Mutation,
@@ -65,7 +70,9 @@ import type {
65
70
  NormalizedTableSchema,
66
71
  OptimisticSource,
67
72
  ProgressFrame,
73
+ QueryArg,
68
74
  QueryId,
75
+ QueryResultRow,
69
76
  RemoteQuery,
70
77
  ResultType,
71
78
  Schema,
@@ -81,17 +88,11 @@ import { AggOverlay, type ChildOp, collectAggDefs } from "./agg-overlay.ts";
81
88
  * `@rindle/client` (the leaf both tiers share). */
82
89
  export type { KeyedRow };
83
90
 
84
- /** What `MutationTx.query` accepts: a query handle whose `.ast()` lowers to the wire
85
- * {@link Ast} — exactly what the typed query builder (`store.query.<table>…` or
86
- * `newQueryBuilder(schema).<table>…`) produces (203-MUTATOR-READS-DESIGN.md §9.1). Typed
87
- * structurally so the `MutationTx` surface need not carry the builder's heavy generics. */
88
- export type QueryArg = { ast(): Ast };
89
-
90
- /** A row returned by {@link MutationTx.query}: column name → cell, plus each materialized
91
- * relationship name → its nested row(s) — an array (a plural relationship), or a single row /
92
- * `null` (a `.one()` relationship). Recursive (nested rows share the shape). Presented
93
- * identically to a `view.data` row of the same query (203-MUTATOR-READS-DESIGN.md §5.2). */
94
- export type QueryResultRow = { [key: string]: WireValue | QueryResultRow | QueryResultRow[] };
91
+ /** {@link MutationTx.query}'s query handle ({@link QueryArg}, `{ ast(): Ast }`) and result row
92
+ * ({@link QueryResultRow})the SAME types the isomorphic seam uses (203-MUTATOR-READS-DESIGN.md
93
+ * §5.2/§9.1), re-exported from `@rindle/client` so the client and shared-generator surfaces share
94
+ * one definition. */
95
+ export type { QueryArg, QueryResultRow };
95
96
 
96
97
  /** The write handle a client mutator runs against (the client `MutationTx`, §4.2):
97
98
  * reads see the current base + this transaction's own staged writes (§4.1).
@@ -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 {
@@ -618,6 +657,7 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
618
657
  driveMutationSync(gen, {
619
658
  apply: (op) => applyOpToTx(tx, op),
620
659
  read: (table, pk) => tx.row(table, pk),
660
+ query: (q) => tx.query(q),
621
661
  });
622
662
  } else {
623
663
  (mutator as (t: MutationTx, a: never) => void)(tx, args as never);
@@ -949,6 +989,9 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
949
989
  }
950
990
 
951
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);
952
995
  // (1) Take every buffered frame at cv ≤ cvMin, in (cv, arrival) order, and fold it:
953
996
  // lmid system-query frames advance `confirmedLmid`; data frames fold through the
954
997
  // cross-query refcount into ONE net base delta — the §1.3 `D`. Confirmation and
@@ -982,9 +1025,20 @@ export class OptimisticBackend<S extends ColsMap> implements Backend {
982
1025
  const pendingChanged = this.pendingMutations.length !== before;
983
1026
 
984
1027
  // (3) The reconcile cycle — only when something can have changed: a base delta to
985
- // 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`).
986
1031
  if (muts.length || pendingChanged) {
987
- 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
+ }
988
1042
  }
989
1043
 
990
1044
  // (4) ResultType is the SERVER CHANNEL's state only now (§7): `unknown` while not hydrated,
@@ -1234,14 +1288,21 @@ function pkColsFromSchema<S extends ColsMap>(schema: Schema<S>): PkCols {
1234
1288
  return out;
1235
1289
  }
1236
1290
 
1237
- /** Per-table column order + pk indices, for the keyed `MutationTx` methods. */
1238
- type TableSpecs = Record<string, { columns: string[]; primaryKey: number[] }>;
1291
+ /** Per-table column order + pk indices + the insert plan (which columns a full insert requires vs
1292
+ * may omit-to-null) + column kinds (for the `json` stringify), for the keyed `MutationTx` methods. */
1293
+ type TableSpecs = Record<
1294
+ string,
1295
+ { columns: string[]; primaryKey: number[]; required: string[]; nullable: ReadonlySet<string>; types: Record<string, ColType> }
1296
+ >;
1239
1297
 
1240
1298
  function tableSpecsFromSchema<S extends ColsMap>(schema: Schema<S>): TableSpecs {
1241
1299
  const out: TableSpecs = {};
1242
1300
  for (const name of Object.keys(schema.tables)) {
1243
1301
  const { columns, primaryKey } = tableSpec(schema.tables[name]);
1244
- out[name] = { columns, primaryKey };
1302
+ const { required, nullable } = insertPlan(schema.tables[name]);
1303
+ const types: Record<string, ColType> = {};
1304
+ for (const c of columns) types[c] = schema.tables[name].columns[c].type;
1305
+ out[name] = { columns, primaryKey, required, nullable, types };
1245
1306
  }
1246
1307
  return out;
1247
1308
  }
@@ -1320,7 +1381,8 @@ function trackingTx(
1320
1381
  };
1321
1382
 
1322
1383
  /** Validate `obj`'s keys against the table's columns; require the pk columns; with
1323
- * `full`, require EVERY column (inserts carry whole rows there are no defaults). */
1384
+ * `full`, require every NON-nullable column (a nullable column may be omitted and is filled with
1385
+ * `null` in {@link toCells}, design 206 §6.2). */
1324
1386
  const checkColumns = (table: string, obj: KeyedRow, full: boolean): void => {
1325
1387
  const s = spec(table);
1326
1388
  const unknown = Object.keys(obj).filter((k) => !s.columns.includes(k));
@@ -1329,7 +1391,7 @@ function trackingTx(
1329
1391
  `unknown column${unknown.length > 1 ? "s" : ""} ${unknown.join(", ")} on ${table} — columns: ${s.columns.join(", ")}`,
1330
1392
  );
1331
1393
  }
1332
- const required = full ? s.columns : s.primaryKey.map((i) => s.columns[i]);
1394
+ const required = full ? s.required : s.primaryKey.map((i) => s.columns[i]);
1333
1395
  const missing = required.filter((c) => !(c in obj));
1334
1396
  if (missing.length) {
1335
1397
  throw new Error(`missing ${full ? "column" : "primary-key column"}${missing.length > 1 ? "s" : ""} ${missing.join(", ")} on ${table}`);
@@ -1339,7 +1401,13 @@ function trackingTx(
1339
1401
  const pkCells = (table: string, obj: KeyedRow): WireValue[] =>
1340
1402
  spec(table).primaryKey.map((i) => obj[spec(table).columns[i]]);
1341
1403
 
1342
- const toCells = (table: string, obj: KeyedRow): WireValue[] => spec(table).columns.map((c) => obj[c]);
1404
+ // A full insert row: each cell is `obj[c]`, or `null` for an omitted nullable column (design 206
1405
+ // §6.2); a `json` object is stringified for the engine (`toCell`). Non-nullable columns are
1406
+ // guaranteed present by `checkColumns(full)`.
1407
+ const toCells = (table: string, obj: KeyedRow): WireValue[] => {
1408
+ const s = spec(table);
1409
+ return s.columns.map((c) => toCell(insertCell(obj, c), s.types[c]));
1410
+ };
1343
1411
 
1344
1412
  const toKeyed = (table: string, cells: WireValue[]): KeyedRow => {
1345
1413
  const out: KeyedRow = {};
@@ -1411,7 +1479,9 @@ function trackingTx(
1411
1479
  const current = rawGet(table, pkCells(table, row));
1412
1480
  if (!current) return; // rebase-friendly: the row may have vanished upstream
1413
1481
  const s = spec(table);
1414
- const next = s.columns.map((c, i) => (c in row ? row[c] : current[i]));
1482
+ // Named columns overwrite (a `json` object stringified via `toCell`); unnamed keep `current`,
1483
+ // which the engine already holds as a wire value (a json string), so no re-encode.
1484
+ const next = s.columns.map((c, i) => (c in row ? toCell(row[c], s.types[c]) : current[i]));
1415
1485
  edit(table, current, next);
1416
1486
  },
1417
1487
  upsert: (table, row) => {
@@ -1461,10 +1531,3 @@ function intersects(a: Set<string>, b: Set<string>): boolean {
1461
1531
  return false;
1462
1532
  }
1463
1533
 
1464
- /** Elementwise equality over positional bare-cell rows (the synthetic `__agg` rows are all
1465
- * scalar cells — group key + count — so identity comparison suffices). */
1466
- function rowsEqual(a: WireValue[], b: WireValue[]): boolean {
1467
- if (a.length !== b.length) return false;
1468
- for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
1469
- return true;
1470
- }
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>(