@helia/utils 0.1.0-9ac5909 → 0.1.0-9c8a2c0
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 +50 -38
- package/dist/src/utils/networked-storage.js.map +1 -1
- package/package.json +5 -5
- package/src/index.ts +14 -13
- package/src/routing.ts +0 -19
- package/src/storage.ts +19 -3
- package/src/utils/networked-storage.ts +88 -61
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":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,MAAM,UAAU,CAAA;AAa5B,MAAM,OAAO,OAAO;IACD,GAAG,CAAQ;IACX,OAAO,CAAkC;IAE1D,YAAa,UAA6B,EAAE,IAAiB;QAC3D,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAE,aAAa,CAAE,GAAQ,EAAE,UAA0B,EAAE;QAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,8BAA8B,EAAE,0BAA0B,CAAC,CAAA;QACjF,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,CAC5B,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC;aACvC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CACrD,EAAE,CAAC;YACF,qEAAqE;YACrE,sBAAsB;YACtB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,CAAA;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAE,GAAQ,EAAE,UAAwB,EAAE;QACjD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,8BAA8B,EAAE,0BAA0B,CAAC,CAAA;QACjF,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;aAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACpC,CAAC,CAAC,CACL,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAE,GAAe,EAAE,KAAiB,EAAE,OAAsB;QACnE,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;aAC1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC,CAAC,CACL,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAE,GAAe,EAAE,OAAsB;QAChD,OAAO,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;aAC1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACjC,CAAC,CAAC,CACL,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAE,EAAU,EAAE,OAAwB;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,CAAA;QAC9E,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,MAAM,MAAM,GAAG,KAAK,CAClB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;aAClC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,SAAU,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,CACR,CAAA;QAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAChC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,SAAQ;YACV,CAAC;YAED,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,IAAI,SAAS,CAAC,gCAAgC,EAAE,eAAe,CAAC,CAAA;IACxE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAE,eAAe,CAAE,GAAe,EAAE,UAA0B,EAAE;QACpE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,2BAA2B,EAAE,0BAA0B,CAAC,CAAA;QAC9E,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,CAC5B,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;aACzC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CACvD,EAAE,CAAC;YACF,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,CAAA;QACZ,CAAC;IACH,CAAC;CACF;AAED,SAAS,QAAQ,CAAoC,OAAc,EAAE,GAAc;IACjF,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;AACtD,CAAC"}
|
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":"
|
|
1
|
+
{"version":3,"file":"networked-storage.d.ts","sourceRoot":"","sources":["../../../src/utils/networked-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,29 @@
|
|
|
1
|
-
import { CodeError, start, stop } from '@libp2p/interface';
|
|
1
|
+
import { CodeError, setMaxListeners, start, stop } from '@libp2p/interface';
|
|
2
2
|
import { anySignal } from 'any-signal';
|
|
3
3
|
import { IdentityBlockstore } from 'blockstore-core/identity';
|
|
4
|
-
import { TieredBlockstore } from 'blockstore-core/tiered';
|
|
5
4
|
import filter from 'it-filter';
|
|
6
5
|
import forEach from 'it-foreach';
|
|
7
6
|
import { CustomProgressEvent } from 'progress-events';
|
|
8
7
|
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
8
|
/**
|
|
16
9
|
* Networked storage wraps a regular blockstore - when getting blocks if the
|
|
17
10
|
* blocks are not present Bitswap will be used to fetch them from network peers.
|
|
18
11
|
*/
|
|
19
12
|
export class NetworkedStorage {
|
|
20
13
|
child;
|
|
21
|
-
blockRetrievers;
|
|
22
|
-
blockAnnouncers;
|
|
23
14
|
hashers;
|
|
24
15
|
started;
|
|
25
16
|
log;
|
|
17
|
+
logger;
|
|
18
|
+
components;
|
|
26
19
|
/**
|
|
27
20
|
* Create a new BlockStorage
|
|
28
21
|
*/
|
|
29
|
-
constructor(components) {
|
|
30
|
-
this.log = components.logger.forComponent(
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
]);
|
|
35
|
-
this.blockRetrievers = (components.blockBrokers ?? []).filter(isBlockRetriever);
|
|
36
|
-
this.blockAnnouncers = (components.blockBrokers ?? []).filter(isBlockAnnouncer);
|
|
22
|
+
constructor(components, init = {}) {
|
|
23
|
+
this.log = components.logger.forComponent(`helia:networked-storage${init.root == null ? '' : `:${init.root}`}`);
|
|
24
|
+
this.logger = components.logger;
|
|
25
|
+
this.components = components;
|
|
26
|
+
this.child = new IdentityBlockstore(components.blockstore);
|
|
37
27
|
this.hashers = components.hashers ?? {};
|
|
38
28
|
this.started = false;
|
|
39
29
|
}
|
|
@@ -41,11 +31,11 @@ export class NetworkedStorage {
|
|
|
41
31
|
return this.started;
|
|
42
32
|
}
|
|
43
33
|
async start() {
|
|
44
|
-
await start(this.child, ...
|
|
34
|
+
await start(this.child, ...this.components.blockBrokers);
|
|
45
35
|
this.started = true;
|
|
46
36
|
}
|
|
47
37
|
async stop() {
|
|
48
|
-
await stop(this.child, ...
|
|
38
|
+
await stop(this.child, ...this.components.blockBrokers);
|
|
49
39
|
this.started = false;
|
|
50
40
|
}
|
|
51
41
|
unwrap() {
|
|
@@ -60,9 +50,7 @@ export class NetworkedStorage {
|
|
|
60
50
|
return cid;
|
|
61
51
|
}
|
|
62
52
|
options.onProgress?.(new CustomProgressEvent('blocks:put:providers:notify', cid));
|
|
63
|
-
this.
|
|
64
|
-
provider.announce(cid, block, options);
|
|
65
|
-
});
|
|
53
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
66
54
|
options.onProgress?.(new CustomProgressEvent('blocks:put:blockstore:put', cid));
|
|
67
55
|
return this.child.put(cid, block, options);
|
|
68
56
|
}
|
|
@@ -77,11 +65,9 @@ export class NetworkedStorage {
|
|
|
77
65
|
}
|
|
78
66
|
return !has;
|
|
79
67
|
});
|
|
80
|
-
const notifyEach = forEach(missingBlocks, ({ cid, block }) => {
|
|
68
|
+
const notifyEach = forEach(missingBlocks, async ({ cid, block }) => {
|
|
81
69
|
options.onProgress?.(new CustomProgressEvent('blocks:put-many:providers:notify', cid));
|
|
82
|
-
this.
|
|
83
|
-
provider.announce(cid, block, options);
|
|
84
|
-
});
|
|
70
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
85
71
|
});
|
|
86
72
|
options.onProgress?.(new CustomProgressEvent('blocks:put-many:blockstore:put-many'));
|
|
87
73
|
yield* this.child.putMany(notifyEach, options);
|
|
@@ -93,7 +79,7 @@ export class NetworkedStorage {
|
|
|
93
79
|
if (options.offline !== true && !(await this.child.has(cid))) {
|
|
94
80
|
// we do not have the block locally, get it from a block provider
|
|
95
81
|
options.onProgress?.(new CustomProgressEvent('blocks:get:providers:get', cid));
|
|
96
|
-
const block = await raceBlockRetrievers(cid, this.
|
|
82
|
+
const block = await raceBlockRetrievers(cid, this.components.blockBrokers, this.hashers[cid.multihash.code], {
|
|
97
83
|
...options,
|
|
98
84
|
log: this.log
|
|
99
85
|
});
|
|
@@ -101,9 +87,7 @@ export class NetworkedStorage {
|
|
|
101
87
|
await this.child.put(cid, block, options);
|
|
102
88
|
// notify other block providers of the new block
|
|
103
89
|
options.onProgress?.(new CustomProgressEvent('blocks:get:providers:notify', cid));
|
|
104
|
-
this.
|
|
105
|
-
provider.announce(cid, block, options);
|
|
106
|
-
});
|
|
90
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
107
91
|
return block;
|
|
108
92
|
}
|
|
109
93
|
options.onProgress?.(new CustomProgressEvent('blocks:get:blockstore:get', cid));
|
|
@@ -118,7 +102,7 @@ export class NetworkedStorage {
|
|
|
118
102
|
if (options.offline !== true && !(await this.child.has(cid))) {
|
|
119
103
|
// we do not have the block locally, get it from a block provider
|
|
120
104
|
options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:get', cid));
|
|
121
|
-
const block = await raceBlockRetrievers(cid, this.
|
|
105
|
+
const block = await raceBlockRetrievers(cid, this.components.blockBrokers, this.hashers[cid.multihash.code], {
|
|
122
106
|
...options,
|
|
123
107
|
log: this.log
|
|
124
108
|
});
|
|
@@ -126,9 +110,7 @@ export class NetworkedStorage {
|
|
|
126
110
|
await this.child.put(cid, block, options);
|
|
127
111
|
// notify other block providers of the new block
|
|
128
112
|
options.onProgress?.(new CustomProgressEvent('blocks:get-many:providers:notify', cid));
|
|
129
|
-
this.
|
|
130
|
-
provider.announce(cid, block, options);
|
|
131
|
-
});
|
|
113
|
+
await Promise.all(this.components.blockBrokers.map(async (broker) => broker.announce?.(cid, block, options)));
|
|
132
114
|
}
|
|
133
115
|
}));
|
|
134
116
|
}
|
|
@@ -157,6 +139,25 @@ export class NetworkedStorage {
|
|
|
157
139
|
options.onProgress?.(new CustomProgressEvent('blocks:get-all:blockstore:get-many'));
|
|
158
140
|
yield* this.child.getAll(options);
|
|
159
141
|
}
|
|
142
|
+
async createSession(root, options) {
|
|
143
|
+
const blockBrokers = await Promise.all(this.components.blockBrokers.map(async (broker) => {
|
|
144
|
+
if (broker.createSession == null) {
|
|
145
|
+
return broker;
|
|
146
|
+
}
|
|
147
|
+
return broker.createSession(root, options);
|
|
148
|
+
}));
|
|
149
|
+
return new NetworkedStorage({
|
|
150
|
+
blockstore: this.child,
|
|
151
|
+
blockBrokers,
|
|
152
|
+
hashers: this.hashers,
|
|
153
|
+
logger: this.logger
|
|
154
|
+
}, {
|
|
155
|
+
root
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function isRetrievingBlockBroker(broker) {
|
|
160
|
+
return typeof broker.retrieve === 'function';
|
|
160
161
|
}
|
|
161
162
|
export const getCidBlockVerifierFunction = (cid, hasher) => {
|
|
162
163
|
if (hasher == null) {
|
|
@@ -175,15 +176,23 @@ export const getCidBlockVerifierFunction = (cid, hasher) => {
|
|
|
175
176
|
* Race block providers cancelling any pending requests once the block has been
|
|
176
177
|
* found.
|
|
177
178
|
*/
|
|
178
|
-
async function raceBlockRetrievers(cid,
|
|
179
|
+
async function raceBlockRetrievers(cid, blockBrokers, hasher, options) {
|
|
179
180
|
const validateFn = getCidBlockVerifierFunction(cid, hasher);
|
|
180
181
|
const controller = new AbortController();
|
|
181
182
|
const signal = anySignal([controller.signal, options.signal]);
|
|
183
|
+
setMaxListeners(Infinity, controller.signal, signal);
|
|
184
|
+
const retrievers = [];
|
|
185
|
+
for (const broker of blockBrokers) {
|
|
186
|
+
if (isRetrievingBlockBroker(broker)) {
|
|
187
|
+
retrievers.push(broker);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
182
190
|
try {
|
|
183
|
-
return await Promise.any(
|
|
191
|
+
return await Promise.any(retrievers
|
|
192
|
+
.map(async (retriever) => {
|
|
184
193
|
try {
|
|
185
194
|
let blocksWereValidated = false;
|
|
186
|
-
const block = await
|
|
195
|
+
const block = await retriever.retrieve(cid, {
|
|
187
196
|
...options,
|
|
188
197
|
signal,
|
|
189
198
|
validateFn: async (block) => {
|
|
@@ -205,6 +214,9 @@ async function raceBlockRetrievers(cid, providers, hasher, options) {
|
|
|
205
214
|
}));
|
|
206
215
|
}
|
|
207
216
|
finally {
|
|
217
|
+
// we have the block from the fastest block retriever, abort any still
|
|
218
|
+
// in-flight retrieve attempts
|
|
219
|
+
controller.abort();
|
|
208
220
|
signal.clear();
|
|
209
221
|
}
|
|
210
222
|
}
|
|
@@ -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;
|
|
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-9c8a2c0",
|
|
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,17 +53,16 @@
|
|
|
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-9c8a2c0",
|
|
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",
|
|
66
|
-
"blockstore-core": "^4.4.
|
|
65
|
+
"blockstore-core": "^4.4.1",
|
|
67
66
|
"cborg": "^4.0.9",
|
|
68
67
|
"interface-blockstore": "^5.2.10",
|
|
69
68
|
"interface-datastore": "^8.2.11",
|
|
@@ -88,5 +87,6 @@
|
|
|
88
87
|
},
|
|
89
88
|
"browser": {
|
|
90
89
|
"./dist/src/utils/libp2p-defaults.js": "./dist/src/utils/libp2p-defaults.browser.js"
|
|
91
|
-
}
|
|
90
|
+
},
|
|
91
|
+
"sideEffects": false
|
|
92
92
|
}
|
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
|
}
|