cojson 0.13.16 → 0.13.17

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 (59) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +7 -0
  3. package/dist/coValue.d.ts +2 -0
  4. package/dist/coValue.d.ts.map +1 -1
  5. package/dist/coValue.js +1 -0
  6. package/dist/coValue.js.map +1 -1
  7. package/dist/coValueCore.d.ts +1 -0
  8. package/dist/coValueCore.d.ts.map +1 -1
  9. package/dist/coValueCore.js.map +1 -1
  10. package/dist/coValueState.d.ts.map +1 -1
  11. package/dist/coValueState.js +58 -96
  12. package/dist/coValueState.js.map +1 -1
  13. package/dist/coValues/coList.d.ts +7 -3
  14. package/dist/coValues/coList.d.ts.map +1 -1
  15. package/dist/coValues/coList.js +35 -12
  16. package/dist/coValues/coList.js.map +1 -1
  17. package/dist/coValues/coMap.d.ts +1 -0
  18. package/dist/coValues/coMap.d.ts.map +1 -1
  19. package/dist/coValues/coMap.js +2 -0
  20. package/dist/coValues/coMap.js.map +1 -1
  21. package/dist/coValues/coPlainText.d.ts.map +1 -1
  22. package/dist/coValues/coPlainText.js +1 -1
  23. package/dist/coValues/coPlainText.js.map +1 -1
  24. package/dist/coValues/coStream.d.ts +2 -1
  25. package/dist/coValues/coStream.d.ts.map +1 -1
  26. package/dist/coValues/coStream.js +2 -0
  27. package/dist/coValues/coStream.js.map +1 -1
  28. package/dist/coreToCoValue.d.ts +2 -1
  29. package/dist/coreToCoValue.d.ts.map +1 -1
  30. package/dist/localNode.d.ts.map +1 -1
  31. package/dist/localNode.js +21 -14
  32. package/dist/localNode.js.map +1 -1
  33. package/dist/tests/coList.test.js +119 -2
  34. package/dist/tests/coList.test.js.map +1 -1
  35. package/dist/tests/coMap.test.js +32 -2
  36. package/dist/tests/coMap.test.js.map +1 -1
  37. package/dist/tests/coStream.test.js +28 -2
  38. package/dist/tests/coStream.test.js.map +1 -1
  39. package/dist/tests/coValueState.test.js +10 -143
  40. package/dist/tests/coValueState.test.js.map +1 -1
  41. package/dist/tests/sync.load.test.js +59 -1
  42. package/dist/tests/sync.load.test.js.map +1 -1
  43. package/dist/tests/sync.mesh.test.js +48 -1
  44. package/dist/tests/sync.mesh.test.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/coValue.ts +3 -0
  47. package/src/coValueCore.ts +1 -0
  48. package/src/coValueState.ts +67 -122
  49. package/src/coValues/coList.ts +51 -23
  50. package/src/coValues/coMap.ts +4 -0
  51. package/src/coValues/coPlainText.ts +1 -2
  52. package/src/coValues/coStream.ts +3 -1
  53. package/src/localNode.ts +29 -18
  54. package/src/tests/coList.test.ts +184 -2
  55. package/src/tests/coMap.test.ts +54 -2
  56. package/src/tests/coStream.test.ts +56 -2
  57. package/src/tests/coValueState.test.ts +9 -207
  58. package/src/tests/sync.load.test.ts +78 -1
  59. package/src/tests/sync.mesh.test.ts +67 -0
@@ -1 +1 @@
1
- {"version":3,"file":"sync.load.test.js","sourceRoot":"","sources":["../../src/tests/sync.load.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync.load.test.js","sourceRoot":"","sources":["../../src/tests/sync.load.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { beforeEach, describe, expect, test, vi } from "vitest";
2
2
  import { expectMap } from "../coValue";
3
- import { SyncMessagesLog, loadCoValueOrFail, setupTestNode, waitFor, } from "./testUtils";
3
+ import { SyncMessagesLog, blockMessageTypeOnOutgoingPeer, loadCoValueOrFail, setupTestNode, waitFor, } from "./testUtils";
4
4
  function setupMesh() {
5
5
  const coreServer = setupTestNode();
6
6
  coreServer.addStoragePeer({
@@ -243,5 +243,52 @@ describe("multiple clients syncing with the a cloud-like server mesh", () => {
243
243
  ]
244
244
  `);
245
245
  });
246
+ test("load returns the coValue as soon as one of the peers return the content", async () => {
247
+ const client = setupTestNode();
248
+ const coreServer = setupTestNode({
249
+ isSyncServer: true,
250
+ });
251
+ const { peerOnServer } = client.connectToSyncServer({
252
+ syncServerName: "core",
253
+ });
254
+ const storage = setupTestNode();
255
+ const { peer: storagePeer } = client.connectToSyncServer({
256
+ syncServerName: "storage",
257
+ syncServer: storage.node,
258
+ });
259
+ storagePeer.priority = 100;
260
+ const group = coreServer.node.createGroup();
261
+ const map = group.createMap();
262
+ map.set("hello", "world", "trusting");
263
+ const { peerState } = storage.connectToSyncServer({
264
+ ourName: "storage-of-client",
265
+ syncServerName: "core",
266
+ });
267
+ await loadCoValueOrFail(storage.node, map.id);
268
+ peerState.gracefulShutdown();
269
+ SyncMessagesLog.clear();
270
+ await new Promise((resolve) => setTimeout(resolve, 100));
271
+ map.set("hello", "updated", "trusting");
272
+ // Block the content message from the core peer to simulate the delay on response
273
+ blockMessageTypeOnOutgoingPeer(peerOnServer, "content");
274
+ const mapOnClient = await loadCoValueOrFail(client.node, map.id);
275
+ expect(SyncMessagesLog.getMessages({
276
+ Group: group.core,
277
+ Map: map.core,
278
+ })).toMatchInlineSnapshot(`
279
+ [
280
+ "client -> storage | LOAD Map sessions: empty",
281
+ "storage -> client | CONTENT Group header: true new: After: 0 New: 3",
282
+ "client -> storage | KNOWN Group sessions: header/3",
283
+ "storage -> client | CONTENT Map header: true new: After: 0 New: 1",
284
+ "client -> core | CONTENT Group header: true new: After: 0 New: 3",
285
+ "client -> storage | KNOWN Map sessions: header/1",
286
+ "core -> client | KNOWN Group sessions: header/3",
287
+ "client -> core | LOAD Map sessions: header/1",
288
+ "client -> core | CONTENT Map header: true new: After: 0 New: 1",
289
+ ]
290
+ `);
291
+ expect(mapOnClient.get("hello")).toEqual("world");
292
+ });
246
293
  });
247
294
  //# sourceMappingURL=sync.mesh.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync.mesh.test.js","sourceRoot":"","sources":["../../src/tests/sync.mesh.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,OAAO,GACR,MAAM,aAAa,CAAC;AAErB,SAAS,SAAS;IAChB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,UAAU,CAAC,cAAc,CAAC;QACxB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,SAAS,CAAC,mBAAmB,CAAC;QAC5B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI;KAC5B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,UAAU,CAAC,mBAAmB,CAAC;QAC7B,OAAO,EAAE,aAAa;QACtB,cAAc,EAAE,MAAM;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI;KAC5B,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC;AAED,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;IAEvB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,GAAG,SAAS,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;KAqBvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvD,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE5C,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1B,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,2DAA2D;QACpF,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAEhD,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;KAWvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;YAC1B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,GAAG,CAAC,EAAE,CACP,CAAC;QAEF,0EAA0E;QAC1E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE1D,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAEzD,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,OAAO,GAAG,SAAS,CACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,CACpE,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;QAErC,aAAa,CAAC,mBAAmB,CAAC;YAChC,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,YAAY,CAAC,mBAAmB,CAAC;YAC/B,cAAc,EAAE,aAAa;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;SACjC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAC/C,YAAY,CAAC,IAAI,EACjB,GAAG,CAAC,EAAE,CACP,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CAChD,aAAa,CAAC,IAAI,EAClB,GAAG,CAAC,EAAE,CACP,CAAC;QAEF,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExD,sDAAsD;QACtD,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,mBAAmB,CAC7D,qGAAqG,CACtG,CAAC;QAEF,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,2DAA2D;QACpF,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAEvD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExD,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;KAKvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"sync.mesh.test.js","sourceRoot":"","sources":["../../src/tests/sync.mesh.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,eAAe,EACf,8BAA8B,EAC9B,iBAAiB,EACjB,aAAa,EACb,OAAO,GACR,MAAM,aAAa,CAAC;AAErB,SAAS,SAAS;IAChB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,UAAU,CAAC,cAAc,CAAC;QACxB,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,aAAa,EAAE,CAAC;IAClC,SAAS,CAAC,mBAAmB,CAAC;QAC5B,OAAO,EAAE,YAAY;QACrB,cAAc,EAAE,MAAM;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI;KAC5B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,UAAU,CAAC,mBAAmB,CAAC;QAC7B,OAAO,EAAE,aAAa;QACtB,cAAc,EAAE,MAAM;QACtB,UAAU,EAAE,UAAU,CAAC,IAAI;KAC5B,CAAC,CAAC;IAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC/C,CAAC;AAED,QAAQ,CAAC,4DAA4D,EAAE,GAAG,EAAE;IAC1E,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC;IAEvB,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,GAAG,SAAS,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;KAqBvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvD,WAAW,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE5C,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE1B,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE1B,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,WAAW,EAAE,WAAW,CAAC,IAAI;YAC7B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6BvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAC9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAE7B,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,2DAA2D;QACpF,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAEhD,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;KAWvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAE/B,MAAM,CAAC,mBAAmB,CAAC;YACzB,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEtC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC;YAC1B,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,MAAM,iBAAiB,CAC7C,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,GAAG,CAAC,EAAE,CACP,CAAC;QAEF,0EAA0E;QAC1E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE1D,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,eAAe,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAEzD,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,OAAO,GAAG,SAAS,CACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,CACpE,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgCvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,aAAa,GAAG,aAAa,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,aAAa,EAAE,CAAC;QAErC,aAAa,CAAC,mBAAmB,CAAC;YAChC,cAAc,EAAE,YAAY;YAC5B,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAChC,CAAC,CAAC;QAEH,YAAY,CAAC,mBAAmB,CAAC;YAC/B,cAAc,EAAE,aAAa;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI;SACjC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAC/C,YAAY,CAAC,IAAI,EACjB,GAAG,CAAC,EAAE,CACP,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CAChD,aAAa,CAAC,IAAI,EAClB,GAAG,CAAC,EAAE,CACP,CAAC;QAEF,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExD,sDAAsD;QACtD,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,mBAAmB,CAC7D,qGAAqG,CACtG,CAAC;QAEF,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,2DAA2D;QACpF,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAEvD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAExD,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;KAKvB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,aAAa,CAAC;YAC/B,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC;YAClD,cAAc,EAAE,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAEhC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,mBAAmB,CAAC;YACvD,cAAc,EAAE,SAAS;YACzB,UAAU,EAAE,OAAO,CAAC,IAAI;SACzB,CAAC,CAAC;QAEH,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC;QAE3B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QAE9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAEtC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAChD,OAAO,EAAE,mBAAmB;YAC5B,cAAc,EAAE,MAAM;SACvB,CAAC,CAAC;QAEH,MAAM,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAE9C,SAAS,CAAC,gBAAgB,EAAE,CAAC;QAE7B,eAAe,CAAC,KAAK,EAAE,CAAC;QAExB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAEzD,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAExC,iFAAiF;QACjF,8BAA8B,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAExD,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAEjE,MAAM,CACJ,eAAe,CAAC,WAAW,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,GAAG,EAAE,GAAG,CAAC,IAAI;SACd,CAAC,CACH,CAAC,qBAAqB,CAAC;;;;;;;;;;;;KAYvB,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "type": "module",
27
27
  "license": "MIT",
28
- "version": "0.13.16",
28
+ "version": "0.13.17",
29
29
  "devDependencies": {
30
30
  "@opentelemetry/sdk-metrics": "^2.0.0",
31
31
  "typescript": "5.6.2"
package/src/coValue.ts CHANGED
@@ -33,11 +33,14 @@ export interface RawCoValue {
33
33
  *
34
34
  * Used internally by `useTelepathicData()` for reactive updates on changes to a `CoValue`. */
35
35
  subscribe(listener: (coValue: this) => void): () => void;
36
+
37
+ totalValidTransactions: number;
36
38
  }
37
39
 
38
40
  export class RawUnknownCoValue implements RawCoValue {
39
41
  id: CoID<this>;
40
42
  core: CoValueCore;
43
+ totalValidTransactions = 0;
41
44
 
42
45
  constructor(core: CoValueCore) {
43
46
  this.id = core.id as CoID<this>;
@@ -581,6 +581,7 @@ export class CoValueCore {
581
581
 
582
582
  getValidSortedTransactions(options?: {
583
583
  ignorePrivateTransactions: boolean;
584
+ knownTransactions: CoValueKnownState["sessions"];
584
585
  }): DecryptedTransaction[] {
585
586
  const allTransactions = this.getValidTransactions(options);
586
587
 
@@ -83,15 +83,22 @@ export class CoValueState {
83
83
  }
84
84
 
85
85
  async getCoValue() {
86
+ if (this.core) {
87
+ return this.core;
88
+ }
89
+
86
90
  if (this.highLevelState === "unavailable") {
87
91
  return "unavailable";
88
92
  }
89
93
 
90
- return new Promise<CoValueCore>((resolve) => {
94
+ return new Promise<CoValueCore | "unavailable">((resolve) => {
91
95
  const listener = (state: CoValueState) => {
92
96
  if (state.core) {
93
97
  resolve(state.core);
94
98
  this.removeListener(listener);
99
+ } else if (state.highLevelState === "unavailable") {
100
+ resolve("unavailable");
101
+ this.removeListener(listener);
95
102
  }
96
103
  };
97
104
 
@@ -104,122 +111,87 @@ export class CoValueState {
104
111
  return;
105
112
  }
106
113
 
107
- const loadAttempt = async (peersToLoadFrom: PeerState[]) => {
108
- const peersToActuallyLoadFrom = [];
109
- for (const peer of peersToLoadFrom) {
110
- const currentState = this.peers.get(peer.id);
111
-
112
- if (currentState?.type === "available") {
113
- continue;
114
- }
115
-
116
- if (currentState?.type === "errored") {
117
- continue;
118
- }
114
+ const peersToActuallyLoadFrom = [];
115
+ for (const peer of peers) {
116
+ const currentState = this.peers.get(peer.id);
119
117
 
120
- if (
121
- currentState?.type === "unavailable" ||
122
- currentState?.type === "pending"
123
- ) {
124
- if (peer.shouldRetryUnavailableCoValues()) {
125
- this.markPending(peer.id);
126
- peersToActuallyLoadFrom.push(peer);
127
- }
118
+ if (
119
+ currentState?.type === "available" ||
120
+ currentState?.type === "pending"
121
+ ) {
122
+ continue;
123
+ }
128
124
 
129
- continue;
130
- }
125
+ if (currentState?.type === "errored") {
126
+ continue;
127
+ }
131
128
 
132
- if (!currentState || currentState?.type === "unknown") {
129
+ if (currentState?.type === "unavailable") {
130
+ if (peer.shouldRetryUnavailableCoValues()) {
133
131
  this.markPending(peer.id);
134
132
  peersToActuallyLoadFrom.push(peer);
135
133
  }
134
+
135
+ continue;
136
136
  }
137
137
 
138
- for (const peer of peersToActuallyLoadFrom) {
139
- if (peer.closed) {
140
- this.markNotFoundInPeer(peer.id);
141
- continue;
142
- }
138
+ if (!currentState || currentState?.type === "unknown") {
139
+ this.markPending(peer.id);
140
+ peersToActuallyLoadFrom.push(peer);
141
+ }
142
+ }
143
143
 
144
- peer.pushOutgoingMessage({
145
- action: "load",
146
- ...(this.core ? this.core.knownState() : emptyKnownState(this.id)),
147
- });
148
-
149
- /**
150
- * Use a very long timeout for storage peers, because under pressure
151
- * they may take a long time to consume the messages queue
152
- *
153
- * TODO: Track errors on storage and do not rely on timeout
154
- */
155
- const timeoutDuration =
156
- peer.role === "storage"
157
- ? CO_VALUE_LOADING_CONFIG.TIMEOUT * 10
158
- : CO_VALUE_LOADING_CONFIG.TIMEOUT;
159
-
160
- const waitingForPeer = new Promise<void>((resolve) => {
161
- const markNotFound = () => {
162
- if (this.peers.get(peer.id)?.type === "pending") {
163
- this.markNotFoundInPeer(peer.id);
164
- }
165
- };
166
-
167
- const timeout = setTimeout(markNotFound, timeoutDuration);
168
- const removeCloseListener = peer.addCloseListener(markNotFound);
169
-
170
- const listener = (state: CoValueState) => {
171
- const peerState = state.peers.get(peer.id);
172
- if (
173
- state.isAvailable() || // might have become available from another peer e.g. through handleNewContent
174
- peerState?.type === "available" ||
175
- peerState?.type === "errored" ||
176
- peerState?.type === "unavailable"
177
- ) {
178
- state.removeListener(listener);
179
- removeCloseListener();
180
- clearTimeout(timeout);
181
- resolve();
182
- }
183
- };
184
-
185
- this.addListener(listener);
186
- });
187
-
188
- await waitingForPeer;
144
+ for (const peer of peersToActuallyLoadFrom) {
145
+ if (peer.closed) {
146
+ this.markNotFoundInPeer(peer.id);
147
+ continue;
189
148
  }
190
- };
191
149
 
192
- await loadAttempt(peers);
150
+ peer.pushOutgoingMessage({
151
+ action: "load",
152
+ ...(this.core ? this.core.knownState() : emptyKnownState(this.id)),
153
+ });
193
154
 
194
- if (this.isAvailable()) {
195
- return;
196
- }
155
+ /**
156
+ * Use a very long timeout for storage peers, because under pressure
157
+ * they may take a long time to consume the messages queue
158
+ *
159
+ * TODO: Track errors on storage and do not rely on timeout
160
+ */
161
+ const timeoutDuration =
162
+ peer.role === "storage"
163
+ ? CO_VALUE_LOADING_CONFIG.TIMEOUT * 10
164
+ : CO_VALUE_LOADING_CONFIG.TIMEOUT;
165
+
166
+ const waitingForPeer = new Promise<void>((resolve) => {
167
+ const markNotFound = () => {
168
+ if (this.peers.get(peer.id)?.type === "pending") {
169
+ this.markNotFoundInPeer(peer.id);
170
+ }
171
+ };
197
172
 
198
- // Retry loading from peers that have the retry flag enabled
199
- const peersWithRetry = peers.filter((p) =>
200
- p.shouldRetryUnavailableCoValues(),
201
- );
173
+ const timeout = setTimeout(markNotFound, timeoutDuration);
174
+ const removeCloseListener = peer.addCloseListener(markNotFound);
202
175
 
203
- if (peersWithRetry.length > 0) {
204
- const waitingForCoValue = new Promise<void>((resolve) => {
205
176
  const listener = (state: CoValueState) => {
206
- if (state.isAvailable()) {
177
+ const peerState = state.peers.get(peer.id);
178
+ if (
179
+ state.isAvailable() || // might have become available from another peer e.g. through handleNewContent
180
+ peerState?.type === "available" ||
181
+ peerState?.type === "errored" ||
182
+ peerState?.type === "unavailable"
183
+ ) {
184
+ state.removeListener(listener);
185
+ removeCloseListener();
186
+ clearTimeout(timeout);
207
187
  resolve();
208
- this.removeListener(listener);
209
188
  }
210
189
  };
211
190
 
212
191
  this.addListener(listener);
213
192
  });
214
193
 
215
- // We want to exit early if the coValue becomes available in between the retries
216
- await Promise.race([
217
- waitingForCoValue,
218
- runWithRetry(
219
- () => loadAttempt(peersWithRetry),
220
- CO_VALUE_LOADING_CONFIG.MAX_RETRIES,
221
- ),
222
- ]);
194
+ await waitingForPeer;
223
195
  }
224
196
  }
225
197
 
@@ -271,30 +243,3 @@ export class CoValueState {
271
243
  this.notifyListeners();
272
244
  }
273
245
  }
274
-
275
- async function runWithRetry<T>(fn: () => Promise<T>, maxRetries: number) {
276
- let retries = 1;
277
-
278
- while (retries < maxRetries) {
279
- /**
280
- * With maxRetries of 5 we should wait:
281
- * 300ms
282
- * 900ms
283
- * 2700ms
284
- * 8100ms
285
- */
286
- await sleep(3 ** retries * 100);
287
-
288
- const result = await fn();
289
-
290
- if (result === true) {
291
- return;
292
- }
293
-
294
- retries++;
295
- }
296
- }
297
-
298
- function sleep(ms: number) {
299
- return new Promise((resolve) => setTimeout(resolve, ms));
300
- }
@@ -2,6 +2,7 @@ import { CoID, RawCoValue } from "../coValue.js";
2
2
  import { CoValueCore } from "../coValueCore.js";
3
3
  import { AgentID, SessionID, TransactionID } from "../ids.js";
4
4
  import { JsonObject, JsonValue } from "../jsonValue.js";
5
+ import { CoValueKnownState } from "../sync.js";
5
6
  import { accountOrAgentIDfromSessionID } from "../typeUtils/accountOrAgentIDfromSessionID.js";
6
7
  import { isCoValue } from "../typeUtils/isCoValue.js";
7
8
  import { RawAccountID } from "./account.js";
@@ -41,7 +42,7 @@ type DeletionEntry = {
41
42
  deletionID: OpID;
42
43
  } & DeletionOpPayload;
43
44
 
44
- export class RawCoListView<
45
+ export class RawCoList<
45
46
  Item extends JsonValue = JsonValue,
46
47
  Meta extends JsonObject | null = null,
47
48
  > implements RawCoValue
@@ -81,26 +82,52 @@ export class RawCoListView<
81
82
  madeAt: number;
82
83
  opID: OpID;
83
84
  }[];
85
+ /** @internal */
86
+ totalValidTransactions = 0;
87
+ knownTransactions: CoValueKnownState["sessions"] = {};
88
+ lastValidTransaction: number | undefined;
84
89
 
85
90
  /** @internal */
86
91
  constructor(core: CoValueCore) {
87
92
  this.id = core.id as CoID<this>;
88
93
  this.core = core;
89
- this.afterStart = [];
90
- this.beforeEnd = [];
91
- this.insertions = {};
92
- this.deletionsByInsertion = {};
93
94
 
94
95
  this.insertions = {};
95
96
  this.deletionsByInsertion = {};
96
97
  this.afterStart = [];
97
98
  this.beforeEnd = [];
99
+ this.knownTransactions = {};
100
+
101
+ this.processNewTransactions();
102
+ }
103
+
104
+ processNewTransactions() {
105
+ const transactions = this.core.getValidSortedTransactions({
106
+ ignorePrivateTransactions: false,
107
+ knownTransactions: this.knownTransactions,
108
+ });
109
+
110
+ if (transactions.length === 0) {
111
+ return;
112
+ }
113
+
114
+ this.totalValidTransactions += transactions.length;
115
+ let lastValidTransaction: number | undefined = undefined;
116
+ let oldestValidTransaction: number | undefined = undefined;
117
+ this._cachedEntries = undefined;
118
+
119
+ for (const { txID, changes, madeAt } of transactions) {
120
+ lastValidTransaction = Math.max(lastValidTransaction ?? 0, madeAt);
121
+ oldestValidTransaction = Math.min(
122
+ oldestValidTransaction ?? Infinity,
123
+ madeAt,
124
+ );
125
+
126
+ this.knownTransactions[txID.sessionID] = Math.max(
127
+ this.knownTransactions[txID.sessionID] ?? 0,
128
+ txID.txIndex,
129
+ );
98
130
 
99
- for (const {
100
- txID,
101
- changes,
102
- madeAt,
103
- } of this.core.getValidSortedTransactions()) {
104
131
  for (const [changeIdx, changeUntyped] of changes.entries()) {
105
132
  const change = changeUntyped as ListOpPayload<Item>;
106
133
 
@@ -193,6 +220,16 @@ export class RawCoListView<
193
220
  }
194
221
  }
195
222
  }
223
+
224
+ if (
225
+ this.lastValidTransaction &&
226
+ oldestValidTransaction &&
227
+ oldestValidTransaction < this.lastValidTransaction
228
+ ) {
229
+ this.rebuildFromCore();
230
+ } else {
231
+ this.lastValidTransaction = lastValidTransaction;
232
+ }
196
233
  }
197
234
 
198
235
  /** @category 6. Meta */
@@ -407,15 +444,7 @@ export class RawCoListView<
407
444
  listener(content as this);
408
445
  });
409
446
  }
410
- }
411
447
 
412
- export class RawCoList<
413
- Item extends JsonValue = JsonValue,
414
- Meta extends JsonObject | null = JsonObject | null,
415
- >
416
- extends RawCoListView<Item, Meta>
417
- implements RawCoValue
418
- {
419
448
  /** Appends `item` after the item currently at index `after`.
420
449
  *
421
450
  * If `privacy` is `"private"` **(default)**, `item` is encrypted in the transaction, only readable by other members of the group this `CoList` belongs to. Not even sync servers can see the content in plaintext.
@@ -480,8 +509,7 @@ export class RawCoList<
480
509
  }
481
510
 
482
511
  this.core.makeTransaction(changes, privacy);
483
-
484
- this.rebuildFromCore();
512
+ this.processNewTransactions();
485
513
  }
486
514
 
487
515
  /**
@@ -528,7 +556,7 @@ export class RawCoList<
528
556
  privacy,
529
557
  );
530
558
 
531
- this.rebuildFromCore();
559
+ this.processNewTransactions();
532
560
  }
533
561
 
534
562
  /** Deletes the item at index `at`.
@@ -555,7 +583,7 @@ export class RawCoList<
555
583
  privacy,
556
584
  );
557
585
 
558
- this.rebuildFromCore();
586
+ this.processNewTransactions();
559
587
  }
560
588
 
561
589
  replace(
@@ -583,7 +611,7 @@ export class RawCoList<
583
611
  ],
584
612
  privacy,
585
613
  );
586
- this.rebuildFromCore();
614
+ this.processNewTransactions();
587
615
  }
588
616
 
589
617
  /** @internal */
@@ -60,6 +60,8 @@ export class RawCoMapView<
60
60
  /** @category 6. Meta */
61
61
  readonly _shape!: Shape;
62
62
 
63
+ totalValidTransactions = 0;
64
+
63
65
  /** @internal */
64
66
  constructor(
65
67
  core: CoValueCore,
@@ -133,6 +135,8 @@ export class RawCoMapView<
133
135
  }
134
136
  }
135
137
 
138
+ this.totalValidTransactions += newValidTransactions.length;
139
+
136
140
  for (const entries of changedEntries.values()) {
137
141
  entries.sort(this.core.compareTransactions);
138
142
  }
@@ -186,7 +186,6 @@ export class RawCoPlainText<
186
186
  idx = nextIdx;
187
187
  }
188
188
  this.core.makeTransaction(ops, privacy);
189
-
190
- this.rebuildFromCore();
189
+ this.processNewTransactions();
191
190
  }
192
191
  }
@@ -56,6 +56,7 @@ export class RawCoStreamView<
56
56
  };
57
57
  /** @internal */
58
58
  knownTransactions: CoValueKnownState["sessions"];
59
+ totalValidTransactions = 0;
59
60
  readonly _item!: Item;
60
61
 
61
62
  constructor(core: CoValueCore) {
@@ -96,7 +97,7 @@ export class RawCoStreamView<
96
97
  }
97
98
 
98
99
  /** @internal */
99
- protected processNewTransactions() {
100
+ processNewTransactions() {
100
101
  const changeEntries = new Set<CoStreamItem<Item>[]>();
101
102
 
102
103
  const newValidTransactions = this.core.getValidTransactions({
@@ -109,6 +110,7 @@ export class RawCoStreamView<
109
110
  }
110
111
 
111
112
  for (const { txID, madeAt, changes } of newValidTransactions) {
113
+ this.totalValidTransactions++;
112
114
  for (const changeUntyped of changes) {
113
115
  const change = changeUntyped as Item;
114
116
  let entries = this.items[txID.sessionID];
package/src/localNode.ts CHANGED
@@ -266,29 +266,40 @@ export class LocalNode {
266
266
  });
267
267
  }
268
268
 
269
- const entry = this.coValuesStore.get(id);
269
+ let retries = 0;
270
270
 
271
- if (
272
- entry.highLevelState === "unknown" ||
273
- entry.highLevelState === "unavailable"
274
- ) {
275
- const peers =
276
- this.syncManager.getServerAndStoragePeers(skipLoadingFromPeer);
271
+ while (true) {
272
+ const entry = this.coValuesStore.get(id);
277
273
 
278
- if (peers.length === 0) {
279
- return "unavailable";
280
- }
274
+ if (
275
+ entry.highLevelState === "unknown" ||
276
+ entry.highLevelState === "unavailable"
277
+ ) {
278
+ const peers =
279
+ this.syncManager.getServerAndStoragePeers(skipLoadingFromPeer);
281
280
 
282
- await entry.loadFromPeers(peers).catch((e) => {
283
- logger.error("Error loading from peers", {
284
- id,
285
- err: e,
281
+ if (peers.length === 0) {
282
+ return "unavailable";
283
+ }
284
+
285
+ entry.loadFromPeers(peers).catch((e) => {
286
+ logger.error("Error loading from peers", {
287
+ id,
288
+ err: e,
289
+ });
286
290
  });
287
- });
288
- }
291
+ }
292
+
293
+ const result = await entry.getCoValue();
289
294
 
290
- // TODO: What if the loading fails because in the previous loadCoValueCore call the Peer with the covalue was skipped?
291
- return entry.getCoValue();
295
+ if (result !== "unavailable" || retries >= 1) {
296
+ return result;
297
+ }
298
+
299
+ await new Promise((resolve) => setTimeout(resolve, 300));
300
+
301
+ retries++;
302
+ }
292
303
  }
293
304
 
294
305
  /**