@quereus/sync 4.4.0 → 4.4.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.
Files changed (78) hide show
  1. package/README.md +19 -1
  2. package/dist/src/create-sync-module.d.ts +11 -1
  3. package/dist/src/create-sync-module.d.ts.map +1 -1
  4. package/dist/src/create-sync-module.js +2 -2
  5. package/dist/src/create-sync-module.js.map +1 -1
  6. package/dist/src/index.d.ts +4 -3
  7. package/dist/src/index.d.ts.map +1 -1
  8. package/dist/src/index.js +9 -3
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/metadata/change-log.d.ts +39 -3
  11. package/dist/src/metadata/change-log.d.ts.map +1 -1
  12. package/dist/src/metadata/change-log.js +43 -8
  13. package/dist/src/metadata/change-log.js.map +1 -1
  14. package/dist/src/metadata/column-version.d.ts +62 -9
  15. package/dist/src/metadata/column-version.d.ts.map +1 -1
  16. package/dist/src/metadata/column-version.js +79 -25
  17. package/dist/src/metadata/column-version.js.map +1 -1
  18. package/dist/src/metadata/index.d.ts +1 -0
  19. package/dist/src/metadata/index.d.ts.map +1 -1
  20. package/dist/src/metadata/index.js +1 -0
  21. package/dist/src/metadata/index.js.map +1 -1
  22. package/dist/src/metadata/keys.d.ts +88 -22
  23. package/dist/src/metadata/keys.d.ts.map +1 -1
  24. package/dist/src/metadata/keys.js +134 -77
  25. package/dist/src/metadata/keys.js.map +1 -1
  26. package/dist/src/metadata/pk-identity.d.ts +60 -0
  27. package/dist/src/metadata/pk-identity.d.ts.map +1 -0
  28. package/dist/src/metadata/pk-identity.js +94 -0
  29. package/dist/src/metadata/pk-identity.js.map +1 -0
  30. package/dist/src/metadata/tombstones.d.ts +41 -11
  31. package/dist/src/metadata/tombstones.d.ts.map +1 -1
  32. package/dist/src/metadata/tombstones.js +58 -33
  33. package/dist/src/metadata/tombstones.js.map +1 -1
  34. package/dist/src/sync/change-applicator.d.ts +30 -1
  35. package/dist/src/sync/change-applicator.d.ts.map +1 -1
  36. package/dist/src/sync/change-applicator.js +161 -40
  37. package/dist/src/sync/change-applicator.js.map +1 -1
  38. package/dist/src/sync/maintenance.d.ts +70 -0
  39. package/dist/src/sync/maintenance.d.ts.map +1 -0
  40. package/dist/src/sync/maintenance.js +84 -0
  41. package/dist/src/sync/maintenance.js.map +1 -0
  42. package/dist/src/sync/protocol.d.ts +61 -10
  43. package/dist/src/sync/protocol.d.ts.map +1 -1
  44. package/dist/src/sync/protocol.js +15 -0
  45. package/dist/src/sync/protocol.js.map +1 -1
  46. package/dist/src/sync/snapshot-identity.d.ts +62 -0
  47. package/dist/src/sync/snapshot-identity.d.ts.map +1 -0
  48. package/dist/src/sync/snapshot-identity.js +88 -0
  49. package/dist/src/sync/snapshot-identity.js.map +1 -0
  50. package/dist/src/sync/snapshot-stream.d.ts +8 -1
  51. package/dist/src/sync/snapshot-stream.d.ts.map +1 -1
  52. package/dist/src/sync/snapshot-stream.js +166 -67
  53. package/dist/src/sync/snapshot-stream.js.map +1 -1
  54. package/dist/src/sync/snapshot.d.ts +1 -1
  55. package/dist/src/sync/snapshot.d.ts.map +1 -1
  56. package/dist/src/sync/snapshot.js +75 -44
  57. package/dist/src/sync/snapshot.js.map +1 -1
  58. package/dist/src/sync/staged-transaction-metadata.d.ts +75 -0
  59. package/dist/src/sync/staged-transaction-metadata.d.ts.map +1 -0
  60. package/dist/src/sync/staged-transaction-metadata.js +100 -0
  61. package/dist/src/sync/staged-transaction-metadata.js.map +1 -0
  62. package/dist/src/sync/store-adapter.d.ts +10 -4
  63. package/dist/src/sync/store-adapter.d.ts.map +1 -1
  64. package/dist/src/sync/store-adapter.js +244 -21
  65. package/dist/src/sync/store-adapter.js.map +1 -1
  66. package/dist/src/sync/sync-context.d.ts +54 -2
  67. package/dist/src/sync/sync-context.d.ts.map +1 -1
  68. package/dist/src/sync/sync-context.js +66 -0
  69. package/dist/src/sync/sync-context.js.map +1 -1
  70. package/dist/src/sync/sync-manager-impl.d.ts +70 -4
  71. package/dist/src/sync/sync-manager-impl.d.ts.map +1 -1
  72. package/dist/src/sync/sync-manager-impl.js +206 -36
  73. package/dist/src/sync/sync-manager-impl.js.map +1 -1
  74. package/dist/src/sync/wire.d.ts +47 -6
  75. package/dist/src/sync/wire.d.ts.map +1 -1
  76. package/dist/src/sync/wire.js +62 -11
  77. package/dist/src/sync/wire.js.map +1 -1
  78. package/package.json +6 -6
@@ -8,8 +8,8 @@
8
8
  */
9
9
  import { compareHLC, maxHLC, assertWithinDrift } from '../clock/hlc.js';
10
10
  import { siteIdEquals } from '../clock/site.js';
11
- import { encodePK } from '../metadata/keys.js';
12
- import { toError } from './sync-context.js';
11
+ import { encodePkIdentity, RAW_PK_KEYING } from '../metadata/keys.js';
12
+ import { toError, deleteRowVersionsAndLogEntries } from './sync-context.js';
13
13
  import { admitGroup } from './admission.js';
14
14
  /** Stable `schema.table` map key for batch deltas and diversion groups. */
15
15
  function tableKey(schema, table) {
@@ -62,6 +62,10 @@ export async function applyChanges(ctx, changes) {
62
62
  const schemaChangesToApply = [];
63
63
  const appliedChanges = [];
64
64
  const resolvedDataChanges = [];
65
+ // Every data-change resolution in batch order, with its relaying changeset's
66
+ // siteId. Counters and apply lists are built from these AFTER the in-batch
67
+ // delete reconciliation below, not inside the resolve loop.
68
+ const dataResolutions = [];
65
69
  const pendingSchemaMigrations = [];
66
70
  // Out-of-basis straggler changes diverted out of the resolve/apply/metadata
67
71
  // path, grouped per table for disposition + telemetry.
@@ -123,8 +127,8 @@ export async function applyChanges(ctx, changes) {
123
127
  // resolveChange / dataChangesToApply / commitChangeMetadata, so no CRDT
124
128
  // metadata is written for a table the receiver does not have.
125
129
  const key = tableKey(change.schema, change.table);
126
- const known = (ctx.isTableInBasis(change.schema, change.table) || batchCreated.has(key))
127
- && !batchDropped.has(key);
130
+ const inBasis = ctx.isTableInBasis(change.schema, change.table);
131
+ const known = (inBasis || batchCreated.has(key)) && !batchDropped.has(key);
128
132
  if (!known) {
129
133
  let group = unknownByTable.get(key);
130
134
  if (!group) {
@@ -134,22 +138,42 @@ export async function applyChanges(ctx, changes) {
134
138
  group.changes.push(change);
135
139
  continue;
136
140
  }
137
- const resolved = await resolveChange(ctx, change);
138
- if (resolved.outcome === 'applied') {
139
- applied++;
140
- appliedChanges.push({ change, siteId: changeSet.siteId });
141
- resolvedDataChanges.push(resolved);
142
- if (resolved.dataChange) {
143
- dataChangesToApply.push(resolved.dataChange);
144
- }
145
- }
146
- else if (resolved.outcome === 'skipped') {
147
- skipped++;
148
- }
149
- else if (resolved.outcome === 'conflict') {
150
- conflicts++;
141
+ // A table known ONLY via this batch's create_table has no local schema
142
+ // yet (Phase 2 DDL hasn't run) and hence no resolvable pk-identity keying
143
+ // — and, being locally fresh, no local metadata to resolve against either.
144
+ // Resolve it read-free rather than throwing from the keying resolver;
145
+ // Phase 3's metadata commit runs after the DDL, when the keying resolves.
146
+ const freshLocalTable = !inBasis;
147
+ const resolved = await resolveChange(ctx, change, freshLocalTable);
148
+ if (freshLocalTable)
149
+ resolved.freshLocalTable = true;
150
+ dataResolutions.push({ resolved, siteId: changeSet.siteId });
151
+ }
152
+ }
153
+ // In-batch delete reconciliation: Phase 1 resolved each change against
154
+ // PRE-batch stored state only, so a delete and a column change for the same
155
+ // row in this one batch never saw each other. Apply the tombstone-blocking
156
+ // rule across the batch BEFORE any data or metadata write, then build the
157
+ // counters, the store apply list, and the emitted-change list from the
158
+ // reconciled outcomes — so `ApplyResult` and `onRemoteChange` reflect what is
159
+ // actually written.
160
+ const reconciled = reconcileInBatchDeletes(ctx, dataResolutions.map(entry => entry.resolved));
161
+ for (let i = 0; i < reconciled.length; i++) {
162
+ const resolved = reconciled[i];
163
+ if (resolved.outcome === 'applied') {
164
+ applied++;
165
+ appliedChanges.push({ change: resolved.change, siteId: dataResolutions[i].siteId });
166
+ resolvedDataChanges.push(resolved);
167
+ if (resolved.dataChange) {
168
+ dataChangesToApply.push(resolved.dataChange);
151
169
  }
152
170
  }
171
+ else if (resolved.outcome === 'skipped') {
172
+ skipped++;
173
+ }
174
+ else {
175
+ conflicts++;
176
+ }
153
177
  }
154
178
  const disposition = ctx.config.unknownTableDisposition;
155
179
  // Single receive timestamp for every quarantine entry this apply (GC horizon).
@@ -347,6 +371,7 @@ async function drainTableGroup(ctx, group) {
347
371
  const appliedEntries = [];
348
372
  let applied = 0;
349
373
  let skipped = 0;
374
+ const resolutions = [];
350
375
  for (const change of group.changes) {
351
376
  // Schema-drift filter: a held column change for a column the re-created table
352
377
  // no longer has is resolved-and-dropped (never sent to resolveChange or the
@@ -359,7 +384,12 @@ async function drainTableGroup(ctx, group) {
359
384
  }
360
385
  // Identical LWW / tombstone-blocking / allowResurrection semantics as a fresh
361
386
  // receive — the held change is just an older inbound change resolved late.
362
- const resolved = await resolveChange(ctx, change);
387
+ resolutions.push(await resolveChange(ctx, change));
388
+ }
389
+ // Same in-batch delete reconciliation as applyChanges: a held delete and a held
390
+ // column write for one row drain together and must block each other exactly as
391
+ // they would arriving in one wire batch.
392
+ for (const resolved of reconcileInBatchDeletes(ctx, resolutions)) {
363
393
  if (resolved.outcome === 'applied') {
364
394
  applied++;
365
395
  resolvedDataChanges.push(resolved);
@@ -367,7 +397,7 @@ async function drainTableGroup(ctx, group) {
367
397
  dataChangesToApply.push(resolved.dataChange);
368
398
  // Group revival events by the held change's ORIGINAL origin (its HLC
369
399
  // siteId) — a held change carries no relaying changeset.
370
- appliedEntries.push({ change, siteId: change.hlc.siteId });
400
+ appliedEntries.push({ change: resolved.change, siteId: resolved.change.hlc.siteId });
371
401
  }
372
402
  else {
373
403
  skipped++;
@@ -440,14 +470,19 @@ export async function drainReappearedTables(ctx, tables) {
440
470
  * Resolve CRDT conflicts for a single change WITHOUT writing metadata.
441
471
  *
442
472
  * Phase 1 of the 3-phase apply pattern.
473
+ *
474
+ * `freshLocalTable` marks a table that exists only via the SAME batch's
475
+ * create_table: it has no local schema yet (so no pk-identity keying) and no
476
+ * local metadata, so every read is skipped and the change resolves as a first
477
+ * write. Phase 3 commits its metadata after the DDL has executed.
443
478
  */
444
- export async function resolveChange(ctx, change) {
479
+ export async function resolveChange(ctx, change, freshLocalTable = false) {
445
480
  // Skip changes that originated from ourselves (echo prevention)
446
481
  if (siteIdEquals(change.hlc.siteId, ctx.getSiteId())) {
447
482
  return { outcome: 'skipped', change };
448
483
  }
449
484
  if (change.type === 'delete') {
450
- const existingTombstone = await ctx.tombstones.getTombstone(change.schema, change.table, change.pk);
485
+ const existingTombstone = freshLocalTable ? undefined : await ctx.tombstones.getTombstone(change.schema, change.table, change.pk);
451
486
  if (existingTombstone && compareHLC(change.hlc, existingTombstone.hlc) <= 0) {
452
487
  return { outcome: 'skipped', change };
453
488
  }
@@ -465,7 +500,7 @@ export async function resolveChange(ctx, change) {
465
500
  }
466
501
  else {
467
502
  // Column change: single getColumnVersion read, then decide via resolver or HLC
468
- const localVersion = await ctx.columnVersions.getColumnVersion(change.schema, change.table, change.pk, change.column);
503
+ const localVersion = freshLocalTable ? undefined : await ctx.columnVersions.getColumnVersion(change.schema, change.table, change.pk, change.column);
469
504
  // Surface the incoming change's before-image to the resolver and conflict
470
505
  // events (spread only when present — keeps the no-prior fast path identical).
471
506
  const remotePrior = change.priorHlc !== undefined
@@ -501,7 +536,7 @@ export async function resolveChange(ctx, change) {
501
536
  }
502
537
  }
503
538
  // Remote wins or no local version — check tombstone blocking
504
- const isBlocked = await ctx.tombstones.isDeletedAndBlocking(change.schema, change.table, change.pk, change.hlc, ctx.config.allowResurrection);
539
+ const isBlocked = freshLocalTable ? false : await ctx.tombstones.isDeletedAndBlocking(change.schema, change.table, change.pk, change.hlc, ctx.config.allowResurrection);
505
540
  if (isBlocked) {
506
541
  return { outcome: 'skipped', change };
507
542
  }
@@ -532,6 +567,60 @@ export async function resolveChange(ctx, change) {
532
567
  };
533
568
  }
534
569
  }
570
+ /**
571
+ * Re-resolve column changes against deletes that landed in the SAME batch.
572
+ *
573
+ * Phase 1 compares each change only to PRE-batch stored state, so an in-batch
574
+ * delete is invisible to an in-batch column change for the same row. This pass
575
+ * applies the same tombstone-blocking rule as
576
+ * `TombstoneStore.isDeletedAndBlocking`, with each row's max-HLC in-batch
577
+ * APPLIED delete as the blocker:
578
+ * - `allowResurrection: false` (default): every same-row column change in the
579
+ * batch is blocked, whatever its HLC;
580
+ * - `allowResurrection: true`: a column change at or below the delete's HLC is
581
+ * blocked; one that beats it survives and is recorded on the winning
582
+ * delete's {@link ResolvedChange.keepColumns} so `commitChangeMetadata`'s
583
+ * post-commit cleanup keeps its cell record and change-log entry.
584
+ *
585
+ * Returns a same-length, same-order list with each blocked column change flipped
586
+ * to `'skipped'` (its `dataChange` dropped, so it never reaches the store).
587
+ * Net effect: one apply batch produces the same result as the same changes split
588
+ * across separate applies.
589
+ */
590
+ function reconcileInBatchDeletes(ctx, resolved) {
591
+ // Max-HLC applied in-batch delete per row identity. Ties keep the first, the
592
+ // same preference keepMaxHLC applies, so the annotated delete below is the
593
+ // object commitChangeMetadata's deleteWinners collapse keeps.
594
+ const deleteWinnersByRow = new Map();
595
+ for (const entry of resolved) {
596
+ if (entry.outcome !== 'applied' || entry.change.type !== 'delete')
597
+ continue;
598
+ const key = rowIdentityKey(ctx, entry.change, entry.freshLocalTable);
599
+ const prev = deleteWinnersByRow.get(key);
600
+ if (!prev || compareHLC(entry.change.hlc, prev.change.hlc) > 0) {
601
+ deleteWinnersByRow.set(key, entry);
602
+ }
603
+ }
604
+ if (deleteWinnersByRow.size === 0)
605
+ return resolved;
606
+ return resolved.map(entry => {
607
+ if (entry.outcome !== 'applied' || entry.change.type !== 'column')
608
+ return entry;
609
+ const winner = deleteWinnersByRow.get(rowIdentityKey(ctx, entry.change, entry.freshLocalTable));
610
+ if (!winner)
611
+ return entry;
612
+ if (ctx.config.allowResurrection && compareHLC(entry.change.hlc, winner.change.hlc) > 0) {
613
+ (winner.keepColumns ??= new Set()).add(entry.change.column);
614
+ // Phase 1 read this cell's PRE-batch version as the before-image, but the
615
+ // in-batch delete erases that lineage: applied in separate batches the
616
+ // resurrecting write finds no version at all and records no prior (which is
617
+ // also what the ORIGIN recorded past its own delete). Drop the prior so the
618
+ // stored version — and everything getChangesSince relays from it — matches.
619
+ return { ...entry, priorErasedByInBatchDelete: true };
620
+ }
621
+ return { outcome: 'skipped', change: entry.change };
622
+ });
623
+ }
535
624
  /**
536
625
  * Commit CRDT metadata for resolved changes.
537
626
  *
@@ -548,6 +637,11 @@ export async function resolveChange(ctx, change) {
548
637
  * pre-batch prior entry is deleted once. Mirrors the local write-path dedup in
549
638
  * `recordDataEvent` / `recordColumnVersions`, keeping the delete and column paths
550
639
  * symmetric.
640
+ *
641
+ * Cross-type (delete vs column) same-row collisions were already settled upstream by
642
+ * {@link reconcileInBatchDeletes}: every column change still `'applied'` here is one
643
+ * that must be written, and a winning delete's {@link ResolvedChange.keepColumns}
644
+ * names the columns its cleanup must leave alone.
551
645
  */
552
646
  export async function commitChangeMetadata(ctx, resolvedChanges) {
553
647
  if (resolvedChanges.length === 0)
@@ -562,10 +656,10 @@ export async function commitChangeMetadata(ctx, resolvedChanges) {
562
656
  continue;
563
657
  const change = resolved.change;
564
658
  if (change.type === 'delete') {
565
- keepMaxHLC(deleteWinners, deleteKey(change), resolved);
659
+ keepMaxHLC(deleteWinners, deleteKey(ctx, change), resolved);
566
660
  }
567
661
  else {
568
- keepMaxHLC(columnWinners, columnKey(change), resolved);
662
+ keepMaxHLC(columnWinners, columnKey(ctx, change), resolved);
569
663
  }
570
664
  }
571
665
  const batch = ctx.kv.batch();
@@ -579,28 +673,52 @@ export async function commitChangeMetadata(ctx, resolvedChanges) {
579
673
  const change = resolved.change;
580
674
  if (change.type !== 'column')
581
675
  continue; // homogeneous map; narrows the union
582
- commitColumnMetadata(ctx, batch, change, resolved.oldColumnVersion);
676
+ commitColumnMetadata(ctx, batch, change, resolved.oldColumnVersion, resolved.priorErasedByInBatchDelete);
583
677
  }
584
678
  await batch.write();
585
679
  // Column-version cleanup for deletes requires async iteration — once per winning
586
- // delete (losers were never written, so there is nothing of theirs to clean).
680
+ // delete (losers were never written, so there is nothing of theirs to clean). The
681
+ // row's change-log column entries go in the same batch as its versions: an inbound
682
+ // delete must leave no more index garbage behind than a local one, and this is the
683
+ // path a relay runs almost exclusively. `keepColumns` spares the cell records this
684
+ // same batch wrote past the delete (allowResurrection winners) — the scan reads
685
+ // committed storage, which by now INCLUDES them (the metadata batch above is
686
+ // already written, so no staged overlay is needed here; each cleanup commits in
687
+ // its own batch).
587
688
  for (const resolved of deleteWinners.values()) {
588
689
  const change = resolved.change;
589
690
  if (change.type !== 'delete')
590
691
  continue;
591
- await ctx.columnVersions.deleteRowVersions(change.schema, change.table, change.pk);
692
+ const cleanupBatch = ctx.kv.batch();
693
+ await deleteRowVersionsAndLogEntries(ctx, cleanupBatch, change.schema, change.table, change.pk, {
694
+ keepColumns: resolved.keepColumns,
695
+ });
696
+ await cleanupBatch.write();
592
697
  }
593
698
  }
594
- // Collapse keys reuse encodePK so in-batch grouping matches the canonical pk encoding of
595
- // the actual KV keys (buildTombstoneKey / buildColumnVersionKey) — two pks collapse here
596
- // iff they would collide on disk.
699
+ // Grouping keys reuse the pk-identity encoding so in-batch grouping matches the canonical
700
+ // pk identity of the actual KV keys (buildTombstoneKey / buildColumnVersionKey) — two pks
701
+ // collapse here iff they would collide on disk ('apple'/'APPLE' under nocase, 'PT1H'/'PT60M').
702
+ /**
703
+ * Row-identity grouping key shared by the collapse maps and the in-batch delete
704
+ * reconciliation. A fresh-local table (created by this same batch, pre-DDL) has no
705
+ * resolvable keying yet, so its changes group under the raw encoding — internally
706
+ * consistent within the batch, which is all the reconciliation needs. (The Phase-3
707
+ * collapse runs post-DDL with the resolved keying; for a fresh table with
708
+ * collation-variant pk spellings in ONE batch the two groupings can disagree, an
709
+ * edge accepted here.)
710
+ */
711
+ function rowIdentityKey(ctx, change, freshLocalTable) {
712
+ const keying = freshLocalTable ? RAW_PK_KEYING : ctx.getPkKeying(change.schema, change.table);
713
+ return `${change.schema}.${change.table}:${encodePkIdentity(change.pk, keying)}`;
714
+ }
597
715
  /** Stable per-pk key for collapsing repeated delete entries within one batch. */
598
- function deleteKey(change) {
599
- return `delete:${change.schema}.${change.table}:${encodePK(change.pk)}`;
716
+ function deleteKey(ctx, change) {
717
+ return `delete:${rowIdentityKey(ctx, change)}`;
600
718
  }
601
719
  /** Stable per-(pk, column) key for collapsing repeated column entries within one batch. */
602
- function columnKey(change) {
603
- return `column:${change.schema}.${change.table}:${encodePK(change.pk)}:${change.column}`;
720
+ function columnKey(ctx, change) {
721
+ return `column:${rowIdentityKey(ctx, change)}:${change.column}`;
604
722
  }
605
723
  /** Keep the max-HLC resolved change per key, collapsing in-batch repeats to one winner. */
606
724
  function keepMaxHLC(winners, key, resolved) {
@@ -625,8 +743,10 @@ function commitDeleteMetadata(ctx, batch, change, oldTombstone) {
625
743
  ctx.changeLog.recordDeletionBatch(batch, change.hlc, change.schema, change.table, change.pk);
626
744
  }
627
745
  /** Write a winning column's version + change-log entry, deleting any prior column entry. */
628
- function commitColumnMetadata(ctx, batch, change, oldColumnVersion) {
629
- // Delete the prior (pk, column) change-log entry if one exists.
746
+ function commitColumnMetadata(ctx, batch, change, oldColumnVersion, priorErasedByInBatchDelete = false) {
747
+ // Delete the prior (pk, column) change-log entry if one exists. Still required
748
+ // when the prior lineage is erased below — the entry is real storage, and the
749
+ // winning delete's cleanup skips this column (see ResolvedChange.keepColumns).
630
750
  if (oldColumnVersion) {
631
751
  ctx.changeLog.deleteEntryBatch(batch, oldColumnVersion.hlc, 'column', change.schema, change.table, change.pk, change.column);
632
752
  }
@@ -634,8 +754,9 @@ function commitColumnMetadata(ctx, batch, change, oldColumnVersion) {
634
754
  // write replaced here (`oldColumnVersion`). In causal-order delivery that equals
635
755
  // the origin's prior, so re-relay forwards the origin's chain (the prior's own
636
756
  // origin HLC, never reset to this receiver's clock). A first write here records
637
- // no prior, matching the local write path in `recordColumnVersions`.
638
- const prior = oldColumnVersion
757
+ // no prior, matching the local write path in `recordColumnVersions` — as does a
758
+ // write that resurrected past a same-batch delete, which erased that lineage.
759
+ const prior = oldColumnVersion && !priorErasedByInBatchDelete
639
760
  ? { priorHlc: oldColumnVersion.hlc, priorValue: oldColumnVersion.value }
640
761
  : undefined;
641
762
  ctx.columnVersions.setColumnVersionBatch(batch, change.schema, change.table, change.pk, change.column, { hlc: change.hlc, value: change.value, ...prior });
@@ -1 +1 @@
1
- {"version":3,"file":"change-applicator.js","sourceRoot":"","sources":["../../../src/sync/change-applicator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-applicator.js","sourceRoot":"","sources":["../../../src/sync/change-applicator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Host-agnostic tick body for the periodic sync-maintenance loop.
3
+ *
4
+ * `@quereus/sync` is deliberately timer-free: it exposes the four host-driven
5
+ * sweeps (`drainHeldChanges` / `pruneQuarantine` / `pruneTombstones` /
6
+ * `evictExpiredBasisTables`) but never schedules them — the host owns cadence
7
+ * (`docs/sync.md` § Who drives the sweep, `docs/migration.md` § 4 Contract).
8
+ * What lives here is only the *shape* of one pass — ordering, error isolation,
9
+ * single-flight — with no timer and no `SyncManager` import, so every host
10
+ * (browser worker, relay coordinator, native app) runs the same semantics
11
+ * instead of re-deriving them. Arming a timer around `createSyncMaintenanceTicker`
12
+ * stays the host's job.
13
+ */
14
+ /**
15
+ * Default cadence for a host's sync-maintenance loop (5 minutes).
16
+ *
17
+ * The latency-sensitive sweep is `drainHeldChanges` (held edits replay within
18
+ * one interval once a table reappears); prune/evict act only at horizon
19
+ * granularity (default 30 days) so are latency-insensitive. Every sweep is
20
+ * zero-cost when nothing is held/expired, so minutes is ample. A host with no
21
+ * latency-sensitive sweep (a relay, where `drainHeldChanges` is inert) is free
22
+ * to pick a slower cadence of its own.
23
+ */
24
+ export declare const SYNC_MAINTENANCE_INTERVAL_MS: number;
25
+ /**
26
+ * Minimal structural view of the four host-driven sweeps the loop calls. Avoids
27
+ * depending on the full `SyncManager` surface and keeps test fakes tiny — a
28
+ * `SyncManager` is structurally assignable to this.
29
+ */
30
+ export interface SyncMaintenanceTarget {
31
+ drainHeldChanges(): Promise<number>;
32
+ pruneQuarantine(): Promise<number>;
33
+ pruneTombstones(): Promise<number>;
34
+ evictExpiredBasisTables(): Promise<number>;
35
+ }
36
+ /**
37
+ * Reports a failed sweep. Called once per failing step; the remaining sweeps
38
+ * still run. `error` is the thrown value verbatim.
39
+ */
40
+ export type MaintenanceLogger = (step: string, error: unknown) => void;
41
+ /**
42
+ * One maintenance pass. Runs every sweep even if an earlier one throws (each is
43
+ * wrapped + logged); never rejects.
44
+ *
45
+ * Order: `drainHeldChanges` first — it replays held out-of-basis changes into
46
+ * tables that have reappeared in the local basis — THEN `pruneQuarantine` GCs
47
+ * the truly-expired remainder, then `pruneTombstones`, then
48
+ * `evictExpiredBasisTables`. Draining before pruning means a held change for a
49
+ * table that has come back is replayed rather than GC'd out from under it.
50
+ */
51
+ export declare function runSyncMaintenancePass(target: SyncMaintenanceTarget, log: MaintenanceLogger): Promise<void>;
52
+ /**
53
+ * Build a single-flight maintenance ticker with the re-entrancy and null-target
54
+ * guards folded in, so the host holds no separate boolean and the guard logic is
55
+ * drivable from a test.
56
+ *
57
+ * - `getTarget` returns the live maintenance target, or null when there is no
58
+ * sync module yet / after `close()`. A null target is a clean no-op (the timer
59
+ * can fire once between `close()` nulling the manager and `clearInterval`).
60
+ * - While a pass is in flight, a concurrent tick is a clean no-op until the
61
+ * first settles — a pass slower than the interval must not overlap itself. The
62
+ * in-flight flag lives in the returned closure.
63
+ *
64
+ * Note the collapsed tick *does not* join the in-flight pass — it resolves
65
+ * immediately. That suits a fire-and-forget timer; a host that must await the
66
+ * running pass (to close its stores at shutdown, say) needs to hold the pass
67
+ * promise itself rather than rely on this return value.
68
+ */
69
+ export declare function createSyncMaintenanceTicker(getTarget: () => SyncMaintenanceTarget | null, log: MaintenanceLogger): () => Promise<void>;
70
+ //# sourceMappingURL=maintenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.d.ts","sourceRoot":"","sources":["../../../src/sync/maintenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,QAAgB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAevE;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,qBAAqB,GAAG,IAAI,EAC7C,GAAG,EAAE,iBAAiB,GACrB,MAAM,OAAO,CAAC,IAAI,CAAC,CAarB"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Host-agnostic tick body for the periodic sync-maintenance loop.
3
+ *
4
+ * `@quereus/sync` is deliberately timer-free: it exposes the four host-driven
5
+ * sweeps (`drainHeldChanges` / `pruneQuarantine` / `pruneTombstones` /
6
+ * `evictExpiredBasisTables`) but never schedules them — the host owns cadence
7
+ * (`docs/sync.md` § Who drives the sweep, `docs/migration.md` § 4 Contract).
8
+ * What lives here is only the *shape* of one pass — ordering, error isolation,
9
+ * single-flight — with no timer and no `SyncManager` import, so every host
10
+ * (browser worker, relay coordinator, native app) runs the same semantics
11
+ * instead of re-deriving them. Arming a timer around `createSyncMaintenanceTicker`
12
+ * stays the host's job.
13
+ */
14
+ /**
15
+ * Default cadence for a host's sync-maintenance loop (5 minutes).
16
+ *
17
+ * The latency-sensitive sweep is `drainHeldChanges` (held edits replay within
18
+ * one interval once a table reappears); prune/evict act only at horizon
19
+ * granularity (default 30 days) so are latency-insensitive. Every sweep is
20
+ * zero-cost when nothing is held/expired, so minutes is ample. A host with no
21
+ * latency-sensitive sweep (a relay, where `drainHeldChanges` is inert) is free
22
+ * to pick a slower cadence of its own.
23
+ */
24
+ export const SYNC_MAINTENANCE_INTERVAL_MS = 5 * 60 * 1000;
25
+ /** Run one sweep, isolating its failure: a throw is logged, never re-thrown. */
26
+ async function runStep(step, run, log) {
27
+ try {
28
+ await run();
29
+ }
30
+ catch (error) {
31
+ log(step, error);
32
+ }
33
+ }
34
+ /**
35
+ * One maintenance pass. Runs every sweep even if an earlier one throws (each is
36
+ * wrapped + logged); never rejects.
37
+ *
38
+ * Order: `drainHeldChanges` first — it replays held out-of-basis changes into
39
+ * tables that have reappeared in the local basis — THEN `pruneQuarantine` GCs
40
+ * the truly-expired remainder, then `pruneTombstones`, then
41
+ * `evictExpiredBasisTables`. Draining before pruning means a held change for a
42
+ * table that has come back is replayed rather than GC'd out from under it.
43
+ */
44
+ export async function runSyncMaintenancePass(target, log) {
45
+ await runStep('drainHeldChanges', () => target.drainHeldChanges(), log);
46
+ await runStep('pruneQuarantine', () => target.pruneQuarantine(), log);
47
+ await runStep('pruneTombstones', () => target.pruneTombstones(), log);
48
+ await runStep('evictExpiredBasisTables', () => target.evictExpiredBasisTables(), log);
49
+ }
50
+ /**
51
+ * Build a single-flight maintenance ticker with the re-entrancy and null-target
52
+ * guards folded in, so the host holds no separate boolean and the guard logic is
53
+ * drivable from a test.
54
+ *
55
+ * - `getTarget` returns the live maintenance target, or null when there is no
56
+ * sync module yet / after `close()`. A null target is a clean no-op (the timer
57
+ * can fire once between `close()` nulling the manager and `clearInterval`).
58
+ * - While a pass is in flight, a concurrent tick is a clean no-op until the
59
+ * first settles — a pass slower than the interval must not overlap itself. The
60
+ * in-flight flag lives in the returned closure.
61
+ *
62
+ * Note the collapsed tick *does not* join the in-flight pass — it resolves
63
+ * immediately. That suits a fire-and-forget timer; a host that must await the
64
+ * running pass (to close its stores at shutdown, say) needs to hold the pass
65
+ * promise itself rather than rely on this return value.
66
+ */
67
+ export function createSyncMaintenanceTicker(getTarget, log) {
68
+ let running = false;
69
+ return async () => {
70
+ if (running)
71
+ return;
72
+ const target = getTarget();
73
+ if (!target)
74
+ return;
75
+ running = true;
76
+ try {
77
+ await runSyncMaintenancePass(target, log);
78
+ }
79
+ finally {
80
+ running = false;
81
+ }
82
+ };
83
+ }
84
+ //# sourceMappingURL=maintenance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"maintenance.js","sourceRoot":"","sources":["../../../src/sync/maintenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAoB1D,gFAAgF;AAChF,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,GAA0B,EAC1B,GAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA6B,EAC7B,GAAsB;IAEtB,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,OAAO,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,OAAO,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,GAAG,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAA6C,EAC7C,GAAsB;IAEtB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,KAAK,IAAI,EAAE;QAChB,IAAI,OAAO;YAAE,OAAO;QACpB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}