@helia/utils 0.0.2 → 0.1.0-329652a
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 +6 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +15 -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 +3 -3
- package/src/index.ts +25 -13
- package/src/routing.ts +0 -19
- package/src/storage.ts +19 -3
- package/src/utils/networked-storage.ts +82 -55
- package/dist/typedoc-urls.json +0 -6
package/dist/src/index.js
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { contentRoutingSymbol, peerRoutingSymbol, start, stop } from '@libp2p/interface';
|
|
20
20
|
import { defaultLogger } from '@libp2p/logger';
|
|
21
|
+
import { dns } from '@multiformats/dns';
|
|
21
22
|
import drain from 'it-drain';
|
|
22
23
|
import { CustomProgressEvent } from 'progress-events';
|
|
23
24
|
import { PinsImpl } from './pins.js';
|
|
@@ -35,12 +36,15 @@ export class Helia {
|
|
|
35
36
|
routing;
|
|
36
37
|
dagWalkers;
|
|
37
38
|
hashers;
|
|
39
|
+
dns;
|
|
38
40
|
log;
|
|
39
41
|
constructor(init) {
|
|
40
42
|
this.logger = init.logger ?? defaultLogger();
|
|
41
43
|
this.log = this.logger.forComponent('helia');
|
|
42
44
|
this.hashers = defaultHashers(init.hashers);
|
|
43
45
|
this.dagWalkers = defaultDagWalkers(init.dagWalkers);
|
|
46
|
+
this.dns = init.dns ?? dns();
|
|
47
|
+
// @ts-expect-error routing is not set
|
|
44
48
|
const components = {
|
|
45
49
|
blockstore: init.blockstore,
|
|
46
50
|
datastore: init.datastore,
|
|
@@ -48,18 +52,10 @@ export class Helia {
|
|
|
48
52
|
dagWalkers: this.dagWalkers,
|
|
49
53
|
logger: this.logger,
|
|
50
54
|
blockBrokers: [],
|
|
55
|
+
dns: this.dns,
|
|
51
56
|
...(init.components ?? {})
|
|
52
57
|
};
|
|
53
|
-
components.
|
|
54
|
-
return fn(components);
|
|
55
|
-
});
|
|
56
|
-
const networkedStorage = new NetworkedStorage(components);
|
|
57
|
-
this.pins = new PinsImpl(init.datastore, networkedStorage, this.dagWalkers);
|
|
58
|
-
this.blockstore = new BlockStorage(networkedStorage, this.pins, {
|
|
59
|
-
holdGcLock: init.holdGcLock ?? true
|
|
60
|
-
});
|
|
61
|
-
this.datastore = init.datastore;
|
|
62
|
-
this.routing = new RoutingClass(components, {
|
|
58
|
+
this.routing = components.routing = new RoutingClass(components, {
|
|
63
59
|
routers: (init.routers ?? []).flatMap((router) => {
|
|
64
60
|
// if the router itself is a router
|
|
65
61
|
const routers = [
|
|
@@ -76,6 +72,15 @@ export class Helia {
|
|
|
76
72
|
return routers;
|
|
77
73
|
})
|
|
78
74
|
});
|
|
75
|
+
const networkedStorage = new NetworkedStorage(components);
|
|
76
|
+
this.pins = new PinsImpl(init.datastore, networkedStorage, this.dagWalkers);
|
|
77
|
+
this.blockstore = new BlockStorage(networkedStorage, this.pins, {
|
|
78
|
+
holdGcLock: init.holdGcLock ?? true
|
|
79
|
+
});
|
|
80
|
+
this.datastore = init.datastore;
|
|
81
|
+
components.blockBrokers = init.blockBrokers.map((fn) => {
|
|
82
|
+
return fn(components);
|
|
83
|
+
});
|
|
79
84
|
}
|
|
80
85
|
async start() {
|
|
81
86
|
await assertDatastoreVersionIsCurrent(this.datastore);
|
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,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.0
|
|
3
|
+
"version": "0.1.0-329652a",
|
|
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,14 +53,14 @@
|
|
|
53
53
|
"test:electron-main": "aegir test -t electron-main"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@helia/interface": "
|
|
56
|
+
"@helia/interface": "4.1.0-329652a",
|
|
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",
|
|
63
|
+
"@multiformats/dns": "^1.0.1",
|
|
64
64
|
"any-signal": "^4.1.1",
|
|
65
65
|
"blockstore-core": "^4.4.0",
|
|
66
66
|
"cborg": "^4.0.9",
|
package/src/index.ts
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
import { contentRoutingSymbol, peerRoutingSymbol, start, stop } from '@libp2p/interface'
|
|
21
21
|
import { defaultLogger } from '@libp2p/logger'
|
|
22
|
+
import { dns } from '@multiformats/dns'
|
|
22
23
|
import drain from 'it-drain'
|
|
23
24
|
import { CustomProgressEvent } from 'progress-events'
|
|
24
25
|
import { PinsImpl } from './pins.js'
|
|
@@ -32,6 +33,7 @@ import type { DAGWalker, GCOptions, Helia as HeliaInterface, Routing } from '@he
|
|
|
32
33
|
import type { BlockBroker } from '@helia/interface/blocks'
|
|
33
34
|
import type { Pins } from '@helia/interface/pins'
|
|
34
35
|
import type { ComponentLogger, Logger } from '@libp2p/interface'
|
|
36
|
+
import type { DNS } from '@multiformats/dns'
|
|
35
37
|
import type { Blockstore } from 'interface-blockstore'
|
|
36
38
|
import type { Datastore } from 'interface-datastore'
|
|
37
39
|
import type { CID } from 'multiformats/cid'
|
|
@@ -103,6 +105,11 @@ export interface HeliaInit {
|
|
|
103
105
|
* Components used by subclasses
|
|
104
106
|
*/
|
|
105
107
|
components?: Record<string, any>
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* An optional DNS implementation used to perform queries for DNS records.
|
|
111
|
+
*/
|
|
112
|
+
dns?: DNS
|
|
106
113
|
}
|
|
107
114
|
|
|
108
115
|
interface Components {
|
|
@@ -112,6 +119,8 @@ interface Components {
|
|
|
112
119
|
dagWalkers: Record<number, DAGWalker>
|
|
113
120
|
logger: ComponentLogger
|
|
114
121
|
blockBrokers: BlockBroker[]
|
|
122
|
+
routing: Routing
|
|
123
|
+
dns: DNS
|
|
115
124
|
}
|
|
116
125
|
|
|
117
126
|
export class Helia implements HeliaInterface {
|
|
@@ -122,6 +131,7 @@ export class Helia implements HeliaInterface {
|
|
|
122
131
|
public routing: Routing
|
|
123
132
|
public dagWalkers: Record<number, DAGWalker>
|
|
124
133
|
public hashers: Record<number, MultihashHasher>
|
|
134
|
+
public dns: DNS
|
|
125
135
|
private readonly log: Logger
|
|
126
136
|
|
|
127
137
|
constructor (init: HeliaInit) {
|
|
@@ -129,7 +139,9 @@ export class Helia implements HeliaInterface {
|
|
|
129
139
|
this.log = this.logger.forComponent('helia')
|
|
130
140
|
this.hashers = defaultHashers(init.hashers)
|
|
131
141
|
this.dagWalkers = defaultDagWalkers(init.dagWalkers)
|
|
142
|
+
this.dns = init.dns ?? dns()
|
|
132
143
|
|
|
144
|
+
// @ts-expect-error routing is not set
|
|
133
145
|
const components: Components = {
|
|
134
146
|
blockstore: init.blockstore,
|
|
135
147
|
datastore: init.datastore,
|
|
@@ -137,22 +149,11 @@ export class Helia implements HeliaInterface {
|
|
|
137
149
|
dagWalkers: this.dagWalkers,
|
|
138
150
|
logger: this.logger,
|
|
139
151
|
blockBrokers: [],
|
|
152
|
+
dns: this.dns,
|
|
140
153
|
...(init.components ?? {})
|
|
141
154
|
}
|
|
142
155
|
|
|
143
|
-
components.
|
|
144
|
-
return fn(components)
|
|
145
|
-
})
|
|
146
|
-
|
|
147
|
-
const networkedStorage = new NetworkedStorage(components)
|
|
148
|
-
|
|
149
|
-
this.pins = new PinsImpl(init.datastore, networkedStorage, this.dagWalkers)
|
|
150
|
-
|
|
151
|
-
this.blockstore = new BlockStorage(networkedStorage, this.pins, {
|
|
152
|
-
holdGcLock: init.holdGcLock ?? true
|
|
153
|
-
})
|
|
154
|
-
this.datastore = init.datastore
|
|
155
|
-
this.routing = new RoutingClass(components, {
|
|
156
|
+
this.routing = components.routing = new RoutingClass(components, {
|
|
156
157
|
routers: (init.routers ?? []).flatMap((router: any) => {
|
|
157
158
|
// if the router itself is a router
|
|
158
159
|
const routers = [
|
|
@@ -172,6 +173,17 @@ export class Helia implements HeliaInterface {
|
|
|
172
173
|
return routers
|
|
173
174
|
})
|
|
174
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
|
+
})
|
|
175
187
|
}
|
|
176
188
|
|
|
177
189
|
async start (): Promise<void> {
|