@quereus/sync 4.3.2 → 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
@@ -13,7 +13,9 @@
13
13
  * cl: - Change log (HLC-indexed for efficient delta queries)
14
14
  * qt: - Quarantine (held out-of-basis straggler changes)
15
15
  * bl: - Basis-table lifecycle (mapped/derivation-source/unreferenced/detached bookkeeping)
16
+ * fv: - Sync-metadata format version (single record; see SYNC_METADATA_FORMAT_VERSION)
16
17
  */
18
+ import { serializeKeyNullGrouping } from '@quereus/quereus';
17
19
  import { assertNoUnpairedSurrogate } from '@quereus/store';
18
20
  import { siteIdToBase64, siteIdFromBase64 } from '../clock/site.js';
19
21
  const encoder = new TextEncoder();
@@ -30,51 +32,90 @@ export const SYNC_KEY_PREFIX = {
30
32
  CHANGE_LOG: encoder.encode('cl:'),
31
33
  QUARANTINE: encoder.encode('qt:'),
32
34
  BASIS_LIFECYCLE: encoder.encode('bl:'),
35
+ FORMAT_VERSION: encoder.encode('fv:'),
33
36
  };
37
+ /**
38
+ * Current sync-metadata storage format version, persisted under the `fv:` key.
39
+ *
40
+ * Version 2: per-row records (`cv:`/`tb:`/`cl:`) are keyed by the pk IDENTITY
41
+ * (collation- and semantic-transform-normalized, via {@link encodePkIdentity})
42
+ * and carry the raw pk in the record VALUE. Version-1 metadata (raw
43
+ * `JSON.stringify(pk)` keys, no pk in values) is unreadable under this layout;
44
+ * a replica whose stored version mismatches must re-bootstrap from a peer
45
+ * snapshot (see docs/sync.md § Metadata format version).
46
+ */
47
+ export const SYNC_METADATA_FORMAT_VERSION = 2;
34
48
  /** Separator between key components. */
35
49
  const SEPARATOR = ':';
36
50
  /**
37
51
  * Raise when any of `names` (schema/table/column identifiers) carries an unpaired
38
52
  * surrogate — such an identifier has no faithful UTF-8 key bytes, so building a key from it
39
53
  * would otherwise fold to U+FFFD and collide with a different identifier under the same
40
- * mistake. The `pk`/`hlc`/`entryType` key components are exempt: `encodePK` routes through
41
- * `JSON.stringify`, which already escapes a lone surrogate to ASCII, and `hlc`/`entryType`
42
- * never carry user text.
54
+ * mistake. The `hlc`/`entryType` key components never carry user text. The pk identity
55
+ * component is NOT asserted: a lone surrogate inside a string pk VALUE folds to U+FFFD in
56
+ * the key bytes (a theoretical cross-value collision, but rejecting it would make the row
57
+ * unsyncable), and the fold preserves code-unit length so the length-prefixed layout below
58
+ * still parses.
43
59
  */
44
60
  function assertKeyableIdentifiers(...names) {
45
61
  for (const name of names) {
46
62
  assertNoUnpairedSurrogate(name, `the identifier "${name}"`);
47
63
  }
48
64
  }
65
+ const IDENTITY_NORMALIZER = (s) => s;
49
66
  /**
50
- * Encode a primary key as a string for use in metadata keys.
51
- * Uses JSON for simplicity and determinism.
67
+ * Keying that applies NO collation and NO semantic transform raw value
68
+ * identity. Used where no table schema can exist: quarantine keys (out-of-basis
69
+ * by definition) and relay-only deployments with no schema oracle, where the
70
+ * raw identity is stable for the replica's whole life (an oracle can never
71
+ * appear later, so the identity can never flip).
52
72
  */
53
- export function encodePK(pk) {
54
- return JSON.stringify(pk);
55
- }
73
+ export const RAW_PK_KEYING = { normalizers: [], transforms: [] };
56
74
  /**
57
- * Decode a primary key from its string representation.
75
+ * Encode a primary key's IDENTITY the string a row's sync bookkeeping is filed
76
+ * under. Built on the engine's type-tagged `serializeKeyNullGrouping`, so:
77
+ * - numerics share one tag (`5n` and `5` key alike — bigint-safe, unlike the
78
+ * former `JSON.stringify` encoding which threw on bigint);
79
+ * - string values run through the column's key-collation normalizer;
80
+ * - semantic-ordering types (TIMESPAN) run through their `groupKey` first.
81
+ *
82
+ * The result is LOSSY and never decoded back — the raw pk (the row's ADDRESS,
83
+ * what goes on the wire) lives in the record VALUE instead.
58
84
  */
59
- export function decodePK(encoded) {
60
- return JSON.parse(encoded);
85
+ export function encodePkIdentity(pk, keying) {
86
+ const values = pk.map((v, i) => {
87
+ const transform = keying.transforms[i];
88
+ return transform && v !== null ? transform(v) : v;
89
+ });
90
+ const normalizers = pk.map((_, i) => keying.normalizers[i] ?? IDENTITY_NORMALIZER);
91
+ return serializeKeyNullGrouping(values, normalizers);
92
+ }
93
+ /** Raw (no-collation, no-transform) pk identity — see {@link RAW_PK_KEYING}. */
94
+ export function encodeRawPkIdentity(pk) {
95
+ return encodePkIdentity(pk, RAW_PK_KEYING);
61
96
  }
62
97
  /**
63
98
  * Build a column version key.
64
- * Format: cv:{schema}.{table}:{pk_json}:{column}
99
+ * Format: cv:{schema}.{table}:{identity_length}:{identity}:{column}
100
+ *
101
+ * The identity is LENGTH-PREFIXED (code units of the decoded key string) because
102
+ * it freely contains `:` (type tags) and `\0` (member separator) — no separator
103
+ * character is guaranteed absent, so an explicit length is the only unambiguous
104
+ * split between identity and column.
65
105
  */
66
- export function buildColumnVersionKey(schemaName, tableName, pk, column) {
106
+ export function buildColumnVersionKey(schemaName, tableName, identity, column) {
67
107
  assertKeyableIdentifiers(schemaName, tableName, column);
68
- const key = `cv:${schemaName}.${tableName}${SEPARATOR}${encodePK(pk)}${SEPARATOR}${column}`;
108
+ const key = `cv:${schemaName}.${tableName}${SEPARATOR}${identity.length}${SEPARATOR}${identity}${SEPARATOR}${column}`;
69
109
  return encoder.encode(key);
70
110
  }
71
111
  /**
72
112
  * Build a tombstone key.
73
- * Format: tb:{schema}.{table}:{pk_json}
113
+ * Format: tb:{schema}.{table}:{identity}
114
+ * (No length prefix — the identity is the final component.)
74
115
  */
75
- export function buildTombstoneKey(schemaName, tableName, pk) {
116
+ export function buildTombstoneKey(schemaName, tableName, identity) {
76
117
  assertKeyableIdentifiers(schemaName, tableName);
77
- const key = `tb:${schemaName}.${tableName}${SEPARATOR}${encodePK(pk)}`;
118
+ const key = `tb:${schemaName}.${tableName}${SEPARATOR}${identity}`;
78
119
  return encoder.encode(key);
79
120
  }
80
121
  /**
@@ -134,12 +175,24 @@ export function buildTableColumnVersionScanBounds(schemaName, tableName) {
134
175
  lt: incrementLastByte(encoder.encode(prefix)),
135
176
  };
136
177
  }
178
+ /**
179
+ * The key prefix shared by every column version of one row:
180
+ * `cv:{schema}.{table}:{identity_length}:{identity}:`.
181
+ *
182
+ * Exported so a row scan can recover each entry's column name by stripping this
183
+ * exact prefix, rather than splitting the key at its last `:` — the column name
184
+ * is the only unbounded, separator-bearing component, so only the prefix is
185
+ * unambiguous (see {@link parseColumnVersionKey}, which has no pk to anchor on).
186
+ */
187
+ export function buildColumnVersionRowPrefix(schemaName, tableName, identity) {
188
+ return `cv:${schemaName}.${tableName}${SEPARATOR}${identity.length}${SEPARATOR}${identity}${SEPARATOR}`;
189
+ }
137
190
  /**
138
191
  * Build scan bounds for all column versions of a row.
139
- * Returns keys to scan cv:{schema}.{table}:{pk_json}:*
192
+ * Returns keys to scan cv:{schema}.{table}:{identity_length}:{identity}:*
140
193
  */
141
- export function buildColumnVersionScanBounds(schemaName, tableName, pk) {
142
- const prefix = `cv:${schemaName}.${tableName}${SEPARATOR}${encodePK(pk)}${SEPARATOR}`;
194
+ export function buildColumnVersionScanBounds(schemaName, tableName, identity) {
195
+ const prefix = buildColumnVersionRowPrefix(schemaName, tableName, identity);
143
196
  return {
144
197
  gte: encoder.encode(prefix),
145
198
  lt: incrementLastByte(encoder.encode(prefix)),
@@ -207,15 +260,38 @@ export function buildAllSchemaMigrationsScanBounds() {
207
260
  lt: incrementLastByte(SYNC_KEY_PREFIX.SCHEMA_MIGRATION),
208
261
  };
209
262
  }
263
+ /**
264
+ * Split a length-prefixed identity component off `rest` (the key text after the
265
+ * table's separator): `{identity_length}:{identity}` followed by `remainder`.
266
+ * Returns null on a malformed length or out-of-bounds slice.
267
+ */
268
+ function splitLengthPrefixedIdentity(rest) {
269
+ const lenColon = rest.indexOf(SEPARATOR);
270
+ if (lenColon <= 0)
271
+ return null;
272
+ const lenStr = rest.slice(0, lenColon);
273
+ if (!/^\d+$/.test(lenStr))
274
+ return null;
275
+ const len = parseInt(lenStr, 10);
276
+ const start = lenColon + 1;
277
+ if (start + len > rest.length)
278
+ return null;
279
+ return { identity: rest.slice(start, start + len), remainder: rest.slice(start + len) };
280
+ }
210
281
  /**
211
282
  * Parse a column version key to extract components.
212
- * Key format: cv:{schema}.{table}:{pk_json}:{column}
283
+ * Key format: cv:{schema}.{table}:{identity_length}:{identity}:{column}
284
+ *
285
+ * Returns the pk IDENTITY string — the identity is lossy and cannot be decoded
286
+ * back to values; the raw pk lives in the record VALUE (`ColumnVersion.pk`).
287
+ * The length prefix makes the identity/column split unambiguous regardless of
288
+ * what characters either contains.
213
289
  */
214
290
  export function parseColumnVersionKey(key) {
215
291
  const keyStr = new TextDecoder().decode(key);
216
292
  if (!keyStr.startsWith('cv:'))
217
293
  return null;
218
- // cv:{schema}.{table}:{pk_json}:{column}
294
+ // cv:{schema}.{table}:{identity_length}:{identity}:{column}
219
295
  const rest = keyStr.slice(3); // Remove 'cv:'
220
296
  const firstDot = rest.indexOf('.');
221
297
  if (firstDot === -1)
@@ -226,29 +302,23 @@ export function parseColumnVersionKey(key) {
226
302
  if (firstColon === -1)
227
303
  return null;
228
304
  const table = afterDot.slice(0, firstColon);
229
- const afterTable = afterDot.slice(firstColon + 1);
230
- const lastColon = afterTable.lastIndexOf(':');
231
- if (lastColon === -1)
232
- return null;
233
- const pkJson = afterTable.slice(0, lastColon);
234
- const column = afterTable.slice(lastColon + 1);
235
- try {
236
- const pk = decodePK(pkJson);
237
- return { schema, table, pk, column };
238
- }
239
- catch {
305
+ const split = splitLengthPrefixedIdentity(afterDot.slice(firstColon + 1));
306
+ if (!split || !split.remainder.startsWith(SEPARATOR))
240
307
  return null;
241
- }
308
+ return { schema, table, identity: split.identity, column: split.remainder.slice(1) };
242
309
  }
243
310
  /**
244
311
  * Parse a tombstone key to extract components.
245
- * Key format: tb:{schema}.{table}:{pk_json}
312
+ * Key format: tb:{schema}.{table}:{identity}
313
+ *
314
+ * Returns the pk IDENTITY string; the raw pk lives in the record VALUE
315
+ * (`Tombstone.pk`).
246
316
  */
247
317
  export function parseTombstoneKey(key) {
248
318
  const keyStr = new TextDecoder().decode(key);
249
319
  if (!keyStr.startsWith('tb:'))
250
320
  return null;
251
- // tb:{schema}.{table}:{pk_json}
321
+ // tb:{schema}.{table}:{identity}
252
322
  const rest = keyStr.slice(3); // Remove 'tb:'
253
323
  const firstDot = rest.indexOf('.');
254
324
  if (firstDot === -1)
@@ -259,14 +329,7 @@ export function parseTombstoneKey(key) {
259
329
  if (firstColon === -1)
260
330
  return null;
261
331
  const table = afterDot.slice(0, firstColon);
262
- const pkJson = afterDot.slice(firstColon + 1);
263
- try {
264
- const pk = decodePK(pkJson);
265
- return { schema, table, pk };
266
- }
267
- catch {
268
- return null;
269
- }
332
+ return { schema, table, identity: afterDot.slice(firstColon + 1) };
270
333
  }
271
334
  /**
272
335
  * Parse a schema migration key to extract components.
@@ -324,18 +387,20 @@ export function deserializeHLCFromKey(buffer) {
324
387
  }
325
388
  /**
326
389
  * Build a change log key.
327
- * Format: cl:{hlc_bytes}{type_byte}{schema}.{table}:{pk_json}:{column?}
390
+ * Format: cl:{hlc_bytes}{type_byte}{schema}.{table}:{identity_length}:{identity}[:{column}]
328
391
  *
329
392
  * The HLC comes first to enable efficient range scans by time.
330
393
  * type_byte: 0x01 for column change, 0x02 for delete
394
+ * The identity is length-prefixed for the same reason as {@link buildColumnVersionKey}.
331
395
  */
332
- export function buildChangeLogKey(hlc, entryType, schemaName, tableName, pk, column) {
396
+ export function buildChangeLogKey(hlc, entryType, schemaName, tableName, identity, column) {
333
397
  assertKeyableIdentifiers(schemaName, tableName, ...(column !== undefined ? [column] : []));
334
398
  const hlcBytes = serializeHLCForKey(hlc);
335
399
  const typeByte = entryType === 'column' ? 0x01 : 0x02;
400
+ const pkPart = `${identity.length}${SEPARATOR}${identity}`;
336
401
  const suffix = column
337
- ? `${schemaName}.${tableName}${SEPARATOR}${encodePK(pk)}${SEPARATOR}${column}`
338
- : `${schemaName}.${tableName}${SEPARATOR}${encodePK(pk)}`;
402
+ ? `${schemaName}.${tableName}${SEPARATOR}${pkPart}${SEPARATOR}${column}`
403
+ : `${schemaName}.${tableName}${SEPARATOR}${pkPart}`;
339
404
  const suffixBytes = encoder.encode(suffix);
340
405
  // cl: (3) + hlc (30) + type (1) + suffix
341
406
  const key = new Uint8Array(3 + 30 + 1 + suffixBytes.length);
@@ -399,7 +464,7 @@ export function parseChangeLogKey(key) {
399
464
  const typeByte = key[33];
400
465
  const entryType = typeByte === 0x01 ? 'column' : 'delete';
401
466
  const suffixStr = new TextDecoder().decode(key.slice(34));
402
- // Parse suffix: {schema}.{table}:{pk_json}:{column?}
467
+ // Parse suffix: {schema}.{table}:{identity_length}:{identity}[:{column}]
403
468
  const firstDot = suffixStr.indexOf('.');
404
469
  if (firstDot === -1)
405
470
  return null;
@@ -409,42 +474,33 @@ export function parseChangeLogKey(key) {
409
474
  if (firstColon === -1)
410
475
  return null;
411
476
  const table = afterDot.slice(0, firstColon);
412
- const afterTable = afterDot.slice(firstColon + 1);
477
+ const split = splitLengthPrefixedIdentity(afterDot.slice(firstColon + 1));
478
+ if (!split)
479
+ return null;
413
480
  if (entryType === 'column') {
414
- const lastColon = afterTable.lastIndexOf(':');
415
- if (lastColon === -1)
481
+ if (!split.remainder.startsWith(SEPARATOR))
416
482
  return null;
417
- const pkJson = afterTable.slice(0, lastColon);
418
- const column = afterTable.slice(lastColon + 1);
419
- try {
420
- const pk = decodePK(pkJson);
421
- return { hlc, entryType, schema, table, pk, column };
422
- }
423
- catch {
424
- return null;
425
- }
426
- }
427
- else {
428
- // Delete entry - no column
429
- try {
430
- const pk = decodePK(afterTable);
431
- return { hlc, entryType, schema, table, pk };
432
- }
433
- catch {
434
- return null;
435
- }
483
+ return { hlc, entryType, schema, table, identity: split.identity, column: split.remainder.slice(1) };
436
484
  }
485
+ // Delete entry - no column
486
+ if (split.remainder.length !== 0)
487
+ return null;
488
+ return { hlc, entryType, schema, table, identity: split.identity };
437
489
  }
438
490
  /**
439
491
  * Build a quarantine key for a held out-of-basis straggler change.
440
- * Format: qt:{schema}.{table}: + hlc_bytes(30) + type_byte(1) + :{pk_json}[:{column}]
492
+ * Format: qt:{schema}.{table}: + hlc_bytes(30) + type_byte(1) + :{raw_identity}[:{column}]
441
493
  *
442
494
  * Unlike the change log (`cl:`), the table prefix comes BEFORE the HLC so the
443
495
  * range scans by `(schema, table)` for operator inspection. The HLC + type + pk
444
496
  * (+ column) suffix make the key idempotent: re-applying the same straggler
445
- * change (same HLC) overwrites its own entry rather than accumulating. Reuses
446
- * {@link serializeHLCForKey} / {@link encodePK} for parity with the change-log
447
- * encoding.
497
+ * change (same HLC) overwrites its own entry rather than accumulating.
498
+ *
499
+ * The pk component uses the RAW identity encoding ({@link encodeRawPkIdentity})
500
+ * deliberately: a quarantined table is out of the local basis, so no schema —
501
+ * and hence no collation/transform keying — can exist for it. Raw is sound here
502
+ * because the `(hlc, type)` component already makes the key unique per change,
503
+ * and it is bigint-safe (the former `JSON.stringify` threw on a bigint pk).
448
504
  *
449
505
  * The value (not the key) carries the serialized change verbatim, so quarantine
450
506
  * keys are written and pruned but never parsed back.
@@ -454,9 +510,10 @@ export function buildQuarantineKey(schemaName, tableName, hlc, entryType, pk, co
454
510
  const prefixBytes = encoder.encode(`qt:${schemaName}.${tableName}${SEPARATOR}`);
455
511
  const hlcBytes = serializeHLCForKey(hlc);
456
512
  const typeByte = entryType === 'column' ? 0x01 : 0x02;
513
+ const rawIdentity = encodeRawPkIdentity(pk);
457
514
  const suffix = column
458
- ? `${SEPARATOR}${encodePK(pk)}${SEPARATOR}${column}`
459
- : `${SEPARATOR}${encodePK(pk)}`;
515
+ ? `${SEPARATOR}${rawIdentity}${SEPARATOR}${column}`
516
+ : `${SEPARATOR}${rawIdentity}`;
460
517
  const suffixBytes = encoder.encode(suffix);
461
518
  const key = new Uint8Array(prefixBytes.length + 30 + 1 + suffixBytes.length);
462
519
  let offset = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/metadata/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/metadata/keys.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Per-table pk-identity keying resolution.
3
+ *
4
+ * The sync layer files every per-row record (`cv:`/`tb:`/`cl:`) under the row's
5
+ * IDENTITY — the same "same row?" answer the rest of the engine gives: each pk
6
+ * column normalized under its KEY COLLATION ('apple' ≡ 'APPLE' under nocase) and
7
+ * its logical type's semantic key transform ('PT1H' ≡ 'PT60M' for TIMESPAN).
8
+ * This module resolves that keying from a table's schema, mirroring
9
+ * `makePkKeySerializer` in `@quereus/isolation` (the overlay's row-alignment
10
+ * key) so the two layers can never disagree on row identity.
11
+ *
12
+ * Identity is derived and lossy; the row's ADDRESS (a real, type-valid
13
+ * `SqlValue[]` — any spelling from the equivalence class) lives in the record
14
+ * value and on the wire. See docs/sync.md § Row identity vs. address.
15
+ */
16
+ import { type KeyNormalizerResolver, type SqlValue, type TableSchema } from '@quereus/quereus';
17
+ import { type PkKeying } from './keys.js';
18
+ /**
19
+ * Resolves the pk keying for a `(schema, table)`. Throws when the table's
20
+ * schema is unavailable (see {@link createPkKeyingResolver} — a raw fallback
21
+ * there would flip every already-filed identity the moment the schema appears).
22
+ */
23
+ export type PkKeyingResolver = (schemaName: string, tableName: string) => PkKeying;
24
+ /**
25
+ * Resolve a table's {@link PkKeying} from its schema:
26
+ * - normalizers: each pk column's key collation via {@link pkKeyCollationName}
27
+ * (its own declared collation for a textual column — the store reconciles an
28
+ * undecorated text pk to the table key collation at CREATE, so the registered
29
+ * schema always carries it; BINARY for text-capable-but-not-textual columns;
30
+ * identity for never-text columns via `resolver(undefined)`).
31
+ * - transforms: the engine's {@link semanticKeyTransform} (the logical type's
32
+ * `groupKey` — today TIMESPAN → total seconds). Deliberately the ENGINE
33
+ * transform, not the store's byte-order variant: identity strings need
34
+ * equality, not memcmp order, so JSON's canonical text is already faithful.
35
+ */
36
+ export declare function resolvePkKeying(schema: TableSchema, resolver: KeyNormalizerResolver): PkKeying;
37
+ /**
38
+ * Build the {@link PkKeyingResolver} a `SyncManagerImpl` threads through its
39
+ * metadata stores.
40
+ *
41
+ * - **No schema oracle** (relay-only deployment, e.g. a coordinator): every
42
+ * table resolves to {@link RAW_PK_KEYING}. Raw identity is STABLE there — an
43
+ * oracle can never appear later in the manager's life, so the identity never
44
+ * flips — and bigint-safe, unlike the former `JSON.stringify` encoding.
45
+ * - **Oracle wired, table unknown**: THROW. There is no sound identity for a
46
+ * schemaless table, and silently falling back to raw values would orphan
47
+ * everything already filed the moment the schema appears. (The apply path
48
+ * never reaches here for an out-of-basis table — those changes are diverted
49
+ * to quarantine, whose keys use the raw encoding, before any keying lookup.)
50
+ * - **Oracle wired, table known**: resolve via {@link resolvePkKeying}, cached
51
+ * per `TableSchema` OBJECT — replicated/local DDL registers a fresh frozen
52
+ * schema object, so the WeakMap invalidates on any schema change for free.
53
+ */
54
+ export declare function createPkKeyingResolver(getTableSchema: ((schemaName: string, tableName: string) => TableSchema | undefined) | undefined, keyNormalizerResolver: KeyNormalizerResolver | undefined): PkKeyingResolver;
55
+ /**
56
+ * Closure form for one known schema — used where a caller already holds the
57
+ * `TableSchema` (the store adapter's per-table row grouping).
58
+ */
59
+ export declare function makePkIdentityEncoder(schema: TableSchema, resolver: KeyNormalizerResolver): (pk: SqlValue[]) => string;
60
+ //# sourceMappingURL=pk-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-identity.d.ts","sourceRoot":"","sources":["../../../src/metadata/pk-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAGN,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAmC,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,QAAQ,CAAC;AAEnF;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,qBAAqB,GAAG,QAAQ,CAc9F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACrC,cAAc,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC,GAAG,SAAS,EAChG,qBAAqB,EAAE,qBAAqB,GAAG,SAAS,GACtD,gBAAgB,CAwBlB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,qBAAqB,GAC7B,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,MAAM,CAG5B"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Per-table pk-identity keying resolution.
3
+ *
4
+ * The sync layer files every per-row record (`cv:`/`tb:`/`cl:`) under the row's
5
+ * IDENTITY — the same "same row?" answer the rest of the engine gives: each pk
6
+ * column normalized under its KEY COLLATION ('apple' ≡ 'APPLE' under nocase) and
7
+ * its logical type's semantic key transform ('PT1H' ≡ 'PT60M' for TIMESPAN).
8
+ * This module resolves that keying from a table's schema, mirroring
9
+ * `makePkKeySerializer` in `@quereus/isolation` (the overlay's row-alignment
10
+ * key) so the two layers can never disagree on row identity.
11
+ *
12
+ * Identity is derived and lossy; the row's ADDRESS (a real, type-valid
13
+ * `SqlValue[]` — any spelling from the equivalence class) lives in the record
14
+ * value and on the wire. See docs/sync.md § Row identity vs. address.
15
+ */
16
+ import { pkKeyCollationName, semanticKeyTransform, } from '@quereus/quereus';
17
+ import { BUILTIN_KEY_NORMALIZER_RESOLVER } from '@quereus/store';
18
+ import { encodePkIdentity, RAW_PK_KEYING } from './keys.js';
19
+ /**
20
+ * Resolve a table's {@link PkKeying} from its schema:
21
+ * - normalizers: each pk column's key collation via {@link pkKeyCollationName}
22
+ * (its own declared collation for a textual column — the store reconciles an
23
+ * undecorated text pk to the table key collation at CREATE, so the registered
24
+ * schema always carries it; BINARY for text-capable-but-not-textual columns;
25
+ * identity for never-text columns via `resolver(undefined)`).
26
+ * - transforms: the engine's {@link semanticKeyTransform} (the logical type's
27
+ * `groupKey` — today TIMESPAN → total seconds). Deliberately the ENGINE
28
+ * transform, not the store's byte-order variant: identity strings need
29
+ * equality, not memcmp order, so JSON's canonical text is already faithful.
30
+ */
31
+ export function resolvePkKeying(schema, resolver) {
32
+ // Defensive `?? []` / logicalType guard: a real TableSchema always carries
33
+ // primaryKeyDefinition and typed columns, but test oracles stub minimal
34
+ // schemas ({ columns: [{ name }] } only). A missing piece degrades that
35
+ // position to the identity normalizer (raw value identity) — the same
36
+ // treatment a keyless stub got before — instead of crashing.
37
+ const pkDef = schema.primaryKeyDefinition ?? [];
38
+ return {
39
+ normalizers: pkDef.map(def => {
40
+ const column = schema.columns[def.index];
41
+ return resolver(column?.logicalType ? pkKeyCollationName(column) : undefined);
42
+ }),
43
+ transforms: pkDef.map(def => semanticKeyTransform(schema.columns[def.index]?.logicalType)),
44
+ };
45
+ }
46
+ /**
47
+ * Build the {@link PkKeyingResolver} a `SyncManagerImpl` threads through its
48
+ * metadata stores.
49
+ *
50
+ * - **No schema oracle** (relay-only deployment, e.g. a coordinator): every
51
+ * table resolves to {@link RAW_PK_KEYING}. Raw identity is STABLE there — an
52
+ * oracle can never appear later in the manager's life, so the identity never
53
+ * flips — and bigint-safe, unlike the former `JSON.stringify` encoding.
54
+ * - **Oracle wired, table unknown**: THROW. There is no sound identity for a
55
+ * schemaless table, and silently falling back to raw values would orphan
56
+ * everything already filed the moment the schema appears. (The apply path
57
+ * never reaches here for an out-of-basis table — those changes are diverted
58
+ * to quarantine, whose keys use the raw encoding, before any keying lookup.)
59
+ * - **Oracle wired, table known**: resolve via {@link resolvePkKeying}, cached
60
+ * per `TableSchema` OBJECT — replicated/local DDL registers a fresh frozen
61
+ * schema object, so the WeakMap invalidates on any schema change for free.
62
+ */
63
+ export function createPkKeyingResolver(getTableSchema, keyNormalizerResolver) {
64
+ if (!getTableSchema) {
65
+ return () => RAW_PK_KEYING;
66
+ }
67
+ // Built-ins-only fallback (BINARY/NOCASE/RTRIM; throws on any other name) for
68
+ // hosts that wired a schema oracle but no normalizer resolver — fails loud on
69
+ // a custom collation rather than mis-keying it.
70
+ const resolver = keyNormalizerResolver ?? BUILTIN_KEY_NORMALIZER_RESOLVER;
71
+ const cache = new WeakMap();
72
+ return (schemaName, tableName) => {
73
+ const schema = getTableSchema(schemaName, tableName);
74
+ if (!schema) {
75
+ throw new Error(`No table schema for ${schemaName}.${tableName} — sync pk identity is unresolvable `
76
+ + `(out-of-basis changes are quarantined, never keyed; see metadata/pk-identity.ts)`);
77
+ }
78
+ let keying = cache.get(schema);
79
+ if (!keying) {
80
+ keying = resolvePkKeying(schema, resolver);
81
+ cache.set(schema, keying);
82
+ }
83
+ return keying;
84
+ };
85
+ }
86
+ /**
87
+ * Closure form for one known schema — used where a caller already holds the
88
+ * `TableSchema` (the store adapter's per-table row grouping).
89
+ */
90
+ export function makePkIdentityEncoder(schema, resolver) {
91
+ const keying = resolvePkKeying(schema, resolver);
92
+ return pk => encodePkIdentity(pk, keying);
93
+ }
94
+ //# sourceMappingURL=pk-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pk-identity.js","sourceRoot":"","sources":["../../../src/metadata/pk-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACN,kBAAkB,EAClB,oBAAoB,GAIpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAiB,MAAM,WAAW,CAAC;AAS3E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB,EAAE,QAA+B;IACnF,2EAA2E;IAC3E,wEAAwE;IACxE,wEAAwE;IACxE,sEAAsE;IACtE,6DAA6D;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;IAChD,OAAO;QACN,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/E,CAAC,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;KAC1F,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,sBAAsB,CACrC,cAAgG,EAChG,qBAAwD;IAExD,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,8EAA8E;IAC9E,8EAA8E;IAC9E,gDAAgD;IAChD,MAAM,QAAQ,GAAG,qBAAqB,IAAI,+BAA+B,CAAC;IAC1E,MAAM,KAAK,GAAG,IAAI,OAAO,EAAyB,CAAC;IACnD,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACd,uBAAuB,UAAU,IAAI,SAAS,sCAAsC;kBACjF,kFAAkF,CACrF,CAAC;QACH,CAAC;QACD,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC3C,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACpC,MAAmB,EACnB,QAA+B;IAE/B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC"}