@helia/utils 0.1.0-1561e4a → 0.1.0-5cf216b
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/index.min.js +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/routing.d.ts.map +1 -1
- package/dist/src/routing.js +0 -13
- package/dist/src/routing.js.map +1 -1
- package/dist/src/storage.d.ts +2 -1
- package/dist/src/storage.d.ts.map +1 -1
- package/dist/src/storage.js +14 -1
- package/dist/src/storage.js.map +1 -1
- package/dist/src/utils/networked-storage.d.ts +9 -5
- package/dist/src/utils/networked-storage.d.ts.map +1 -1
- package/dist/src/utils/networked-storage.js +44 -32
- package/dist/src/utils/networked-storage.js.map +1 -1
- package/package.json +2 -3
- package/src/index.ts +14 -13
- package/src/routing.ts +0 -19
- package/src/storage.ts +19 -3
- package/src/utils/networked-storage.ts +82 -55
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,IAAI,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC7F,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAU,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC3G,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,qBAAa,OAAQ,YAAW,gBAAgB,EAAE,SAAS;IACzD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;gBAE7C,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW;IAKvD,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAIvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAmB,GAAG,aAAa,CAAC,QAAQ,CAAC;IAmBvF;;;OAGG;IACG,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAanE;;OAEG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASrF;;;OAGG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IASxE;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IA4BxE;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAmB,GAAG,aAAa,CAAC,QAAQ,CAAC;CAgBjG"}
|
package/dist/src/routing.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CodeError, start, stop } from '@libp2p/interface';
|
|
2
|
-
import { PeerSet } from '@libp2p/peer-collections';
|
|
3
2
|
import merge from 'it-merge';
|
|
4
3
|
export class Routing {
|
|
5
4
|
log;
|
|
@@ -21,7 +20,6 @@ export class Routing {
|
|
|
21
20
|
if (this.routers.length === 0) {
|
|
22
21
|
throw new CodeError('No content routers available', 'ERR_NO_ROUTERS_AVAILABLE');
|
|
23
22
|
}
|
|
24
|
-
const seen = new PeerSet();
|
|
25
23
|
for await (const peer of merge(...supports(this.routers, 'findProviders')
|
|
26
24
|
.map(router => router.findProviders(key, options)))) {
|
|
27
25
|
// the peer was yielded by a content router without multiaddrs and we
|
|
@@ -29,11 +27,6 @@ export class Routing {
|
|
|
29
27
|
if (peer == null) {
|
|
30
28
|
continue;
|
|
31
29
|
}
|
|
32
|
-
// deduplicate peers
|
|
33
|
-
if (seen.has(peer.id)) {
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
seen.add(peer.id);
|
|
37
30
|
yield peer;
|
|
38
31
|
}
|
|
39
32
|
}
|
|
@@ -101,17 +94,11 @@ export class Routing {
|
|
|
101
94
|
if (this.routers.length === 0) {
|
|
102
95
|
throw new CodeError('No peer routers available', 'ERR_NO_ROUTERS_AVAILABLE');
|
|
103
96
|
}
|
|
104
|
-
const seen = new PeerSet();
|
|
105
97
|
for await (const peer of merge(...supports(this.routers, 'getClosestPeers')
|
|
106
98
|
.map(router => router.getClosestPeers(key, options)))) {
|
|
107
99
|
if (peer == null) {
|
|
108
100
|
continue;
|
|
109
101
|
}
|
|
110
|
-
// deduplicate peers
|
|
111
|
-
if (seen.has(peer.id)) {
|
|
112
|
-
continue;
|
|
113
|
-
}
|
|
114
|
-
seen.add(peer.id);
|
|
115
102
|
yield peer;
|
|
116
103
|
}
|
|
117
104
|
}
|
package/dist/src/routing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"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"}
|
package/dist/src/storage.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare class BlockStorage implements Blocks, Startable {
|
|
|
25
25
|
/**
|
|
26
26
|
* Create a new BlockStorage
|
|
27
27
|
*/
|
|
28
|
-
constructor(blockstore:
|
|
28
|
+
constructor(blockstore: Blocks, pins: Pins, options?: BlockStorageInit);
|
|
29
29
|
isStarted(): boolean;
|
|
30
30
|
start(): Promise<void>;
|
|
31
31
|
stop(): Promise<void>;
|
|
@@ -59,5 +59,6 @@ export declare class BlockStorage implements Blocks, Startable {
|
|
|
59
59
|
deleteMany(cids: AwaitIterable<CID>, options?: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents>): AsyncIterable<CID>;
|
|
60
60
|
has(cid: CID, options?: AbortOptions): Promise<boolean>;
|
|
61
61
|
getAll(options?: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents>): AsyncIterable<Pair>;
|
|
62
|
+
createSession(root: CID, options?: AbortOptions): Promise<Blockstore>;
|
|
62
63
|
}
|
|
63
64
|
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAC/Q,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,UAAW,SAAQ,YAAY;IAC9C,QAAQ,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAA;CAC5B;AAED;;;;GAIG;AACH,qBAAa,YAAa,YAAW,MAAM,EAAE,SAAS;IAC7C,IAAI,EAAE,OAAO,CAAA;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
|
package/dist/src/storage.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { start, stop } from '@libp2p/interface';
|
|
1
|
+
import { CodeError, start, stop } from '@libp2p/interface';
|
|
2
2
|
import createMortice from 'mortice';
|
|
3
3
|
/**
|
|
4
4
|
* BlockStorage is a hybrid blockstore that puts/gets blocks from a configured
|
|
@@ -136,5 +136,18 @@ export class BlockStorage {
|
|
|
136
136
|
releaseLock();
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
+
async createSession(root, options) {
|
|
140
|
+
const releaseLock = await this.lock.readLock();
|
|
141
|
+
try {
|
|
142
|
+
const blocks = await this.child.createSession(root, options);
|
|
143
|
+
if (blocks == null) {
|
|
144
|
+
throw new CodeError('Sessions not supported', 'ERR_UNSUPPORTED');
|
|
145
|
+
}
|
|
146
|
+
return blocks;
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
releaseLock();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
139
152
|
}
|
|
140
153
|
//# sourceMappingURL=storage.js.map
|
package/dist/src/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,17 @@ import type { Blockstore } from 'interface-blockstore';
|
|
|
5
5
|
import type { AwaitIterable } from 'interface-store';
|
|
6
6
|
import type { CID } from 'multiformats/cid';
|
|
7
7
|
import type { MultihashHasher } from 'multiformats/hashes/interface';
|
|
8
|
+
export interface NetworkedStorageInit {
|
|
9
|
+
root?: CID;
|
|
10
|
+
}
|
|
8
11
|
export interface GetOptions extends AbortOptions {
|
|
9
12
|
progress?(evt: Event): void;
|
|
10
13
|
}
|
|
11
14
|
export interface NetworkedStorageComponents {
|
|
12
15
|
blockstore: Blockstore;
|
|
13
16
|
logger: ComponentLogger;
|
|
14
|
-
blockBrokers
|
|
15
|
-
hashers
|
|
17
|
+
blockBrokers: BlockBroker[];
|
|
18
|
+
hashers: Record<number, MultihashHasher>;
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
18
21
|
* Networked storage wraps a regular blockstore - when getting blocks if the
|
|
@@ -20,15 +23,15 @@ export interface NetworkedStorageComponents {
|
|
|
20
23
|
*/
|
|
21
24
|
export declare class NetworkedStorage implements Blocks, Startable {
|
|
22
25
|
private readonly child;
|
|
23
|
-
private readonly blockRetrievers;
|
|
24
|
-
private readonly blockAnnouncers;
|
|
25
26
|
private readonly hashers;
|
|
26
27
|
private started;
|
|
27
28
|
private readonly log;
|
|
29
|
+
private readonly logger;
|
|
30
|
+
private readonly components;
|
|
28
31
|
/**
|
|
29
32
|
* Create a new BlockStorage
|
|
30
33
|
*/
|
|
31
|
-
constructor(components: NetworkedStorageComponents);
|
|
34
|
+
constructor(components: NetworkedStorageComponents, init?: NetworkedStorageInit);
|
|
32
35
|
isStarted(): boolean;
|
|
33
36
|
start(): Promise<void>;
|
|
34
37
|
stop(): Promise<void>;
|
|
@@ -62,6 +65,7 @@ export declare class NetworkedStorage implements Blocks, Startable {
|
|
|
62
65
|
deleteMany(cids: AwaitIterable<CID>, options?: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents>): AsyncIterable<CID>;
|
|
63
66
|
has(cid: CID, options?: AbortOptions): Promise<boolean>;
|
|
64
67
|
getAll(options?: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents>): AwaitIterable<Pair>;
|
|
68
|
+
createSession(root: CID, options?: AbortOptions & ProgressOptions<GetBlockProgressEvents>): Promise<Blocks>;
|
|
65
69
|
}
|
|
66
70
|
export declare const getCidBlockVerifierFunction: (cid: CID, hasher: MultihashHasher) => Required<BlockRetrievalOptions>['validateFn'];
|
|
67
71
|
//# sourceMappingURL=networked-storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networked-storage.d.ts","sourceRoot":"","sources":["../../../src/utils/networked-storage.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"networked-storage.d.ts","sourceRoot":"","sources":["../../../src/utils/networked-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,34 +6,28 @@ import filter from 'it-filter';
|
|
|
6
6
|
import forEach from 'it-foreach';
|
|
7
7
|
import { CustomProgressEvent } from 'progress-events';
|
|
8
8
|
import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
|
|
9
|
-
function isBlockRetriever(b) {
|
|
10
|
-
return typeof b.retrieve === 'function';
|
|
11
|
-
}
|
|
12
|
-
function isBlockAnnouncer(b) {
|
|
13
|
-
return typeof b.announce === 'function';
|
|
14
|
-
}
|
|
15
9
|
/**
|
|
16
10
|
* Networked storage wraps a regular blockstore - when getting blocks if the
|
|
17
11
|
* blocks are not present Bitswap will be used to fetch them from network peers.
|
|
18
12
|
*/
|
|
19
13
|
export class NetworkedStorage {
|
|
20
14
|
child;
|
|
21
|
-
blockRetrievers;
|
|
22
|
-
blockAnnouncers;
|
|
23
15
|
hashers;
|
|
24
16
|
started;
|
|
25
17
|
log;
|
|
18
|
+
logger;
|
|
19
|
+
components;
|
|
26
20
|
/**
|
|
27
21
|
* Create a new BlockStorage
|
|
28
22
|
*/
|
|
29
|
-
constructor(components) {
|
|
30
|
-
this.log = components.logger.forComponent(
|
|
23
|
+
constructor(components, init = {}) {
|
|
24
|
+
this.log = components.logger.forComponent(`helia:networked-storage${init.root == null ? '' : `:${init.root}`}`);
|
|
25
|
+
this.logger = components.logger;
|
|
26
|
+
this.components = components;
|
|
31
27
|
this.child = new TieredBlockstore([
|
|
32
28
|
new IdentityBlockstore(),
|
|
33
29
|
components.blockstore
|
|
34
30
|
]);
|
|
35
|
-
this.blockRetrievers = (components.blockBrokers ?? []).filter(isBlockRetriever);
|
|
36
|
-
this.blockAnnouncers = (components.blockBrokers ?? []).filter(isBlockAnnouncer);
|
|
37
31
|
this.hashers = components.hashers ?? {};
|
|
38
32
|
this.started = false;
|
|
39
33
|
}
|
|
@@ -41,11 +35,11 @@ export class NetworkedStorage {
|
|
|
41
35
|
return this.started;
|
|
42
36
|
}
|
|
43
37
|
async start() {
|
|
44
|
-
await start(this.child, ...
|
|
38
|
+
await start(this.child, ...this.components.blockBrokers);
|
|
45
39
|
this.started = true;
|
|
46
40
|
}
|
|
47
41
|
async stop() {
|
|
48
|
-
await stop(this.child, ...
|
|
42
|
+
await stop(this.child, ...this.components.blockBrokers);
|
|
49
43
|
this.started = false;
|
|
50
44
|
}
|
|
51
45
|
unwrap() {
|
|
@@ -60,9 +54,7 @@ export class NetworkedStorage {
|
|
|
60
54
|
return cid;
|
|
61
55
|
}
|
|
62
56
|
options.onProgress?.(new CustomProgressEvent('blocks:put:providers:notify', cid));
|
|
63
|
-
this.
|
|
64
|
-
provider.announce(cid, block, options);
|
|
65
|
-
});
|
|
57
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
66
58
|
options.onProgress?.(new CustomProgressEvent('blocks:put:blockstore:put', cid));
|
|
67
59
|
return this.child.put(cid, block, options);
|
|
68
60
|
}
|
|
@@ -77,11 +69,9 @@ export class NetworkedStorage {
|
|
|
77
69
|
}
|
|
78
70
|
return !has;
|
|
79
71
|
});
|
|
80
|
-
const notifyEach = forEach(missingBlocks, ({ cid, block }) => {
|
|
72
|
+
const notifyEach = forEach(missingBlocks, async ({ cid, block }) => {
|
|
81
73
|
options.onProgress?.(new CustomProgressEvent('blocks:put-many:providers:notify', cid));
|
|
82
|
-
this.
|
|
83
|
-
provider.announce(cid, block, options);
|
|
84
|
-
});
|
|
74
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
85
75
|
});
|
|
86
76
|
options.onProgress?.(new CustomProgressEvent('blocks:put-many:blockstore:put-many'));
|
|
87
77
|
yield* this.child.putMany(notifyEach, options);
|
|
@@ -93,7 +83,7 @@ export class NetworkedStorage {
|
|
|
93
83
|
if (options.offline !== true && !(await this.child.has(cid))) {
|
|
94
84
|
// we do not have the block locally, get it from a block provider
|
|
95
85
|
options.onProgress?.(new CustomProgressEvent('blocks:get:providers:get', cid));
|
|
96
|
-
const block = await raceBlockRetrievers(cid, this.
|
|
86
|
+
const block = await raceBlockRetrievers(cid, this.components.blockBrokers, this.hashers[cid.multihash.code], {
|
|
97
87
|
...options,
|
|
98
88
|
log: this.log
|
|
99
89
|
});
|
|
@@ -101,9 +91,7 @@ export class NetworkedStorage {
|
|
|
101
91
|
await this.child.put(cid, block, options);
|
|
102
92
|
// notify other block providers of the new block
|
|
103
93
|
options.onProgress?.(new CustomProgressEvent('blocks:get:providers:notify', cid));
|
|
104
|
-
this.
|
|
105
|
-
provider.announce(cid, block, options);
|
|
106
|
-
});
|
|
94
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
107
95
|
return block;
|
|
108
96
|
}
|
|
109
97
|
options.onProgress?.(new CustomProgressEvent('blocks:get:blockstore:get', cid));
|
|
@@ -118,7 +106,7 @@ export class NetworkedStorage {
|
|
|
118
106
|
if (options.offline !== true && !(await this.child.has(cid))) {
|
|
119
107
|
// we do not have the block locally, get it from a block provider
|
|
120
108
|
options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:get', cid));
|
|
121
|
-
const block = await raceBlockRetrievers(cid, this.
|
|
109
|
+
const block = await raceBlockRetrievers(cid, this.components.blockBrokers, this.hashers[cid.multihash.code], {
|
|
122
110
|
...options,
|
|
123
111
|
log: this.log
|
|
124
112
|
});
|
|
@@ -126,9 +114,7 @@ export class NetworkedStorage {
|
|
|
126
114
|
await this.child.put(cid, block, options);
|
|
127
115
|
// notify other block providers of the new block
|
|
128
116
|
options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:notify', cid));
|
|
129
|
-
this.
|
|
130
|
-
provider.announce(cid, block, options);
|
|
131
|
-
});
|
|
117
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
132
118
|
}
|
|
133
119
|
}));
|
|
134
120
|
}
|
|
@@ -157,6 +143,25 @@ export class NetworkedStorage {
|
|
|
157
143
|
options.onProgress?.(new CustomProgressEvent('blocks:get-all:blockstore:get-many'));
|
|
158
144
|
yield* this.child.getAll(options);
|
|
159
145
|
}
|
|
146
|
+
async createSession(root, options) {
|
|
147
|
+
const blockBrokers = await Promise.all(this.components.blockBrokers.map(async (broker) => {
|
|
148
|
+
if (broker.createSession == null) {
|
|
149
|
+
return broker;
|
|
150
|
+
}
|
|
151
|
+
return broker.createSession(root, options);
|
|
152
|
+
}));
|
|
153
|
+
return new NetworkedStorage({
|
|
154
|
+
blockstore: this.child,
|
|
155
|
+
blockBrokers,
|
|
156
|
+
hashers: this.hashers,
|
|
157
|
+
logger: this.logger
|
|
158
|
+
}, {
|
|
159
|
+
root
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function isRetrievingBlockBroker(broker) {
|
|
164
|
+
return typeof broker.retrieve === 'function';
|
|
160
165
|
}
|
|
161
166
|
export const getCidBlockVerifierFunction = (cid, hasher) => {
|
|
162
167
|
if (hasher == null) {
|
|
@@ -175,15 +180,22 @@ export const getCidBlockVerifierFunction = (cid, hasher) => {
|
|
|
175
180
|
* Race block providers cancelling any pending requests once the block has been
|
|
176
181
|
* found.
|
|
177
182
|
*/
|
|
178
|
-
async function raceBlockRetrievers(cid,
|
|
183
|
+
async function raceBlockRetrievers(cid, blockBrokers, hasher, options) {
|
|
179
184
|
const validateFn = getCidBlockVerifierFunction(cid, hasher);
|
|
180
185
|
const controller = new AbortController();
|
|
181
186
|
const signal = anySignal([controller.signal, options.signal]);
|
|
187
|
+
const retrievers = [];
|
|
188
|
+
for (const broker of blockBrokers) {
|
|
189
|
+
if (isRetrievingBlockBroker(broker)) {
|
|
190
|
+
retrievers.push(broker);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
182
193
|
try {
|
|
183
|
-
return await Promise.any(
|
|
194
|
+
return await Promise.any(retrievers
|
|
195
|
+
.map(async (retriever) => {
|
|
184
196
|
try {
|
|
185
197
|
let blocksWereValidated = false;
|
|
186
|
-
const block = await
|
|
198
|
+
const block = await retriever.retrieve(cid, {
|
|
187
199
|
...options,
|
|
188
200
|
signal,
|
|
189
201
|
validateFn: async (block) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networked-storage.js","sourceRoot":"","sources":["../../../src/utils/networked-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,OAAO,MAAM,YAAY,CAAA;AAChC,OAAO,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAA;AAC3E,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"networked-storage.js","sourceRoot":"","sources":["../../../src/utils/networked-storage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@helia/utils",
|
|
3
|
-
"version": "0.1.0-
|
|
3
|
+
"version": "0.1.0-5cf216b",
|
|
4
4
|
"description": "Shared code that implements the Helia API",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/ipfs/helia/tree/main/packages/utils#readme",
|
|
@@ -53,13 +53,12 @@
|
|
|
53
53
|
"test:electron-main": "aegir test -t electron-main"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@helia/interface": "4.1.0-
|
|
56
|
+
"@helia/interface": "4.1.0-5cf216b",
|
|
57
57
|
"@ipld/dag-cbor": "^9.2.0",
|
|
58
58
|
"@ipld/dag-json": "^10.2.0",
|
|
59
59
|
"@ipld/dag-pb": "^4.1.0",
|
|
60
60
|
"@libp2p/interface": "^1.1.4",
|
|
61
61
|
"@libp2p/logger": "^4.0.7",
|
|
62
|
-
"@libp2p/peer-collections": "^5.1.7",
|
|
63
62
|
"@libp2p/utils": "^5.2.6",
|
|
64
63
|
"@multiformats/dns": "^1.0.1",
|
|
65
64
|
"any-signal": "^4.1.1",
|
package/src/index.ts
CHANGED
|
@@ -119,6 +119,7 @@ interface Components {
|
|
|
119
119
|
dagWalkers: Record<number, DAGWalker>
|
|
120
120
|
logger: ComponentLogger
|
|
121
121
|
blockBrokers: BlockBroker[]
|
|
122
|
+
routing: Routing
|
|
122
123
|
dns: DNS
|
|
123
124
|
}
|
|
124
125
|
|
|
@@ -140,6 +141,7 @@ export class Helia implements HeliaInterface {
|
|
|
140
141
|
this.dagWalkers = defaultDagWalkers(init.dagWalkers)
|
|
141
142
|
this.dns = init.dns ?? dns()
|
|
142
143
|
|
|
144
|
+
// @ts-expect-error routing is not set
|
|
143
145
|
const components: Components = {
|
|
144
146
|
blockstore: init.blockstore,
|
|
145
147
|
datastore: init.datastore,
|
|
@@ -151,19 +153,7 @@ export class Helia implements HeliaInterface {
|
|
|
151
153
|
...(init.components ?? {})
|
|
152
154
|
}
|
|
153
155
|
|
|
154
|
-
components.
|
|
155
|
-
return fn(components)
|
|
156
|
-
})
|
|
157
|
-
|
|
158
|
-
const networkedStorage = new NetworkedStorage(components)
|
|
159
|
-
|
|
160
|
-
this.pins = new PinsImpl(init.datastore, networkedStorage, this.dagWalkers)
|
|
161
|
-
|
|
162
|
-
this.blockstore = new BlockStorage(networkedStorage, this.pins, {
|
|
163
|
-
holdGcLock: init.holdGcLock ?? true
|
|
164
|
-
})
|
|
165
|
-
this.datastore = init.datastore
|
|
166
|
-
this.routing = new RoutingClass(components, {
|
|
156
|
+
this.routing = components.routing = new RoutingClass(components, {
|
|
167
157
|
routers: (init.routers ?? []).flatMap((router: any) => {
|
|
168
158
|
// if the router itself is a router
|
|
169
159
|
const routers = [
|
|
@@ -183,6 +173,17 @@ export class Helia implements HeliaInterface {
|
|
|
183
173
|
return routers
|
|
184
174
|
})
|
|
185
175
|
})
|
|
176
|
+
|
|
177
|
+
const networkedStorage = new NetworkedStorage(components)
|
|
178
|
+
this.pins = new PinsImpl(init.datastore, networkedStorage, this.dagWalkers)
|
|
179
|
+
this.blockstore = new BlockStorage(networkedStorage, this.pins, {
|
|
180
|
+
holdGcLock: init.holdGcLock ?? true
|
|
181
|
+
})
|
|
182
|
+
this.datastore = init.datastore
|
|
183
|
+
|
|
184
|
+
components.blockBrokers = init.blockBrokers.map((fn) => {
|
|
185
|
+
return fn(components)
|
|
186
|
+
})
|
|
186
187
|
}
|
|
187
188
|
|
|
188
189
|
async start (): Promise<void> {
|
package/src/routing.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CodeError, start, stop } from '@libp2p/interface'
|
|
2
|
-
import { PeerSet } from '@libp2p/peer-collections'
|
|
3
2
|
import merge from 'it-merge'
|
|
4
3
|
import type { Routing as RoutingInterface, Provider, RoutingOptions } from '@helia/interface'
|
|
5
4
|
import type { AbortOptions, ComponentLogger, Logger, PeerId, PeerInfo, Startable } from '@libp2p/interface'
|
|
@@ -38,8 +37,6 @@ export class Routing implements RoutingInterface, Startable {
|
|
|
38
37
|
throw new CodeError('No content routers available', 'ERR_NO_ROUTERS_AVAILABLE')
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
const seen = new PeerSet()
|
|
42
|
-
|
|
43
40
|
for await (const peer of merge(
|
|
44
41
|
...supports(this.routers, 'findProviders')
|
|
45
42
|
.map(router => router.findProviders(key, options))
|
|
@@ -50,13 +47,6 @@ export class Routing implements RoutingInterface, Startable {
|
|
|
50
47
|
continue
|
|
51
48
|
}
|
|
52
49
|
|
|
53
|
-
// deduplicate peers
|
|
54
|
-
if (seen.has(peer.id)) {
|
|
55
|
-
continue
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
seen.add(peer.id)
|
|
59
|
-
|
|
60
50
|
yield peer
|
|
61
51
|
}
|
|
62
52
|
}
|
|
@@ -142,8 +132,6 @@ export class Routing implements RoutingInterface, Startable {
|
|
|
142
132
|
throw new CodeError('No peer routers available', 'ERR_NO_ROUTERS_AVAILABLE')
|
|
143
133
|
}
|
|
144
134
|
|
|
145
|
-
const seen = new PeerSet()
|
|
146
|
-
|
|
147
135
|
for await (const peer of merge(
|
|
148
136
|
...supports(this.routers, 'getClosestPeers')
|
|
149
137
|
.map(router => router.getClosestPeers(key, options))
|
|
@@ -152,13 +140,6 @@ export class Routing implements RoutingInterface, Startable {
|
|
|
152
140
|
continue
|
|
153
141
|
}
|
|
154
142
|
|
|
155
|
-
// deduplicate peers
|
|
156
|
-
if (seen.has(peer.id)) {
|
|
157
|
-
continue
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
seen.add(peer.id)
|
|
161
|
-
|
|
162
143
|
yield peer
|
|
163
144
|
}
|
|
164
145
|
}
|
package/src/storage.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { start, stop } from '@libp2p/interface'
|
|
1
|
+
import { CodeError, start, stop } from '@libp2p/interface'
|
|
2
2
|
import createMortice from 'mortice'
|
|
3
3
|
import type { Blocks, Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions } from '@helia/interface/blocks'
|
|
4
4
|
import type { Pins } from '@helia/interface/pins'
|
|
@@ -24,14 +24,14 @@ export interface GetOptions extends AbortOptions {
|
|
|
24
24
|
*/
|
|
25
25
|
export class BlockStorage implements Blocks, Startable {
|
|
26
26
|
public lock: Mortice
|
|
27
|
-
private readonly child:
|
|
27
|
+
private readonly child: Blocks
|
|
28
28
|
private readonly pins: Pins
|
|
29
29
|
private started: boolean
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Create a new BlockStorage
|
|
33
33
|
*/
|
|
34
|
-
constructor (blockstore:
|
|
34
|
+
constructor (blockstore: Blocks, pins: Pins, options: BlockStorageInit = {}) {
|
|
35
35
|
this.child = blockstore
|
|
36
36
|
this.pins = pins
|
|
37
37
|
this.lock = createMortice({
|
|
@@ -169,4 +169,20 @@ export class BlockStorage implements Blocks, Startable {
|
|
|
169
169
|
releaseLock()
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
|
+
|
|
173
|
+
async createSession (root: CID, options?: AbortOptions): Promise<Blockstore> {
|
|
174
|
+
const releaseLock = await this.lock.readLock()
|
|
175
|
+
|
|
176
|
+
try {
|
|
177
|
+
const blocks = await this.child.createSession(root, options)
|
|
178
|
+
|
|
179
|
+
if (blocks == null) {
|
|
180
|
+
throw new CodeError('Sessions not supported', 'ERR_UNSUPPORTED')
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
return blocks
|
|
184
|
+
} finally {
|
|
185
|
+
releaseLock()
|
|
186
|
+
}
|
|
187
|
+
}
|
|
172
188
|
}
|