@peerbit/log 3.0.34-aa577a5 → 3.0.34-cccc078
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.
- package/dist/benchmark/append.d.ts +2 -0
- package/dist/benchmark/append.d.ts.map +1 -0
- package/dist/benchmark/append.js +40 -0
- package/dist/benchmark/append.js.map +1 -0
- package/dist/benchmark/{index.d.ts.map → memory/index.d.ts.map} +1 -1
- package/dist/benchmark/memory/index.js +122 -0
- package/dist/benchmark/memory/index.js.map +1 -0
- package/dist/benchmark/memory/insert.d.ts +2 -0
- package/dist/benchmark/memory/insert.d.ts.map +1 -0
- package/dist/benchmark/memory/insert.js +59 -0
- package/dist/benchmark/memory/insert.js.map +1 -0
- package/dist/benchmark/memory/utils.d.ts +13 -0
- package/dist/benchmark/memory/utils.d.ts.map +1 -0
- package/dist/benchmark/memory/utils.js +2 -0
- package/dist/benchmark/memory/utils.js.map +1 -0
- package/dist/benchmark/payload.d.ts +2 -0
- package/dist/benchmark/payload.d.ts.map +1 -0
- package/dist/benchmark/{index.js → payload.js} +14 -14
- package/dist/benchmark/payload.js.map +1 -0
- package/dist/src/change.d.ts +2 -2
- package/dist/src/change.d.ts.map +1 -1
- package/dist/src/change.js +1 -1
- package/dist/src/change.js.map +1 -1
- package/dist/src/clock.d.ts +0 -24
- package/dist/src/clock.d.ts.map +1 -1
- package/dist/src/clock.js +28 -35
- package/dist/src/clock.js.map +1 -1
- package/dist/src/encoding.d.ts.map +1 -1
- package/dist/src/encoding.js +2 -2
- package/dist/src/encoding.js.map +1 -1
- package/dist/src/entry-index.d.ts +70 -17
- package/dist/src/entry-index.d.ts.map +1 -1
- package/dist/src/entry-index.js +281 -41
- package/dist/src/entry-index.js.map +1 -1
- package/dist/src/entry-with-refs.d.ts +1 -1
- package/dist/src/entry-with-refs.d.ts.map +1 -1
- package/dist/src/entry-with-refs.js +1 -1
- package/dist/src/entry-with-refs.js.map +1 -1
- package/dist/src/entry.d.ts +18 -15
- package/dist/src/entry.d.ts.map +1 -1
- package/dist/src/entry.js +62 -36
- package/dist/src/entry.js.map +1 -1
- package/dist/src/find-uniques.d.ts.map +1 -1
- package/dist/src/heads-cache.d.ts +1 -1
- package/dist/src/heads-cache.d.ts.map +1 -1
- package/dist/src/heads-cache.js +6 -7
- package/dist/src/heads-cache.js.map +1 -1
- package/dist/src/log-sorting.d.ts +27 -37
- package/dist/src/log-sorting.d.ts.map +1 -1
- package/dist/src/log-sorting.js +92 -74
- package/dist/src/log-sorting.js.map +1 -1
- package/dist/src/log.d.ts +71 -54
- package/dist/src/log.d.ts.map +1 -1
- package/dist/src/log.js +349 -468
- package/dist/src/log.js.map +1 -1
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js.map +1 -1
- package/dist/src/snapshot.d.ts +2 -2
- package/dist/src/snapshot.d.ts.map +1 -1
- package/dist/src/snapshot.js +5 -5
- package/dist/src/snapshot.js.map +1 -1
- package/dist/src/trim.d.ts +9 -8
- package/dist/src/trim.d.ts.map +1 -1
- package/dist/src/trim.js +43 -40
- package/dist/src/trim.js.map +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +1 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +15 -13
- package/src/change.ts +3 -2
- package/src/clock.ts +25 -19
- package/src/encoding.ts +3 -3
- package/src/entry-index.ts +451 -52
- package/src/entry-with-refs.ts +1 -1
- package/src/entry.ts +89 -72
- package/src/heads-cache.ts +27 -21
- package/src/log-sorting.ts +116 -94
- package/src/log.ts +465 -564
- package/src/logger.ts +1 -0
- package/src/snapshot.ts +10 -10
- package/src/trim.ts +75 -50
- package/src/utils.ts +6 -8
- package/dist/benchmark/index.js.map +0 -1
- package/dist/src/heads.d.ts +0 -70
- package/dist/src/heads.d.ts.map +0 -1
- package/dist/src/heads.js +0 -164
- package/dist/src/heads.js.map +0 -1
- package/dist/src/types.d.ts +0 -7
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -21
- package/dist/src/types.js.map +0 -1
- package/dist/src/values.d.ts +0 -27
- package/dist/src/values.d.ts.map +0 -1
- package/dist/src/values.js +0 -134
- package/dist/src/values.js.map +0 -1
- package/src/heads.ts +0 -233
- package/src/types.ts +0 -10
- package/src/values.ts +0 -174
- /package/dist/benchmark/{index.d.ts → memory/index.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"append.d.ts","sourceRoot":"","sources":["../../benchmark/append.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { AnyBlockStore } from "@peerbit/blocks";
|
|
2
|
+
import { Ed25519Keypair } from "@peerbit/crypto";
|
|
3
|
+
import { create } from "@peerbit/indexer-sqlite3";
|
|
4
|
+
import B from "benchmark";
|
|
5
|
+
import { Log } from "../src/log.js";
|
|
6
|
+
// Run with "node --loader ts-node/esm ./benchmark/append.ts"
|
|
7
|
+
let log;
|
|
8
|
+
let store;
|
|
9
|
+
const key = await Ed25519Keypair.create();
|
|
10
|
+
const reset = async () => {
|
|
11
|
+
log = new Log();
|
|
12
|
+
store = new AnyBlockStore();
|
|
13
|
+
await log.open(store, key, { indexer: await create() });
|
|
14
|
+
};
|
|
15
|
+
await reset();
|
|
16
|
+
const suite = new B.Suite({ delay: 100 });
|
|
17
|
+
suite
|
|
18
|
+
.add("chain", {
|
|
19
|
+
fn: async (deferred) => {
|
|
20
|
+
await log.append(new Uint8Array([1, 2, 3]));
|
|
21
|
+
deferred.resolve();
|
|
22
|
+
},
|
|
23
|
+
defer: true,
|
|
24
|
+
})
|
|
25
|
+
.add("no-next", {
|
|
26
|
+
fn: async (deferred) => {
|
|
27
|
+
await log.append(new Uint8Array([1, 2, 3]), { meta: { next: [] } });
|
|
28
|
+
deferred.resolve();
|
|
29
|
+
},
|
|
30
|
+
defer: true,
|
|
31
|
+
})
|
|
32
|
+
.on("cycle", async (event) => {
|
|
33
|
+
console.log(String(event.target));
|
|
34
|
+
await reset();
|
|
35
|
+
})
|
|
36
|
+
.on("error", (err) => {
|
|
37
|
+
throw err;
|
|
38
|
+
})
|
|
39
|
+
.run();
|
|
40
|
+
//# sourceMappingURL=append.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"append.js","sourceRoot":"","sources":["../../benchmark/append.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,CAAC,MAAM,WAAW,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEpC,6DAA6D;AAE7D,IAAI,GAAoB,CAAC;AACzB,IAAI,KAAoB,CAAC;AACzB,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,CAAC;AAE1C,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IACxB,GAAG,GAAG,IAAI,GAAG,EAAc,CAAC;IAC5B,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;IAC5B,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,MAAM,EAAE,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC;AACF,MAAM,KAAK,EAAE,CAAC;AAEd,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC1C,KAAK;KACH,GAAG,CAAC,OAAO,EAAE;IACb,EAAE,EAAE,KAAK,EAAE,QAAa,EAAE,EAAE;QAC3B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IACD,KAAK,EAAE,IAAI;CACX,CAAC;KACD,GAAG,CAAC,SAAS,EAAE;IACf,EAAE,EAAE,KAAK,EAAE,QAAa,EAAE,EAAE;QAC3B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,QAAQ,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;IACD,KAAK,EAAE,IAAI;CACX,CAAC;KACD,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE;IACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,EAAE,CAAC;AACf,CAAC,CAAC;KACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;IACzB,MAAM,GAAG,CAAC;AACX,CAAC,CAAC;KACD,GAAG,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../benchmark/memory/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Run with "node --loader ts-node/esm ./benchmark/memory/index.ts"
|
|
2
|
+
// run insert.ts with ts-node in a subprocess so we can measure memory consumption
|
|
3
|
+
import { fork } from "child_process";
|
|
4
|
+
import { dirname, resolve } from "path";
|
|
5
|
+
import pidusage from "pidusage";
|
|
6
|
+
import Table from "tty-table";
|
|
7
|
+
import { fileURLToPath } from "url";
|
|
8
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const child = fork(resolve(__dirname, "insert.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 = 60;
|
|
65
|
+
let insertBatchSize = 1000;
|
|
66
|
+
let memoryUsages = [];
|
|
67
|
+
console.log("Inserting batches of", insertBatchSize, "documents", inserts, "times");
|
|
68
|
+
for (let i = 0; i < inserts; i++) {
|
|
69
|
+
// log a progress bar that is updating without printing newline
|
|
70
|
+
process.stdout.write(`\r${i}/${inserts}`);
|
|
71
|
+
send({ type: "insert", docs: insertBatchSize, size: 1024 });
|
|
72
|
+
await waitForReady();
|
|
73
|
+
let memory = await ramMemoryUsage();
|
|
74
|
+
memoryUsages.push(memory);
|
|
75
|
+
}
|
|
76
|
+
console.log("DONE!");
|
|
77
|
+
// do ascii graph
|
|
78
|
+
let max = Math.max(...memoryUsages);
|
|
79
|
+
let min = Math.min(...memoryUsages);
|
|
80
|
+
let range = max - min;
|
|
81
|
+
let steps = 300;
|
|
82
|
+
let step = range / steps;
|
|
83
|
+
let buckets = Array.from({ length: steps }, (_, i) => {
|
|
84
|
+
return min + i * step;
|
|
85
|
+
});
|
|
86
|
+
let lines = memoryUsages.map((memory) => {
|
|
87
|
+
/* let bucket = Math.floor((memory - min) / step) */
|
|
88
|
+
return Array.from({ length: steps }, (_, i) => {
|
|
89
|
+
return memory > buckets[i] ? "█" : " ";
|
|
90
|
+
}).join("");
|
|
91
|
+
});
|
|
92
|
+
console.log("Memory Usage Graph");
|
|
93
|
+
// do a nicely tty-table formatted table with "Memory ascii", "Memory bytes (mb)", "# of inserts".
|
|
94
|
+
const colorString = (bytes, string) => {
|
|
95
|
+
// color encode byte values so that the highest get red color and lowest get green color
|
|
96
|
+
// and values in between get a color in in shades of red and green
|
|
97
|
+
let colors = Array.from({ length: steps + 1 }, (_, i) => {
|
|
98
|
+
let r = Math.floor(255 * (i / steps));
|
|
99
|
+
let g = Math.floor(255 * ((steps - i) / steps));
|
|
100
|
+
let b = 0;
|
|
101
|
+
return `38;2;${r};${g};${b}`;
|
|
102
|
+
});
|
|
103
|
+
let bucket = Math.floor((bytes - min) / step);
|
|
104
|
+
let color = colors[bucket];
|
|
105
|
+
return `\x1b[${color}m${string}\x1b[0m`;
|
|
106
|
+
};
|
|
107
|
+
let table = Table([
|
|
108
|
+
{ value: "Memory usage (*)", width: steps + 2, align: "left" },
|
|
109
|
+
{ value: "Memory bytes (mb)" },
|
|
110
|
+
{ value: "# of inserts" },
|
|
111
|
+
], lines.map((line, i) => {
|
|
112
|
+
return [
|
|
113
|
+
{ value: colorString(memoryUsages[i], line) },
|
|
114
|
+
{ value: Math.round(memoryUsages[i] / 1e6) },
|
|
115
|
+
{ value: insertBatchSize * (i + 1) },
|
|
116
|
+
];
|
|
117
|
+
}));
|
|
118
|
+
console.log(table.render());
|
|
119
|
+
console.log("Max memory usage", Math.round(max / 1e6), "mb");
|
|
120
|
+
console.log("Min memory usage", Math.round(min / 1e6), "mb");
|
|
121
|
+
child.kill();
|
|
122
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../benchmark/memory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../benchmark/memory/insert.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// this benchmark will test how much memory is used to store 1m documents
|
|
2
|
+
import { createStore } from "@peerbit/any-store";
|
|
3
|
+
import { AnyBlockStore } from "@peerbit/blocks";
|
|
4
|
+
import { Ed25519Keypair, randomBytes } from "@peerbit/crypto";
|
|
5
|
+
import { create } from "@peerbit/indexer-sqlite3";
|
|
6
|
+
import { TestSession } from "@peerbit/test-utils";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import { v4 as uuid } from "uuid";
|
|
9
|
+
import { Log } from "../../src/log.js";
|
|
10
|
+
const key = await Ed25519Keypair.create();
|
|
11
|
+
// Run with "node --loader ts-node/esm ./benchmark/memory/index.ts"
|
|
12
|
+
const sendReady = () => process.send(JSON.stringify({ type: "ready" }));
|
|
13
|
+
let session;
|
|
14
|
+
try {
|
|
15
|
+
let store = undefined;
|
|
16
|
+
let log = undefined;
|
|
17
|
+
process.on("message", async (message) => {
|
|
18
|
+
if (message.type === "init") {
|
|
19
|
+
log = new Log();
|
|
20
|
+
store = new AnyBlockStore(await createStore(message.storage === "in-memory"
|
|
21
|
+
? undefined
|
|
22
|
+
: path.join("./tmp/blocks", uuid())));
|
|
23
|
+
await log.open(store, key, {
|
|
24
|
+
indexer: await create(message.storage === "in-memory"
|
|
25
|
+
? undefined
|
|
26
|
+
: path.join("./tmp/index", uuid())),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
else if (message.type === "insert") {
|
|
30
|
+
for (let i = 0; i < message.docs; i++) {
|
|
31
|
+
await log.append(randomBytes(1024), { meta: { next: [] } });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else if (message.type === "done") {
|
|
35
|
+
console.log("DONE!");
|
|
36
|
+
process.exit(0);
|
|
37
|
+
}
|
|
38
|
+
sendReady();
|
|
39
|
+
});
|
|
40
|
+
sendReady();
|
|
41
|
+
// suspend the process until we receive a 'done' from parent
|
|
42
|
+
await new Promise((resolve) => {
|
|
43
|
+
let listener = (message) => {
|
|
44
|
+
if (message.type === "done") {
|
|
45
|
+
process.off("message", listener);
|
|
46
|
+
resolve();
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
process.on("message", listener);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
throw new Error("Failed to insert: " + error?.message);
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
console.log("DONE!");
|
|
57
|
+
await session.stop();
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=insert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../benchmark/memory/insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../benchmark/memory/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../benchmark/payload.ts"],"names":[],"mappings":""}
|
|
@@ -7,16 +7,16 @@ 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 { field, option, serialize, variant } from "@dao-xyz/borsh";
|
|
12
|
-
import { v4 as uuid } from "uuid";
|
|
13
|
-
import crypto from "crypto";
|
|
14
|
-
import { Log } from "../src/log.js";
|
|
15
11
|
import { AnyBlockStore } from "@peerbit/blocks";
|
|
16
12
|
import { Ed25519Keypair } from "@peerbit/crypto";
|
|
13
|
+
import B from "benchmark";
|
|
14
|
+
import crypto from "crypto";
|
|
15
|
+
import { v4 as uuid } from "uuid";
|
|
17
16
|
import { BORSH_ENCODING } from "../src/encoding.js";
|
|
18
17
|
import { Entry } from "../src/entry.js";
|
|
19
|
-
|
|
18
|
+
import { Log } from "../src/log.js";
|
|
19
|
+
// Run with "node --loader ts-node/esm ./benchmark/payload.ts"
|
|
20
20
|
let Document = class Document {
|
|
21
21
|
id;
|
|
22
22
|
name;
|
|
@@ -76,12 +76,12 @@ suite
|
|
|
76
76
|
id: uuid(),
|
|
77
77
|
name: "hello",
|
|
78
78
|
number: 1n,
|
|
79
|
-
bytes: crypto.randomBytes(1e3)
|
|
79
|
+
bytes: crypto.randomBytes(1e3),
|
|
80
80
|
});
|
|
81
81
|
await log.append(doc);
|
|
82
82
|
deferred.resolve();
|
|
83
83
|
},
|
|
84
|
-
defer: true
|
|
84
|
+
defer: true,
|
|
85
85
|
})
|
|
86
86
|
.add("1e4", {
|
|
87
87
|
fn: async (deferred) => {
|
|
@@ -89,12 +89,12 @@ suite
|
|
|
89
89
|
id: uuid(),
|
|
90
90
|
name: "hello",
|
|
91
91
|
number: 1n,
|
|
92
|
-
bytes: crypto.randomBytes(1e4)
|
|
92
|
+
bytes: crypto.randomBytes(1e4),
|
|
93
93
|
});
|
|
94
94
|
await log.append(doc);
|
|
95
95
|
deferred.resolve();
|
|
96
96
|
},
|
|
97
|
-
defer: true
|
|
97
|
+
defer: true,
|
|
98
98
|
})
|
|
99
99
|
.add("1e5", {
|
|
100
100
|
fn: async (deferred) => {
|
|
@@ -102,7 +102,7 @@ suite
|
|
|
102
102
|
id: uuid(),
|
|
103
103
|
name: "hello",
|
|
104
104
|
number: 1n,
|
|
105
|
-
bytes: crypto.randomBytes(1e5)
|
|
105
|
+
bytes: crypto.randomBytes(1e5),
|
|
106
106
|
});
|
|
107
107
|
const entry = await log.append(doc);
|
|
108
108
|
serialize(new NestedEntry(entry.entry));
|
|
@@ -117,7 +117,7 @@ suite
|
|
|
117
117
|
serialize(new NestedEntry(entry.entry));
|
|
118
118
|
deferred.resolve();
|
|
119
119
|
},
|
|
120
|
-
defer: true
|
|
120
|
+
defer: true,
|
|
121
121
|
})
|
|
122
122
|
.add("1e6", {
|
|
123
123
|
fn: async (deferred) => {
|
|
@@ -125,12 +125,12 @@ suite
|
|
|
125
125
|
id: uuid(),
|
|
126
126
|
name: "hello",
|
|
127
127
|
number: 1n,
|
|
128
|
-
bytes: crypto.randomBytes(1e5)
|
|
128
|
+
bytes: crypto.randomBytes(1e5),
|
|
129
129
|
});
|
|
130
130
|
await log.append(doc);
|
|
131
131
|
deferred.resolve();
|
|
132
132
|
},
|
|
133
|
-
defer: true
|
|
133
|
+
defer: true,
|
|
134
134
|
})
|
|
135
135
|
.on("cycle", async (event) => {
|
|
136
136
|
console.log(String(event.target));
|
|
@@ -140,4 +140,4 @@ suite
|
|
|
140
140
|
throw err;
|
|
141
141
|
})
|
|
142
142
|
.run();
|
|
143
|
-
//# sourceMappingURL=
|
|
143
|
+
//# sourceMappingURL=payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../benchmark/payload.ts"],"names":[],"mappings":"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"}
|
package/dist/src/change.d.ts
CHANGED
package/dist/src/change.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../src/change.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"change.d.ts","sourceRoot":"","sources":["../../src/change.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5D,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;CAAE,CAAC"}
|
package/dist/src/change.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=change.js.map
|
package/dist/src/change.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change.js","sourceRoot":"","sources":["../../src/change.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"change.js","sourceRoot":"","sources":["../../src/change.ts"],"names":[],"mappings":""}
|
package/dist/src/clock.d.ts
CHANGED
|
@@ -1,27 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (c) 2021 Martin Heidegger
|
|
5
|
-
Copyright (c) 2022 dao.xyz
|
|
6
|
-
|
|
7
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
9
|
-
in the Software without restriction, including without limitation the rights
|
|
10
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
12
|
-
furnished to do so, subject to the following conditions:
|
|
13
|
-
|
|
14
|
-
The above copyright notice and this permission notice shall be included in all
|
|
15
|
-
copies or substantial portions of the Software.
|
|
16
|
-
|
|
17
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
-
SOFTWARE.
|
|
24
|
-
*/
|
|
25
1
|
export declare function fromBits(low: any, high: any, unsigned: any, target?: any): any;
|
|
26
2
|
export declare class Timestamp {
|
|
27
3
|
wallTime: bigint;
|
package/dist/src/clock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAmCA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,OAYxE;AAcD,qBAAa,SAAS;IAErB,QAAQ,EAAE,MAAM,CAAC;IAGjB,OAAO,EAAE,MAAM,CAAC;gBAEJ,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAK9D,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;IAQzC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;IAGxC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS;IAIzC,OAAO,CAAC,KAAK,EAAE,SAAS;IAGxB,KAAK,IAAI,SAAS;IAOlB,QAAQ;CAGR;AAED,qBAAa,GAAG;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yBAAyB,EAAE,MAAM,CAAC;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,MAAM,CAAC;gBAEtB,UAAU,GAAE;QACX,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,IAAI,CAAC,EAAE,SAAS,CAAC;KACZ;IAeP,GAAG;IAIH,cAAc,CAAC,MAAM,EAAE,MAAM;IAY7B,MAAM,CAAC,KAAK,EAAE,SAAS;CAwBvB;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;gBACN,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAW7C;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;gBACJ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CASzC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;gBACN,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAS/C;AAGD,qBAAa,YAAY;IAExB,EAAE,EAAE,UAAU,CAAC;IAGf,SAAS,EAAE,SAAS,CAAC;gBAET,UAAU,EAAE;QAAE,EAAE,EAAE,UAAU,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,CAAA;KAAE;IAmB1E,KAAK;IAOL,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;IAMpC;;;OAGG;IACH,OAAO;IAMP,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY;CAU/C"}
|
package/dist/src/clock.js
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
1
10
|
/**
|
|
2
11
|
The MIT License (MIT)
|
|
3
12
|
|
|
@@ -22,19 +31,11 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
22
31
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
32
|
SOFTWARE.
|
|
24
33
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
29
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
30
|
-
};
|
|
31
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
-
};
|
|
34
|
-
var Timestamp_1, LamportClock_1;
|
|
35
|
-
import { field, variant } from "@dao-xyz/borsh";
|
|
36
|
-
import { compare, equals } from "uint8arrays";
|
|
34
|
+
import { field,
|
|
35
|
+
/* , variant */
|
|
36
|
+
} from "@dao-xyz/borsh";
|
|
37
37
|
import { hrtime } from "@peerbit/time";
|
|
38
|
+
import { compare, equals } from "uint8arrays";
|
|
38
39
|
const hrTimeNow = hrtime.bigint();
|
|
39
40
|
const startTime = BigInt(Date.now()) * BigInt(1e6) - hrTimeNow;
|
|
40
41
|
const bigintTime = () => startTime + hrtime.bigint();
|
|
@@ -43,7 +44,7 @@ export function fromBits(low, high, unsigned, target) {
|
|
|
43
44
|
return {
|
|
44
45
|
low: low | 0,
|
|
45
46
|
high: high | 0,
|
|
46
|
-
unsigned: !!unsigned
|
|
47
|
+
unsigned: !!unsigned,
|
|
47
48
|
};
|
|
48
49
|
}
|
|
49
50
|
target.low = low | 0;
|
|
@@ -61,7 +62,8 @@ function bigIntCoerce(input, fallback) {
|
|
|
61
62
|
return BigInt(input);
|
|
62
63
|
return fallback;
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
+
/* @variant(0) */
|
|
66
|
+
export class Timestamp {
|
|
65
67
|
wallTime;
|
|
66
68
|
logical;
|
|
67
69
|
constructor(properties) {
|
|
@@ -86,18 +88,18 @@ let Timestamp = Timestamp_1 = class Timestamp {
|
|
|
86
88
|
return a.compare(b) === 1 ? b : a;
|
|
87
89
|
}
|
|
88
90
|
compare(other) {
|
|
89
|
-
return
|
|
91
|
+
return Timestamp.compare(this, other);
|
|
90
92
|
}
|
|
91
93
|
clone() {
|
|
92
|
-
return new
|
|
94
|
+
return new Timestamp({
|
|
93
95
|
wallTime: this.wallTime,
|
|
94
|
-
logical: this.logical
|
|
96
|
+
logical: this.logical,
|
|
95
97
|
});
|
|
96
98
|
}
|
|
97
99
|
toString() {
|
|
98
100
|
return `Timestamp: wallTime: ${this.wallTime}, logical: ${this.logical}`;
|
|
99
101
|
}
|
|
100
|
-
}
|
|
102
|
+
}
|
|
101
103
|
__decorate([
|
|
102
104
|
field({ type: "u64" }),
|
|
103
105
|
__metadata("design:type", BigInt)
|
|
@@ -106,11 +108,6 @@ __decorate([
|
|
|
106
108
|
field({ type: "u32" }),
|
|
107
109
|
__metadata("design:type", Number)
|
|
108
110
|
], Timestamp.prototype, "logical", void 0);
|
|
109
|
-
Timestamp = Timestamp_1 = __decorate([
|
|
110
|
-
variant(0),
|
|
111
|
-
__metadata("design:paramtypes", [Object])
|
|
112
|
-
], Timestamp);
|
|
113
|
-
export { Timestamp };
|
|
114
111
|
export class HLC {
|
|
115
112
|
maxOffset;
|
|
116
113
|
wallTimeUpperBound;
|
|
@@ -191,7 +188,8 @@ export class ForwardJumpError extends Error {
|
|
|
191
188
|
this.tolerance = tolerance;
|
|
192
189
|
}
|
|
193
190
|
}
|
|
194
|
-
|
|
191
|
+
/* @variant(0) */
|
|
192
|
+
export class LamportClock {
|
|
195
193
|
id;
|
|
196
194
|
timestamp;
|
|
197
195
|
constructor(properties) {
|
|
@@ -199,14 +197,14 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
199
197
|
if (!properties.timestamp) {
|
|
200
198
|
this.timestamp = new Timestamp({
|
|
201
199
|
wallTime: bigintTime(),
|
|
202
|
-
logical: 0
|
|
200
|
+
logical: 0,
|
|
203
201
|
});
|
|
204
202
|
}
|
|
205
203
|
else {
|
|
206
204
|
if (typeof properties.timestamp === "number") {
|
|
207
205
|
this.timestamp = new Timestamp({
|
|
208
206
|
wallTime: bigintTime(),
|
|
209
|
-
logical: properties.timestamp
|
|
207
|
+
logical: properties.timestamp,
|
|
210
208
|
});
|
|
211
209
|
}
|
|
212
210
|
else {
|
|
@@ -215,9 +213,9 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
215
213
|
}
|
|
216
214
|
}
|
|
217
215
|
clone() {
|
|
218
|
-
return new
|
|
216
|
+
return new LamportClock({
|
|
219
217
|
id: this.id,
|
|
220
|
-
timestamp: this.timestamp.clone()
|
|
218
|
+
timestamp: this.timestamp.clone(),
|
|
221
219
|
});
|
|
222
220
|
}
|
|
223
221
|
equals(other) {
|
|
@@ -230,7 +228,7 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
230
228
|
advance() {
|
|
231
229
|
const h = new HLC();
|
|
232
230
|
h.update(new Timestamp(this.timestamp));
|
|
233
|
-
return new
|
|
231
|
+
return new LamportClock({ id: this.id, timestamp: h.now() });
|
|
234
232
|
}
|
|
235
233
|
static compare(a, b) {
|
|
236
234
|
// Calculate the "distance" based on the clock, ie. lower or greater
|
|
@@ -241,7 +239,7 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
241
239
|
// and the IDs are different, take the one with a "lower" id
|
|
242
240
|
return compare(a.id, b.id);
|
|
243
241
|
}
|
|
244
|
-
}
|
|
242
|
+
}
|
|
245
243
|
__decorate([
|
|
246
244
|
field({ type: Uint8Array }),
|
|
247
245
|
__metadata("design:type", Uint8Array)
|
|
@@ -250,9 +248,4 @@ __decorate([
|
|
|
250
248
|
field({ type: Timestamp }),
|
|
251
249
|
__metadata("design:type", Timestamp)
|
|
252
250
|
], LamportClock.prototype, "timestamp", void 0);
|
|
253
|
-
LamportClock = LamportClock_1 = __decorate([
|
|
254
|
-
variant(0),
|
|
255
|
-
__metadata("design:paramtypes", [Object])
|
|
256
|
-
], LamportClock);
|
|
257
|
-
export { LamportClock };
|
|
258
251
|
//# sourceMappingURL=clock.js.map
|