cojson 0.19.19 → 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 (72) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/config.d.ts +6 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +10 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/exports.d.ts +7 -1
  7. package/dist/exports.d.ts.map +1 -1
  8. package/dist/exports.js +4 -1
  9. package/dist/exports.js.map +1 -1
  10. package/dist/queue/IncomingMessagesQueue.d.ts +6 -7
  11. package/dist/queue/IncomingMessagesQueue.d.ts.map +1 -1
  12. package/dist/queue/IncomingMessagesQueue.js +7 -30
  13. package/dist/queue/IncomingMessagesQueue.js.map +1 -1
  14. package/dist/queue/LinkedList.d.ts +1 -1
  15. package/dist/queue/LinkedList.d.ts.map +1 -1
  16. package/dist/queue/LinkedList.js.map +1 -1
  17. package/dist/queue/StorageStreamingQueue.d.ts +43 -0
  18. package/dist/queue/StorageStreamingQueue.d.ts.map +1 -0
  19. package/dist/queue/StorageStreamingQueue.js +70 -0
  20. package/dist/queue/StorageStreamingQueue.js.map +1 -0
  21. package/dist/storage/storageSync.d.ts +8 -2
  22. package/dist/storage/storageSync.d.ts.map +1 -1
  23. package/dist/storage/storageSync.js +56 -44
  24. package/dist/storage/storageSync.js.map +1 -1
  25. package/dist/storage/types.d.ts +2 -0
  26. package/dist/storage/types.d.ts.map +1 -1
  27. package/dist/sync.d.ts +17 -0
  28. package/dist/sync.d.ts.map +1 -1
  29. package/dist/sync.js +74 -5
  30. package/dist/sync.js.map +1 -1
  31. package/dist/tests/IncomingMessagesQueue.test.js +4 -150
  32. package/dist/tests/IncomingMessagesQueue.test.js.map +1 -1
  33. package/dist/tests/StorageStreamingQueue.test.d.ts +2 -0
  34. package/dist/tests/StorageStreamingQueue.test.d.ts.map +1 -0
  35. package/dist/tests/StorageStreamingQueue.test.js +213 -0
  36. package/dist/tests/StorageStreamingQueue.test.js.map +1 -0
  37. package/dist/tests/SyncManager.processQueues.test.d.ts +2 -0
  38. package/dist/tests/SyncManager.processQueues.test.d.ts.map +1 -0
  39. package/dist/tests/SyncManager.processQueues.test.js +208 -0
  40. package/dist/tests/SyncManager.processQueues.test.js.map +1 -0
  41. package/dist/tests/setup.d.ts +2 -0
  42. package/dist/tests/setup.d.ts.map +1 -0
  43. package/dist/tests/setup.js +4 -0
  44. package/dist/tests/setup.js.map +1 -0
  45. package/dist/tests/sync.garbageCollection.test.js.map +1 -1
  46. package/dist/tests/sync.mesh.test.js +19 -19
  47. package/dist/tests/sync.storage.test.js +176 -20
  48. package/dist/tests/sync.storage.test.js.map +1 -1
  49. package/dist/tests/sync.test.js +1 -1
  50. package/dist/tests/sync.test.js.map +1 -1
  51. package/dist/tests/testUtils.d.ts +2 -2
  52. package/dist/tests/testUtils.js +2 -2
  53. package/dist/tests/testUtils.js.map +1 -1
  54. package/package.json +4 -4
  55. package/src/config.ts +13 -0
  56. package/src/exports.ts +6 -0
  57. package/src/queue/IncomingMessagesQueue.ts +7 -39
  58. package/src/queue/LinkedList.ts +1 -1
  59. package/src/queue/StorageStreamingQueue.ts +96 -0
  60. package/src/storage/storageSync.ts +99 -55
  61. package/src/storage/types.ts +3 -0
  62. package/src/sync.ts +84 -5
  63. package/src/tests/IncomingMessagesQueue.test.ts +4 -206
  64. package/src/tests/StorageStreamingQueue.test.ts +276 -0
  65. package/src/tests/SyncManager.processQueues.test.ts +287 -0
  66. package/src/tests/setup.ts +4 -0
  67. package/src/tests/sync.garbageCollection.test.ts +1 -3
  68. package/src/tests/sync.mesh.test.ts +19 -19
  69. package/src/tests/sync.storage.test.ts +224 -32
  70. package/src/tests/sync.test.ts +1 -9
  71. package/src/tests/testUtils.ts +2 -2
  72. package/vitest.config.ts +1 -0
@@ -1,4 +1,4 @@
1
1
 
2
- > cojson@0.19.19 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/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
@@ -33,7 +33,7 @@ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
33
33
  import { emptyKnownState } from "./knownState.js";
34
34
  import { getContentMessageSize, getTransactionSize } from "./coValueContentMessage.js";
35
35
  import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
36
- import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxRecommendedTxSize } from "./config.js";
36
+ import { setCoValueLoadingMaxRetries, setCoValueLoadingRetryDelay, setCoValueLoadingTimeout, setIncomingMessagesTimeBudget, setMaxOutgoingMessagesChunkBytes, setOutgoingMessagesChunkDelay, setMaxRecommendedTxSize } from "./config.js";
37
37
  import { LogLevel, logger } from "./logger.js";
38
38
  import { getPriorityFromHeader } from "./priority.js";
39
39
  import { getDependedOnCoValues } from "./storage/syncUtils.js";
@@ -90,6 +90,12 @@ export declare const cojsonInternals: {
90
90
  };
91
91
  setMaxRecommendedTxSize: typeof setMaxRecommendedTxSize;
92
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;
93
99
  };
94
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, };
95
101
  export type { Value, DisconnectedError, CoValueUniqueness, Stringified, CoStreamItem, BinaryStreamItem, BinaryStreamStart, OpID, AccountRole, AvailableCoValueCore, PeerState, SyncWhen, CoValueHeader, };
@@ -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
@@ -21,7 +21,7 @@ import { setSyncStateTrackingBatchDelay } from "./UnsyncedCoValuesTracker.js";
21
21
  import { emptyKnownState } from "./knownState.js";
22
22
  import { getContentMessageSize, getTransactionSize, } from "./coValueContentMessage.js";
23
23
  import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
24
- 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";
25
25
  import { LogLevel, logger } from "./logger.js";
26
26
  import { CO_VALUE_PRIORITY, getPriorityFromHeader } from "./priority.js";
27
27
  import { getDependedOnCoValues } from "./storage/syncUtils.js";
@@ -65,6 +65,9 @@ export const cojsonInternals = {
65
65
  TRANSACTION_CONFIG,
66
66
  setMaxRecommendedTxSize,
67
67
  canBeBranched,
68
+ WEBSOCKET_CONFIG,
69
+ setMaxOutgoingMessagesChunkBytes,
70
+ setOutgoingMessagesChunkDelay,
68
71
  };
69
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, };
70
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":"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"}
@@ -2,26 +2,25 @@ import type { PeerState } from "../PeerState.js";
2
2
  import type { SyncMessage } from "../sync.js";
3
3
  import { LinkedList } from "./LinkedList.js";
4
4
  /**
5
- * A queue that schedules messages across different peers using a round-robin approach.
5
+ * A queue that manages incoming sync messages across different peers using a round-robin approach.
6
6
  *
7
7
  * This class manages incoming sync messages from multiple peers, ensuring fair processing
8
- * by cycling through each peer's message queue in a round-robin fashion. It also implements
9
- * collaborative scheduling on message processing, pausing when the main thread is blocked
10
- * for more than 50ms.
8
+ * by cycling through each peer's message queue in a round-robin fashion.
9
+ *
10
+ * Queue processing and scheduling is handled by SyncManager.processQueues().
11
11
  */
12
12
  export declare class IncomingMessagesQueue {
13
+ private processQueues;
13
14
  private pullCounter;
14
15
  private pushCounter;
15
16
  queues: [LinkedList<SyncMessage>, PeerState][];
16
17
  peerToQueue: WeakMap<PeerState, LinkedList<SyncMessage>>;
17
18
  currentQueue: number;
18
- constructor();
19
+ constructor(processQueues: () => void);
19
20
  push(msg: SyncMessage, peer: PeerState): void;
20
21
  pull(): {
21
22
  msg: SyncMessage;
22
23
  peer: PeerState;
23
24
  } | undefined;
24
- processing: boolean;
25
- processQueue(callback: (msg: SyncMessage, peer: PeerState) => void): Promise<void>;
26
25
  }
27
26
  //# sourceMappingURL=IncomingMessagesQueue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IncomingMessagesQueue.d.ts","sourceRoot":"","sources":["../../src/queue/IncomingMessagesQueue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;IAE7B,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACzD,YAAY,SAAK;;IAwCV,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS;IAiBtC,IAAI;;;;IAgCX,UAAU,UAAS;IAEb,YAAY,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,KAAK,IAAI;CA6BzE"}
1
+ {"version":3,"file":"IncomingMessagesQueue.d.ts","sourceRoot":"","sources":["../../src/queue/IncomingMessagesQueue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IAQpB,OAAO,CAAC,aAAa;IAPjC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;IAE7B,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;IACzD,YAAY,SAAK;gBAEG,aAAa,EAAE,MAAM,IAAI;IAsCtC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS;IAmBtC,IAAI;;;;CA+BZ"}
@@ -1,19 +1,17 @@
1
1
  import { ValueType, metrics } from "@opentelemetry/api";
2
- import { SYNC_SCHEDULER_CONFIG } from "../config.js";
3
- import { logger } from "../logger.js";
4
2
  import { LinkedList } from "./LinkedList.js";
5
3
  /**
6
- * A queue that schedules messages across different peers using a round-robin approach.
4
+ * A queue that manages incoming sync messages across different peers using a round-robin approach.
7
5
  *
8
6
  * This class manages incoming sync messages from multiple peers, ensuring fair processing
9
- * by cycling through each peer's message queue in a round-robin fashion. It also implements
10
- * collaborative scheduling on message processing, pausing when the main thread is blocked
11
- * for more than 50ms.
7
+ * by cycling through each peer's message queue in a round-robin fashion.
8
+ *
9
+ * Queue processing and scheduling is handled by SyncManager.processQueues().
12
10
  */
13
11
  export class IncomingMessagesQueue {
14
- constructor() {
12
+ constructor(processQueues) {
13
+ this.processQueues = processQueues;
15
14
  this.currentQueue = 0;
16
- this.processing = false;
17
15
  this.pullCounter = metrics
18
16
  .getMeter("cojson")
19
17
  .createCounter(`jazz.messagequeue.incoming.pulled`, {
@@ -62,6 +60,7 @@ export class IncomingMessagesQueue {
62
60
  this.pushCounter.add(1, {
63
61
  peerRole: peer.role,
64
62
  });
63
+ this.processQueues();
65
64
  }
66
65
  pull() {
67
66
  const entry = this.queues[this.currentQueue];
@@ -88,27 +87,5 @@ export class IncomingMessagesQueue {
88
87
  }
89
88
  return undefined;
90
89
  }
91
- async processQueue(callback) {
92
- this.processing = true;
93
- let entry;
94
- let lastTimer = performance.now();
95
- while ((entry = this.pull())) {
96
- const { msg, peer } = entry;
97
- try {
98
- callback(msg, peer);
99
- }
100
- catch (err) {
101
- logger.error("Error processing message", { err });
102
- }
103
- const currentTimer = performance.now();
104
- // We check if we have blocked the main thread for too long
105
- // and if so, we schedule a timer task to yield to the event loop
106
- if (currentTimer - lastTimer >
107
- SYNC_SCHEDULER_CONFIG.INCOMING_MESSAGES_TIME_BUDGET) {
108
- await new Promise((resolve) => setTimeout(resolve, 0));
109
- }
110
- }
111
- this.processing = false;
112
- }
113
90
  }
114
91
  //# sourceMappingURL=IncomingMessagesQueue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IncomingMessagesQueue.js","sourceRoot":"","sources":["../../src/queue/IncomingMessagesQueue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IncomingMessagesQueue.js","sourceRoot":"","sources":["../../src/queue/IncomingMessagesQueue.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,6 @@ declare class QueueMeter {
32
32
  pull(): void;
33
33
  push(): void;
34
34
  }
35
- export declare function meteredList<T>(type: "incoming" | "outgoing", attrs?: Record<string, string | number>): LinkedList<T>;
35
+ export declare function meteredList<T>(type: "incoming" | "outgoing" | "storage-streaming", attrs?: Record<string, string | number>): LinkedList<T>;
36
36
  export {};
37
37
  //# sourceMappingURL=LinkedList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedList.d.ts","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS;IACpE,MAAM,EAAE,CAAC,CAAC;CACX,GACG,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AACF;;;GAGG;AAEH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;IAiBb,KAAK;IAoBL,OAAO;CAGR;AACD,cAAM,UAAU;IAMZ,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;IA0B1C,IAAI;IAIJ,IAAI;CAGZ;AACD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,UAAU,GAAG,UAAU,EAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,iBAGxC"}
1
+ {"version":3,"file":"LinkedList.d.ts","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS;IACpE,MAAM,EAAE,CAAC,CAAC;CACX,GACG,CAAC,GACD,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,KAAK,cAAc,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACrC,CAAC;AACF;;;GAGG;AAEH,qBAAa,UAAU,CAAC,CAAC;IACX,OAAO,CAAC,KAAK,CAAC;gBAAN,KAAK,CAAC,EAAE,UAAU,YAAA;IAEtC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAa;IAChD,MAAM,SAAK;IAEX,IAAI,CAAC,KAAK,EAAE,CAAC;IAiBb,KAAK;IAoBL,OAAO;CAGR;AACD,cAAM,UAAU;IAMZ,OAAO,CAAC,KAAK,CAAC;IALhB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAG3B,MAAM,EAAE,MAAM,EACN,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;IA0B1C,IAAI;IAIJ,IAAI;CAGZ;AACD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,mBAAmB,EACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,iBAGxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LinkedList.js","sourceRoot":"","sources":["../../src/queue/LinkedList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAgBjE;;;GAGG;AAEH,MAAM,OAAO,UAAU;IACrB,YAAoB,KAAkB;QAAlB,UAAK,GAAL,KAAK,CAAa;QAEtC,SAAI,GAAkC,SAAS,CAAC;QAChD,SAAI,GAAkC,SAAS,CAAC;QAChD,WAAM,GAAG,CAAC,CAAC;IAJ8B,CAAC;IAM1C,IAAI,CAAC,KAAQ;QACX,MAAM,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAExC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IACrB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QAEd,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;IACjC,CAAC;CACF;AACD,MAAM,UAAU;IAId,YACE,MAAc,EACN,KAAuC;QAAvC,UAAK,GAAL,KAAK,CAAkC;QAE/C,IAAI,CAAC,WAAW,GAAG,OAAO;aACvB,QAAQ,CAAC,QAAQ,CAAC;aAClB,aAAa,CAAC,GAAG,MAAM,SAAS,EAAE;YACjC,WAAW,EAAE,0CAA0C;YACvD,SAAS,EAAE,SAAS,CAAC,GAAG;YACxB,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QACL,IAAI,CAAC,WAAW,GAAG,OAAO;aACvB,QAAQ,CAAC,QAAQ,CAAC;aAClB,aAAa,CAAC,GAAG,MAAM,SAAS,EAAE;YACjC,WAAW,EAAE,wCAAwC;YACrD,SAAS,EAAE,SAAS,CAAC,GAAG;YACxB,IAAI,EAAE,GAAG;SACV,CAAC,CAAC;QAEL;;;;WAIG;QACH,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;CACF;AACD,MAAM,UAAU,WAAW,CACzB,IAAmD,EACnD,KAAuC;IAEvC,OAAO,IAAI,UAAU,CAAI,IAAI,UAAU,CAAC,oBAAoB,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { type CoValuePriority } from "../priority.js";
2
+ /**
3
+ * A callback that pushes content when invoked.
4
+ * Content is only fetched from the database when this callback is called.
5
+ */
6
+ export type ContentCallback = () => void;
7
+ /**
8
+ * A priority-based queue for storage content streaming.
9
+ *
10
+ * This queue manages content streaming for all priority levels (HIGH, MEDIUM, LOW).
11
+ * Content is processed in priority order: HIGH first, then MEDIUM, then LOW.
12
+ *
13
+ * Key features:
14
+ * - Stores callbacks to get content (lazy evaluation) rather than content itself
15
+ * - Priority-based ordering: HIGH > MEDIUM > LOW
16
+ */
17
+ export declare class StorageStreamingQueue {
18
+ private queues;
19
+ constructor();
20
+ private getQueue;
21
+ /**
22
+ * Push a content callback to the queue with explicit priority.
23
+ * The callback will be invoked when the entry is pulled and processed.
24
+ *
25
+ * @param entry - Callback that pushes content when invoked
26
+ * @param priority - Priority for this entry (HIGH, MEDIUM, or LOW)
27
+ */
28
+ push(entry: ContentCallback, priority: CoValuePriority): void;
29
+ /**
30
+ * Pull the next entry from the queue.
31
+ * Returns undefined if no entries are available.
32
+ * Priority order: HIGH > MEDIUM > LOW
33
+ */
34
+ pull(): ContentCallback | undefined;
35
+ /**
36
+ * Check if the queue is empty (no pending entries).
37
+ */
38
+ isEmpty(): boolean;
39
+ private listener;
40
+ setListener(listener: () => void): void;
41
+ emit(): void;
42
+ }
43
+ //# sourceMappingURL=StorageStreamingQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageStreamingQueue.d.ts","sourceRoot":"","sources":["../../src/queue/StorageStreamingQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGzE;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC;AAezC;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAsB;;IAUpC,OAAO,CAAC,QAAQ;IAIhB;;;;;;OAMG;IACI,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IAIpE;;;;OAIG;IACI,IAAI,IAAI,eAAe,GAAG,SAAS;IAiB1C;;OAEG;IACI,OAAO,IAAI,OAAO;IAIzB,OAAO,CAAC,QAAQ,CAA2B;IAC3C,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIvC,IAAI,IAAI,IAAI;CAGb"}
@@ -0,0 +1,70 @@
1
+ import { CO_VALUE_PRIORITY } from "../priority.js";
2
+ import { meteredList } from "./LinkedList.js";
3
+ // All priorities use the queue, processed in order: HIGH > MEDIUM > LOW
4
+ const PRIORITY_TO_QUEUE_INDEX = {
5
+ [CO_VALUE_PRIORITY.HIGH]: 0,
6
+ [CO_VALUE_PRIORITY.MEDIUM]: 1,
7
+ [CO_VALUE_PRIORITY.LOW]: 2,
8
+ };
9
+ /**
10
+ * A priority-based queue for storage content streaming.
11
+ *
12
+ * This queue manages content streaming for all priority levels (HIGH, MEDIUM, LOW).
13
+ * Content is processed in priority order: HIGH first, then MEDIUM, then LOW.
14
+ *
15
+ * Key features:
16
+ * - Stores callbacks to get content (lazy evaluation) rather than content itself
17
+ * - Priority-based ordering: HIGH > MEDIUM > LOW
18
+ */
19
+ export class StorageStreamingQueue {
20
+ constructor() {
21
+ this.queues = [
22
+ meteredList("storage-streaming", { priority: CO_VALUE_PRIORITY.HIGH }),
23
+ meteredList("storage-streaming", { priority: CO_VALUE_PRIORITY.MEDIUM }),
24
+ meteredList("storage-streaming", { priority: CO_VALUE_PRIORITY.LOW }),
25
+ ];
26
+ }
27
+ getQueue(priority) {
28
+ return this.queues[PRIORITY_TO_QUEUE_INDEX[priority]];
29
+ }
30
+ /**
31
+ * Push a content callback to the queue with explicit priority.
32
+ * The callback will be invoked when the entry is pulled and processed.
33
+ *
34
+ * @param entry - Callback that pushes content when invoked
35
+ * @param priority - Priority for this entry (HIGH, MEDIUM, or LOW)
36
+ */
37
+ push(entry, priority) {
38
+ this.getQueue(priority).push(entry);
39
+ }
40
+ /**
41
+ * Pull the next entry from the queue.
42
+ * Returns undefined if no entries are available.
43
+ * Priority order: HIGH > MEDIUM > LOW
44
+ */
45
+ pull() {
46
+ // Find the first non-empty queue (HIGH > MEDIUM > LOW)
47
+ const queueIndex = this.queues.findIndex((queue) => queue.length > 0);
48
+ if (queueIndex === -1) {
49
+ return undefined;
50
+ }
51
+ const entry = this.queues[queueIndex]?.shift();
52
+ if (!entry) {
53
+ return undefined;
54
+ }
55
+ return entry;
56
+ }
57
+ /**
58
+ * Check if the queue is empty (no pending entries).
59
+ */
60
+ isEmpty() {
61
+ return this.queues.every((queue) => queue.length === 0);
62
+ }
63
+ setListener(listener) {
64
+ this.listener = listener;
65
+ }
66
+ emit() {
67
+ this.listener?.();
68
+ }
69
+ }
70
+ //# sourceMappingURL=StorageStreamingQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageStreamingQueue.js","sourceRoot":"","sources":["../../src/queue/StorageStreamingQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAc,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQ1D,wEAAwE;AACxE,MAAM,uBAAuB,GAAG;IAC9B,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3B,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7B,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;CAClB,CAAC;AAQX;;;;;;;;;GASG;AACH,MAAM,OAAO,qBAAqB;IAGhC;QACE,IAAI,CAAC,MAAM,GAAG;YACZ,WAAW,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;YACtE,WAAW,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC,MAAM,EAAE,CAAC;YACxE,WAAW,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC;SACtE,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,QAAyB;QACxC,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,CAAC;IAED;;;;;;OAMG;IACI,IAAI,CAAC,KAAsB,EAAE,QAAyB;QAC3D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACI,IAAI;QACT,uDAAuD;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEtE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IAGD,WAAW,CAAC,QAAoB;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI;QACF,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;IACpB,CAAC;CACF"}
@@ -3,15 +3,21 @@ import { NewContentMessage, type PeerID } from "../sync.js";
3
3
  import { StorageKnownState } from "./knownState.js";
4
4
  import { CoValueKnownState } from "../knownState.js";
5
5
  import type { CorrectionCallback, DBClientInterfaceSync, StoredCoValueRow } from "./types.js";
6
+ import { StorageStreamingQueue } from "../queue/StorageStreamingQueue.js";
6
7
  export declare class StorageApiSync implements StorageAPI {
7
- private streamingCounter;
8
8
  private readonly dbClient;
9
9
  private loadedCoValues;
10
+ /**
11
+ * Queue for streaming content that will be pulled by SyncManager.
12
+ * Only used when content requires streaming (multiple chunks).
13
+ */
14
+ readonly streamingQueue: StorageStreamingQueue;
10
15
  constructor(dbClient: DBClientInterfaceSync);
11
16
  knownStates: StorageKnownState;
12
17
  getKnownState(id: string): CoValueKnownState;
13
18
  load(id: string, callback: (data: NewContentMessage) => void, done: (found: boolean) => void): Promise<void>;
14
- loadCoValue(id: string, callback: (data: NewContentMessage) => void, done?: (found: boolean) => void): Promise<void>;
19
+ loadCoValue(id: string, callback: (data: NewContentMessage) => void, done?: (found: boolean) => void): void;
20
+ private loadSessionTransactions;
15
21
  pushContentWithDependencies(coValueRow: StoredCoValueRow, contentMessage: NewContentMessage, pushCallback: (data: NewContentMessage) => void): Promise<void>;
16
22
  store(msg: NewContentMessage, correctionCallback: CorrectionCallback): boolean;
17
23
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"storageSync.d.ts","sourceRoot":"","sources":["../../src/storage/storageSync.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,WAAW,EACX,OAAO,EAEP,KAAK,UAAU,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAGrB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,gBAAgB,CAAgB;IAExC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,cAAc,CAAsB;gBAEhC,QAAQ,EAAE,qBAAqB;IAW3C,WAAW,oBAA2B;IAEtC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB;IAItC,IAAI,CACR,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC3C,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IAK1B,WAAW,CACf,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC3C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IAiH3B,2BAA2B,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,iBAAiB,EACjC,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI;IAkBjD,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB;IAIpE;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,WAAW;IA0DnB,OAAO,CAAC,SAAS;IAiEjB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAI5C,sBAAsB,CACpB,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,EAC3D,IAAI,CAAC,EAAE,MAAM,IAAI,GAChB,IAAI;IAKP,qBAAqB,CACnB,QAAQ,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,IAAI,GAChD,IAAI;IAKP,qBAAqB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAIxC,KAAK;CAGN"}
1
+ {"version":3,"file":"storageSync.d.ts","sourceRoot":"","sources":["../../src/storage/storageSync.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EACX,OAAO,EAEP,KAAK,UAAU,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAM1B,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EAGrB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,qBAAqB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,qBAAa,cAAe,YAAW,UAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,cAAc,CAAsB;IAE5C;;;OAGG;IACH,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;gBAEnC,QAAQ,EAAE,qBAAqB;IAK3C,WAAW,oBAA2B;IAEtC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB;IAItC,IAAI,CACR,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC3C,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IAKhC,WAAW,CACT,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC3C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IAsIjC,OAAO,CAAC,uBAAuB;IAqBzB,2BAA2B,CAC/B,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,iBAAiB,EACjC,YAAY,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI;IAkBjD,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,kBAAkB;IAIpE;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA8BxB,OAAO,CAAC,WAAW;IA0DnB,OAAO,CAAC,SAAS;IAiEjB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW;IAI5C,sBAAsB,CACpB,OAAO,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,EAC3D,IAAI,CAAC,EAAE,MAAM,IAAI,GAChB,IAAI;IAKP,qBAAqB,CACnB,QAAQ,EAAE,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,IAAI,GAChD,IAAI;IAKP,qBAAqB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI;IAIxC,KAAK;CAGN"}
@@ -1,21 +1,16 @@
1
- import { metrics } from "@opentelemetry/api";
2
1
  import { createContentMessage, exceedsRecommendedSize, } from "../coValueContentMessage.js";
3
2
  import { logger, } from "../exports.js";
4
3
  import { StorageKnownState } from "./knownState.js";
5
4
  import { emptyKnownState, setSessionCounter, } from "../knownState.js";
6
5
  import { collectNewTxs, getDependedOnCoValues, getNewTransactionsSize, } from "./syncUtils.js";
6
+ import { StorageStreamingQueue, } from "../queue/StorageStreamingQueue.js";
7
+ import { getPriorityFromHeader } from "../priority.js";
7
8
  export class StorageApiSync {
8
9
  constructor(dbClient) {
9
10
  this.loadedCoValues = new Set();
10
11
  this.knownStates = new StorageKnownState();
11
12
  this.dbClient = dbClient;
12
- this.streamingCounter = metrics
13
- .getMeter("cojson")
14
- .createUpDownCounter(`jazz.storage.streaming`, {
15
- description: "Number of streaming coValues",
16
- unit: "1",
17
- });
18
- this.streamingCounter.add(0);
13
+ this.streamingQueue = new StorageStreamingQueue();
19
14
  }
20
15
  getKnownState(id) {
21
16
  return this.knownStates.getKnownState(id);
@@ -23,7 +18,7 @@ export class StorageApiSync {
23
18
  async load(id, callback, done) {
24
19
  await this.loadCoValue(id, callback, done);
25
20
  }
26
- async loadCoValue(id, callback, done) {
21
+ loadCoValue(id, callback, done) {
27
22
  const coValueRow = this.dbClient.getCoValue(id);
28
23
  if (!coValueRow) {
29
24
  done?.(false);
@@ -36,8 +31,15 @@ export class StorageApiSync {
36
31
  const signatures = this.dbClient.getSignatures(sessionRow.rowID, 0);
37
32
  if (signatures.length > 0) {
38
33
  contentStreaming = true;
39
- signaturesBySession.set(sessionRow.sessionID, signatures);
40
34
  }
35
+ const lastSignature = signatures[signatures.length - 1];
36
+ if (lastSignature?.signature !== sessionRow.lastSignature) {
37
+ signatures.push({
38
+ idx: sessionRow.lastIdx,
39
+ signature: sessionRow.lastSignature,
40
+ });
41
+ }
42
+ signaturesBySession.set(sessionRow.sessionID, signatures);
41
43
  }
42
44
  const knownState = this.knownStates.getKnownState(coValueRow.id);
43
45
  knownState.header = true;
@@ -45,52 +47,62 @@ export class StorageApiSync {
45
47
  setSessionCounter(knownState.sessions, sessionRow.sessionID, sessionRow.lastIdx);
46
48
  }
47
49
  this.loadedCoValues.add(coValueRow.id);
48
- let contentMessage = createContentMessage(coValueRow.id, coValueRow.header);
50
+ const priority = getPriorityFromHeader(coValueRow.header);
51
+ const contentMessage = createContentMessage(coValueRow.id, coValueRow.header);
49
52
  if (contentStreaming) {
50
- this.streamingCounter.add(1);
51
53
  contentMessage.expectContentUntil = knownState.sessions;
52
54
  }
55
+ const streamingQueue = [];
53
56
  for (const sessionRow of allCoValueSessions) {
54
- const signatures = signaturesBySession.get(sessionRow.sessionID) || [];
55
- let idx = 0;
56
- const lastSignature = signatures[signatures.length - 1];
57
- if (lastSignature?.signature !== sessionRow.lastSignature) {
58
- signatures.push({
59
- idx: sessionRow.lastIdx,
60
- signature: sessionRow.lastSignature,
61
- });
57
+ const signatures = signaturesBySession.get(sessionRow.sessionID);
58
+ if (!signatures) {
59
+ throw new Error("Signatures not found for session");
62
60
  }
63
- for (const signature of signatures) {
64
- const newTxsInSession = this.dbClient.getNewTransactionInSession(sessionRow.rowID, idx, signature.idx);
65
- collectNewTxs({
66
- newTxsInSession,
67
- contentMessage,
68
- sessionRow,
69
- firstNewTxIdx: idx,
70
- signature: signature.signature,
71
- });
72
- idx = signature.idx + 1;
73
- if (signatures.length > 1) {
74
- this.pushContentWithDependencies(coValueRow, contentMessage, callback);
75
- contentMessage = createContentMessage(coValueRow.id, coValueRow.header);
76
- // Introduce a delay to not block the main thread
77
- // for the entire content processing
78
- await new Promise((resolve) => setTimeout(resolve));
61
+ const firstSignature = signatures[0];
62
+ if (!firstSignature) {
63
+ continue;
64
+ }
65
+ this.loadSessionTransactions(contentMessage, sessionRow, 0, firstSignature);
66
+ for (let i = 1; i < signatures.length; i++) {
67
+ const prevSignature = signatures[i - 1];
68
+ if (!prevSignature) {
69
+ throw new Error("Previous signature is nullish");
79
70
  }
71
+ streamingQueue.push(() => {
72
+ const contentMessage = createContentMessage(coValueRow.id, coValueRow.header);
73
+ const signature = signatures[i];
74
+ if (!signature)
75
+ throw new Error("Signature item is nullish");
76
+ this.loadSessionTransactions(contentMessage, sessionRow, prevSignature.idx + 1, signature);
77
+ if (Object.keys(contentMessage.new).length > 0) {
78
+ this.pushContentWithDependencies(coValueRow, contentMessage, callback);
79
+ }
80
+ });
80
81
  }
81
82
  }
82
- const hasNewContent = Object.keys(contentMessage.new).length > 0;
83
- // If there is no new content but steaming is not active, it's the case for a coValue with the header but no transactions
84
- // For streaming the push has already been done in the loop above
85
- if (hasNewContent || !contentStreaming) {
86
- this.pushContentWithDependencies(coValueRow, contentMessage, callback);
83
+ // Send the first chunk
84
+ this.pushContentWithDependencies(coValueRow, contentMessage, callback);
85
+ this.knownStates.handleUpdate(coValueRow.id, knownState);
86
+ // All priorities go through the queue (HIGH > MEDIUM > LOW)
87
+ for (const pushStreamingContent of streamingQueue) {
88
+ this.streamingQueue.push(pushStreamingContent, priority);
87
89
  }
88
- if (contentStreaming) {
89
- this.streamingCounter.add(-1);
90
+ // Trigger the queue to process the entries
91
+ if (streamingQueue.length > 0) {
92
+ this.streamingQueue.emit();
90
93
  }
91
- this.knownStates.handleUpdate(coValueRow.id, knownState);
92
94
  done?.(true);
93
95
  }
96
+ loadSessionTransactions(contentMessage, sessionRow, idx, signature) {
97
+ const newTxsInSession = this.dbClient.getNewTransactionInSession(sessionRow.rowID, idx, signature.idx);
98
+ collectNewTxs({
99
+ newTxsInSession,
100
+ contentMessage,
101
+ sessionRow,
102
+ firstNewTxIdx: idx,
103
+ signature: signature.signature,
104
+ });
105
+ }
94
106
  async pushContentWithDependencies(coValueRow, contentMessage, pushCallback) {
95
107
  const dependedOnCoValuesList = getDependedOnCoValues(coValueRow.header, contentMessage);
96
108
  for (const dependedOnCoValue of dependedOnCoValuesList) {