cojson 0.19.18 → 0.19.20

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 (124) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +9 -0
  3. package/dist/PeerState.d.ts.map +1 -1
  4. package/dist/SyncStateManager.d.ts +5 -2
  5. package/dist/SyncStateManager.d.ts.map +1 -1
  6. package/dist/SyncStateManager.js +49 -12
  7. package/dist/SyncStateManager.js.map +1 -1
  8. package/dist/UnsyncedCoValuesTracker.d.ts +81 -0
  9. package/dist/UnsyncedCoValuesTracker.d.ts.map +1 -0
  10. package/dist/UnsyncedCoValuesTracker.js +209 -0
  11. package/dist/UnsyncedCoValuesTracker.js.map +1 -0
  12. package/dist/config.d.ts +6 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -1
  16. package/dist/exports.d.ts +11 -3
  17. package/dist/exports.d.ts.map +1 -1
  18. package/dist/exports.js +6 -1
  19. package/dist/exports.js.map +1 -1
  20. package/dist/localNode.d.ts +9 -5
  21. package/dist/localNode.d.ts.map +1 -1
  22. package/dist/localNode.js +12 -8
  23. package/dist/localNode.js.map +1 -1
  24. package/dist/queue/IncomingMessagesQueue.d.ts +6 -7
  25. package/dist/queue/IncomingMessagesQueue.d.ts.map +1 -1
  26. package/dist/queue/IncomingMessagesQueue.js +7 -30
  27. package/dist/queue/IncomingMessagesQueue.js.map +1 -1
  28. package/dist/queue/LinkedList.d.ts +1 -1
  29. package/dist/queue/LinkedList.d.ts.map +1 -1
  30. package/dist/queue/LinkedList.js.map +1 -1
  31. package/dist/queue/StorageStreamingQueue.d.ts +43 -0
  32. package/dist/queue/StorageStreamingQueue.d.ts.map +1 -0
  33. package/dist/queue/StorageStreamingQueue.js +70 -0
  34. package/dist/queue/StorageStreamingQueue.js.map +1 -0
  35. package/dist/storage/knownState.d.ts +1 -1
  36. package/dist/storage/knownState.js +4 -4
  37. package/dist/storage/sqlite/client.d.ts +8 -0
  38. package/dist/storage/sqlite/client.d.ts.map +1 -1
  39. package/dist/storage/sqlite/client.js +17 -0
  40. package/dist/storage/sqlite/client.js.map +1 -1
  41. package/dist/storage/sqlite/sqliteMigrations.d.ts.map +1 -1
  42. package/dist/storage/sqlite/sqliteMigrations.js +9 -0
  43. package/dist/storage/sqlite/sqliteMigrations.js.map +1 -1
  44. package/dist/storage/sqliteAsync/client.d.ts +8 -0
  45. package/dist/storage/sqliteAsync/client.d.ts.map +1 -1
  46. package/dist/storage/sqliteAsync/client.js +19 -0
  47. package/dist/storage/sqliteAsync/client.js.map +1 -1
  48. package/dist/storage/storageAsync.d.ts +9 -2
  49. package/dist/storage/storageAsync.d.ts.map +1 -1
  50. package/dist/storage/storageAsync.js +9 -0
  51. package/dist/storage/storageAsync.js.map +1 -1
  52. package/dist/storage/storageSync.d.ts +17 -4
  53. package/dist/storage/storageSync.d.ts.map +1 -1
  54. package/dist/storage/storageSync.js +67 -44
  55. package/dist/storage/storageSync.js.map +1 -1
  56. package/dist/storage/types.d.ts +35 -0
  57. package/dist/storage/types.d.ts.map +1 -1
  58. package/dist/sync.d.ts +38 -1
  59. package/dist/sync.d.ts.map +1 -1
  60. package/dist/sync.js +181 -7
  61. package/dist/sync.js.map +1 -1
  62. package/dist/tests/IncomingMessagesQueue.test.js +4 -150
  63. package/dist/tests/IncomingMessagesQueue.test.js.map +1 -1
  64. package/dist/tests/StorageStreamingQueue.test.d.ts +2 -0
  65. package/dist/tests/StorageStreamingQueue.test.d.ts.map +1 -0
  66. package/dist/tests/StorageStreamingQueue.test.js +213 -0
  67. package/dist/tests/StorageStreamingQueue.test.js.map +1 -0
  68. package/dist/tests/SyncManager.processQueues.test.d.ts +2 -0
  69. package/dist/tests/SyncManager.processQueues.test.d.ts.map +1 -0
  70. package/dist/tests/SyncManager.processQueues.test.js +208 -0
  71. package/dist/tests/SyncManager.processQueues.test.js.map +1 -0
  72. package/dist/tests/SyncStateManager.test.js +3 -3
  73. package/dist/tests/SyncStateManager.test.js.map +1 -1
  74. package/dist/tests/coValueCore.loadFromStorage.test.js +3 -0
  75. package/dist/tests/coValueCore.loadFromStorage.test.js.map +1 -1
  76. package/dist/tests/setup.d.ts +2 -0
  77. package/dist/tests/setup.d.ts.map +1 -0
  78. package/dist/tests/setup.js +4 -0
  79. package/dist/tests/setup.js.map +1 -0
  80. package/dist/tests/sync.garbageCollection.test.js.map +1 -1
  81. package/dist/tests/sync.mesh.test.js +19 -19
  82. package/dist/tests/sync.storage.test.js +176 -20
  83. package/dist/tests/sync.storage.test.js.map +1 -1
  84. package/dist/tests/sync.test.js +1 -1
  85. package/dist/tests/sync.test.js.map +1 -1
  86. package/dist/tests/sync.tracking.test.d.ts +2 -0
  87. package/dist/tests/sync.tracking.test.d.ts.map +1 -0
  88. package/dist/tests/sync.tracking.test.js +261 -0
  89. package/dist/tests/sync.tracking.test.js.map +1 -0
  90. package/dist/tests/testUtils.d.ts +4 -3
  91. package/dist/tests/testUtils.d.ts.map +1 -1
  92. package/dist/tests/testUtils.js +4 -4
  93. package/dist/tests/testUtils.js.map +1 -1
  94. package/package.json +4 -4
  95. package/src/PeerState.ts +2 -2
  96. package/src/SyncStateManager.ts +63 -12
  97. package/src/UnsyncedCoValuesTracker.ts +272 -0
  98. package/src/config.ts +13 -0
  99. package/src/exports.ts +10 -1
  100. package/src/localNode.ts +15 -3
  101. package/src/queue/IncomingMessagesQueue.ts +7 -39
  102. package/src/queue/LinkedList.ts +1 -1
  103. package/src/queue/StorageStreamingQueue.ts +96 -0
  104. package/src/storage/knownState.ts +4 -4
  105. package/src/storage/sqlite/client.ts +31 -0
  106. package/src/storage/sqlite/sqliteMigrations.ts +9 -0
  107. package/src/storage/sqliteAsync/client.ts +35 -0
  108. package/src/storage/storageAsync.ts +18 -1
  109. package/src/storage/storageSync.ts +119 -56
  110. package/src/storage/types.ts +42 -0
  111. package/src/sync.ts +235 -8
  112. package/src/tests/IncomingMessagesQueue.test.ts +4 -206
  113. package/src/tests/StorageStreamingQueue.test.ts +276 -0
  114. package/src/tests/SyncManager.processQueues.test.ts +287 -0
  115. package/src/tests/SyncStateManager.test.ts +3 -0
  116. package/src/tests/coValueCore.loadFromStorage.test.ts +11 -0
  117. package/src/tests/setup.ts +4 -0
  118. package/src/tests/sync.garbageCollection.test.ts +1 -3
  119. package/src/tests/sync.mesh.test.ts +19 -19
  120. package/src/tests/sync.storage.test.ts +224 -32
  121. package/src/tests/sync.test.ts +1 -9
  122. package/src/tests/sync.tracking.test.ts +396 -0
  123. package/src/tests/testUtils.ts +11 -5
  124. package/vitest.config.ts +1 -0
@@ -1,4 +1,4 @@
1
1
 
2
- > cojson@0.19.18 build /home/runner/_work/jazz/jazz/packages/cojson
2
+ > cojson@0.19.20 build /home/runner/_work/jazz/jazz/packages/cojson
3
3
  > rm -rf ./dist && tsc --sourceMap --outDir dist
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # cojson
2
2
 
3
+ ## 0.19.19
4
+
5
+ ### Patch Changes
6
+
7
+ - 83f84ca: Resume interrupted CoValue sync on app restart (without requiring CoValues to be manually reloaded)
8
+ - cojson-core-wasm@0.19.19
9
+ - cojson-core-rn@0.19.19
10
+ - cojson-core-napi@0.19.19
11
+
3
12
  ## 0.19.18
4
13
 
5
14
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAa,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAS;IASlB,OAAO,CAAC,IAAI;IARd;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAGlD,IAAI,EAAE,IAAI,EAClB,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,SAAS;IAKvD,aAAa,CAAC,EAAE,EAAE,OAAO;IAIzB,uBAAuB,CAAC,EAAE,EAAE,OAAO;IAInC,yBAAyB,CAAC,EAAE,EAAE,OAAO;IAIrC;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAe3B,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAClD,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAEnD,oBAAoB,CAAC,EAAE,EAAE,OAAO;IAKhC,mBAAmB,CAAC,EAAE,EAAE,OAAO;IAI/B,OAAO,CAAC,qBAAqB;IAW7B,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAMzC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAMjD,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAM3D,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAM/D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,EAAE,OAAO;IAS7B,OAAO,CAAC,SAAS,CAA2D;IAE5E,OAAO,CAAC,aAAa;IAMrB,6BAA6B,CAC3B,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI;IASxD,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,wBAEP;IAED,IAAI,QAAQ,uBAEX;IAEM,MAAM,UAAS;IAEtB,IAAI,QAAQ,4CAEX;IAED,IAAI,UAAU,wBAEb;IAED,mBAAmB,CAAC,GAAG,EAAE,WAAW;IAIpC,cAAc,YAAiB,IAAI,EAAI;IAEvC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI;IAarC,SAAS;IAQT,gBAAgB;CAgBjB"}
1
+ {"version":3,"file":"PeerState.d.ts","sourceRoot":"","sources":["../src/PeerState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,SAAS;IASlB,OAAO,CAAC,IAAI;IARd;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA+B;gBAGlD,IAAI,EAAE,IAAI,EAClB,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,GAAG,SAAS;IAKvD,aAAa,CAAC,EAAE,EAAE,OAAO;IAIzB,uBAAuB,CAAC,EAAE,EAAE,OAAO;IAInC,yBAAyB,CAAC,EAAE,EAAE,OAAO;IAIrC;;;;;OAKG;IACH,gBAAgB,CAAC,IAAI,EAAE,IAAI;IAe3B,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAClD,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,CAAa;IAEnD,oBAAoB,CAAC,EAAE,EAAE,OAAO;IAKhC,mBAAmB,CAAC,EAAE,EAAE,OAAO;IAI/B,OAAO,CAAC,qBAAqB;IAW7B,YAAY,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAMzC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAMjD,qBAAqB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB;IAM3D,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO;IAM/D;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,EAAE,OAAO;IAS7B,OAAO,CAAC,SAAS,CAA2D;IAE5E,OAAO,CAAC,aAAa;IAMrB,6BAA6B,CAC3B,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI;IASxD,IAAI,EAAE,WAEL;IAED,IAAI,IAAI,wBAEP;IAED,IAAI,QAAQ,uBAEX;IAEM,MAAM,UAAS;IAEtB,IAAI,QAAQ,4CAEX;IAED,IAAI,UAAU,wBAEb;IAED,mBAAmB,CAAC,GAAG,EAAE,WAAW;IAIpC,cAAc,YAAiB,IAAI,EAAI;IAEvC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,IAAI;IAarC,SAAS;IAQT,gBAAgB,IAAI,IAAI;CAgBzB"}
@@ -6,14 +6,17 @@ export type SyncState = {
6
6
  uploaded: boolean;
7
7
  };
8
8
  export type GlobalSyncStateListenerCallback = (peerId: PeerID, knownState: CoValueKnownState, sync: SyncState) => void;
9
+ export type CoValueSyncStateListenerCallback = GlobalSyncStateListenerCallback;
9
10
  export type PeerSyncStateListenerCallback = (knownState: CoValueKnownState, sync: SyncState) => void;
10
11
  export declare class SyncStateManager {
11
12
  private syncManager;
12
13
  constructor(syncManager: SyncManager);
13
14
  private listeners;
14
- private listenersByPeers;
15
+ private listenersByCoValues;
16
+ private listenersByPeersAndCoValues;
15
17
  subscribeToUpdates(listener: GlobalSyncStateListenerCallback): () => void;
16
- subscribeToPeerUpdates(peerId: PeerID, listener: PeerSyncStateListenerCallback): () => void;
18
+ subscribeToCoValueUpdates(coValueId: RawCoID, listener: CoValueSyncStateListenerCallback): () => void;
19
+ subscribeToPeerUpdates(peerId: PeerID, coValueId: RawCoID, listener: PeerSyncStateListenerCallback): () => void;
17
20
  triggerUpdate(peerId: PeerID, id: RawCoID, knownState: CoValueKnownState): void;
18
21
  isSynced(peer: PeerState, id: RawCoID): boolean;
19
22
  private getIsCoValueFullyUploadedIntoPeer;
@@ -1 +1 @@
1
- {"version":3,"file":"SyncStateManager.d.ts","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EACL,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,CAC5C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,MAAM,MAAM,6BAA6B,GAAG,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IACf,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,gBAAgB,CAGpB;IAEJ,kBAAkB,CAAC,QAAQ,EAAE,+BAA+B;IAQ5D,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,6BAA6B;IAezC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB;IAuBxE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO;IAQrC,OAAO,CAAC,iCAAiC;CAmB1C"}
1
+ {"version":3,"file":"SyncStateManager.d.ts","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EACL,iBAAiB,EAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG,CAC5C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,MAAM,MAAM,gCAAgC,GAAG,+BAA+B,CAAC;AAE/E,MAAM,MAAM,6BAA6B,GAAG,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,IAAI,EAAE,SAAS,KACZ,IAAI,CAAC;AAEV,qBAAa,gBAAgB;IACf,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAE5C,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,mBAAmB,CAGvB;IACJ,OAAO,CAAC,2BAA2B,CAG/B;IAEJ,kBAAkB,CAAC,QAAQ,EAAE,+BAA+B;IAQ5D,yBAAyB,CACvB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,gCAAgC;IAiB5C,sBAAsB,CACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,6BAA6B;IA2BzC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB;IAoCxE,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO;IAQrC,OAAO,CAAC,iCAAiC;CAmB1C"}
@@ -3,7 +3,8 @@ export class SyncStateManager {
3
3
  constructor(syncManager) {
4
4
  this.syncManager = syncManager;
5
5
  this.listeners = new Set();
6
- this.listenersByPeers = new Map();
6
+ this.listenersByCoValues = new Map();
7
+ this.listenersByPeersAndCoValues = new Map();
7
8
  }
8
9
  subscribeToUpdates(listener) {
9
10
  this.listeners.add(listener);
@@ -11,20 +12,51 @@ export class SyncStateManager {
11
12
  this.listeners.delete(listener);
12
13
  };
13
14
  }
14
- subscribeToPeerUpdates(peerId, listener) {
15
- const listeners = this.listenersByPeers.get(peerId) ?? new Set();
16
- if (listeners.size === 0) {
17
- this.listenersByPeers.set(peerId, listeners);
15
+ subscribeToCoValueUpdates(coValueId, listener) {
16
+ let listeners = this.listenersByCoValues.get(coValueId);
17
+ if (!listeners) {
18
+ listeners = new Set();
19
+ this.listenersByCoValues.set(coValueId, listeners);
18
20
  }
19
21
  listeners.add(listener);
20
22
  return () => {
21
23
  listeners.delete(listener);
24
+ if (listeners.size === 0) {
25
+ this.listenersByCoValues.delete(coValueId);
26
+ }
27
+ };
28
+ }
29
+ subscribeToPeerUpdates(peerId, coValueId, listener) {
30
+ let peerMap = this.listenersByPeersAndCoValues.get(peerId);
31
+ if (!peerMap) {
32
+ peerMap = new Map();
33
+ this.listenersByPeersAndCoValues.set(peerId, peerMap);
34
+ }
35
+ let listeners = peerMap.get(coValueId);
36
+ if (!listeners) {
37
+ listeners = new Set();
38
+ peerMap.set(coValueId, listeners);
39
+ }
40
+ listeners.add(listener);
41
+ return () => {
42
+ listeners.delete(listener);
43
+ if (listeners.size === 0) {
44
+ peerMap.delete(coValueId);
45
+ if (peerMap.size === 0) {
46
+ this.listenersByPeersAndCoValues.delete(peerId);
47
+ }
48
+ }
22
49
  };
23
50
  }
24
51
  triggerUpdate(peerId, id, knownState) {
25
- const peerListeners = this.listenersByPeers.get(peerId);
26
- // If we don't have any active listeners do nothing
27
- if (!peerListeners?.size && !this.listeners.size) {
52
+ const globalListeners = this.listeners;
53
+ const coValueListeners = this.listenersByCoValues.get(id);
54
+ const peerMap = this.listenersByPeersAndCoValues.get(peerId);
55
+ const coValueAndPeerListeners = peerMap?.get(id);
56
+ if (!globalListeners.size &&
57
+ !coValueListeners?.size &&
58
+ !coValueAndPeerListeners?.size) {
59
+ // If we don't have any active listeners do nothing
28
60
  return;
29
61
  }
30
62
  const syncState = {
@@ -33,10 +65,15 @@ export class SyncStateManager {
33
65
  for (const listener of this.listeners) {
34
66
  listener(peerId, knownState, syncState);
35
67
  }
36
- if (!peerListeners)
37
- return;
38
- for (const listener of peerListeners) {
39
- listener(knownState, syncState);
68
+ if (coValueListeners) {
69
+ for (const listener of coValueListeners) {
70
+ listener(peerId, knownState, syncState);
71
+ }
72
+ }
73
+ if (coValueAndPeerListeners) {
74
+ for (const listener of coValueAndPeerListeners) {
75
+ listener(knownState, syncState);
76
+ }
40
77
  }
41
78
  }
42
79
  isSynced(peer, id) {
@@ -1 +1 @@
1
- {"version":3,"file":"SyncStateManager.js","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAmBzB,MAAM,OAAO,gBAAgB;IAC3B,YAAoB,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;QAEpC,cAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;QACvD,qBAAgB,GAAG,IAAI,GAAG,EAG/B,CAAC;IAN2C,CAAC;IAQhD,kBAAkB,CAAC,QAAyC;QAC1D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE7B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC;IAED,sBAAsB,CACpB,MAAc,EACd,QAAuC;QAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QAEjE,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QAED,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExB,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,MAAc,EAAE,EAAW,EAAE,UAA6B;QACtE,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAExD,mDAAmD;QACnD,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG;YAChB,QAAQ,EAAE,IAAI,CAAC,iCAAiC,CAAC,UAAU,EAAE,EAAE,CAAC;SACjE,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,aAAa;YAAE,OAAO;QAE3B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAe,EAAE,EAAW;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QAElC,OAAO,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAEO,iCAAiC,CACvC,cAAiC,EACjC,EAAW;QAEX,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEpD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,yDAAyD;QACzD,yBAAyB;QACzB,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE/C,OAAO,4BAA4B,CACjC,UAAU,CAAC,QAAQ,EACnB,cAAc,CAAC,QAAQ,CACxB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"SyncStateManager.js","sourceRoot":"","sources":["../src/SyncStateManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type { RawCoID } from "./ids.js";
2
+ import type { PeerID } from "./sync.js";
3
+ import type { StorageAPI } from "./storage/types.js";
4
+ /**
5
+ * Set the delay for flushing pending sync state updates to storage.
6
+ * @internal
7
+ */
8
+ export declare function setSyncStateTrackingBatchDelay(delay: number): void;
9
+ /**
10
+ * Tracks CoValues that have unsynced changes to specific peers.
11
+ * Maintains an in-memory map and periodically persists to storage.
12
+ */
13
+ export declare class UnsyncedCoValuesTracker {
14
+ private unsynced;
15
+ private coValueListeners;
16
+ private globalListeners;
17
+ private pendingUpdates;
18
+ private flushTimer;
19
+ private storage?;
20
+ /**
21
+ * Add a CoValue as unsynced to a specific peer.
22
+ * Triggers persistence if storage is available.
23
+ * @returns true if the CoValue was already tracked, false otherwise.
24
+ */
25
+ add(id: RawCoID, peerId?: PeerID): boolean;
26
+ /**
27
+ * Remove a CoValue from being unsynced to a specific peer.
28
+ * Triggers persistence if storage is available.
29
+ */
30
+ remove(id: RawCoID, peerId?: PeerID): void;
31
+ /**
32
+ * Remove all tracking for a CoValue (all peers).
33
+ * Triggers persistence if storage is available.
34
+ */
35
+ removeAll(id: RawCoID): void;
36
+ forcePersist(): Promise<void> | undefined;
37
+ private schedulePersist;
38
+ /**
39
+ * Flush all pending persistence updates in a batch
40
+ */
41
+ private flush;
42
+ /**
43
+ * Get all CoValue IDs that have at least one unsynced peer.
44
+ */
45
+ getAll(): RawCoID[];
46
+ /**
47
+ * Check if all CoValues are synced
48
+ */
49
+ isAllSynced(): boolean;
50
+ /**
51
+ * Check if a specific CoValue is tracked as unsynced.
52
+ */
53
+ has(id: RawCoID): boolean;
54
+ /**
55
+ * Subscribe to changes in whether a specific CoValue is synced.
56
+ * The listener is called immediately with the current state.
57
+ * @returns Unsubscribe function
58
+ */
59
+ subscribe(id: RawCoID, listener: (synced: boolean) => void): () => void;
60
+ /**
61
+ * Subscribe to changes in whether all CoValues are synced.
62
+ * The listener is called immediately with the current state.
63
+ * @returns Unsubscribe function
64
+ */
65
+ subscribe(listener: (synced: boolean) => void): () => void;
66
+ setStorage(storage: StorageAPI): void;
67
+ removeStorage(): void;
68
+ /**
69
+ * Notify all listeners for a specific CoValue about sync status change.
70
+ */
71
+ private notifyCoValueListeners;
72
+ /**
73
+ * Notify all global listeners about "all synced" status change.
74
+ */
75
+ private notifyGlobalListeners;
76
+ /**
77
+ * Keep only the last update for each (id, peerId) combination
78
+ */
79
+ private simplifyPendingUpdates;
80
+ }
81
+ //# sourceMappingURL=UnsyncedCoValuesTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnsyncedCoValuesTracker.d.ts","sourceRoot":"","sources":["../src/UnsyncedCoValuesTracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAWrD;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAElE;AAQD;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,gBAAgB,CACZ;IAEZ,OAAO,CAAC,eAAe,CAA6C;IAGpE,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,UAAU,CAA4C;IAE9D,OAAO,CAAC,OAAO,CAAC,CAAa;IAE7B;;;;OAIG;IACH,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,GAAE,MAAoB,GAAG,OAAO;IAoBvD;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,GAAE,MAAoB,GAAG,IAAI;IAoBvD;;;OAGG;IACH,SAAS,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAa5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS;IAIzC,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,KAAK;IA8Bb;;OAEG;IACH,MAAM,IAAI,OAAO,EAAE;IAInB;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO;IAIzB;;;;OAIG;IACH,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IACvE;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IAsC1D,UAAU,CAAC,OAAO,EAAE,UAAU;IAI9B,aAAa;IAIb;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAO/B"}
@@ -0,0 +1,209 @@
1
+ import { logger } from "./logger.js";
2
+ /**
3
+ * Used to track a CoValue that hasn't been synced to any peer,
4
+ * because none is currently connected.
5
+ */
6
+ const ANY_PEER_ID = "any";
7
+ // Flush pending updates to storage after 200ms
8
+ let BATCH_DELAY_MS = 200;
9
+ /**
10
+ * Set the delay for flushing pending sync state updates to storage.
11
+ * @internal
12
+ */
13
+ export function setSyncStateTrackingBatchDelay(delay) {
14
+ BATCH_DELAY_MS = delay;
15
+ }
16
+ /**
17
+ * Tracks CoValues that have unsynced changes to specific peers.
18
+ * Maintains an in-memory map and periodically persists to storage.
19
+ */
20
+ export class UnsyncedCoValuesTracker {
21
+ constructor() {
22
+ this.unsynced = new Map();
23
+ this.coValueListeners = new Map();
24
+ // Listeners for global "all synced" status changes
25
+ this.globalListeners = new Set();
26
+ // Pending updates to be persisted
27
+ this.pendingUpdates = [];
28
+ }
29
+ /**
30
+ * Add a CoValue as unsynced to a specific peer.
31
+ * Triggers persistence if storage is available.
32
+ * @returns true if the CoValue was already tracked, false otherwise.
33
+ */
34
+ add(id, peerId = ANY_PEER_ID) {
35
+ if (!this.unsynced.has(id)) {
36
+ this.unsynced.set(id, new Set());
37
+ }
38
+ const peerSet = this.unsynced.get(id);
39
+ const alreadyTracked = peerSet.has(peerId);
40
+ if (!alreadyTracked) {
41
+ // Only update if this is a new peer
42
+ peerSet.add(peerId);
43
+ this.schedulePersist(id, peerId, false);
44
+ this.notifyCoValueListeners(id, false);
45
+ this.notifyGlobalListeners(false);
46
+ }
47
+ return alreadyTracked;
48
+ }
49
+ /**
50
+ * Remove a CoValue from being unsynced to a specific peer.
51
+ * Triggers persistence if storage is available.
52
+ */
53
+ remove(id, peerId = ANY_PEER_ID) {
54
+ const peerSet = this.unsynced.get(id);
55
+ if (!peerSet || !peerSet.has(peerId)) {
56
+ return;
57
+ }
58
+ peerSet.delete(peerId);
59
+ // If no more unsynced peers for this CoValue, remove the entry
60
+ if (peerSet.size === 0) {
61
+ this.unsynced.delete(id);
62
+ }
63
+ this.schedulePersist(id, peerId, true);
64
+ const isSynced = !this.unsynced.has(id);
65
+ this.notifyCoValueListeners(id, isSynced);
66
+ this.notifyGlobalListeners(this.isAllSynced());
67
+ }
68
+ /**
69
+ * Remove all tracking for a CoValue (all peers).
70
+ * Triggers persistence if storage is available.
71
+ */
72
+ removeAll(id) {
73
+ const peerSet = this.unsynced.get(id);
74
+ if (!peerSet) {
75
+ return;
76
+ }
77
+ // Remove all peers for this CoValue
78
+ const peersToRemove = Array.from(peerSet);
79
+ for (const peerId of peersToRemove) {
80
+ this.remove(id, peerId);
81
+ }
82
+ }
83
+ forcePersist() {
84
+ return this.flush();
85
+ }
86
+ schedulePersist(id, peerId, synced) {
87
+ const storage = this.storage;
88
+ if (!storage) {
89
+ return;
90
+ }
91
+ this.pendingUpdates.push({ id, peerId, synced });
92
+ if (!this.flushTimer) {
93
+ this.flushTimer = setTimeout(() => {
94
+ this.flush();
95
+ }, BATCH_DELAY_MS);
96
+ }
97
+ }
98
+ /**
99
+ * Flush all pending persistence updates in a batch
100
+ */
101
+ flush() {
102
+ if (this.flushTimer) {
103
+ clearTimeout(this.flushTimer);
104
+ this.flushTimer = undefined;
105
+ }
106
+ if (this.pendingUpdates.length === 0) {
107
+ return;
108
+ }
109
+ const storage = this.storage;
110
+ if (!storage) {
111
+ return;
112
+ }
113
+ const filteredUpdates = this.simplifyPendingUpdates(this.pendingUpdates);
114
+ this.pendingUpdates = [];
115
+ return new Promise((resolve) => {
116
+ try {
117
+ storage.trackCoValuesSyncState(filteredUpdates, () => resolve());
118
+ }
119
+ catch (error) {
120
+ logger.warn("Failed to persist batched unsynced CoValue tracking", {
121
+ err: error,
122
+ });
123
+ resolve();
124
+ }
125
+ });
126
+ }
127
+ /**
128
+ * Get all CoValue IDs that have at least one unsynced peer.
129
+ */
130
+ getAll() {
131
+ return Array.from(this.unsynced.keys());
132
+ }
133
+ /**
134
+ * Check if all CoValues are synced
135
+ */
136
+ isAllSynced() {
137
+ return this.unsynced.size === 0;
138
+ }
139
+ /**
140
+ * Check if a specific CoValue is tracked as unsynced.
141
+ */
142
+ has(id) {
143
+ return this.unsynced.has(id);
144
+ }
145
+ subscribe(idOrListener, listener) {
146
+ if (typeof idOrListener === "string" && listener) {
147
+ const id = idOrListener;
148
+ if (!this.coValueListeners.has(id)) {
149
+ this.coValueListeners.set(id, new Set());
150
+ }
151
+ this.coValueListeners.get(id).add(listener);
152
+ // Call immediately with current state
153
+ const isSynced = !this.unsynced.has(id);
154
+ listener(isSynced);
155
+ return () => {
156
+ const listeners = this.coValueListeners.get(id);
157
+ if (listeners) {
158
+ listeners.delete(listener);
159
+ if (listeners.size === 0) {
160
+ this.coValueListeners.delete(id);
161
+ }
162
+ }
163
+ };
164
+ }
165
+ const globalListener = idOrListener;
166
+ this.globalListeners.add(globalListener);
167
+ // Call immediately with current state
168
+ globalListener(this.isAllSynced());
169
+ return () => {
170
+ this.globalListeners.delete(globalListener);
171
+ };
172
+ }
173
+ setStorage(storage) {
174
+ this.storage = storage;
175
+ }
176
+ removeStorage() {
177
+ this.storage = undefined;
178
+ }
179
+ /**
180
+ * Notify all listeners for a specific CoValue about sync status change.
181
+ */
182
+ notifyCoValueListeners(id, synced) {
183
+ const listeners = this.coValueListeners.get(id);
184
+ if (listeners) {
185
+ for (const listener of listeners) {
186
+ listener(synced);
187
+ }
188
+ }
189
+ }
190
+ /**
191
+ * Notify all global listeners about "all synced" status change.
192
+ */
193
+ notifyGlobalListeners(allSynced) {
194
+ for (const listener of this.globalListeners) {
195
+ listener(allSynced);
196
+ }
197
+ }
198
+ /**
199
+ * Keep only the last update for each (id, peerId) combination
200
+ */
201
+ simplifyPendingUpdates(updates) {
202
+ const latestUpdates = new Map();
203
+ for (const update of updates) {
204
+ latestUpdates.set(`${update.id}|${update.peerId}`, update);
205
+ }
206
+ return Array.from(latestUpdates.values());
207
+ }
208
+ }
209
+ //# sourceMappingURL=UnsyncedCoValuesTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UnsyncedCoValuesTracker.js","sourceRoot":"","sources":["../src/UnsyncedCoValuesTracker.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -33,4 +33,10 @@ export declare const GARBAGE_COLLECTOR_CONFIG: {
33
33
  };
34
34
  export declare function setGarbageCollectorMaxAge(maxAge: number): void;
35
35
  export declare function setGarbageCollectorInterval(interval: number): void;
36
+ export declare const WEBSOCKET_CONFIG: {
37
+ MAX_OUTGOING_MESSAGES_CHUNK_BYTES: number;
38
+ OUTGOING_MESSAGES_CHUNK_DELAY: number;
39
+ };
40
+ export declare function setMaxOutgoingMessagesChunkBytes(bytes: number): void;
41
+ export declare function setOutgoingMessagesChunkDelay(delay: number): void;
36
42
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;IAE7B;;;OAGG;;CAEJ,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,QAEnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,QAE7C;AAED,eAAO,MAAM,uBAAuB;;;;CAInC,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,QAE7D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,QAEvD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,QAExD;AAED,eAAO,MAAM,qBAAqB;;CAEjC,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,QAE3D;AAED,eAAO,MAAM,wBAAwB;;;CAGpC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,QAEvD;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,QAE3D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;IAE7B;;;OAGG;;CAEJ,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,QAEnD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,QAE7C;AAED,eAAO,MAAM,uBAAuB;;;;CAInC,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,QAE7D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,QAEvD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,QAExD;AAED,eAAO,MAAM,qBAAqB;;CAEjC,CAAC;AAEF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,QAE3D;AAED,eAAO,MAAM,wBAAwB;;;CAGpC,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,QAEvD;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,QAE3D;AAED,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,QAE7D;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,QAE1D"}
package/dist/config.js CHANGED
@@ -49,4 +49,14 @@ export function setGarbageCollectorMaxAge(maxAge) {
49
49
  export function setGarbageCollectorInterval(interval) {
50
50
  GARBAGE_COLLECTOR_CONFIG.INTERVAL = interval;
51
51
  }
52
+ export const WEBSOCKET_CONFIG = {
53
+ MAX_OUTGOING_MESSAGES_CHUNK_BYTES: 25000,
54
+ OUTGOING_MESSAGES_CHUNK_DELAY: 5,
55
+ };
56
+ export function setMaxOutgoingMessagesChunkBytes(bytes) {
57
+ WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES = bytes;
58
+ }
59
+ export function setOutgoingMessagesChunkDelay(delay) {
60
+ WEBSOCKET_CONFIG.OUTGOING_MESSAGES_CHUNK_DELAY = delay;
61
+ }
52
62
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,uBAAuB,EAAE,GAAG,GAAG,IAAI;IACnC;;;OAGG;IACH,iBAAiB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;CACnC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,kBAAkB,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAM;IACf,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,uBAAuB,CAAC,WAAW,GAAG,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,uBAAuB,CAAC,WAAW,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,6BAA6B,EAAE,EAAE;CAClC,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,qBAAqB,CAAC,6BAA6B,GAAG,MAAM,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa;IACtC,QAAQ,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY;CACtC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,wBAAwB,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,wBAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,uBAAuB,EAAE,GAAG,GAAG,IAAI;IACnC;;;OAGG;IACH,iBAAiB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;CACnC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,kBAAkB,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,kBAAkB,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,OAAO,EAAE,KAAM;IACf,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,UAAkB;IAC5D,uBAAuB,CAAC,WAAW,GAAG,UAAU,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,uBAAuB,CAAC,WAAW,GAAG,KAAK,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,6BAA6B,EAAE,EAAE;CAClC,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,MAAc;IAC1D,qBAAqB,CAAC,6BAA6B,GAAG,MAAM,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,OAAO,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,aAAa;IACtC,QAAQ,EAAE,IAAI,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY;CACtC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,wBAAwB,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,QAAgB;IAC1D,wBAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,iCAAiC,EAAE,KAAM;IACzC,6BAA6B,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,KAAa;IAC5D,gBAAgB,CAAC,iCAAiC,GAAG,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAa;IACzD,gBAAgB,CAAC,6BAA6B,GAAG,KAAK,CAAC;AACzD,CAAC"}
package/dist/exports.d.ts CHANGED
@@ -27,12 +27,13 @@ import type { AgentID, RawCoID, SessionID } from "./ids.js";
27
27
  import type { JsonObject, JsonValue } from "./jsonValue.js";
28
28
  import type * as Media from "./media.js";
29
29
  import { isAccountRole } from "./permissions.js";
30
- import type { Peer, SyncMessage } from "./sync.js";
30
+ import type { Peer, SyncMessage, SyncWhen } from "./sync.js";
31
31
  import { DisconnectedError, SyncManager, hwrServerPeerSelector } from "./sync.js";
32
+ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
32
33
  import { emptyKnownState } from "./knownState.js";
33
34
  import { getContentMessageSize, getTransactionSize } from "./coValueContentMessage.js";
34
35
  import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
35
- import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxRecommendedTxSize } from "./config.js";
36
+ import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxOutgoingMessagesChunkBytes, setOutgoingMessagesChunkDelay, setMaxRecommendedTxSize } from "./config.js";
36
37
  import { LogLevel, logger } from "./logger.js";
37
38
  import { getPriorityFromHeader } from "./priority.js";
38
39
  import { getDependedOnCoValues } from "./storage/syncUtils.js";
@@ -77,6 +78,7 @@ export declare const cojsonInternals: {
77
78
  setCoValueLoadingRetryDelay: typeof setCoValueLoadingRetryDelay;
78
79
  setCoValueLoadingMaxRetries: typeof setCoValueLoadingMaxRetries;
79
80
  setCoValueLoadingTimeout: typeof setCoValueLoadingTimeout;
81
+ setSyncStateTrackingBatchDelay: typeof setSyncStateTrackingBatchDelay;
80
82
  ConnectedPeerChannel: typeof ConnectedPeerChannel;
81
83
  textEncoder: import("util").TextEncoder;
82
84
  textDecoder: import("util").TextDecoder;
@@ -88,9 +90,15 @@ export declare const cojsonInternals: {
88
90
  };
89
91
  setMaxRecommendedTxSize: typeof setMaxRecommendedTxSize;
90
92
  canBeBranched: typeof canBeBranched;
93
+ WEBSOCKET_CONFIG: {
94
+ MAX_OUTGOING_MESSAGES_CHUNK_BYTES: number;
95
+ OUTGOING_MESSAGES_CHUNK_DELAY: number;
96
+ };
97
+ setMaxOutgoingMessagesChunkBytes: typeof setMaxOutgoingMessagesChunkBytes;
98
+ setOutgoingMessagesChunkDelay: typeof setOutgoingMessagesChunkDelay;
91
99
  };
92
100
  export { LocalNode, RawGroup, Role, EVERYONE, Everyone, RawCoMap, RawCoList, RawCoStream, RawBinaryCoStream, RawCoValue, RawCoID, CoID, AnyRawCoValue, RawAccount, RawAccountID, ControlledAccount, AccountMeta, RawAccountMigration, RawProfile as Profile, SessionID, Media, CoValueCore, ControlledAgent, JsonObject, JsonValue, Peer, BinaryStreamInfo, BinaryCoStreamMeta, AgentID, AgentSecret, InviteSecret, CryptoProvider, SyncMessage, isRawCoID, emptyKnownState, RawCoPlainText, stringifyOpID, logger, LogLevel, base64URLtoBytes, bytesToBase64url, hwrServerPeerSelector, isAccountRole, };
93
- export type { Value, DisconnectedError, CoValueUniqueness, Stringified, CoStreamItem, BinaryStreamItem, BinaryStreamStart, OpID, AccountRole, AvailableCoValueCore, PeerState, CoValueHeader, };
101
+ export type { Value, DisconnectedError, CoValueUniqueness, Stringified, CoStreamItem, BinaryStreamItem, BinaryStreamStart, OpID, AccountRole, AvailableCoValueCore, PeerState, SyncWhen, CoValueHeader, };
94
102
  export * from "./storage/index.js";
95
103
  export declare namespace CojsonInternalTypes {
96
104
  type CoValueKnownState = import("./knownState.js").CoValueKnownState;
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
package/dist/exports.js CHANGED
@@ -17,10 +17,11 @@ import { isAccountID } from "./typeUtils/isAccountID.js";
17
17
  import { textDecoder, textEncoder } from "./crypto/crypto.js";
18
18
  import { isAccountRole } from "./permissions.js";
19
19
  import { SyncManager, hwrServerPeerSelector, } from "./sync.js";
20
+ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
20
21
  import { emptyKnownState } from "./knownState.js";
21
22
  import { getContentMessageSize, getTransactionSize, } from "./coValueContentMessage.js";
22
23
  import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
23
- import { CO_VALUE_LOADING_CONFIG, TRANSACTION_CONFIG, setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxRecommendedTxSize, } from "./config.js";
24
+ import { CO_VALUE_LOADING_CONFIG, TRANSACTION_CONFIG, WEBSOCKET_CONFIG, setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxOutgoingMessagesChunkBytes, setOutgoingMessagesChunkDelay, setMaxRecommendedTxSize, } from "./config.js";
24
25
  import { LogLevel, logger } from "./logger.js";
25
26
  import { CO_VALUE_PRIORITY, getPriorityFromHeader } from "./priority.js";
26
27
  import { getDependedOnCoValues } from "./storage/syncUtils.js";
@@ -55,6 +56,7 @@ export const cojsonInternals = {
55
56
  setCoValueLoadingRetryDelay,
56
57
  setCoValueLoadingMaxRetries,
57
58
  setCoValueLoadingTimeout,
59
+ setSyncStateTrackingBatchDelay,
58
60
  ConnectedPeerChannel,
59
61
  textEncoder,
60
62
  textDecoder,
@@ -63,6 +65,9 @@ export const cojsonInternals = {
63
65
  TRANSACTION_CONFIG,
64
66
  setMaxRecommendedTxSize,
65
67
  canBeBranched,
68
+ WEBSOCKET_CONFIG,
69
+ setMaxOutgoingMessagesChunkBytes,
70
+ setOutgoingMessagesChunkDelay,
66
71
  };
67
72
  export { LocalNode, RawGroup, EVERYONE, RawCoMap, RawCoList, RawCoStream, RawBinaryCoStream, RawAccount, ControlledAccount, RawProfile as Profile, CoValueCore, ControlledAgent, CryptoProvider, isRawCoID, emptyKnownState, RawCoPlainText, stringifyOpID, logger, LogLevel, base64URLtoBytes, bytesToBase64url, hwrServerPeerSelector, isAccountRole, };
68
73
  export * from "./storage/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../src/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EACL,WAAW,EACX,WAAW,EACX,sBAAsB,GAEvB,MAAM,8BAA8B,CAAC;AAKtC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,EACV,kCAAkC,GACnC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAQ,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAIL,iBAAiB,EACjB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAe,SAAS,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,8CAA8C,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAazD,OAAO,EAAe,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAI3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAEL,WAAW,EACX,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EACL,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,gCAAgC,EAChC,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAK3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,cAAc;AACd,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,gBAAgB;IAChB,gBAAgB;IAChB,SAAS;IACT,eAAe;IACf,qBAAqB;IACrB,gCAAgC;IAChC,6BAA6B;IAC7B,WAAW;IACX,kCAAkC;IAClC,WAAW;IACX,qBAAqB;IACrB,wBAAwB;IACxB,oBAAoB;IACpB,sBAAsB;IACtB,WAAW;IACX,uBAAuB;IACvB,iBAAiB;IACjB,6BAA6B;IAC7B,2BAA2B;IAC3B,2BAA2B;IAC3B,wBAAwB;IACxB,8BAA8B;IAC9B,oBAAoB;IACpB,WAAW;IACX,WAAW;IACX,kBAAkB;IAClB,qBAAqB;IACrB,kBAAkB;IAClB,uBAAuB;IACvB,aAAa;IACb,gBAAgB;IAChB,gCAAgC;IAChC,6BAA6B;CAC9B,CAAC;AAEF,OAAO,EACL,SAAS,EACT,QAAQ,EAER,QAAQ,EAER,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EAKjB,UAAU,EAEV,iBAAiB,EAGjB,UAAU,IAAI,OAAO,EAGrB,WAAW,EACX,eAAe,EASf,cAAc,EAEd,SAAS,EACT,eAAe,EACf,cAAc,EACd,aAAa,EACb,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,GACd,CAAC;AAkBF,cAAc,oBAAoB,CAAC;AA2BnC,0BAA0B"}