@peerbit/log 3.0.34 → 4.0.0-2bc15a6
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/memory/index.d.ts +2 -0
- package/dist/benchmark/memory/index.d.ts.map +1 -0
- 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/{lib/esm/__benchmark__/index.js → dist/benchmark/payload.js} +20 -22
- package/dist/benchmark/payload.js.map +1 -0
- package/dist/src/change.d.ts +6 -0
- package/dist/src/change.d.ts.map +1 -0
- package/{lib/esm → dist/src}/clock.d.ts +3 -26
- package/dist/src/clock.d.ts.map +1 -0
- package/{lib/esm → dist/src}/clock.js +30 -39
- package/dist/src/clock.js.map +1 -0
- package/{lib/esm → dist/src}/difference.d.ts +1 -0
- package/dist/src/difference.d.ts.map +1 -0
- package/{lib/esm → dist/src}/encoding.d.ts +2 -1
- package/dist/src/encoding.d.ts.map +1 -0
- package/{lib/esm → dist/src}/encoding.js +2 -2
- package/{lib/esm → dist/src}/encoding.js.map +1 -1
- package/dist/src/entry-index.d.ts +78 -0
- package/dist/src/entry-index.d.ts.map +1 -0
- package/dist/src/entry-index.js +316 -0
- package/dist/src/entry-index.js.map +1 -0
- package/{lib/esm → dist/src}/entry-with-refs.d.ts +2 -1
- package/dist/src/entry-with-refs.d.ts.map +1 -0
- package/{lib/esm → dist/src}/entry.d.ts +22 -18
- package/dist/src/entry.d.ts.map +1 -0
- package/{lib/esm → dist/src}/entry.js +69 -42
- package/dist/src/entry.js.map +1 -0
- package/{lib/esm → dist/src}/find-uniques.d.ts +1 -0
- package/dist/src/find-uniques.d.ts.map +1 -0
- package/{lib/esm → dist/src}/heads-cache.d.ts +4 -3
- package/dist/src/heads-cache.d.ts.map +1 -0
- package/{lib/esm → dist/src}/heads-cache.js +9 -10
- package/dist/src/heads-cache.js.map +1 -0
- package/{lib/esm → dist/src}/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/{lib/esm → dist/src}/log-errors.d.ts +1 -0
- package/dist/src/log-errors.d.ts.map +1 -0
- package/dist/src/log-sorting.d.ts +35 -0
- package/dist/src/log-sorting.d.ts.map +1 -0
- package/dist/src/log-sorting.js +105 -0
- package/dist/src/log-sorting.js.map +1 -0
- package/{lib/esm → dist/src}/log.d.ts +78 -56
- package/dist/src/log.d.ts.map +1 -0
- package/{lib/esm → dist/src}/log.js +355 -465
- package/dist/src/log.js.map +1 -0
- package/{lib/esm → dist/src}/logger.d.ts +1 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/{lib/esm → dist/src}/logger.js.map +1 -1
- package/{lib/esm → dist/src}/snapshot.d.ts +5 -4
- package/dist/src/snapshot.d.ts.map +1 -0
- package/{lib/esm → dist/src}/snapshot.js +10 -10
- package/dist/src/snapshot.js.map +1 -0
- package/{lib/esm → dist/src}/trim.d.ts +11 -9
- package/dist/src/trim.d.ts.map +1 -0
- package/{lib/esm → dist/src}/trim.js +46 -35
- package/dist/src/trim.js.map +1 -0
- package/dist/src/utils.d.ts +4 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +12 -0
- package/dist/src/utils.js.map +1 -0
- package/package.json +104 -78
- package/src/change.ts +3 -2
- package/src/clock.ts +22 -22
- package/src/encoding.ts +4 -4
- package/src/entry-index.ts +451 -52
- package/src/entry-with-refs.ts +1 -1
- package/src/entry.ts +95 -81
- package/src/heads-cache.ts +33 -29
- package/src/log-sorting.ts +116 -94
- package/src/log.ts +482 -571
- package/src/logger.ts +1 -0
- package/src/snapshot.ts +15 -17
- package/src/trim.ts +81 -50
- package/src/utils.ts +10 -0
- package/lib/esm/__benchmark__/index.d.ts +0 -1
- package/lib/esm/__benchmark__/index.js.map +0 -1
- package/lib/esm/change.d.ts +0 -5
- package/lib/esm/clock.js.map +0 -1
- package/lib/esm/entry-index.d.ts +0 -24
- package/lib/esm/entry-index.js +0 -74
- package/lib/esm/entry-index.js.map +0 -1
- package/lib/esm/entry.js.map +0 -1
- package/lib/esm/heads-cache.js.map +0 -1
- package/lib/esm/heads.d.ts +0 -69
- package/lib/esm/heads.js +0 -157
- package/lib/esm/heads.js.map +0 -1
- package/lib/esm/log-sorting.d.ts +0 -44
- package/lib/esm/log-sorting.js +0 -86
- package/lib/esm/log-sorting.js.map +0 -1
- package/lib/esm/log.js.map +0 -1
- package/lib/esm/snapshot.js.map +0 -1
- package/lib/esm/trim.js.map +0 -1
- package/lib/esm/types.d.ts +0 -6
- package/lib/esm/types.js +0 -23
- package/lib/esm/types.js.map +0 -1
- package/lib/esm/utils.d.ts +0 -2
- package/lib/esm/utils.js +0 -3
- package/lib/esm/utils.js.map +0 -1
- package/lib/esm/values.d.ts +0 -26
- package/lib/esm/values.js +0 -131
- package/lib/esm/values.js.map +0 -1
- package/src/__benchmark__/index.ts +0 -130
- package/src/heads.ts +0 -233
- package/src/types.ts +0 -12
- package/src/values.ts +0 -174
- /package/{lib/esm → dist/src}/change.js +0 -0
- /package/{lib/esm → dist/src}/change.js.map +0 -0
- /package/{lib/esm → dist/src}/difference.js +0 -0
- /package/{lib/esm → dist/src}/difference.js.map +0 -0
- /package/{lib/esm → dist/src}/entry-with-refs.js +0 -0
- /package/{lib/esm → dist/src}/entry-with-refs.js.map +0 -0
- /package/{lib/esm → dist/src}/find-uniques.js +0 -0
- /package/{lib/esm → dist/src}/find-uniques.js.map +0 -0
- /package/{lib/esm → dist/src}/index.js +0 -0
- /package/{lib/esm → dist/src}/index.js.map +0 -0
- /package/{lib/esm → dist/src}/log-errors.js +0 -0
- /package/{lib/esm → dist/src}/log-errors.js.map +0 -0
- /package/{lib/esm → dist/src}/logger.js +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"}
|
|
@@ -0,0 +1 @@
|
|
|
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,28 +7,26 @@ 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 "../log.js";
|
|
15
11
|
import { AnyBlockStore } from "@peerbit/blocks";
|
|
16
12
|
import { Ed25519Keypair } from "@peerbit/crypto";
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
|
|
13
|
+
import B from "benchmark";
|
|
14
|
+
import crypto from "crypto";
|
|
15
|
+
import { v4 as uuid } from "uuid";
|
|
16
|
+
import { BORSH_ENCODING } from "../src/encoding.js";
|
|
17
|
+
import { Entry } from "../src/entry.js";
|
|
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;
|
|
23
23
|
number;
|
|
24
24
|
bytes;
|
|
25
25
|
constructor(opts) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.bytes = opts.bytes;
|
|
31
|
-
}
|
|
26
|
+
this.id = opts.id;
|
|
27
|
+
this.name = opts.name;
|
|
28
|
+
this.number = opts.number;
|
|
29
|
+
this.bytes = opts.bytes;
|
|
32
30
|
}
|
|
33
31
|
};
|
|
34
32
|
__decorate([
|
|
@@ -78,12 +76,12 @@ suite
|
|
|
78
76
|
id: uuid(),
|
|
79
77
|
name: "hello",
|
|
80
78
|
number: 1n,
|
|
81
|
-
bytes: crypto.randomBytes(1e3)
|
|
79
|
+
bytes: crypto.randomBytes(1e3),
|
|
82
80
|
});
|
|
83
81
|
await log.append(doc);
|
|
84
82
|
deferred.resolve();
|
|
85
83
|
},
|
|
86
|
-
defer: true
|
|
84
|
+
defer: true,
|
|
87
85
|
})
|
|
88
86
|
.add("1e4", {
|
|
89
87
|
fn: async (deferred) => {
|
|
@@ -91,12 +89,12 @@ suite
|
|
|
91
89
|
id: uuid(),
|
|
92
90
|
name: "hello",
|
|
93
91
|
number: 1n,
|
|
94
|
-
bytes: crypto.randomBytes(1e4)
|
|
92
|
+
bytes: crypto.randomBytes(1e4),
|
|
95
93
|
});
|
|
96
94
|
await log.append(doc);
|
|
97
95
|
deferred.resolve();
|
|
98
96
|
},
|
|
99
|
-
defer: true
|
|
97
|
+
defer: true,
|
|
100
98
|
})
|
|
101
99
|
.add("1e5", {
|
|
102
100
|
fn: async (deferred) => {
|
|
@@ -104,7 +102,7 @@ suite
|
|
|
104
102
|
id: uuid(),
|
|
105
103
|
name: "hello",
|
|
106
104
|
number: 1n,
|
|
107
|
-
bytes: crypto.randomBytes(1e5)
|
|
105
|
+
bytes: crypto.randomBytes(1e5),
|
|
108
106
|
});
|
|
109
107
|
const entry = await log.append(doc);
|
|
110
108
|
serialize(new NestedEntry(entry.entry));
|
|
@@ -119,7 +117,7 @@ suite
|
|
|
119
117
|
serialize(new NestedEntry(entry.entry));
|
|
120
118
|
deferred.resolve();
|
|
121
119
|
},
|
|
122
|
-
defer: true
|
|
120
|
+
defer: true,
|
|
123
121
|
})
|
|
124
122
|
.add("1e6", {
|
|
125
123
|
fn: async (deferred) => {
|
|
@@ -127,12 +125,12 @@ suite
|
|
|
127
125
|
id: uuid(),
|
|
128
126
|
name: "hello",
|
|
129
127
|
number: 1n,
|
|
130
|
-
bytes: crypto.randomBytes(1e5)
|
|
128
|
+
bytes: crypto.randomBytes(1e5),
|
|
131
129
|
});
|
|
132
130
|
await log.append(doc);
|
|
133
131
|
deferred.resolve();
|
|
134
132
|
},
|
|
135
|
-
defer: true
|
|
133
|
+
defer: true,
|
|
136
134
|
})
|
|
137
135
|
.on("cycle", async (event) => {
|
|
138
136
|
console.log(String(event.target));
|
|
@@ -142,4 +140,4 @@ suite
|
|
|
142
140
|
throw err;
|
|
143
141
|
})
|
|
144
142
|
.run();
|
|
145
|
-
//# 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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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -1,32 +1,8 @@
|
|
|
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;
|
|
28
4
|
logical: number;
|
|
29
|
-
constructor(properties
|
|
5
|
+
constructor(properties: {
|
|
30
6
|
wallTime: bigint;
|
|
31
7
|
logical?: number;
|
|
32
8
|
});
|
|
@@ -83,5 +59,6 @@ export declare class LamportClock {
|
|
|
83
59
|
* @returns
|
|
84
60
|
*/
|
|
85
61
|
advance(): LamportClock;
|
|
86
|
-
static compare(a: LamportClock, b: LamportClock):
|
|
62
|
+
static compare(a: LamportClock, b: LamportClock): any;
|
|
87
63
|
}
|
|
64
|
+
//# sourceMappingURL=clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -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 "@peerbit/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,14 +62,13 @@ 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) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.logical = properties.logical || 0;
|
|
71
|
-
}
|
|
70
|
+
this.wallTime = properties.wallTime;
|
|
71
|
+
this.logical = properties.logical || 0;
|
|
72
72
|
}
|
|
73
73
|
static compare(a, b) {
|
|
74
74
|
if (a.wallTime > b.wallTime)
|
|
@@ -88,18 +88,18 @@ let Timestamp = Timestamp_1 = class Timestamp {
|
|
|
88
88
|
return a.compare(b) === 1 ? b : a;
|
|
89
89
|
}
|
|
90
90
|
compare(other) {
|
|
91
|
-
return
|
|
91
|
+
return Timestamp.compare(this, other);
|
|
92
92
|
}
|
|
93
93
|
clone() {
|
|
94
|
-
return new
|
|
94
|
+
return new Timestamp({
|
|
95
95
|
wallTime: this.wallTime,
|
|
96
|
-
logical: this.logical
|
|
96
|
+
logical: this.logical,
|
|
97
97
|
});
|
|
98
98
|
}
|
|
99
99
|
toString() {
|
|
100
100
|
return `Timestamp: wallTime: ${this.wallTime}, logical: ${this.logical}`;
|
|
101
101
|
}
|
|
102
|
-
}
|
|
102
|
+
}
|
|
103
103
|
__decorate([
|
|
104
104
|
field({ type: "u64" }),
|
|
105
105
|
__metadata("design:type", BigInt)
|
|
@@ -108,11 +108,6 @@ __decorate([
|
|
|
108
108
|
field({ type: "u32" }),
|
|
109
109
|
__metadata("design:type", Number)
|
|
110
110
|
], Timestamp.prototype, "logical", void 0);
|
|
111
|
-
Timestamp = Timestamp_1 = __decorate([
|
|
112
|
-
variant(0),
|
|
113
|
-
__metadata("design:paramtypes", [Object])
|
|
114
|
-
], Timestamp);
|
|
115
|
-
export { Timestamp };
|
|
116
111
|
export class HLC {
|
|
117
112
|
maxOffset;
|
|
118
113
|
wallTimeUpperBound;
|
|
@@ -193,7 +188,8 @@ export class ForwardJumpError extends Error {
|
|
|
193
188
|
this.tolerance = tolerance;
|
|
194
189
|
}
|
|
195
190
|
}
|
|
196
|
-
|
|
191
|
+
/* @variant(0) */
|
|
192
|
+
export class LamportClock {
|
|
197
193
|
id;
|
|
198
194
|
timestamp;
|
|
199
195
|
constructor(properties) {
|
|
@@ -201,14 +197,14 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
201
197
|
if (!properties.timestamp) {
|
|
202
198
|
this.timestamp = new Timestamp({
|
|
203
199
|
wallTime: bigintTime(),
|
|
204
|
-
logical: 0
|
|
200
|
+
logical: 0,
|
|
205
201
|
});
|
|
206
202
|
}
|
|
207
203
|
else {
|
|
208
204
|
if (typeof properties.timestamp === "number") {
|
|
209
205
|
this.timestamp = new Timestamp({
|
|
210
206
|
wallTime: bigintTime(),
|
|
211
|
-
logical: properties.timestamp
|
|
207
|
+
logical: properties.timestamp,
|
|
212
208
|
});
|
|
213
209
|
}
|
|
214
210
|
else {
|
|
@@ -217,9 +213,9 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
217
213
|
}
|
|
218
214
|
}
|
|
219
215
|
clone() {
|
|
220
|
-
return new
|
|
216
|
+
return new LamportClock({
|
|
221
217
|
id: this.id,
|
|
222
|
-
timestamp: this.timestamp.clone()
|
|
218
|
+
timestamp: this.timestamp.clone(),
|
|
223
219
|
});
|
|
224
220
|
}
|
|
225
221
|
equals(other) {
|
|
@@ -232,7 +228,7 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
232
228
|
advance() {
|
|
233
229
|
const h = new HLC();
|
|
234
230
|
h.update(new Timestamp(this.timestamp));
|
|
235
|
-
return new
|
|
231
|
+
return new LamportClock({ id: this.id, timestamp: h.now() });
|
|
236
232
|
}
|
|
237
233
|
static compare(a, b) {
|
|
238
234
|
// Calculate the "distance" based on the clock, ie. lower or greater
|
|
@@ -243,7 +239,7 @@ let LamportClock = LamportClock_1 = class LamportClock {
|
|
|
243
239
|
// and the IDs are different, take the one with a "lower" id
|
|
244
240
|
return compare(a.id, b.id);
|
|
245
241
|
}
|
|
246
|
-
}
|
|
242
|
+
}
|
|
247
243
|
__decorate([
|
|
248
244
|
field({ type: Uint8Array }),
|
|
249
245
|
__metadata("design:type", Uint8Array)
|
|
@@ -252,9 +248,4 @@ __decorate([
|
|
|
252
248
|
field({ type: Timestamp }),
|
|
253
249
|
__metadata("design:type", Timestamp)
|
|
254
250
|
], LamportClock.prototype, "timestamp", void 0);
|
|
255
|
-
LamportClock = LamportClock_1 = __decorate([
|
|
256
|
-
variant(0),
|
|
257
|
-
__metadata("design:paramtypes", [Object])
|
|
258
|
-
], LamportClock);
|
|
259
|
-
export { LamportClock };
|
|
260
251
|
//# sourceMappingURL=clock.js.map
|