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 +1 @@
1
- {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/tests/testUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "type": "module",
39
39
  "license": "MIT",
40
- "version": "0.19.19",
40
+ "version": "0.19.20",
41
41
  "devDependencies": {
42
42
  "@opentelemetry/sdk-metrics": "^2.0.0",
43
43
  "libsql": "^0.5.13",
@@ -50,11 +50,11 @@
50
50
  "@opentelemetry/api": "^1.9.0",
51
51
  "@scure/base": "1.2.1",
52
52
  "unicode-segmenter": "^0.12.0",
53
- "cojson-core-wasm": "0.19.19",
54
- "cojson-core-napi": "0.19.19"
53
+ "cojson-core-wasm": "0.19.20",
54
+ "cojson-core-napi": "0.19.20"
55
55
  },
56
56
  "peerDependencies": {
57
- "cojson-core-rn": "0.19.19"
57
+ "cojson-core-rn": "0.19.20"
58
58
  },
59
59
  "gitHead": "33c27053293b4801b968c61d5c4c989f93a67d13",
60
60
  "scripts": {
package/src/config.ts CHANGED
@@ -60,3 +60,16 @@ export function setGarbageCollectorMaxAge(maxAge: number) {
60
60
  export function setGarbageCollectorInterval(interval: number) {
61
61
  GARBAGE_COLLECTOR_CONFIG.INTERVAL = interval;
62
62
  }
63
+
64
+ export const WEBSOCKET_CONFIG = {
65
+ MAX_OUTGOING_MESSAGES_CHUNK_BYTES: 25_000,
66
+ OUTGOING_MESSAGES_CHUNK_DELAY: 5,
67
+ };
68
+
69
+ export function setMaxOutgoingMessagesChunkBytes(bytes: number) {
70
+ WEBSOCKET_CONFIG.MAX_OUTGOING_MESSAGES_CHUNK_BYTES = bytes;
71
+ }
72
+
73
+ export function setOutgoingMessagesChunkDelay(delay: number) {
74
+ WEBSOCKET_CONFIG.OUTGOING_MESSAGES_CHUNK_DELAY = delay;
75
+ }
package/src/exports.ts CHANGED
@@ -82,10 +82,13 @@ import { getDependedOnCoValuesFromRawData } from "./coValueCore/utils.js";
82
82
  import {
83
83
  CO_VALUE_LOADING_CONFIG,
84
84
  TRANSACTION_CONFIG,
85
+ WEBSOCKET_CONFIG,
85
86
  setCoValueLoadingMaxRetries,
86
87
  setCoValueLoadingRetryDelay,
87
88
  setCoValueLoadingTimeout,
88
89
  setIncomingMessagesTimeBudget,
90
+ setMaxOutgoingMessagesChunkBytes,
91
+ setOutgoingMessagesChunkDelay,
89
92
  setMaxRecommendedTxSize,
90
93
  } from "./config.js";
91
94
  import { LogLevel, logger } from "./logger.js";
@@ -135,6 +138,9 @@ export const cojsonInternals = {
135
138
  TRANSACTION_CONFIG,
136
139
  setMaxRecommendedTxSize,
137
140
  canBeBranched,
141
+ WEBSOCKET_CONFIG,
142
+ setMaxOutgoingMessagesChunkBytes,
143
+ setOutgoingMessagesChunkDelay,
138
144
  };
139
145
 
140
146
  export {
@@ -1,17 +1,15 @@
1
1
  import { Counter, ValueType, metrics } from "@opentelemetry/api";
2
2
  import type { PeerState } from "../PeerState.js";
3
- import { SYNC_SCHEDULER_CONFIG } from "../config.js";
4
- import { logger } from "../logger.js";
5
3
  import type { SyncMessage } from "../sync.js";
6
4
  import { LinkedList } from "./LinkedList.js";
7
5
 
8
6
  /**
9
- * A queue that schedules messages across different peers using a round-robin approach.
7
+ * A queue that manages incoming sync messages across different peers using a round-robin approach.
10
8
  *
11
9
  * This class manages incoming sync messages from multiple peers, ensuring fair processing
12
- * by cycling through each peer's message queue in a round-robin fashion. It also implements
13
- * collaborative scheduling on message processing, pausing when the main thread is blocked
14
- * for more than 50ms.
10
+ * by cycling through each peer's message queue in a round-robin fashion.
11
+ *
12
+ * Queue processing and scheduling is handled by SyncManager.processQueues().
15
13
  */
16
14
  export class IncomingMessagesQueue {
17
15
  private pullCounter: Counter;
@@ -21,7 +19,7 @@ export class IncomingMessagesQueue {
21
19
  peerToQueue: WeakMap<PeerState, LinkedList<SyncMessage>>;
22
20
  currentQueue = 0;
23
21
 
24
- constructor() {
22
+ constructor(private processQueues: () => void) {
25
23
  this.pullCounter = metrics
26
24
  .getMeter("cojson")
27
25
  .createCounter(`jazz.messagequeue.incoming.pulled`, {
@@ -74,6 +72,8 @@ export class IncomingMessagesQueue {
74
72
  this.pushCounter.add(1, {
75
73
  peerRole: peer.role,
76
74
  });
75
+
76
+ this.processQueues();
77
77
  }
78
78
 
79
79
  public pull() {
@@ -107,36 +107,4 @@ export class IncomingMessagesQueue {
107
107
 
108
108
  return undefined;
109
109
  }
110
-
111
- processing = false;
112
-
113
- async processQueue(callback: (msg: SyncMessage, peer: PeerState) => void) {
114
- this.processing = true;
115
-
116
- let entry: { msg: SyncMessage; peer: PeerState } | undefined;
117
- let lastTimer = performance.now();
118
-
119
- while ((entry = this.pull())) {
120
- const { msg, peer } = entry;
121
-
122
- try {
123
- callback(msg, peer);
124
- } catch (err) {
125
- logger.error("Error processing message", { err });
126
- }
127
-
128
- const currentTimer = performance.now();
129
-
130
- // We check if we have blocked the main thread for too long
131
- // and if so, we schedule a timer task to yield to the event loop
132
- if (
133
- currentTimer - lastTimer >
134
- SYNC_SCHEDULER_CONFIG.INCOMING_MESSAGES_TIME_BUDGET
135
- ) {
136
- await new Promise((resolve) => setTimeout(resolve, 0));
137
- }
138
- }
139
-
140
- this.processing = false;
141
- }
142
110
  }
@@ -108,7 +108,7 @@ class QueueMeter {
108
108
  }
109
109
  }
110
110
  export function meteredList<T>(
111
- type: "incoming" | "outgoing",
111
+ type: "incoming" | "outgoing" | "storage-streaming",
112
112
  attrs?: Record<string, string | number>,
113
113
  ) {
114
114
  return new LinkedList<T>(new QueueMeter("jazz.messagequeue." + type, attrs));
@@ -0,0 +1,96 @@
1
+ import { CO_VALUE_PRIORITY, type CoValuePriority } from "../priority.js";
2
+ import { LinkedList, meteredList } from "./LinkedList.js";
3
+
4
+ /**
5
+ * A callback that pushes content when invoked.
6
+ * Content is only fetched from the database when this callback is called.
7
+ */
8
+ export type ContentCallback = () => void;
9
+
10
+ // All priorities use the queue, processed in order: HIGH > MEDIUM > LOW
11
+ const PRIORITY_TO_QUEUE_INDEX = {
12
+ [CO_VALUE_PRIORITY.HIGH]: 0,
13
+ [CO_VALUE_PRIORITY.MEDIUM]: 1,
14
+ [CO_VALUE_PRIORITY.LOW]: 2,
15
+ } as const;
16
+
17
+ type StreamingQueueTuple = [
18
+ high: LinkedList<ContentCallback>,
19
+ medium: LinkedList<ContentCallback>,
20
+ low: LinkedList<ContentCallback>,
21
+ ];
22
+
23
+ /**
24
+ * A priority-based queue for storage content streaming.
25
+ *
26
+ * This queue manages content streaming for all priority levels (HIGH, MEDIUM, LOW).
27
+ * Content is processed in priority order: HIGH first, then MEDIUM, then LOW.
28
+ *
29
+ * Key features:
30
+ * - Stores callbacks to get content (lazy evaluation) rather than content itself
31
+ * - Priority-based ordering: HIGH > MEDIUM > LOW
32
+ */
33
+ export class StorageStreamingQueue {
34
+ private queues: StreamingQueueTuple;
35
+
36
+ constructor() {
37
+ this.queues = [
38
+ meteredList("storage-streaming", { priority: CO_VALUE_PRIORITY.HIGH }),
39
+ meteredList("storage-streaming", { priority: CO_VALUE_PRIORITY.MEDIUM }),
40
+ meteredList("storage-streaming", { priority: CO_VALUE_PRIORITY.LOW }),
41
+ ];
42
+ }
43
+
44
+ private getQueue(priority: CoValuePriority) {
45
+ return this.queues[PRIORITY_TO_QUEUE_INDEX[priority]];
46
+ }
47
+
48
+ /**
49
+ * Push a content callback to the queue with explicit priority.
50
+ * The callback will be invoked when the entry is pulled and processed.
51
+ *
52
+ * @param entry - Callback that pushes content when invoked
53
+ * @param priority - Priority for this entry (HIGH, MEDIUM, or LOW)
54
+ */
55
+ public push(entry: ContentCallback, priority: CoValuePriority): void {
56
+ this.getQueue(priority).push(entry);
57
+ }
58
+
59
+ /**
60
+ * Pull the next entry from the queue.
61
+ * Returns undefined if no entries are available.
62
+ * Priority order: HIGH > MEDIUM > LOW
63
+ */
64
+ public pull(): ContentCallback | undefined {
65
+ // Find the first non-empty queue (HIGH > MEDIUM > LOW)
66
+ const queueIndex = this.queues.findIndex((queue) => queue.length > 0);
67
+
68
+ if (queueIndex === -1) {
69
+ return undefined;
70
+ }
71
+
72
+ const entry = this.queues[queueIndex]?.shift();
73
+
74
+ if (!entry) {
75
+ return undefined;
76
+ }
77
+
78
+ return entry;
79
+ }
80
+
81
+ /**
82
+ * Check if the queue is empty (no pending entries).
83
+ */
84
+ public isEmpty(): boolean {
85
+ return this.queues.every((queue) => queue.length === 0);
86
+ }
87
+
88
+ private listener: (() => void) | undefined;
89
+ setListener(listener: () => void): void {
90
+ this.listener = listener;
91
+ }
92
+
93
+ emit(): void {
94
+ this.listener?.();
95
+ }
96
+ }
@@ -1,4 +1,3 @@
1
- import { UpDownCounter, metrics } from "@opentelemetry/api";
2
1
  import {
3
2
  createContentMessage,
4
3
  exceedsRecommendedSize,
@@ -30,22 +29,25 @@ import type {
30
29
  StoredCoValueRow,
31
30
  StoredSessionRow,
32
31
  } from "./types.js";
32
+ import {
33
+ ContentCallback,
34
+ StorageStreamingQueue,
35
+ } from "../queue/StorageStreamingQueue.js";
36
+ import { getPriorityFromHeader } from "../priority.js";
33
37
 
34
38
  export class StorageApiSync implements StorageAPI {
35
- private streamingCounter: UpDownCounter;
36
-
37
39
  private readonly dbClient: DBClientInterfaceSync;
38
40
  private loadedCoValues = new Set<RawCoID>();
39
41
 
42
+ /**
43
+ * Queue for streaming content that will be pulled by SyncManager.
44
+ * Only used when content requires streaming (multiple chunks).
45
+ */
46
+ readonly streamingQueue: StorageStreamingQueue;
47
+
40
48
  constructor(dbClient: DBClientInterfaceSync) {
41
49
  this.dbClient = dbClient;
42
- this.streamingCounter = metrics
43
- .getMeter("cojson")
44
- .createUpDownCounter(`jazz.storage.streaming`, {
45
- description: "Number of streaming coValues",
46
- unit: "1",
47
- });
48
- this.streamingCounter.add(0);
50
+ this.streamingQueue = new StorageStreamingQueue();
49
51
  }
50
52
 
51
53
  knownStates = new StorageKnownState();
@@ -62,7 +64,7 @@ export class StorageApiSync implements StorageAPI {
62
64
  await this.loadCoValue(id, callback, done);
63
65
  }
64
66
 
65
- async loadCoValue(
67
+ loadCoValue(
66
68
  id: string,
67
69
  callback: (data: NewContentMessage) => void,
68
70
  done?: (found: boolean) => void,
@@ -89,8 +91,18 @@ export class StorageApiSync implements StorageAPI {
89
91
 
90
92
  if (signatures.length > 0) {
91
93
  contentStreaming = true;
92
- signaturesBySession.set(sessionRow.sessionID, signatures);
93
94
  }
95
+
96
+ const lastSignature = signatures[signatures.length - 1];
97
+
98
+ if (lastSignature?.signature !== sessionRow.lastSignature) {
99
+ signatures.push({
100
+ idx: sessionRow.lastIdx,
101
+ signature: sessionRow.lastSignature,
102
+ });
103
+ }
104
+
105
+ signaturesBySession.set(sessionRow.sessionID, signatures);
94
106
  }
95
107
 
96
108
  const knownState = this.knownStates.getKnownState(coValueRow.id);
@@ -106,78 +118,110 @@ export class StorageApiSync implements StorageAPI {
106
118
 
107
119
  this.loadedCoValues.add(coValueRow.id);
108
120
 
109
- let contentMessage = createContentMessage(coValueRow.id, coValueRow.header);
121
+ const priority = getPriorityFromHeader(coValueRow.header);
122
+ const contentMessage = createContentMessage(
123
+ coValueRow.id,
124
+ coValueRow.header,
125
+ );
110
126
 
111
127
  if (contentStreaming) {
112
- this.streamingCounter.add(1);
113
128
  contentMessage.expectContentUntil = knownState.sessions;
114
129
  }
115
130
 
131
+ const streamingQueue: ContentCallback[] = [];
132
+
116
133
  for (const sessionRow of allCoValueSessions) {
117
- const signatures = signaturesBySession.get(sessionRow.sessionID) || [];
134
+ const signatures = signaturesBySession.get(sessionRow.sessionID);
118
135
 
119
- let idx = 0;
136
+ if (!signatures) {
137
+ throw new Error("Signatures not found for session");
138
+ }
120
139
 
121
- const lastSignature = signatures[signatures.length - 1];
140
+ const firstSignature = signatures[0];
122
141
 
123
- if (lastSignature?.signature !== sessionRow.lastSignature) {
124
- signatures.push({
125
- idx: sessionRow.lastIdx,
126
- signature: sessionRow.lastSignature,
127
- });
142
+ if (!firstSignature) {
143
+ continue;
128
144
  }
129
145
 
130
- for (const signature of signatures) {
131
- const newTxsInSession = this.dbClient.getNewTransactionInSession(
132
- sessionRow.rowID,
133
- idx,
134
- signature.idx,
135
- );
146
+ this.loadSessionTransactions(
147
+ contentMessage,
148
+ sessionRow,
149
+ 0,
150
+ firstSignature,
151
+ );
136
152
 
137
- collectNewTxs({
138
- newTxsInSession,
139
- contentMessage,
140
- sessionRow,
141
- firstNewTxIdx: idx,
142
- signature: signature.signature,
143
- });
153
+ for (let i = 1; i < signatures.length; i++) {
154
+ const prevSignature = signatures[i - 1];
144
155
 
145
- idx = signature.idx + 1;
156
+ if (!prevSignature) {
157
+ throw new Error("Previous signature is nullish");
158
+ }
146
159
 
147
- if (signatures.length > 1) {
148
- this.pushContentWithDependencies(
149
- coValueRow,
150
- contentMessage,
151
- callback,
152
- );
153
- contentMessage = createContentMessage(
160
+ streamingQueue.push(() => {
161
+ const contentMessage = createContentMessage(
154
162
  coValueRow.id,
155
163
  coValueRow.header,
156
164
  );
157
165
 
158
- // Introduce a delay to not block the main thread
159
- // for the entire content processing
160
- await new Promise((resolve) => setTimeout(resolve));
161
- }
166
+ const signature = signatures[i];
167
+ if (!signature) throw new Error("Signature item is nullish");
168
+
169
+ this.loadSessionTransactions(
170
+ contentMessage,
171
+ sessionRow,
172
+ prevSignature.idx + 1,
173
+ signature,
174
+ );
175
+
176
+ if (Object.keys(contentMessage.new).length > 0) {
177
+ this.pushContentWithDependencies(
178
+ coValueRow,
179
+ contentMessage,
180
+ callback,
181
+ );
182
+ }
183
+ });
162
184
  }
163
185
  }
164
186
 
165
- const hasNewContent = Object.keys(contentMessage.new).length > 0;
187
+ // Send the first chunk
188
+ this.pushContentWithDependencies(coValueRow, contentMessage, callback);
189
+ this.knownStates.handleUpdate(coValueRow.id, knownState);
166
190
 
167
- // If there is no new content but steaming is not active, it's the case for a coValue with the header but no transactions
168
- // For streaming the push has already been done in the loop above
169
- if (hasNewContent || !contentStreaming) {
170
- this.pushContentWithDependencies(coValueRow, contentMessage, callback);
191
+ // All priorities go through the queue (HIGH > MEDIUM > LOW)
192
+ for (const pushStreamingContent of streamingQueue) {
193
+ this.streamingQueue.push(pushStreamingContent, priority);
171
194
  }
172
195
 
173
- if (contentStreaming) {
174
- this.streamingCounter.add(-1);
196
+ // Trigger the queue to process the entries
197
+ if (streamingQueue.length > 0) {
198
+ this.streamingQueue.emit();
175
199
  }
176
200
 
177
- this.knownStates.handleUpdate(coValueRow.id, knownState);
178
201
  done?.(true);
179
202
  }
180
203
 
204
+ private loadSessionTransactions(
205
+ contentMessage: NewContentMessage,
206
+ sessionRow: StoredSessionRow,
207
+ idx: number,
208
+ signature: Pick<SignatureAfterRow, "idx" | "signature">,
209
+ ) {
210
+ const newTxsInSession = this.dbClient.getNewTransactionInSession(
211
+ sessionRow.rowID,
212
+ idx,
213
+ signature.idx,
214
+ );
215
+
216
+ collectNewTxs({
217
+ newTxsInSession,
218
+ contentMessage,
219
+ sessionRow,
220
+ firstNewTxIdx: idx,
221
+ signature: signature.signature,
222
+ });
223
+ }
224
+
181
225
  async pushContentWithDependencies(
182
226
  coValueRow: StoredCoValueRow,
183
227
  contentMessage: NewContentMessage,
@@ -7,6 +7,7 @@ import type { CoValueCore, RawCoID, SessionID } from "../exports.js";
7
7
  import { NewContentMessage } from "../sync.js";
8
8
  import type { PeerID } from "../sync.js";
9
9
  import { CoValueKnownState } from "../knownState.js";
10
+ import { StorageStreamingQueue } from "../queue/StorageStreamingQueue.js";
10
11
 
11
12
  export type CorrectionCallback = (
12
13
  correction: CoValueKnownState,
@@ -26,6 +27,8 @@ export interface StorageAPI {
26
27
  ): void;
27
28
  store(data: NewContentMessage, handleCorrection: CorrectionCallback): void;
28
29
 
30
+ streamingQueue?: StorageStreamingQueue;
31
+
29
32
  getKnownState(id: string): CoValueKnownState;
30
33
 
31
34
  waitForSync(id: string, coValue: CoValueCore): Promise<void>;