cojson 0.20.17 → 0.20.19

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 (81) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +22 -0
  3. package/dist/ClockOffset.d.ts +21 -0
  4. package/dist/ClockOffset.d.ts.map +1 -0
  5. package/dist/ClockOffset.js +55 -0
  6. package/dist/ClockOffset.js.map +1 -0
  7. package/dist/coValueCore/coValueCore.js +2 -2
  8. package/dist/coValueCore/coValueCore.js.map +1 -1
  9. package/dist/exports.d.ts +2 -2
  10. package/dist/exports.d.ts.map +1 -1
  11. package/dist/exports.js.map +1 -1
  12. package/dist/localNode.d.ts +21 -4
  13. package/dist/localNode.d.ts.map +1 -1
  14. package/dist/localNode.js +44 -6
  15. package/dist/localNode.js.map +1 -1
  16. package/dist/queue/StoreQueue.d.ts +3 -2
  17. package/dist/queue/StoreQueue.d.ts.map +1 -1
  18. package/dist/queue/StoreQueue.js +4 -4
  19. package/dist/queue/StoreQueue.js.map +1 -1
  20. package/dist/storage/sqliteAsync/client.d.ts.map +1 -1
  21. package/dist/storage/sqliteAsync/client.js +17 -2
  22. package/dist/storage/sqliteAsync/client.js.map +1 -1
  23. package/dist/storage/storageAsync.d.ts +1 -1
  24. package/dist/storage/storageAsync.d.ts.map +1 -1
  25. package/dist/storage/storageAsync.js +8 -4
  26. package/dist/storage/storageAsync.js.map +1 -1
  27. package/dist/storage/storageSync.d.ts +1 -1
  28. package/dist/storage/storageSync.d.ts.map +1 -1
  29. package/dist/storage/storageSync.js +6 -2
  30. package/dist/storage/storageSync.js.map +1 -1
  31. package/dist/storage/types.d.ts +9 -1
  32. package/dist/storage/types.d.ts.map +1 -1
  33. package/dist/sync.d.ts +21 -0
  34. package/dist/sync.d.ts.map +1 -1
  35. package/dist/sync.js +41 -3
  36. package/dist/sync.js.map +1 -1
  37. package/dist/tests/ClockOffset.test.d.ts +2 -0
  38. package/dist/tests/ClockOffset.test.d.ts.map +1 -0
  39. package/dist/tests/ClockOffset.test.js +146 -0
  40. package/dist/tests/ClockOffset.test.js.map +1 -0
  41. package/dist/tests/SQLiteClientAsync.test.js +43 -8
  42. package/dist/tests/SQLiteClientAsync.test.js.map +1 -1
  43. package/dist/tests/StoreQueue.test.js +16 -3
  44. package/dist/tests/StoreQueue.test.js.map +1 -1
  45. package/dist/tests/clockDrift.integration.test.d.ts +2 -0
  46. package/dist/tests/clockDrift.integration.test.d.ts.map +1 -0
  47. package/dist/tests/clockDrift.integration.test.js +177 -0
  48. package/dist/tests/clockDrift.integration.test.js.map +1 -0
  49. package/dist/tests/localNode.clockOffset.test.d.ts +2 -0
  50. package/dist/tests/localNode.clockOffset.test.d.ts.map +1 -0
  51. package/dist/tests/localNode.clockOffset.test.js +70 -0
  52. package/dist/tests/localNode.clockOffset.test.js.map +1 -0
  53. package/dist/tests/sync.localStoreDurability.test.d.ts +2 -0
  54. package/dist/tests/sync.localStoreDurability.test.d.ts.map +1 -0
  55. package/dist/tests/sync.localStoreDurability.test.js +257 -0
  56. package/dist/tests/sync.localStoreDurability.test.js.map +1 -0
  57. package/dist/tests/testStorage.js +2 -2
  58. package/dist/tests/testStorage.js.map +1 -1
  59. package/dist/tests/testUtils.d.ts +2 -0
  60. package/dist/tests/testUtils.d.ts.map +1 -1
  61. package/dist/tests/testUtils.js +9 -2
  62. package/dist/tests/testUtils.js.map +1 -1
  63. package/package.json +4 -4
  64. package/src/ClockOffset.ts +83 -0
  65. package/src/coValueCore/coValueCore.ts +2 -2
  66. package/src/exports.ts +7 -1
  67. package/src/localNode.ts +53 -1
  68. package/src/queue/StoreQueue.ts +12 -4
  69. package/src/storage/sqliteAsync/client.ts +17 -2
  70. package/src/storage/storageAsync.ts +14 -4
  71. package/src/storage/storageSync.ts +12 -2
  72. package/src/storage/types.ts +13 -1
  73. package/src/sync.ts +87 -17
  74. package/src/tests/ClockOffset.test.ts +177 -0
  75. package/src/tests/SQLiteClientAsync.test.ts +55 -10
  76. package/src/tests/StoreQueue.test.ts +20 -0
  77. package/src/tests/clockDrift.integration.test.ts +261 -0
  78. package/src/tests/localNode.clockOffset.test.ts +92 -0
  79. package/src/tests/sync.localStoreDurability.test.ts +357 -0
  80. package/src/tests/testStorage.ts +29 -24
  81. package/src/tests/testUtils.ts +16 -0
@@ -254,38 +254,43 @@ function trackStorageMessages(
254
254
  });
255
255
  };
256
256
 
257
- storage.store = function (data, correctionCallback) {
257
+ storage.store = function (data, correctionCallback, done) {
258
258
  SyncMessagesLog.add({
259
259
  from: nodeName,
260
260
  to: storageName,
261
261
  msg: data,
262
262
  });
263
263
 
264
- return originalStore.call(storage, data, (correction) => {
265
- SyncMessagesLog.add({
266
- from: storageName,
267
- to: nodeName,
268
- msg: {
269
- action: "known",
270
- isCorrection: true,
271
- ...correction,
272
- },
273
- });
274
-
275
- const correctionMessages = correctionCallback(correction);
276
-
277
- if (correctionMessages) {
278
- for (const msg of correctionMessages) {
279
- SyncMessagesLog.add({
280
- from: nodeName,
281
- to: storageName,
282
- msg,
283
- });
264
+ return originalStore.call(
265
+ storage,
266
+ data,
267
+ (correction) => {
268
+ SyncMessagesLog.add({
269
+ from: storageName,
270
+ to: nodeName,
271
+ msg: {
272
+ action: "known",
273
+ isCorrection: true,
274
+ ...correction,
275
+ },
276
+ });
277
+
278
+ const correctionMessages = correctionCallback(correction);
279
+
280
+ if (correctionMessages) {
281
+ for (const msg of correctionMessages) {
282
+ SyncMessagesLog.add({
283
+ from: nodeName,
284
+ to: storageName,
285
+ msg,
286
+ });
287
+ }
284
288
  }
285
- }
286
289
 
287
- return correctionMessages;
288
- });
290
+ return correctionMessages;
291
+ },
292
+ done,
293
+ );
289
294
  };
290
295
 
291
296
  storage.load = function (id, callback, done) {
@@ -452,6 +452,7 @@ export function setupTestNode(
452
452
  secret?: AgentSecret;
453
453
  syncWhen?: SyncWhen;
454
454
  enableFullStorageReconciliation?: boolean;
455
+ experimental_clockSyncFromServerPings?: boolean;
455
456
  } = {},
456
457
  ) {
457
458
  const [admin, session] = opts.secret
@@ -464,6 +465,10 @@ export function setupTestNode(
464
465
  Crypto,
465
466
  opts.syncWhen,
466
467
  opts.enableFullStorageReconciliation,
468
+ {
469
+ experimental_clockSyncFromServerPings:
470
+ opts.experimental_clockSyncFromServerPings,
471
+ },
467
472
  );
468
473
 
469
474
  if (opts.isSyncServer) {
@@ -542,6 +547,10 @@ export function setupTestNode(
542
547
  Crypto,
543
548
  opts.syncWhen,
544
549
  opts.enableFullStorageReconciliation,
550
+ {
551
+ experimental_clockSyncFromServerPings:
552
+ opts.experimental_clockSyncFromServerPings,
553
+ },
545
554
  );
546
555
 
547
556
  if (opts.isSyncServer) {
@@ -556,6 +565,8 @@ export function setupTestNode(
556
565
  connected: opts.connected,
557
566
  isSyncServer: opts.isSyncServer,
558
567
  enableFullStorageReconciliation: opts.enableFullStorageReconciliation,
568
+ experimental_clockSyncFromServerPings:
569
+ opts.experimental_clockSyncFromServerPings,
559
570
  });
560
571
  },
561
572
  disconnect: () => {
@@ -577,6 +588,7 @@ export async function setupTestAccount(
577
588
  storage?: StorageAPI;
578
589
  accountID?: RawAccountID;
579
590
  accountSecret?: AgentSecret;
591
+ experimental_clockSyncFromServerPings?: boolean;
580
592
  } = {},
581
593
  ) {
582
594
  const ctx =
@@ -593,6 +605,8 @@ export async function setupTestAccount(
593
605
  accountID: opts.accountID,
594
606
  accountSecret: opts.accountSecret,
595
607
  sessionID: Crypto.newRandomSessionID(opts.accountID),
608
+ experimental_clockSyncFromServerPings:
609
+ opts.experimental_clockSyncFromServerPings,
596
610
  }),
597
611
  accountID: opts.accountID,
598
612
  accountSecret: opts.accountSecret,
@@ -602,6 +616,8 @@ export async function setupTestAccount(
602
616
  crypto: Crypto,
603
617
  creationProps: { name: "Client" },
604
618
  storage: opts.storage,
619
+ experimental_clockSyncFromServerPings:
620
+ opts.experimental_clockSyncFromServerPings,
605
621
  });
606
622
 
607
623
  if (opts.isSyncServer) {