cojson 0.8.3 → 0.8.11

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 (50) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/native/PeerKnownStates.js +63 -0
  3. package/dist/native/PeerKnownStates.js.map +1 -0
  4. package/dist/native/PeerState.js +2 -1
  5. package/dist/native/PeerState.js.map +1 -1
  6. package/dist/native/coValueState.js +74 -0
  7. package/dist/native/coValueState.js.map +1 -0
  8. package/dist/native/exports.js +39 -0
  9. package/dist/native/exports.js.map +1 -0
  10. package/dist/native/index.native.js +2 -39
  11. package/dist/native/index.native.js.map +1 -1
  12. package/dist/native/localNode.js +40 -51
  13. package/dist/native/localNode.js.map +1 -1
  14. package/dist/native/storage/index.js +1 -1
  15. package/dist/native/storage/index.js.map +1 -1
  16. package/dist/native/sync.js +85 -105
  17. package/dist/native/sync.js.map +1 -1
  18. package/dist/web/PeerKnownStates.js +63 -0
  19. package/dist/web/PeerKnownStates.js.map +1 -0
  20. package/dist/web/PeerState.js +2 -1
  21. package/dist/web/PeerState.js.map +1 -1
  22. package/dist/web/coValueState.js +74 -0
  23. package/dist/web/coValueState.js.map +1 -0
  24. package/dist/web/exports.js +39 -0
  25. package/dist/web/exports.js.map +1 -0
  26. package/dist/web/index.web.js +2 -39
  27. package/dist/web/index.web.js.map +1 -1
  28. package/dist/web/localNode.js +40 -51
  29. package/dist/web/localNode.js.map +1 -1
  30. package/dist/web/storage/index.js +1 -1
  31. package/dist/web/storage/index.js.map +1 -1
  32. package/dist/web/sync.js +85 -105
  33. package/dist/web/sync.js.map +1 -1
  34. package/package.json +5 -5
  35. package/src/PeerKnownStates.ts +108 -0
  36. package/src/PeerState.ts +4 -2
  37. package/src/coValueState.ts +107 -0
  38. package/src/exports.ts +149 -0
  39. package/src/index.native.ts +2 -152
  40. package/src/index.web.ts +2 -152
  41. package/src/jsonValue.ts +25 -0
  42. package/src/localNode.ts +52 -88
  43. package/src/storage/index.ts +1 -1
  44. package/src/sync.ts +90 -143
  45. package/src/tests/PeerKnownStates.test.ts +100 -0
  46. package/src/tests/PeerState.test.ts +0 -11
  47. package/src/tests/sync.test.ts +2 -2
  48. package/.turbo/turbo-build.log +0 -8
  49. package/.turbo/turbo-lint.log +0 -4
  50. package/.turbo/turbo-test.log +0 -1001
package/dist/web/sync.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { CoValueCore } from "./coValueCore.js";
2
- import { newLoadingState } from "./localNode.js";
2
+ import { CoValueState } from "./coValueState.js";
3
3
  import { PeerState } from "./PeerState.js";
4
4
  export function emptyKnownState(id) {
5
5
  return {
@@ -40,46 +40,17 @@ export class SyncManager {
40
40
  }
41
41
  async loadFromPeers(id, forPeer) {
42
42
  const eligiblePeers = this.peersInPriorityOrder().filter((peer) => peer.id !== forPeer && peer.role === "server");
43
+ const coValueEntry = this.local.coValues[id];
43
44
  for (const peer of eligiblePeers) {
44
- // console.log("loading", id, "from", peer.id);
45
45
  await peer.pushOutgoingMessage({
46
46
  action: "load",
47
47
  id: id,
48
48
  header: false,
49
49
  sessions: {},
50
50
  });
51
- const coValueEntry = this.local.coValues[id];
52
- if (coValueEntry?.state !== "loading") {
53
- continue;
54
- }
55
- const firstStateEntry = coValueEntry.firstPeerState[peer.id];
56
- if (firstStateEntry?.type !== "waiting") {
57
- throw new Error("Expected firstPeerState to be waiting " + id);
51
+ if (coValueEntry?.state.type === "unknown") {
52
+ await coValueEntry.state.waitForPeer(peer.id);
58
53
  }
59
- await new Promise((resolve) => {
60
- // const timeout = setTimeout(() => {
61
- // if (this.local.coValues[id]?.state === "loading") {
62
- // console.warn(
63
- // "Timeout waiting for peer to load",
64
- // id,
65
- // "from",
66
- // peer.id,
67
- // "and it hasn't loaded from other peers yet"
68
- // );
69
- // }
70
- // resolve();
71
- // }, 1000);
72
- firstStateEntry.done
73
- .then(() => {
74
- // clearTimeout(timeout);
75
- resolve();
76
- })
77
- .catch((e) => {
78
- // clearTimeout(timeout);
79
- console.error("Error waiting for peer to load", id, "from", peer.id, e);
80
- resolve();
81
- });
82
- });
83
54
  }
84
55
  }
85
56
  async handleSyncMessage(msg, peer) {
@@ -108,7 +79,7 @@ export class SyncManager {
108
79
  if (!entry) {
109
80
  throw new Error("Expected coValue entry on subscribe");
110
81
  }
111
- if (entry.state === "loading") {
82
+ if (entry.state.type === "unknown") {
112
83
  this.trySendToPeer(peer, {
113
84
  action: "load",
114
85
  id,
@@ -119,7 +90,7 @@ export class SyncManager {
119
90
  });
120
91
  return;
121
92
  }
122
- const coValue = entry.coValue;
93
+ const coValue = entry.state.coValue;
123
94
  for (const id of coValue.getDependedOnCoValues()) {
124
95
  await this.subscribeToIncludingDependencies(id, peer);
125
96
  }
@@ -154,9 +125,9 @@ export class SyncManager {
154
125
  await Promise.all(coValue
155
126
  .getDependedOnCoValues()
156
127
  .map((id) => this.sendNewContentIncludingDependencies(id, peer)));
157
- const newContentPieces = coValue.newContentSince(peer.optimisticKnownStates[id]);
128
+ const newContentPieces = coValue.newContentSince(peer.optimisticKnownStates.get(id));
158
129
  if (newContentPieces) {
159
- const optimisticKnownStateBefore = peer.optimisticKnownStates[id] || emptyKnownState(id);
130
+ const optimisticKnownStateBefore = peer.optimisticKnownStates.get(id) || emptyKnownState(id);
160
131
  const sendPieces = async () => {
161
132
  let lastYield = performance.now();
162
133
  for (const [_i, piece] of newContentPieces.entries()) {
@@ -179,10 +150,18 @@ export class SyncManager {
179
150
  };
180
151
  sendPieces().catch((e) => {
181
152
  console.error("Error sending new content piece, retrying", e);
182
- peer.optimisticKnownStates[id] = optimisticKnownStateBefore;
153
+ peer.optimisticKnownStates.dispatch({
154
+ type: "SET",
155
+ id,
156
+ value: optimisticKnownStateBefore ?? emptyKnownState(id),
157
+ });
183
158
  return this.sendNewContentIncludingDependencies(id, peer);
184
159
  });
185
- peer.optimisticKnownStates[id] = combinedKnownStates(optimisticKnownStateBefore, coValue.knownState());
160
+ peer.optimisticKnownStates.dispatch({
161
+ type: "COMBINE_WITH",
162
+ id,
163
+ value: coValue.knownState(),
164
+ });
186
165
  }
187
166
  }
188
167
  addPeer(peer) {
@@ -193,11 +172,10 @@ export class SyncManager {
193
172
  for (const id of Object.keys(this.local.coValues)) {
194
173
  // console.log("subscribing to after peer added", id, peer.id)
195
174
  await this.subscribeToIncludingDependencies(id, peerState);
196
- peerState.optimisticKnownStates[id] = {
197
- id: id,
198
- header: false,
199
- sessions: {},
200
- };
175
+ peerState.optimisticKnownStates.dispatch({
176
+ type: "SET_AS_EMPTY",
177
+ id,
178
+ });
201
179
  }
202
180
  };
203
181
  void initialSync();
@@ -245,7 +223,11 @@ export class SyncManager {
245
223
  return peer.pushOutgoingMessage(msg);
246
224
  }
247
225
  async handleLoad(msg, peer) {
248
- peer.optimisticKnownStates[msg.id] = knownStateIn(msg);
226
+ peer.optimisticKnownStates.dispatch({
227
+ type: "SET",
228
+ id: msg.id,
229
+ value: knownStateIn(msg),
230
+ });
249
231
  let entry = this.local.coValues[msg.id];
250
232
  if (!entry) {
251
233
  // console.log(`Loading ${msg.id} from all peers except ${peer.id}`);
@@ -254,7 +236,7 @@ export class SyncManager {
254
236
  const eligiblePeers = this.peersInPriorityOrder().filter((other) => other.id !== peer.id && other.role === "server");
255
237
  if (eligiblePeers.length === 0) {
256
238
  if (msg.header || Object.keys(msg.sessions).length > 0) {
257
- this.local.coValues[msg.id] = newLoadingState(new Set([peer.id]));
239
+ this.local.coValues[msg.id] = CoValueState.Unknown(new Set([peer.id]));
258
240
  this.trySendToPeer(peer, {
259
241
  action: "known",
260
242
  id: msg.id,
@@ -278,17 +260,20 @@ export class SyncManager {
278
260
  }
279
261
  entry = this.local.coValues[msg.id];
280
262
  }
281
- if (entry.state === "loading") {
263
+ if (entry.state.type === "unknown") {
282
264
  // console.debug(
283
265
  // "Waiting for loaded",
284
266
  // msg.id,
285
267
  // "after message from",
286
268
  // peer.id,
287
269
  // );
288
- const loaded = await entry.done;
289
- // console.log("Loaded", msg.id, loaded);
270
+ const loaded = await entry.state.ready;
290
271
  if (loaded === "unavailable") {
291
- peer.optimisticKnownStates[msg.id] = knownStateIn(msg);
272
+ peer.optimisticKnownStates.dispatch({
273
+ type: "SET",
274
+ id: msg.id,
275
+ value: knownStateIn(msg),
276
+ });
292
277
  peer.toldKnownState.add(msg.id);
293
278
  this.trySendToPeer(peer, {
294
279
  action: "known",
@@ -306,7 +291,11 @@ export class SyncManager {
306
291
  }
307
292
  async handleKnownState(msg, peer) {
308
293
  let entry = this.local.coValues[msg.id];
309
- peer.optimisticKnownStates[msg.id] = combinedKnownStates(peer.optimisticKnownStates[msg.id] || emptyKnownState(msg.id), knownStateIn(msg));
294
+ peer.optimisticKnownStates.dispatch({
295
+ type: "COMBINE_WITH",
296
+ id: msg.id,
297
+ value: knownStateIn(msg),
298
+ });
310
299
  if (!entry) {
311
300
  if (msg.asDependencyOf) {
312
301
  if (this.local.coValues[msg.asDependencyOf]) {
@@ -325,64 +314,46 @@ export class SyncManager {
325
314
  throw new Error(`Expected coValue entry for ${msg.id} to be created on known state, missing subscribe?`);
326
315
  }
327
316
  }
328
- if (entry.state === "loading") {
329
- const availableOnPeer = peer.optimisticKnownStates[msg.id]?.header;
330
- const firstPeerStateEntry = entry.firstPeerState[peer.id];
331
- if (firstPeerStateEntry?.type === "waiting") {
332
- firstPeerStateEntry.resolve();
333
- }
334
- entry.firstPeerState[peer.id] = availableOnPeer
335
- ? { type: "available" }
336
- : { type: "unavailable" };
337
- // console.log(
338
- // "Marking",
339
- // msg.id,
340
- // "as",
341
- // entry.firstPeerState[peer.id]?.type,
342
- // "from",
343
- // peer.id
344
- // );
345
- if (Object.values(entry.firstPeerState).every((s) => s.type === "unavailable")) {
346
- entry.resolve("unavailable");
317
+ if (entry.state.type === "unknown") {
318
+ const availableOnPeer = peer.optimisticKnownStates.get(msg.id)?.header;
319
+ if (!availableOnPeer) {
320
+ entry.dispatch({
321
+ type: "not-found",
322
+ peerId: peer.id,
323
+ });
347
324
  }
348
- return [];
325
+ return;
349
326
  }
350
327
  await this.tellUntoldKnownStateIncludingDependencies(msg.id, peer);
351
328
  await this.sendNewContentIncludingDependencies(msg.id, peer);
352
329
  }
353
330
  async handleNewContent(msg, peer) {
354
- let entry = this.local.coValues[msg.id];
331
+ const entry = this.local.coValues[msg.id];
355
332
  if (!entry) {
356
333
  console.error(`Expected coValue entry for ${msg.id} to be created on new content, missing subscribe?`);
357
334
  return;
358
335
  }
359
- let resolveAfterDone;
360
- const peerOptimisticKnownState = peer.optimisticKnownStates[msg.id];
361
- if (!peerOptimisticKnownState) {
362
- console.error("Expected optimisticKnownState to be set for coValue we receive new content for");
363
- return;
364
- }
365
- if (entry.state === "loading") {
336
+ let coValue;
337
+ if (entry.state.type === "unknown") {
366
338
  if (!msg.header) {
367
339
  console.error("Expected header to be sent in first message");
368
340
  return;
369
341
  }
370
- const firstPeerStateEntry = entry.firstPeerState[peer.id];
371
- if (firstPeerStateEntry?.type === "waiting") {
372
- firstPeerStateEntry.resolve();
373
- entry.firstPeerState[peer.id] = { type: "available" };
374
- }
375
- peerOptimisticKnownState.header = true;
376
- const coValue = new CoValueCore(msg.header, this.local);
377
- resolveAfterDone = entry.resolve;
378
- entry = {
379
- state: "loaded",
380
- coValue: coValue,
381
- onProgress: entry.onProgress,
382
- };
383
- this.local.coValues[msg.id] = entry;
342
+ peer.optimisticKnownStates.dispatch({
343
+ type: "UPDATE_HEADER",
344
+ id: msg.id,
345
+ header: true,
346
+ });
347
+ coValue = new CoValueCore(msg.header, this.local);
348
+ entry.dispatch({
349
+ type: "found",
350
+ coValue,
351
+ peerId: peer.id,
352
+ });
353
+ }
354
+ else {
355
+ coValue = entry.state.coValue;
384
356
  }
385
- const coValue = entry.coValue;
386
357
  let invalidStateAssumed = false;
387
358
  for (const [sessionID, newContentForSession] of Object.entries(msg.new)) {
388
359
  const ourKnownTxIdx = coValue.sessionLogs.get(sessionID)?.transactions.length;
@@ -412,19 +383,25 @@ export class SyncManager {
412
383
  (after - before) /
413
384
  (1024 * 1024)).toFixed(2)} MB/s`);
414
385
  }
415
- const theirTotalnTxs = Object.values(peer.optimisticKnownStates[msg.id]?.sessions || {}).reduce((sum, nTxs) => sum + nTxs, 0);
416
- const ourTotalnTxs = [...coValue.sessionLogs.values()].reduce((sum, session) => sum + session.transactions.length, 0);
417
- entry.onProgress?.(ourTotalnTxs / theirTotalnTxs);
386
+ // const theirTotalnTxs = Object.values(
387
+ // peer.optimisticKnownStates[msg.id]?.sessions || {},
388
+ // ).reduce((sum, nTxs) => sum + nTxs, 0);
389
+ // const ourTotalnTxs = [...coValue.sessionLogs.values()].reduce(
390
+ // (sum, session) => sum + session.transactions.length,
391
+ // 0,
392
+ // );
418
393
  if (result.isErr()) {
419
394
  console.error("Failed to add transactions from", peer.id, result.error, msg.id, newTransactions.length + " new transactions", "after: " + newContentForSession.after, "our last known tx idx initially: " + ourKnownTxIdx, "our last known tx idx now: " +
420
395
  coValue.sessionLogs.get(sessionID)?.transactions.length);
421
396
  continue;
422
397
  }
423
- peerOptimisticKnownState.sessions[sessionID] = Math.max(peerOptimisticKnownState.sessions[sessionID] || 0, newContentForSession.after +
424
- newContentForSession.newTransactions.length);
425
- }
426
- if (resolveAfterDone) {
427
- resolveAfterDone(coValue);
398
+ peer.optimisticKnownStates.dispatch({
399
+ type: "UPDATE_SESSION_COUNTER",
400
+ id: msg.id,
401
+ sessionId: sessionID,
402
+ value: newContentForSession.after +
403
+ newContentForSession.newTransactions.length,
404
+ });
428
405
  }
429
406
  await this.syncCoValue(coValue);
430
407
  if (invalidStateAssumed) {
@@ -438,7 +415,11 @@ export class SyncManager {
438
415
  }
439
416
  }
440
417
  async handleCorrection(msg, peer) {
441
- peer.optimisticKnownStates[msg.id] = msg;
418
+ peer.optimisticKnownStates.dispatch({
419
+ type: "SET",
420
+ id: msg.id,
421
+ value: knownStateIn(msg),
422
+ });
442
423
  return this.sendNewContentIncludingDependencies(msg.id, peer);
443
424
  }
444
425
  handleUnsubscribe(_msg) {
@@ -477,8 +458,7 @@ export class SyncManager {
477
458
  // });
478
459
  // blockingSince = performance.now();
479
460
  // }
480
- const optimisticKnownState = peer.optimisticKnownStates[coValue.id];
481
- if (optimisticKnownState) {
461
+ if (peer.optimisticKnownStates.has(coValue.id)) {
482
462
  await this.tellUntoldKnownStateIncludingDependencies(coValue.id, peer);
483
463
  await this.sendNewContentIncludingDependencies(coValue.id, peer);
484
464
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -7,19 +7,19 @@
7
7
  "exports": {
8
8
  ".": {
9
9
  "react-native": "./dist/native/index.native.js",
10
- "default": "./dist/web/index.web.js",
11
- "types": "./src/index.web.ts"
10
+ "types": "./src/index.web.ts",
11
+ "default": "./dist/web/index.web.js"
12
12
  },
13
13
  "./native": {
14
14
  "react-native": "./dist/native/index.native.js",
15
- "default": "./dist/native/index.native.js",
16
- "types": "./src/index.native.ts"
15
+ "types": "./src/index.native.ts",
16
+ "default": "./dist/native/index.native.js"
17
17
  },
18
18
  "./src/*": "./src/*"
19
19
  },
20
20
  "type": "module",
21
21
  "license": "MIT",
22
- "version": "0.8.3",
22
+ "version": "0.8.11",
23
23
  "devDependencies": {
24
24
  "@types/jest": "^29.5.3",
25
25
  "@typescript-eslint/eslint-plugin": "^6.2.1",
@@ -0,0 +1,108 @@
1
+ import { RawCoID, SessionID } from "./ids.js";
2
+ import { CoValueKnownState, emptyKnownState, combinedKnownStates } from "./sync.js";
3
+
4
+ type PeerKnownStateActions = {
5
+ type: "SET_AS_EMPTY";
6
+ id: RawCoID;
7
+ } | {
8
+ type: "UPDATE_HEADER";
9
+ id: RawCoID;
10
+ header: boolean;
11
+ } |
12
+ {
13
+ type: "UPDATE_SESSION_COUNTER";
14
+ id: RawCoID;
15
+ sessionId: SessionID;
16
+ value: number;
17
+ } |
18
+ {
19
+ type: "SET";
20
+ id: RawCoID;
21
+ value: CoValueKnownState;
22
+ } |
23
+ {
24
+ type: "COMBINE_WITH";
25
+ id: RawCoID;
26
+ value: CoValueKnownState;
27
+ };
28
+
29
+ export class PeerKnownStates {
30
+ private coValues = new Map<RawCoID, CoValueKnownState>();
31
+
32
+ private updateHeader(id: RawCoID, header: boolean) {
33
+ const knownState = this.coValues.get(id) ?? emptyKnownState(id);
34
+ knownState.header = header;
35
+ this.coValues.set(id, knownState);
36
+ }
37
+
38
+ private combineWith(id: RawCoID, value: CoValueKnownState) {
39
+ const knownState = this.coValues.get(id) ?? emptyKnownState(id);
40
+ this.coValues.set(id, combinedKnownStates(knownState, value));
41
+ }
42
+
43
+ private updateSessionCounter(
44
+ id: RawCoID,
45
+ sessionId: SessionID,
46
+ value: number
47
+ ) {
48
+ const knownState = this.coValues.get(id) ?? emptyKnownState(id);
49
+ const currentValue = knownState.sessions[sessionId] || 0;
50
+ knownState.sessions[sessionId] = Math.max(currentValue, value);
51
+
52
+ this.coValues.set(id, knownState);
53
+ }
54
+
55
+ get(id: RawCoID) {
56
+ return this.coValues.get(id);
57
+ }
58
+
59
+ has(id: RawCoID) {
60
+ return this.coValues.has(id);
61
+ }
62
+
63
+ dispatch(action: PeerKnownStateActions) {
64
+ switch (action.type) {
65
+ case "UPDATE_HEADER":
66
+ this.updateHeader(action.id, action.header);
67
+ break;
68
+ case "UPDATE_SESSION_COUNTER":
69
+ this.updateSessionCounter(
70
+ action.id,
71
+ action.sessionId,
72
+ action.value
73
+ );
74
+ break;
75
+ case "SET":
76
+ this.coValues.set(action.id, action.value);
77
+ break;
78
+ case "COMBINE_WITH":
79
+ this.combineWith(action.id, action.value);
80
+ break;
81
+ case "SET_AS_EMPTY":
82
+ this.coValues.set(action.id, emptyKnownState(action.id));
83
+ break;
84
+ }
85
+
86
+ this.triggerUpdate(action.id);
87
+ }
88
+
89
+ listeners = new Set<(id: RawCoID, knownState: CoValueKnownState) => void>();
90
+
91
+ triggerUpdate(id: RawCoID) {
92
+ this.trigger(id, this.coValues.get(id) ?? emptyKnownState(id));
93
+ }
94
+
95
+ private trigger(id: RawCoID, knownState: CoValueKnownState) {
96
+ for (const listener of this.listeners) {
97
+ listener(id, knownState);
98
+ }
99
+ }
100
+
101
+ subscribe(listener: (id: RawCoID, knownState: CoValueKnownState) => void) {
102
+ this.listeners.add(listener);
103
+
104
+ return () => {
105
+ this.listeners.delete(listener);
106
+ };
107
+ }
108
+ }
package/src/PeerState.ts CHANGED
@@ -1,16 +1,18 @@
1
1
  import { RawCoID } from "./ids.js";
2
+ import { PeerKnownStates } from "./PeerKnownStates.js";
2
3
  import { CO_VALUE_PRIORITY } from "./priority.js";
3
4
  import {
4
5
  PriorityBasedMessageQueue,
5
6
  QueueEntry,
6
7
  } from "./PriorityBasedMessageQueue.js";
7
- import { CoValueKnownState, Peer, SyncMessage } from "./sync.js";
8
+ import { Peer, SyncMessage } from "./sync.js";
8
9
 
9
10
  export class PeerState {
10
11
  constructor(private peer: Peer) {}
11
12
 
12
- readonly optimisticKnownStates: { [id: RawCoID]: CoValueKnownState } = {};
13
+ readonly optimisticKnownStates = new PeerKnownStates();
13
14
  readonly toldKnownState: Set<RawCoID> = new Set();
15
+
14
16
  get id() {
15
17
  return this.peer.id;
16
18
  }