@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.
Files changed (133) hide show
  1. package/dist/benchmark/append.d.ts +2 -0
  2. package/dist/benchmark/append.d.ts.map +1 -0
  3. package/dist/benchmark/append.js +40 -0
  4. package/dist/benchmark/append.js.map +1 -0
  5. package/dist/benchmark/memory/index.d.ts +2 -0
  6. package/dist/benchmark/memory/index.d.ts.map +1 -0
  7. package/dist/benchmark/memory/index.js +122 -0
  8. package/dist/benchmark/memory/index.js.map +1 -0
  9. package/dist/benchmark/memory/insert.d.ts +2 -0
  10. package/dist/benchmark/memory/insert.d.ts.map +1 -0
  11. package/dist/benchmark/memory/insert.js +59 -0
  12. package/dist/benchmark/memory/insert.js.map +1 -0
  13. package/dist/benchmark/memory/utils.d.ts +13 -0
  14. package/dist/benchmark/memory/utils.d.ts.map +1 -0
  15. package/dist/benchmark/memory/utils.js +2 -0
  16. package/dist/benchmark/memory/utils.js.map +1 -0
  17. package/dist/benchmark/payload.d.ts +2 -0
  18. package/dist/benchmark/payload.d.ts.map +1 -0
  19. package/{lib/esm/__benchmark__/index.js → dist/benchmark/payload.js} +20 -22
  20. package/dist/benchmark/payload.js.map +1 -0
  21. package/dist/src/change.d.ts +6 -0
  22. package/dist/src/change.d.ts.map +1 -0
  23. package/{lib/esm → dist/src}/clock.d.ts +3 -26
  24. package/dist/src/clock.d.ts.map +1 -0
  25. package/{lib/esm → dist/src}/clock.js +30 -39
  26. package/dist/src/clock.js.map +1 -0
  27. package/{lib/esm → dist/src}/difference.d.ts +1 -0
  28. package/dist/src/difference.d.ts.map +1 -0
  29. package/{lib/esm → dist/src}/encoding.d.ts +2 -1
  30. package/dist/src/encoding.d.ts.map +1 -0
  31. package/{lib/esm → dist/src}/encoding.js +2 -2
  32. package/{lib/esm → dist/src}/encoding.js.map +1 -1
  33. package/dist/src/entry-index.d.ts +78 -0
  34. package/dist/src/entry-index.d.ts.map +1 -0
  35. package/dist/src/entry-index.js +316 -0
  36. package/dist/src/entry-index.js.map +1 -0
  37. package/{lib/esm → dist/src}/entry-with-refs.d.ts +2 -1
  38. package/dist/src/entry-with-refs.d.ts.map +1 -0
  39. package/{lib/esm → dist/src}/entry.d.ts +22 -18
  40. package/dist/src/entry.d.ts.map +1 -0
  41. package/{lib/esm → dist/src}/entry.js +69 -42
  42. package/dist/src/entry.js.map +1 -0
  43. package/{lib/esm → dist/src}/find-uniques.d.ts +1 -0
  44. package/dist/src/find-uniques.d.ts.map +1 -0
  45. package/{lib/esm → dist/src}/heads-cache.d.ts +4 -3
  46. package/dist/src/heads-cache.d.ts.map +1 -0
  47. package/{lib/esm → dist/src}/heads-cache.js +9 -10
  48. package/dist/src/heads-cache.js.map +1 -0
  49. package/{lib/esm → dist/src}/index.d.ts +1 -0
  50. package/dist/src/index.d.ts.map +1 -0
  51. package/{lib/esm → dist/src}/log-errors.d.ts +1 -0
  52. package/dist/src/log-errors.d.ts.map +1 -0
  53. package/dist/src/log-sorting.d.ts +35 -0
  54. package/dist/src/log-sorting.d.ts.map +1 -0
  55. package/dist/src/log-sorting.js +105 -0
  56. package/dist/src/log-sorting.js.map +1 -0
  57. package/{lib/esm → dist/src}/log.d.ts +78 -56
  58. package/dist/src/log.d.ts.map +1 -0
  59. package/{lib/esm → dist/src}/log.js +355 -465
  60. package/dist/src/log.js.map +1 -0
  61. package/{lib/esm → dist/src}/logger.d.ts +1 -0
  62. package/dist/src/logger.d.ts.map +1 -0
  63. package/{lib/esm → dist/src}/logger.js.map +1 -1
  64. package/{lib/esm → dist/src}/snapshot.d.ts +5 -4
  65. package/dist/src/snapshot.d.ts.map +1 -0
  66. package/{lib/esm → dist/src}/snapshot.js +10 -10
  67. package/dist/src/snapshot.js.map +1 -0
  68. package/{lib/esm → dist/src}/trim.d.ts +11 -9
  69. package/dist/src/trim.d.ts.map +1 -0
  70. package/{lib/esm → dist/src}/trim.js +46 -35
  71. package/dist/src/trim.js.map +1 -0
  72. package/dist/src/utils.d.ts +4 -0
  73. package/dist/src/utils.d.ts.map +1 -0
  74. package/dist/src/utils.js +12 -0
  75. package/dist/src/utils.js.map +1 -0
  76. package/package.json +104 -78
  77. package/src/change.ts +3 -2
  78. package/src/clock.ts +22 -22
  79. package/src/encoding.ts +4 -4
  80. package/src/entry-index.ts +451 -52
  81. package/src/entry-with-refs.ts +1 -1
  82. package/src/entry.ts +95 -81
  83. package/src/heads-cache.ts +33 -29
  84. package/src/log-sorting.ts +116 -94
  85. package/src/log.ts +482 -571
  86. package/src/logger.ts +1 -0
  87. package/src/snapshot.ts +15 -17
  88. package/src/trim.ts +81 -50
  89. package/src/utils.ts +10 -0
  90. package/lib/esm/__benchmark__/index.d.ts +0 -1
  91. package/lib/esm/__benchmark__/index.js.map +0 -1
  92. package/lib/esm/change.d.ts +0 -5
  93. package/lib/esm/clock.js.map +0 -1
  94. package/lib/esm/entry-index.d.ts +0 -24
  95. package/lib/esm/entry-index.js +0 -74
  96. package/lib/esm/entry-index.js.map +0 -1
  97. package/lib/esm/entry.js.map +0 -1
  98. package/lib/esm/heads-cache.js.map +0 -1
  99. package/lib/esm/heads.d.ts +0 -69
  100. package/lib/esm/heads.js +0 -157
  101. package/lib/esm/heads.js.map +0 -1
  102. package/lib/esm/log-sorting.d.ts +0 -44
  103. package/lib/esm/log-sorting.js +0 -86
  104. package/lib/esm/log-sorting.js.map +0 -1
  105. package/lib/esm/log.js.map +0 -1
  106. package/lib/esm/snapshot.js.map +0 -1
  107. package/lib/esm/trim.js.map +0 -1
  108. package/lib/esm/types.d.ts +0 -6
  109. package/lib/esm/types.js +0 -23
  110. package/lib/esm/types.js.map +0 -1
  111. package/lib/esm/utils.d.ts +0 -2
  112. package/lib/esm/utils.js +0 -3
  113. package/lib/esm/utils.js.map +0 -1
  114. package/lib/esm/values.d.ts +0 -26
  115. package/lib/esm/values.js +0 -131
  116. package/lib/esm/values.js.map +0 -1
  117. package/src/__benchmark__/index.ts +0 -130
  118. package/src/heads.ts +0 -233
  119. package/src/types.ts +0 -12
  120. package/src/values.ts +0 -174
  121. /package/{lib/esm → dist/src}/change.js +0 -0
  122. /package/{lib/esm → dist/src}/change.js.map +0 -0
  123. /package/{lib/esm → dist/src}/difference.js +0 -0
  124. /package/{lib/esm → dist/src}/difference.js.map +0 -0
  125. /package/{lib/esm → dist/src}/entry-with-refs.js +0 -0
  126. /package/{lib/esm → dist/src}/entry-with-refs.js.map +0 -0
  127. /package/{lib/esm → dist/src}/find-uniques.js +0 -0
  128. /package/{lib/esm → dist/src}/find-uniques.js.map +0 -0
  129. /package/{lib/esm → dist/src}/index.js +0 -0
  130. /package/{lib/esm → dist/src}/index.js.map +0 -0
  131. /package/{lib/esm → dist/src}/log-errors.js +0 -0
  132. /package/{lib/esm → dist/src}/log-errors.js.map +0 -0
  133. /package/{lib/esm → dist/src}/logger.js +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=append.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=insert.d.ts.map
@@ -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,13 @@
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
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../benchmark/memory/utils.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=payload.d.ts.map
@@ -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 { BORSH_ENCODING } from "../encoding.js";
18
- import { Entry } from "../entry.js";
19
- // Run with "node --loader ts-node/esm ./src/__benchmark__/index.ts"
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
- if (opts) {
27
- this.id = opts.id;
28
- this.name = opts.name;
29
- this.number = opts.number;
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=index.js.map
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,6 @@
1
+ import type { Entry, ShallowOrFullEntry } from "./entry.js";
2
+ export type Change<T> = {
3
+ added: Entry<T>[];
4
+ removed: ShallowOrFullEntry<T>[];
5
+ };
6
+ //# sourceMappingURL=change.d.ts.map
@@ -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): number;
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
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
26
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
27
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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
- let Timestamp = Timestamp_1 = class Timestamp {
65
+ /* @variant(0) */
66
+ export class Timestamp {
65
67
  wallTime;
66
68
  logical;
67
69
  constructor(properties) {
68
- if (properties) {
69
- this.wallTime = properties.wallTime;
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 Timestamp_1.compare(this, other);
91
+ return Timestamp.compare(this, other);
92
92
  }
93
93
  clone() {
94
- return new Timestamp_1({
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
- let LamportClock = LamportClock_1 = class LamportClock {
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 LamportClock_1({
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 LamportClock_1({ id: this.id, timestamp: h.now() });
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