@peerbit/blocks 4.2.8 → 4.2.10

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/blocks",
3
- "version": "4.2.8",
3
+ "version": "4.2.10",
4
4
  "description": "Block store streaming",
5
5
  "type": "module",
6
6
  "types": "./dist/src/index.d.ts",
@@ -23,6 +23,7 @@
23
23
  "files": [
24
24
  "src",
25
25
  "dist",
26
+ "!dist/benchmark",
26
27
  "!dist/e2e",
27
28
  "!dist/test",
28
29
  "!**/*.tsbuildinfo"
@@ -66,8 +67,8 @@
66
67
  },
67
68
  "homepage": "https://github.com/dao-xyz/peerbit#readme",
68
69
  "devDependencies": {
69
- "@peerbit/libp2p-test-utils": "3.0.8",
70
- "@peerbit/any-store-rust": "0.1.3"
70
+ "@peerbit/libp2p-test-utils": "3.0.9",
71
+ "@peerbit/any-store-rust": "0.1.4"
71
72
  },
72
73
  "dependencies": {
73
74
  "@dao-xyz/borsh": "^6.0.0",
@@ -79,15 +80,15 @@
79
80
  "p-defer": "^4.0.0",
80
81
  "p-queue": "^8.0.1",
81
82
  "uint8arrays": "^5.1.0",
82
- "@peerbit/any-store": "2.2.13",
83
83
  "@peerbit/any-store-interface": "1.1.2",
84
+ "@peerbit/blocks-interface": "2.1.5",
85
+ "@peerbit/crypto": "3.1.5",
84
86
  "@peerbit/cache": "3.1.1",
85
- "@peerbit/crypto": "3.1.4",
86
- "@peerbit/blocks-interface": "2.1.4",
87
+ "@peerbit/any-store": "2.2.14",
88
+ "@peerbit/stream": "5.2.0",
87
89
  "@peerbit/logger": "2.0.1",
88
- "@peerbit/stream": "5.1.5",
89
- "@peerbit/stream-interface": "6.0.14",
90
- "@peerbit/time": "3.0.1"
90
+ "@peerbit/time": "3.0.1",
91
+ "@peerbit/stream-interface": "6.0.15"
91
92
  },
92
93
  "scripts": {
93
94
  "clean": "aegir clean",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=any-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"any-store.d.ts","sourceRoot":"","sources":["../../benchmark/any-store.ts"],"names":[],"mappings":""}
@@ -1,112 +0,0 @@
1
- import { createStore as createDefaultStore } from "@peerbit/any-store";
2
- import {} from "@peerbit/any-store-interface";
3
- import { createStore as createRustStore } from "@peerbit/any-store-rust";
4
- import { calculateRawCid } from "@peerbit/blocks-interface";
5
- import crypto from "crypto";
6
- import { mkdtemp, rm } from "fs/promises";
7
- import { tmpdir } from "os";
8
- import { join } from "path";
9
- import { performance } from "perf_hooks";
10
- import { AnyBlockStore } from "../src/any-blockstore.js";
11
- const parsePositiveInteger = (value, fallback) => {
12
- if (!value) {
13
- return fallback;
14
- }
15
- const parsed = Number.parseInt(value, 10);
16
- if (!Number.isFinite(parsed) || parsed <= 0) {
17
- throw new Error(`Expected a positive integer, got '${value}'`);
18
- }
19
- return parsed;
20
- };
21
- const entries = parsePositiveInteger(process.env.PEERBIT_BLOCKS_STORE_ENTRIES, 10_000);
22
- const valueBytes = parsePositiveInteger(process.env.PEERBIT_BLOCKS_STORE_VALUE_BYTES, 256);
23
- const createModeStore = async (mode) => {
24
- const directory = await mkdtemp(join(tmpdir(), `peerbit-blocks-${mode}-`));
25
- return {
26
- store: mode === "level" ? createDefaultStore(directory) : createRustStore(directory),
27
- cleanup: async () => {
28
- await rm(directory, { recursive: true, force: true });
29
- },
30
- };
31
- };
32
- const measure = async (fn) => {
33
- const started = performance.now();
34
- await fn();
35
- const elapsedMs = performance.now() - started;
36
- return {
37
- elapsedMs: Math.round(elapsedMs),
38
- opsPerSecond: Math.round((entries / elapsedMs) * 1000),
39
- };
40
- };
41
- const runMode = async (mode) => {
42
- const { store, cleanup } = await createModeStore(mode);
43
- const blocks = Array.from({ length: entries }, () => crypto.randomBytes(valueBytes));
44
- const knownBlocks = mode.includes("known")
45
- ? await Promise.all(blocks.map((block) => calculateRawCid(block)))
46
- : [];
47
- if (mode.includes("fallback")) {
48
- const mutableStore = store;
49
- mutableStore.putImmutable = undefined;
50
- mutableStore.putManyImmutable = undefined;
51
- }
52
- const blockstore = new AnyBlockStore(store);
53
- await blockstore.start();
54
- try {
55
- let cids = [];
56
- const put = await measure(async () => {
57
- if (mode === "rust-batch") {
58
- cids = await blockstore.putMany(blocks);
59
- }
60
- else if (mode === "rust-known" || mode === "rust-known-fallback") {
61
- for (const known of knownBlocks) {
62
- cids.push(await blockstore.putKnown(known.cid, known.block.bytes));
63
- }
64
- }
65
- else if (mode === "rust-known-batch" ||
66
- mode === "rust-known-batch-fallback") {
67
- cids = await blockstore.putKnownMany(knownBlocks.map((known) => [known.cid, known.block.bytes]));
68
- }
69
- else {
70
- for (const block of blocks) {
71
- cids.push(await blockstore.put(block));
72
- }
73
- }
74
- });
75
- const get = await measure(async () => {
76
- for (const cid of cids) {
77
- const bytes = await blockstore.get(cid);
78
- if (!bytes || bytes.byteLength !== valueBytes) {
79
- throw new Error(`Missing block ${cid}`);
80
- }
81
- }
82
- });
83
- return {
84
- mode,
85
- entries,
86
- valueBytes,
87
- putOpsPerSecond: put.opsPerSecond,
88
- putMs: put.elapsedMs,
89
- getOpsPerSecond: get.opsPerSecond,
90
- getMs: get.elapsedMs,
91
- verifiedBlocks: cids.length,
92
- };
93
- }
94
- finally {
95
- await blockstore.stop();
96
- await cleanup();
97
- }
98
- };
99
- const rows = [];
100
- for (const mode of [
101
- "level",
102
- "rust",
103
- "rust-batch",
104
- "rust-known-fallback",
105
- "rust-known",
106
- "rust-known-batch-fallback",
107
- "rust-known-batch",
108
- ]) {
109
- rows.push(await runMode(mode));
110
- }
111
- console.table(rows);
112
- //# sourceMappingURL=any-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"any-store.js","sourceRoot":"","sources":["../../benchmark/any-store.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=e2e.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../../benchmark/e2e.ts"],"names":[],"mappings":""}
@@ -1,75 +0,0 @@
1
- import { tcp } from "@libp2p/tcp";
2
- import { stringifyCid } from "@peerbit/blocks-interface";
3
- import { TestSession } from "@peerbit/libp2p-test-utils";
4
- import { waitForNeighbour } from "@peerbit/stream";
5
- import { delay } from "@peerbit/time";
6
- import B from "benchmark";
7
- import crypto from "crypto";
8
- import { DirectBlock } from "../src/index.js";
9
- // Run with "node --loader ts-node/esm ./benchmark/e2e.ts"
10
- // size: 1kb x 827 ops/sec ±2.03% (87 runs sampled)
11
- // size: 1000kb x 40.51 ops/sec ±4.09% (62 runs sampled)
12
- const session = await TestSession.disconnected(4, {
13
- transports: [tcp()],
14
- services: {
15
- blocks: (c) => new DirectBlock(c),
16
- },
17
- });
18
- /*
19
- ┌─┐
20
- │1│
21
- └┬┘
22
- ┌▽┐
23
- │2│
24
- └┬┘
25
- ┌▽┐
26
- │3│
27
- └┬┘
28
- ┌▽┐
29
- │4│
30
- └─┘
31
-
32
- */
33
- await session.connect([
34
- [session.peers[0], session.peers[1]],
35
- [session.peers[1], session.peers[2]],
36
- [session.peers[2], session.peers[3]],
37
- ]);
38
- await session.connect();
39
- await waitForNeighbour(session.peers[0].services.blocks, session.peers[1].services.blocks);
40
- await waitForNeighbour(session.peers[1].services.blocks, session.peers[2].services.blocks);
41
- await waitForNeighbour(session.peers[2].services.blocks, session.peers[3].services.blocks);
42
- await delay(3000);
43
- const largeRandom = [];
44
- for (let i = 0; i < 100; i++) {
45
- largeRandom.push(crypto.randomBytes(1e6));
46
- }
47
- const smallRandom = [];
48
- for (let i = 0; i < 1000; i++) {
49
- smallRandom.push(crypto.randomBytes(1e3));
50
- }
51
- const sizes = [1e3, 1e6];
52
- let suite = new B.Suite("_", { minSamples: 1, initCount: 1, maxTime: 5 });
53
- for (const size of sizes) {
54
- suite = suite.add("size: " + size / 1e3 + "kb", {
55
- defer: true,
56
- async: true,
57
- fn: async (deferred) => {
58
- {
59
- const rng = crypto.randomBytes(size);
60
- const cid = await session.peers[0].services.blocks.put(rng);
61
- await session.peers[session.peers.length - 1].services.blocks.get(stringifyCid(cid));
62
- deferred.resolve();
63
- }
64
- },
65
- });
66
- }
67
- suite
68
- .on("cycle", (event) => {
69
- console.log(String(event.target));
70
- })
71
- .on("complete", function (...args) {
72
- session.stop();
73
- })
74
- .run({ async: true });
75
- //# sourceMappingURL=e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"e2e.js","sourceRoot":"","sources":["../../benchmark/e2e.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=multiformats.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multiformats.d.ts","sourceRoot":"","sources":["../../benchmark/multiformats.ts"],"names":[],"mappings":""}
@@ -1,183 +0,0 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- import { deserialize, field, serialize, variant } from "@dao-xyz/borsh";
36
- import { calculateRawCid, checkDecodeBlock, cidifyString, codecMap, stringifyCid, } from "@peerbit/blocks-interface";
37
- import B from "benchmark";
38
- import crypto from "crypto";
39
- import { encode } from "multiformats/block";
40
- import { sha256 } from "multiformats/hashes/sha2";
41
- import { equals } from "uint8arrays";
42
- // Run with "node --loader ts-node/esm ./benchmark/multiformats.ts"
43
- // size: 1kb x 785 ops/sec ±2.66% (86 runs sampled)
44
- // size: 1000kb x 38.14 ops/sec ±1.43% (40 runs sampled)
45
- class DummyCid {
46
- static decode(bytes) {
47
- return deserialize(bytes, DummyCid);
48
- }
49
- }
50
- let CIDSha256 = (() => {
51
- let _classDecorators = [variant(0)];
52
- let _classDescriptor;
53
- let _classExtraInitializers = [];
54
- let _classThis;
55
- let _classSuper = DummyCid;
56
- let _hash_decorators;
57
- let _hash_initializers = [];
58
- let _hash_extraInitializers = [];
59
- var CIDSha256 = class extends _classSuper {
60
- static { _classThis = this; }
61
- static {
62
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
63
- _hash_decorators = [field({ type: Uint8Array })];
64
- __esDecorate(null, null, _hash_decorators, { kind: "field", name: "hash", static: false, private: false, access: { has: obj => "hash" in obj, get: obj => obj.hash, set: (obj, value) => { obj.hash = value; } }, metadata: _metadata }, _hash_initializers, _hash_extraInitializers);
65
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
66
- CIDSha256 = _classThis = _classDescriptor.value;
67
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
68
- __runInitializers(_classThis, _classExtraInitializers);
69
- }
70
- hash = __runInitializers(this, _hash_initializers, void 0);
71
- constructor(hash) {
72
- super();
73
- __runInitializers(this, _hash_extraInitializers);
74
- this.hash = hash;
75
- }
76
- static encode(bytes) {
77
- const digest = crypto.createHash("sha256").update(bytes).digest();
78
- return new CIDSha256(digest);
79
- }
80
- equals(other) {
81
- if (other instanceof CIDSha256) {
82
- return equals(this.hash, other.hash);
83
- }
84
- return false;
85
- }
86
- get bytes() {
87
- return serialize(this);
88
- }
89
- };
90
- return CIDSha256 = _classThis;
91
- })();
92
- const codec = codecMap["raw"];
93
- const sizes = [1e3, 1e6];
94
- const suite = new B.Suite("_", { minSamples: 1, initCount: 1, maxTime: 5 });
95
- const SAMPLE_SIZE = 1e3;
96
- const sample = {};
97
- for (const size of sizes) {
98
- sample[size] = [];
99
- for (let i = 0; i < SAMPLE_SIZE; i++) {
100
- sample[size].push(crypto.randomBytes(size));
101
- }
102
- }
103
- const getSample = (size) => {
104
- return sample[size][Math.floor(Math.random() * SAMPLE_SIZE)];
105
- };
106
- for (const size of sizes) {
107
- suite.add("multiformats, size: " + size / 1e3 + "kb", {
108
- defer: true,
109
- async: true,
110
- fn: async (deferred) => {
111
- {
112
- const rng = getSample(size);
113
- const cid = await encode({
114
- value: rng,
115
- codec,
116
- hasher: sha256,
117
- });
118
- const cidString = stringifyCid(cid.cid);
119
- const cidObject = cidifyString(cidString);
120
- const checked = await checkDecodeBlock(cidObject, rng, {
121
- hasher: sha256,
122
- codec,
123
- });
124
- if (!checked) {
125
- throw new Error("Not verified");
126
- }
127
- deferred.resolve();
128
- }
129
- },
130
- });
131
- suite.add("peerbit raw cid fast-path, size: " + size / 1e3 + "kb", {
132
- defer: true,
133
- async: true,
134
- fn: async (deferred) => {
135
- const rng = getSample(size);
136
- const cid = await calculateRawCid(rng);
137
- const checked = await checkDecodeBlock(cid.cid, rng, {
138
- hasher: sha256,
139
- codec,
140
- });
141
- if (!checked) {
142
- throw new Error("Not verified");
143
- }
144
- deferred.resolve();
145
- },
146
- });
147
- suite.add("dummy, size: " + size / 1e3 + "kb", {
148
- defer: true,
149
- fn: (deferred) => {
150
- {
151
- const rng = getSample(size);
152
- const cid = CIDSha256.encode(rng);
153
- const cidBytes = cid.bytes;
154
- const cidObject = DummyCid.decode(cidBytes);
155
- const cid2 = CIDSha256.encode(rng);
156
- if (!cidObject.equals(cid2)) {
157
- throw new Error("Not verified");
158
- }
159
- deferred.resolve();
160
- }
161
- },
162
- });
163
- suite.add("sha256 digest hex, size: " + size / 1e3 + "kb", {
164
- defer: true,
165
- fn: (deferred) => {
166
- {
167
- const rng = getSample(size);
168
- const cid = crypto.createHash("sha256").update(rng).digest("hex");
169
- const cid2 = crypto.createHash("sha256").update(rng).digest("hex");
170
- if (cid !== cid2) {
171
- throw new Error("Not verified");
172
- }
173
- deferred.resolve();
174
- }
175
- },
176
- });
177
- }
178
- suite
179
- .on("cycle", (event) => {
180
- console.log(String(event.target));
181
- })
182
- .run({ async: true });
183
- //# sourceMappingURL=multiformats.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multiformats.js","sourceRoot":"","sources":["../../benchmark/multiformats.ts"],"names":[],"mappings":"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"}