@peerbit/shared-log 13.2.22 → 13.2.24

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 (100) hide show
  1. package/dist/src/index.d.ts +12 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +107 -12
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/leader-plan-cache.d.ts +33 -0
  6. package/dist/src/leader-plan-cache.d.ts.map +1 -0
  7. package/dist/src/leader-plan-cache.js +49 -0
  8. package/dist/src/leader-plan-cache.js.map +1 -0
  9. package/dist/src/ranges.d.ts +2 -2
  10. package/dist/src/ranges.d.ts.map +1 -1
  11. package/dist/src/ranges.js +10 -8
  12. package/dist/src/ranges.js.map +1 -1
  13. package/package.json +21 -20
  14. package/src/index.ts +171 -12
  15. package/src/leader-plan-cache.ts +61 -0
  16. package/src/ranges.ts +22 -16
  17. package/dist/benchmark/adaptive-ingest.d.ts +0 -2
  18. package/dist/benchmark/adaptive-ingest.d.ts.map +0 -1
  19. package/dist/benchmark/adaptive-ingest.js +0 -275
  20. package/dist/benchmark/adaptive-ingest.js.map +0 -1
  21. package/dist/benchmark/get-samples.d.ts +0 -2
  22. package/dist/benchmark/get-samples.d.ts.map +0 -1
  23. package/dist/benchmark/get-samples.js +0 -194
  24. package/dist/benchmark/get-samples.js.map +0 -1
  25. package/dist/benchmark/index.d.ts +0 -2
  26. package/dist/benchmark/index.d.ts.map +0 -1
  27. package/dist/benchmark/index.js +0 -224
  28. package/dist/benchmark/index.js.map +0 -1
  29. package/dist/benchmark/join-backfill-repair.d.ts +0 -2
  30. package/dist/benchmark/join-backfill-repair.d.ts.map +0 -1
  31. package/dist/benchmark/join-backfill-repair.js +0 -288
  32. package/dist/benchmark/join-backfill-repair.js.map +0 -1
  33. package/dist/benchmark/memory/child.d.ts +0 -2
  34. package/dist/benchmark/memory/child.d.ts.map +0 -1
  35. package/dist/benchmark/memory/child.js +0 -204
  36. package/dist/benchmark/memory/child.js.map +0 -1
  37. package/dist/benchmark/memory/index.d.ts +0 -2
  38. package/dist/benchmark/memory/index.d.ts.map +0 -1
  39. package/dist/benchmark/memory/index.js +0 -81
  40. package/dist/benchmark/memory/index.js.map +0 -1
  41. package/dist/benchmark/memory/utils.d.ts +0 -13
  42. package/dist/benchmark/memory/utils.d.ts.map +0 -1
  43. package/dist/benchmark/memory/utils.js +0 -2
  44. package/dist/benchmark/memory/utils.js.map +0 -1
  45. package/dist/benchmark/native-graph.d.ts +0 -2
  46. package/dist/benchmark/native-graph.d.ts.map +0 -1
  47. package/dist/benchmark/native-graph.js +0 -359
  48. package/dist/benchmark/native-graph.js.map +0 -1
  49. package/dist/benchmark/network-preset-e2e.d.ts +0 -2
  50. package/dist/benchmark/network-preset-e2e.d.ts.map +0 -1
  51. package/dist/benchmark/network-preset-e2e.js +0 -497
  52. package/dist/benchmark/network-preset-e2e.js.map +0 -1
  53. package/dist/benchmark/partial-sync.d.ts +0 -3
  54. package/dist/benchmark/partial-sync.d.ts.map +0 -1
  55. package/dist/benchmark/partial-sync.js +0 -121
  56. package/dist/benchmark/partial-sync.js.map +0 -1
  57. package/dist/benchmark/pid-convergence.d.ts +0 -2
  58. package/dist/benchmark/pid-convergence.d.ts.map +0 -1
  59. package/dist/benchmark/pid-convergence.js +0 -138
  60. package/dist/benchmark/pid-convergence.js.map +0 -1
  61. package/dist/benchmark/rateless-iblt-sender-startsync.d.ts +0 -2
  62. package/dist/benchmark/rateless-iblt-sender-startsync.d.ts.map +0 -1
  63. package/dist/benchmark/rateless-iblt-sender-startsync.js +0 -104
  64. package/dist/benchmark/rateless-iblt-sender-startsync.js.map +0 -1
  65. package/dist/benchmark/rateless-iblt-startsync-cache.d.ts +0 -2
  66. package/dist/benchmark/rateless-iblt-startsync-cache.d.ts.map +0 -1
  67. package/dist/benchmark/rateless-iblt-startsync-cache.js +0 -112
  68. package/dist/benchmark/rateless-iblt-startsync-cache.js.map +0 -1
  69. package/dist/benchmark/receive-prune.d.ts +0 -2
  70. package/dist/benchmark/receive-prune.d.ts.map +0 -1
  71. package/dist/benchmark/receive-prune.js +0 -818
  72. package/dist/benchmark/receive-prune.js.map +0 -1
  73. package/dist/benchmark/replication-prune.d.ts +0 -2
  74. package/dist/benchmark/replication-prune.d.ts.map +0 -1
  75. package/dist/benchmark/replication-prune.js +0 -105
  76. package/dist/benchmark/replication-prune.js.map +0 -1
  77. package/dist/benchmark/replication.d.ts +0 -2
  78. package/dist/benchmark/replication.d.ts.map +0 -1
  79. package/dist/benchmark/replication.js +0 -88
  80. package/dist/benchmark/replication.js.map +0 -1
  81. package/dist/benchmark/sync-batch-sweep.d.ts +0 -2
  82. package/dist/benchmark/sync-batch-sweep.d.ts.map +0 -1
  83. package/dist/benchmark/sync-batch-sweep.js +0 -353
  84. package/dist/benchmark/sync-batch-sweep.js.map +0 -1
  85. package/dist/benchmark/sync-catchup.d.ts +0 -2
  86. package/dist/benchmark/sync-catchup.d.ts.map +0 -1
  87. package/dist/benchmark/sync-catchup.js +0 -277
  88. package/dist/benchmark/sync-catchup.js.map +0 -1
  89. package/dist/benchmark/sync-phase-profile.d.ts +0 -2
  90. package/dist/benchmark/sync-phase-profile.d.ts.map +0 -1
  91. package/dist/benchmark/sync-phase-profile.js +0 -303
  92. package/dist/benchmark/sync-phase-profile.js.map +0 -1
  93. package/dist/benchmark/to-rebalance.d.ts +0 -2
  94. package/dist/benchmark/to-rebalance.d.ts.map +0 -1
  95. package/dist/benchmark/to-rebalance.js +0 -117
  96. package/dist/benchmark/to-rebalance.js.map +0 -1
  97. package/dist/benchmark/utils.d.ts +0 -24
  98. package/dist/benchmark/utils.d.ts.map +0 -1
  99. package/dist/benchmark/utils.js +0 -47
  100. package/dist/benchmark/utils.js.map +0 -1
@@ -1,204 +0,0 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- // this benchmark will test how much memory is used to store 1m documents
36
- import { field, option, variant } from "@dao-xyz/borsh";
37
- import { BORSH_ENCODING } from "@peerbit/log";
38
- import { Program } from "@peerbit/program";
39
- import { TestSession } from "@peerbit/test-utils";
40
- import { waitFor } from "@peerbit/time";
41
- import crypto from "crypto";
42
- import path from "path";
43
- import { v4 as uuid } from "uuid";
44
- import { SharedLog } from "../../src/index.js";
45
- // Run with "node --loader ts-node/esm ./benchmark/memory/index.ts"
46
- // handle io from process and parent
47
- let Document = (() => {
48
- let _classDecorators = [variant("document")];
49
- let _classDescriptor;
50
- let _classExtraInitializers = [];
51
- let _classThis;
52
- let _id_decorators;
53
- let _id_initializers = [];
54
- let _id_extraInitializers = [];
55
- let _name_decorators;
56
- let _name_initializers = [];
57
- let _name_extraInitializers = [];
58
- let _number_decorators;
59
- let _number_initializers = [];
60
- let _number_extraInitializers = [];
61
- let _bytes_decorators;
62
- let _bytes_initializers = [];
63
- let _bytes_extraInitializers = [];
64
- var Document = class {
65
- static { _classThis = this; }
66
- static {
67
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
68
- _id_decorators = [field({ type: "string" })];
69
- _name_decorators = [field({ type: option("string") })];
70
- _number_decorators = [field({ type: option("u64") })];
71
- _bytes_decorators = [field({ type: Uint8Array })];
72
- __esDecorate(null, null, _id_decorators, { kind: "field", name: "id", static: false, private: false, access: { has: obj => "id" in obj, get: obj => obj.id, set: (obj, value) => { obj.id = value; } }, metadata: _metadata }, _id_initializers, _id_extraInitializers);
73
- __esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
74
- __esDecorate(null, null, _number_decorators, { kind: "field", name: "number", static: false, private: false, access: { has: obj => "number" in obj, get: obj => obj.number, set: (obj, value) => { obj.number = value; } }, metadata: _metadata }, _number_initializers, _number_extraInitializers);
75
- __esDecorate(null, null, _bytes_decorators, { kind: "field", name: "bytes", static: false, private: false, access: { has: obj => "bytes" in obj, get: obj => obj.bytes, set: (obj, value) => { obj.bytes = value; } }, metadata: _metadata }, _bytes_initializers, _bytes_extraInitializers);
76
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
77
- Document = _classThis = _classDescriptor.value;
78
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
79
- __runInitializers(_classThis, _classExtraInitializers);
80
- }
81
- id = __runInitializers(this, _id_initializers, void 0);
82
- name = (__runInitializers(this, _id_extraInitializers), __runInitializers(this, _name_initializers, void 0));
83
- number = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _number_initializers, void 0));
84
- bytes = (__runInitializers(this, _number_extraInitializers), __runInitializers(this, _bytes_initializers, void 0));
85
- constructor(opts) {
86
- __runInitializers(this, _bytes_extraInitializers);
87
- this.id = opts.id;
88
- this.name = opts.name;
89
- this.number = opts.number;
90
- this.bytes = opts.bytes;
91
- }
92
- };
93
- return Document = _classThis;
94
- })();
95
- let TestStore = (() => {
96
- let _classDecorators = [variant("test_documents")];
97
- let _classDescriptor;
98
- let _classExtraInitializers = [];
99
- let _classThis;
100
- let _classSuper = Program;
101
- let _docs_decorators;
102
- let _docs_initializers = [];
103
- let _docs_extraInitializers = [];
104
- var TestStore = class extends _classSuper {
105
- static { _classThis = this; }
106
- static {
107
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
108
- _docs_decorators = [field({ type: SharedLog })];
109
- __esDecorate(null, null, _docs_decorators, { kind: "field", name: "docs", static: false, private: false, access: { has: obj => "docs" in obj, get: obj => obj.docs, set: (obj, value) => { obj.docs = value; } }, metadata: _metadata }, _docs_initializers, _docs_extraInitializers);
110
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
111
- TestStore = _classThis = _classDescriptor.value;
112
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
113
- __runInitializers(_classThis, _classExtraInitializers);
114
- }
115
- docs = __runInitializers(this, _docs_initializers, void 0);
116
- constructor(properties) {
117
- super();
118
- __runInitializers(this, _docs_extraInitializers);
119
- this.docs = properties.docs;
120
- }
121
- async open(options) {
122
- await this.docs.open({ ...options, encoding: BORSH_ENCODING(Document) });
123
- }
124
- };
125
- return TestStore = _classThis;
126
- })();
127
- const sendReady = () => process.send(JSON.stringify({ type: "ready" }));
128
- let session;
129
- try {
130
- let store1 = undefined;
131
- let store2 = undefined;
132
- let totalInsertCount = 0;
133
- process.on("message", async (message) => {
134
- if (message.type === "init") {
135
- session = await TestSession.connected(2, [
136
- {
137
- directory: message.storage === "in-memory"
138
- ? undefined
139
- : path.join("./tmp", uuid()),
140
- },
141
- {
142
- directory: message.storage === "in-memory"
143
- ? undefined
144
- : path.join("./tmp", uuid()),
145
- },
146
- ]);
147
- store1 = new TestStore({
148
- docs: new SharedLog(),
149
- });
150
- const client = session.peers[0];
151
- store1 = await client.open(store1, {
152
- args: {
153
- replicate: {
154
- factor: 1,
155
- },
156
- },
157
- });
158
- store2 = await session.peers[1].open(store1.clone(), {
159
- args: {
160
- replicate: {
161
- factor: 1,
162
- },
163
- },
164
- });
165
- }
166
- else if (message.type === "insert") {
167
- for (let i = 0; i < message.docs; i++) {
168
- totalInsertCount++;
169
- const doc = new Document({
170
- id: uuid(),
171
- name: "hello",
172
- number: 1n,
173
- bytes: crypto.randomBytes(message.size ?? 1024),
174
- });
175
- await store1.docs.append(doc, { meta: { next: [] }, target: "none" });
176
- await store1?.docs.rebalanceAll({ clearCache: true }); // force replication to happen instead of sending the appending entry directly to the remote peer
177
- // this will trigger the most memory intesive operation
178
- }
179
- await waitFor(() => store2.docs.log.length === totalInsertCount);
180
- }
181
- else if (message.type === "done") {
182
- process.exit(0);
183
- }
184
- sendReady();
185
- });
186
- sendReady();
187
- // suspend the process until we receive a 'done' from parent
188
- await new Promise((resolve) => {
189
- let listener = (message) => {
190
- if (message.type === "done") {
191
- process.off("message", listener);
192
- resolve();
193
- }
194
- };
195
- process.on("message", listener);
196
- });
197
- }
198
- catch (error) {
199
- throw new Error("Failed to insert: " + error?.message);
200
- }
201
- finally {
202
- await session.stop();
203
- }
204
- //# sourceMappingURL=child.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"child.js","sourceRoot":"","sources":["../../../benchmark/memory/child.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../benchmark/memory/index.ts"],"names":[],"mappings":""}
@@ -1,81 +0,0 @@
1
- // Run with "node --loader ts-node/esm ./benchmark/memory/index.ts"
2
- // run child.ts with ts-node in a subprocess so we can measure memory consumption
3
- import { printMemoryUsage } from "@peerbit/test-utils/log-utils.js";
4
- import { fork } from "child_process";
5
- import { dirname, resolve } from "path";
6
- import pidusage from "pidusage";
7
- import { fileURLToPath } from "url";
8
- const __dirname = dirname(fileURLToPath(import.meta.url));
9
- const child = fork(resolve(__dirname, "child.ts"), [], {
10
- stdio: ["pipe", "pipe", "pipe", "ipc"],
11
- });
12
- const ramMemoryUsage = () => {
13
- return new Promise((resolve) => {
14
- pidusage(child.pid, (err, stats) => {
15
- if (err) {
16
- console.error(err);
17
- resolve(0);
18
- }
19
- else {
20
- resolve(stats.memory);
21
- }
22
- });
23
- });
24
- };
25
- child.stdout.on("data", (data) => {
26
- // log without newline
27
- process.stdout.write(data.toString());
28
- });
29
- child.stderr.on("data", (data) => {
30
- // log without newline
31
- process.stderr.write(data.toString());
32
- });
33
- child.on("close", (code) => {
34
- console.log(`child process exited with code ${code}`);
35
- });
36
- // wait for the child process to exit
37
- child.on("exit", (code) => {
38
- process.exit(code);
39
- });
40
- // wait for child to be ready
41
- const waitForReady = () => {
42
- return new Promise((resolve) => {
43
- let listener = (data) => {
44
- try {
45
- const message = JSON.parse(data.toString());
46
- if (message.type === "ready") {
47
- child.off("message", listener);
48
- resolve();
49
- }
50
- }
51
- catch (error) { }
52
- };
53
- child.on("message", listener);
54
- });
55
- };
56
- await waitForReady();
57
- child.send({ type: "init", storage: "disc" });
58
- await waitForReady();
59
- // insert docs into the store by sending a message to the child
60
- const send = (message) => {
61
- child.send(message);
62
- };
63
- // send the insert message
64
- let inserts = 150;
65
- let insertBatchSize = 10;
66
- let memoryUsages = [];
67
- let size = 1e6;
68
- console.log("Inserting batches of", insertBatchSize, "documents", inserts, "times", "with", size / 1e6, "MB size");
69
- for (let i = 0; i < inserts; i++) {
70
- // log a progress bar that is updating without printing newline
71
- process.stdout.write(`\r${i}/${inserts}`);
72
- send({ type: "insert", docs: insertBatchSize, size });
73
- await waitForReady();
74
- let memory = await ramMemoryUsage();
75
- memoryUsages.push(memory);
76
- }
77
- printMemoryUsage(memoryUsages.map((x, i) => {
78
- return { value: x, progress: insertBatchSize * (i + 1) };
79
- }), "# of inserts");
80
- child.kill();
81
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../benchmark/memory/index.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- export type Message = {
2
- type: "init";
3
- storage: "in-memory" | "disc";
4
- } | {
5
- type: "insert";
6
- docs: number;
7
- size?: number;
8
- } | {
9
- type: "done";
10
- } | {
11
- type: "ready";
12
- };
13
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../benchmark/memory/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../benchmark/memory/utils.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=native-graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-graph.d.ts","sourceRoot":"","sources":["../../benchmark/native-graph.ts"],"names":[],"mappings":""}