@peerbit/shared-log 8.0.7 → 9.0.0-55cebfe

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 (79) hide show
  1. package/dist/benchmark/get-samples.d.ts +2 -0
  2. package/dist/benchmark/get-samples.d.ts.map +1 -0
  3. package/dist/benchmark/get-samples.js +69 -0
  4. package/dist/benchmark/get-samples.js.map +1 -0
  5. package/dist/benchmark/index.d.ts +2 -0
  6. package/dist/benchmark/index.d.ts.map +1 -0
  7. package/{lib/esm/__benchmark__ → dist/benchmark}/index.js +16 -16
  8. package/dist/benchmark/index.js.map +1 -0
  9. package/dist/benchmark/replication-prune.d.ts +2 -0
  10. package/dist/benchmark/replication-prune.d.ts.map +1 -0
  11. package/dist/benchmark/replication-prune.js +103 -0
  12. package/dist/benchmark/replication-prune.js.map +1 -0
  13. package/dist/benchmark/replication.d.ts +2 -0
  14. package/dist/benchmark/replication.d.ts.map +1 -0
  15. package/dist/benchmark/replication.js +91 -0
  16. package/dist/benchmark/replication.js.map +1 -0
  17. package/{lib/esm → dist/src}/blocks.d.ts +1 -0
  18. package/dist/src/blocks.d.ts.map +1 -0
  19. package/{lib/esm → dist/src}/blocks.js +1 -1
  20. package/dist/src/blocks.js.map +1 -0
  21. package/{lib/esm → dist/src}/cpu.d.ts +2 -1
  22. package/dist/src/cpu.d.ts.map +1 -0
  23. package/{lib/esm → dist/src}/cpu.js +2 -2
  24. package/dist/src/cpu.js.map +1 -0
  25. package/{lib/esm → dist/src}/exchange-heads.d.ts +2 -1
  26. package/dist/src/exchange-heads.d.ts.map +1 -0
  27. package/{lib/esm → dist/src}/exchange-heads.js +9 -7
  28. package/dist/src/exchange-heads.js.map +1 -0
  29. package/{lib/esm → dist/src}/index.d.ts +64 -54
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/{lib/esm → dist/src}/index.js +569 -399
  32. package/dist/src/index.js.map +1 -0
  33. package/{lib/esm → dist/src}/message.d.ts +1 -0
  34. package/dist/src/message.d.ts.map +1 -0
  35. package/{lib/esm → dist/src}/pid.d.ts +1 -0
  36. package/dist/src/pid.d.ts.map +1 -0
  37. package/{lib/esm → dist/src}/pid.js +20 -20
  38. package/dist/src/pid.js.map +1 -0
  39. package/dist/src/ranges.d.ts +10 -0
  40. package/dist/src/ranges.d.ts.map +1 -0
  41. package/dist/src/ranges.js +645 -0
  42. package/dist/src/ranges.js.map +1 -0
  43. package/dist/src/replication.d.ts +112 -0
  44. package/dist/src/replication.d.ts.map +1 -0
  45. package/dist/src/replication.js +348 -0
  46. package/dist/src/replication.js.map +1 -0
  47. package/dist/src/role.d.ts +2 -0
  48. package/dist/src/role.d.ts.map +1 -0
  49. package/dist/src/role.js +106 -0
  50. package/dist/src/role.js.map +1 -0
  51. package/package.json +70 -43
  52. package/src/blocks.ts +1 -1
  53. package/src/cpu.ts +7 -6
  54. package/src/exchange-heads.ts +19 -19
  55. package/src/index.ts +881 -609
  56. package/src/pid.ts +22 -21
  57. package/src/ranges.ts +692 -148
  58. package/src/replication.ts +271 -19
  59. package/src/role.ts +63 -83
  60. package/LICENSE +0 -202
  61. package/lib/esm/__benchmark__/index.d.ts +0 -1
  62. package/lib/esm/__benchmark__/index.js.map +0 -1
  63. package/lib/esm/blocks.js.map +0 -1
  64. package/lib/esm/cpu.js.map +0 -1
  65. package/lib/esm/exchange-heads.js.map +0 -1
  66. package/lib/esm/index.js.map +0 -1
  67. package/lib/esm/pid.js.map +0 -1
  68. package/lib/esm/ranges.d.ts +0 -12
  69. package/lib/esm/ranges.js +0 -247
  70. package/lib/esm/ranges.js.map +0 -1
  71. package/lib/esm/replication.d.ts +0 -53
  72. package/lib/esm/replication.js +0 -105
  73. package/lib/esm/replication.js.map +0 -1
  74. package/lib/esm/role.d.ts +0 -38
  75. package/lib/esm/role.js +0 -130
  76. package/lib/esm/role.js.map +0 -1
  77. package/src/__benchmark__/index.ts +0 -115
  78. /package/{lib/esm → dist/src}/message.js +0 -0
  79. /package/{lib/esm → dist/src}/message.js.map +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=get-samples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-samples.d.ts","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { Ed25519Keypair } from "@peerbit/crypto";
2
+ import { create as createIndex } from "@peerbit/indexer-sqlite3";
3
+ import B from "benchmark";
4
+ import { getSamples } from "../src/ranges.js";
5
+ import { ReplicationRangeIndexable } from "../src/replication.js";
6
+ // Run with "node --loader ts-node/esm ./benchmark/get-samples.ts"
7
+ let create = async (...rects) => {
8
+ const indices = await createIndex();
9
+ const index = await indices.init({ schema: ReplicationRangeIndexable });
10
+ await indices.start();
11
+ for (const rect of rects) {
12
+ await index.put(rect);
13
+ }
14
+ return [index, indices];
15
+ };
16
+ let a = (await Ed25519Keypair.create()).publicKey;
17
+ let b = (await Ed25519Keypair.create()).publicKey;
18
+ let c = (await Ed25519Keypair.create()).publicKey;
19
+ let ranges = [];
20
+ let rangeCount = 1000;
21
+ for (let i = 0; i < rangeCount; i++) {
22
+ ranges.push(...[
23
+ new ReplicationRangeIndexable({
24
+ publicKey: a,
25
+ length: 0.2 / rangeCount,
26
+ offset: (0 + rangeCount / i) % 1,
27
+ timestamp: 0n,
28
+ }),
29
+ new ReplicationRangeIndexable({
30
+ publicKey: b,
31
+ length: 0.4 / rangeCount,
32
+ offset: (0.333 + rangeCount / i) % 1,
33
+ timestamp: 0n,
34
+ }),
35
+ new ReplicationRangeIndexable({
36
+ publicKey: c,
37
+ length: 0.6 / rangeCount,
38
+ offset: (0.666 + rangeCount / i) % 1,
39
+ timestamp: 0n,
40
+ }),
41
+ new ReplicationRangeIndexable({
42
+ publicKey: c,
43
+ length: 0.6 / rangeCount,
44
+ offset: (0.666 + rangeCount / i) % 1,
45
+ timestamp: 0n,
46
+ }),
47
+ ]);
48
+ }
49
+ const [index, indices] = await create(...ranges);
50
+ const suite = new B.Suite();
51
+ suite
52
+ .add("getSamples", {
53
+ fn: async (deferred) => {
54
+ await getSamples(Math.random(), index, 2, 0);
55
+ deferred.resolve();
56
+ },
57
+ defer: true,
58
+ })
59
+ .on("cycle", (event) => {
60
+ console.log(String(event.target));
61
+ })
62
+ .on("error", (err) => {
63
+ throw err;
64
+ })
65
+ .on("complete", async function () {
66
+ await indices.drop();
67
+ })
68
+ .run();
69
+ //# sourceMappingURL=get-samples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-samples.js","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":""}
@@ -7,14 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import B from "benchmark";
11
10
  import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
11
+ import {} from "@peerbit/program";
12
+ import { Program } from "@peerbit/program";
12
13
  import { TestSession } from "@peerbit/test-utils";
13
- import { v4 as uuid } from "uuid";
14
+ import B from "benchmark";
14
15
  import crypto from "crypto";
15
- import { Program } from "@peerbit/program";
16
- import { SharedLog } from "../index.js";
17
- // Run with "node --loader ts-node/esm ./src/__benchmark__/index.ts"
16
+ import { v4 as uuid } from "uuid";
17
+ import { SharedLog } from "../src/index.js";
18
+ // Run with "node --loader ts-node/esm ./benchmark/index.ts"
18
19
  // put x 5,843 ops/sec ±4.50% (367 runs sampled)
19
20
  let Document = class Document {
20
21
  id;
@@ -61,8 +62,8 @@ let TestStore = class TestStore extends Program {
61
62
  ...options,
62
63
  encoding: {
63
64
  decoder: (bytes) => deserialize(bytes, Document),
64
- encoder: (data) => serialize(data)
65
- }
65
+ encoder: (data) => serialize(data),
66
+ },
66
67
  });
67
68
  }
68
69
  };
@@ -78,15 +79,14 @@ const peersCount = 1;
78
79
  const session = await TestSession.connected(peersCount);
79
80
  const store = new TestStore({
80
81
  logs: new SharedLog({
81
- id: new Uint8Array(32)
82
- })
82
+ id: new Uint8Array(32),
83
+ }),
83
84
  });
84
85
  const client = session.peers[0];
85
86
  await client.open(store, {
86
87
  args: {
87
- role: {
88
- type: "replicator",
89
- factor: 1
88
+ replicate: {
89
+ factor: 1,
90
90
  },
91
91
  trim: { type: "length", to: 100 },
92
92
  onChange: (change) => {
@@ -95,8 +95,8 @@ await client.open(store, {
95
95
  resolver.get(doc.id)();
96
96
  resolver.delete(doc.id);
97
97
  });
98
- }
99
- }
98
+ },
99
+ },
100
100
  });
101
101
  const resolver = new Map();
102
102
  const suite = new B.Suite();
@@ -107,7 +107,7 @@ suite
107
107
  id: uuid(),
108
108
  name: "hello",
109
109
  number: 1n,
110
- bytes: crypto.randomBytes(1200)
110
+ bytes: crypto.randomBytes(1200),
111
111
  });
112
112
  resolver.set(doc.id, () => {
113
113
  deferred.resolve();
@@ -115,7 +115,7 @@ suite
115
115
  await store.logs.append(doc, { meta: { next: [] } });
116
116
  },
117
117
  minSamples: 300,
118
- defer: true
118
+ defer: true,
119
119
  })
120
120
  .on("cycle", (event) => {
121
121
  console.log(String(event.target));
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replication-prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-prune.d.ts","sourceRoot":"","sources":["../../benchmark/replication-prune.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ import { deserialize } from "@dao-xyz/borsh";
2
+ import { Ed25519Keypair } from "@peerbit/crypto";
3
+ import { TestSession } from "@peerbit/test-utils";
4
+ import { waitForResolved } from "@peerbit/time";
5
+ import { expect } from "chai";
6
+ import { AbsoluteReplicas } from "../src/replication.js";
7
+ import { EventStore } from "../test/utils/stores/event-store.js";
8
+ // Run with "node --loader ts-node/esm ./benchmark/replication-prune.ts"
9
+ let session = await TestSession.connected(3, [
10
+ {
11
+ libp2p: {
12
+ peerId: await deserialize(new Uint8Array([
13
+ 0, 0, 235, 231, 83, 185, 72, 206, 24, 154, 182, 109, 204, 158, 45, 46,
14
+ 27, 15, 0, 173, 134, 194, 249, 74, 80, 151, 42, 219, 238, 163, 44, 6,
15
+ 244, 93, 0, 136, 33, 37, 186, 9, 233, 46, 16, 89, 240, 71, 145, 18,
16
+ 244, 158, 62, 37, 199, 0, 28, 223, 185, 206, 109, 168, 112, 65, 202,
17
+ 154, 27, 63, 15,
18
+ ]), Ed25519Keypair).toPeerId(),
19
+ },
20
+ },
21
+ {
22
+ libp2p: {
23
+ peerId: await deserialize(new Uint8Array([
24
+ 0, 0, 132, 56, 63, 72, 241, 115, 159, 73, 215, 187, 97, 34, 23, 12,
25
+ 215, 160, 74, 43, 159, 235, 35, 84, 2, 7, 71, 15, 5, 210, 231, 155,
26
+ 75, 37, 0, 15, 85, 72, 252, 153, 251, 89, 18, 236, 54, 84, 137, 152,
27
+ 227, 77, 127, 108, 252, 59, 138, 246, 221, 120, 187, 239, 56, 174,
28
+ 184, 34, 141, 45, 242,
29
+ ]), Ed25519Keypair).toPeerId(),
30
+ },
31
+ },
32
+ {
33
+ libp2p: {
34
+ peerId: await deserialize(new Uint8Array([
35
+ 0, 0, 193, 202, 95, 29, 8, 42, 238, 188, 32, 59, 103, 187, 192, 93,
36
+ 202, 183, 249, 50, 240, 175, 84, 87, 239, 94, 92, 9, 207, 165, 88, 38,
37
+ 234, 216, 0, 183, 243, 219, 11, 211, 12, 61, 235, 154, 68, 205, 124,
38
+ 143, 217, 234, 222, 254, 15, 18, 64, 197, 13, 62, 84, 62, 133, 97, 57,
39
+ 150, 187, 247, 215,
40
+ ]), Ed25519Keypair).toPeerId(),
41
+ },
42
+ },
43
+ ]);
44
+ let db1, db2, db3;
45
+ const init = async (min, max) => {
46
+ db1 = await session.peers[0].open(new EventStore(), {
47
+ args: {
48
+ replicas: {
49
+ min,
50
+ max,
51
+ },
52
+ replicate: false,
53
+ },
54
+ });
55
+ db2 = (await EventStore.open(db1.address, session.peers[1], {
56
+ args: {
57
+ replicas: {
58
+ min,
59
+ max,
60
+ },
61
+ },
62
+ }));
63
+ db3 = (await EventStore.open(db1.address, session.peers[2], {
64
+ args: {
65
+ replicas: {
66
+ min,
67
+ max,
68
+ },
69
+ },
70
+ }));
71
+ await db1.waitFor(session.peers[1].peerId);
72
+ await db2.waitFor(session.peers[0].peerId);
73
+ await db2.waitFor(session.peers[2].peerId);
74
+ await db3.waitFor(session.peers[0].peerId);
75
+ };
76
+ let minReplicas = 1;
77
+ let maxReplicas = 1;
78
+ await init(minReplicas, maxReplicas);
79
+ const entryCount = 1e3;
80
+ for (let i = 0; i < entryCount; i++) {
81
+ await db1.add("hello", {
82
+ replicas: new AbsoluteReplicas(100), // will be overriden by 'maxReplicas' above
83
+ meta: { next: [] },
84
+ });
85
+ }
86
+ try {
87
+ await waitForResolved(() => {
88
+ expect(db1.log.log.length).equal(0); // because db1 is not replicating at all, but just pruning once it knows entries are replicated elsewhere
89
+ let total = db2.log.log.length + db3.log.log.length;
90
+ expect(total).greaterThanOrEqual(entryCount);
91
+ expect(total).lessThan(entryCount * 2);
92
+ expect(db2.log.log.length).greaterThan(entryCount * 0.2);
93
+ expect(db3.log.log.length).greaterThan(entryCount * 0.2);
94
+ }, { timeout: 2e4 });
95
+ }
96
+ catch (error) {
97
+ console.log("Failed to assert replication done");
98
+ console.log([db1, db2, db3].map((x) => x.log.log.length));
99
+ }
100
+ finally {
101
+ await session.stop();
102
+ }
103
+ //# sourceMappingURL=replication-prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-prune.js","sourceRoot":"","sources":["../../benchmark/replication-prune.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.d.ts","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ import { deserialize } from "@dao-xyz/borsh";
2
+ import { Ed25519Keypair } from "@peerbit/crypto";
3
+ import { TestSession } from "@peerbit/test-utils";
4
+ import { AbortError,
5
+ /* waitFor */
6
+ } from "@peerbit/time";
7
+ import B from "benchmark";
8
+ import { v4 as uuid } from "uuid";
9
+ import { EventStore } from "../test/utils/stores/event-store.js";
10
+ // Run with "node --loader ts-node/esm ./benchmark/replication.ts"
11
+ let session = await TestSession.connected(2, [
12
+ {
13
+ libp2p: {
14
+ peerId: await deserialize(new Uint8Array([
15
+ 0, 0, 235, 231, 83, 185, 72, 206, 24, 154, 182, 109, 204, 158, 45, 46,
16
+ 27, 15, 0, 173, 134, 194, 249, 74, 80, 151, 42, 219, 238, 163, 44, 6,
17
+ 244, 93, 0, 136, 33, 37, 186, 9, 233, 46, 16, 89, 240, 71, 145, 18,
18
+ 244, 158, 62, 37, 199, 0, 28, 223, 185, 206, 109, 168, 112, 65, 202,
19
+ 154, 27, 63, 15,
20
+ ]), Ed25519Keypair).toPeerId(),
21
+ },
22
+ },
23
+ {
24
+ libp2p: {
25
+ peerId: await deserialize(new Uint8Array([
26
+ 0, 0, 132, 56, 63, 72, 241, 115, 159, 73, 215, 187, 97, 34, 23, 12,
27
+ 215, 160, 74, 43, 159, 235, 35, 84, 2, 7, 71, 15, 5, 210, 231, 155,
28
+ 75, 37, 0, 15, 85, 72, 252, 153, 251, 89, 18, 236, 54, 84, 137, 152,
29
+ 227, 77, 127, 108, 252, 59, 138, 246, 221, 120, 187, 239, 56, 174,
30
+ 184, 34, 141, 45, 242,
31
+ ]), Ed25519Keypair).toPeerId(),
32
+ },
33
+ },
34
+ ]);
35
+ let db1, db2;
36
+ let abortController = new AbortController();
37
+ let resolvers = new Map();
38
+ db1 = await session.peers[0].open(new EventStore(), {
39
+ args: {
40
+ replicate: {
41
+ factor: 1,
42
+ },
43
+ },
44
+ });
45
+ db2 = (await EventStore.open(db1.address, session.peers[1], {
46
+ args: {
47
+ replicate: {
48
+ factor: 1,
49
+ },
50
+ onChange: async (change) => {
51
+ for (const entry of change.added) {
52
+ try {
53
+ resolvers
54
+ .get(entry.hash) /* || await waitFor(() => resolvers.get(entry.hash), { signal: abortController.signal }))? */
55
+ .resolve();
56
+ resolvers.delete(entry.hash);
57
+ }
58
+ catch (error) {
59
+ if (error instanceof AbortError) {
60
+ return;
61
+ }
62
+ return;
63
+ /* throw error; */
64
+ }
65
+ }
66
+ },
67
+ },
68
+ }));
69
+ await db1.waitFor(session.peers[1].peerId);
70
+ await db2.waitFor(session.peers[0].peerId);
71
+ const suite = new B.Suite();
72
+ suite
73
+ .add("replication", {
74
+ fn: async (deferred) => {
75
+ const { entry } = await db1.add(uuid(), { meta: { next: [] } });
76
+ resolvers.set(entry.hash, deferred);
77
+ },
78
+ defer: true,
79
+ })
80
+ .on("cycle", (event) => {
81
+ console.log(String(event.target));
82
+ })
83
+ .on("error", (err) => {
84
+ throw err;
85
+ })
86
+ .on("complete", async function () {
87
+ await abortController.abort();
88
+ await session.stop();
89
+ })
90
+ .run();
91
+ //# sourceMappingURL=replication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.js","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,4 @@ export declare class BlocksMessage extends TransportMessage {
4
4
  message: BlockRequest | BlockResponse;
5
5
  constructor(message: BlockRequest | BlockResponse);
6
6
  }
7
+ //# sourceMappingURL=blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":"AACA,OAAO,EACN,YAAY,EACZ,aAAa,EAEb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,qBACa,aAAc,SAAQ,gBAAgB;IAElD,OAAO,EAAE,YAAY,GAAG,aAAa,CAAC;gBAE1B,OAAO,EAAE,YAAY,GAAG,aAAa;CAKjD"}
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { field, variant } from "@dao-xyz/borsh";
11
- import { BlockMessage as IBlockMessage } from "@peerbit/blocks";
11
+ import { BlockRequest, BlockResponse, BlockMessage as IBlockMessage, } from "@peerbit/blocks";
12
12
  import { TransportMessage } from "./message.js";
13
13
  let BlocksMessage = class BlocksMessage extends TransportMessage {
14
14
  message;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,YAAY,EACZ,aAAa,EACb,YAAY,IAAI,aAAa,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGzC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,gBAAgB;IAElD,OAAO,CAA+B;IAEtC,YAAY,OAAqC;QAChD,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD,CAAA;AAPA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;8CACO;AAF1B,aAAa;IADzB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,aAAa,CASzB"}
@@ -15,7 +15,7 @@ export declare class CPUUsageIntervalLag implements CPUUsage {
15
15
  upperBoundLag: number;
16
16
  };
17
17
  dt: number[];
18
- interval: ReturnType<typeof setInterval>;
18
+ interval?: ReturnType<typeof setInterval>;
19
19
  sum: number;
20
20
  constructor(properties?: {
21
21
  windowSize: number;
@@ -27,3 +27,4 @@ export declare class CPUUsageIntervalLag implements CPUUsage {
27
27
  start(): void;
28
28
  stop(): void;
29
29
  }
30
+ //# sourceMappingURL=cpu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpu.d.ts","sourceRoot":"","sources":["../../src/cpu.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACxB,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,IAAI,CAAC,IAAI,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;GAIG;AAEH,qBAAa,mBAAoB,YAAW,QAAQ;IAMlD,QAAQ,CAAC,UAAU,EAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACtB;IATF,EAAE,EAAE,MAAM,EAAE,CAAM;IAClB,QAAQ,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC1C,GAAG,EAAE,MAAM,CAAK;gBAGN,UAAU,GAAE;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACuC;IAE/D,OAAO,CAAC,IAAI;IAIZ,KAAK;IASL,KAAK;IAiBL,IAAI;CAGJ"}
@@ -5,9 +5,9 @@
5
5
  */
6
6
  export class CPUUsageIntervalLag {
7
7
  properties;
8
- dt;
8
+ dt = [];
9
9
  interval;
10
- sum;
10
+ sum = 0;
11
11
  constructor(properties = { windowSize: 50, intervalTime: 100, upperBoundLag: 1000 }) {
12
12
  this.properties = properties;
13
13
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../src/cpu.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AAEH,MAAM,OAAO,mBAAmB;IAMrB;IALV,EAAE,GAAa,EAAE,CAAC;IAClB,QAAQ,CAAkC;IAC1C,GAAG,GAAW,CAAC,CAAC;IAEhB,YACU,aAIL,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;QAJrD,eAAU,GAAV,UAAU,CAI2C;IAC5D,CAAC;IACI,IAAI;QACX,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,KAAK;QACJ,OAAO,CACN,IAAI,CAAC,GAAG,CACP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,EACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAC7B,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CACjC,CAAC,CAAC,8CAA8C;IAClD,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,UAAU,CAAC,YAAY,CAC5B,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAErE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAG,CAAC;YAC7B,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,GAAG,GAAG,CAAC;QACV,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,IAAI;QACH,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACD"}
@@ -1,7 +1,7 @@
1
+ import { Cache } from "@peerbit/cache";
1
2
  import { Entry } from "@peerbit/log";
2
3
  import { Log } from "@peerbit/log";
3
4
  import { TransportMessage } from "./message.js";
4
- import { Cache } from "@peerbit/cache";
5
5
  /**
6
6
  * This thing allows use to faster sync since we can provide
7
7
  * references that can be read concurrently to
@@ -48,3 +48,4 @@ export declare class ResponseIPrune extends TransportMessage {
48
48
  }
49
49
  export declare const createExchangeHeadsMessages: (log: Log<any>, heads: Entry<any>[], gidParentCache: Cache<Entry<any>[]>) => Promise<ExchangeHeadsMessage<any>[]>;
50
50
  export declare const allEntriesWithUniqueGids: (log: Log<any>, entry: Entry<any>, gidParentCache: Cache<Entry<any>[]>) => Promise<Entry<any>[]>;
51
+ //# sourceMappingURL=exchange-heads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-heads.d.ts","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAgC,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD;;;;GAIG;AACH,qBACa,aAAa,CAAC,CAAC;IAE3B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEX,UAAU,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE;CAInE;AAED,qBACa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IAE5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAG1B,QAAQ,EAAE,UAAU,CAAqB;gBAE7B,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;KAAE;CAIhD;AAED,qBACa,gBAAiB,SAAQ,gBAAgB;IAErD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,iBAAkB,SAAQ,gBAAgB;IAEtD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,aAAc,SAAQ,gBAAgB;IAGlD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,cAAe,SAAQ,gBAAgB;IAGnD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAID,eAAO,MAAM,2BAA2B,QAClC,GAAG,CAAC,GAAG,CAAC,SACN,KAAK,CAAC,GAAG,CAAC,EAAE,kBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KACjC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAiDrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAC/B,GAAG,CAAC,GAAG,CAAC,SACN,KAAK,CAAC,GAAG,CAAC,kBACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KACjC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAsCtB,CAAC"}
@@ -7,8 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { variant, field, vec, fixedArray } from "@dao-xyz/borsh";
10
+ import { field, fixedArray, variant, vec } from "@dao-xyz/borsh";
11
+ import { Cache } from "@peerbit/cache";
11
12
  import { Entry, EntryType } from "@peerbit/log";
13
+ import { Log } from "@peerbit/log";
12
14
  import { logger as loggerFn } from "@peerbit/logger";
13
15
  import { TransportMessage } from "./message.js";
14
16
  const logger = loggerFn({ module: "exchange-heads" });
@@ -147,13 +149,13 @@ export const createExchangeHeadsMessages = async (log, heads, gidParentCache) =>
147
149
  }
148
150
  current.push(new EntryWithRefs({
149
151
  entry: fromHead,
150
- gidRefrences: refs.map((x) => x.meta.gid)
152
+ gidRefrences: refs.map((x) => x.meta.gid),
151
153
  }));
152
154
  size += fromHead.size;
153
155
  if (size > MAX_EXCHANGE_MESSAGE_SIZE) {
154
156
  size = 0;
155
157
  messages.push(new ExchangeHeadsMessage({
156
- heads: current
158
+ heads: current,
157
159
  }));
158
160
  current = [];
159
161
  continue;
@@ -161,7 +163,7 @@ export const createExchangeHeadsMessages = async (log, heads, gidParentCache) =>
161
163
  }
162
164
  if (current.length > 0) {
163
165
  messages.push(new ExchangeHeadsMessage({
164
- heads: current
166
+ heads: current,
165
167
  }));
166
168
  }
167
169
  return messages;
@@ -181,13 +183,13 @@ export const allEntriesWithUniqueGids = async (log, entry, gidParentCache) => {
181
183
  map.set(element.meta.gid, element);
182
184
  if (element.meta.type === EntryType.APPEND) {
183
185
  for (const next of element.meta.next) {
184
- const indexedEntry = log.entryIndex.getShallow(next);
186
+ const indexedEntry = await log.entryIndex.getShallow(next);
185
187
  if (!indexedEntry) {
186
188
  logger.error("Failed to find indexed entry for hash when fetching references: " +
187
189
  next);
188
190
  }
189
191
  else {
190
- nexts.push(indexedEntry);
192
+ nexts.push(indexedEntry.value);
191
193
  }
192
194
  }
193
195
  }
@@ -196,7 +198,7 @@ export const allEntriesWithUniqueGids = async (log, entry, gidParentCache) => {
196
198
  }
197
199
  }
198
200
  const value = [
199
- ...(await Promise.all([...map.values()].map((x) => log.entryIndex.get(x.hash))))
201
+ ...(await Promise.all([...map.values()].map((x) => log.entryIndex.get(x.hash)))),
200
202
  ].filter((x) => !!x);
201
203
  gidParentCache.add(entry.hash, value);
202
204
  return value;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange-heads.js","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"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"}