@helia/utils 2.5.2-f6cc7640 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/index.min.js +1 -1
  2. package/dist/index.min.js.map +4 -4
  3. package/dist/src/abstract-session.d.ts +3 -3
  4. package/dist/src/abstract-session.d.ts.map +1 -1
  5. package/dist/src/abstract-session.js.map +1 -1
  6. package/dist/src/errors.d.ts +4 -0
  7. package/dist/src/errors.d.ts.map +1 -1
  8. package/dist/src/errors.js +4 -0
  9. package/dist/src/errors.js.map +1 -1
  10. package/dist/src/graph-walker.d.ts +3 -21
  11. package/dist/src/graph-walker.d.ts.map +1 -1
  12. package/dist/src/graph-walker.js +20 -17
  13. package/dist/src/graph-walker.js.map +1 -1
  14. package/dist/src/index.d.ts +5 -168
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +5 -130
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/is-cid.d.ts +3 -0
  19. package/dist/src/is-cid.d.ts.map +1 -0
  20. package/dist/src/is-cid.js +8 -0
  21. package/dist/src/is-cid.js.map +1 -0
  22. package/dist/src/is-promise.d.ts.map +1 -0
  23. package/dist/src/is-promise.js.map +1 -0
  24. package/dist/typedoc-urls.json +20 -0
  25. package/package.json +16 -34
  26. package/src/abstract-session.ts +4 -4
  27. package/src/errors.ts +5 -0
  28. package/src/graph-walker.ts +30 -43
  29. package/src/index.ts +5 -333
  30. package/src/is-cid.ts +9 -0
  31. package/dist/src/pins.d.ts +0 -21
  32. package/dist/src/pins.d.ts.map +0 -1
  33. package/dist/src/pins.js +0 -169
  34. package/dist/src/pins.js.map +0 -1
  35. package/dist/src/routing.d.ts +0 -49
  36. package/dist/src/routing.d.ts.map +0 -1
  37. package/dist/src/routing.js +0 -305
  38. package/dist/src/routing.js.map +0 -1
  39. package/dist/src/storage.d.ts +0 -62
  40. package/dist/src/storage.d.ts.map +0 -1
  41. package/dist/src/storage.js +0 -159
  42. package/dist/src/storage.js.map +0 -1
  43. package/dist/src/utils/datastore-version.d.ts +0 -3
  44. package/dist/src/utils/datastore-version.d.ts.map +0 -1
  45. package/dist/src/utils/datastore-version.js +0 -20
  46. package/dist/src/utils/datastore-version.js.map +0 -1
  47. package/dist/src/utils/get-codec.d.ts +0 -3
  48. package/dist/src/utils/get-codec.d.ts.map +0 -1
  49. package/dist/src/utils/get-codec.js +0 -38
  50. package/dist/src/utils/get-codec.js.map +0 -1
  51. package/dist/src/utils/get-hasher.d.ts +0 -3
  52. package/dist/src/utils/get-hasher.d.ts.map +0 -1
  53. package/dist/src/utils/get-hasher.js +0 -32
  54. package/dist/src/utils/get-hasher.js.map +0 -1
  55. package/dist/src/utils/is-promise.d.ts.map +0 -1
  56. package/dist/src/utils/is-promise.js.map +0 -1
  57. package/dist/src/utils/networked-storage.d.ts +0 -27
  58. package/dist/src/utils/networked-storage.d.ts.map +0 -1
  59. package/dist/src/utils/networked-storage.js +0 -52
  60. package/dist/src/utils/networked-storage.js.map +0 -1
  61. package/dist/src/utils/session-storage.d.ts +0 -47
  62. package/dist/src/utils/session-storage.d.ts.map +0 -1
  63. package/dist/src/utils/session-storage.js +0 -148
  64. package/dist/src/utils/session-storage.js.map +0 -1
  65. package/dist/src/utils/storage.d.ts +0 -55
  66. package/dist/src/utils/storage.d.ts.map +0 -1
  67. package/dist/src/utils/storage.js +0 -225
  68. package/dist/src/utils/storage.js.map +0 -1
  69. package/src/pins.ts +0 -247
  70. package/src/routing.ts +0 -376
  71. package/src/storage.ts +0 -194
  72. package/src/utils/datastore-version.ts +0 -25
  73. package/src/utils/get-codec.ts +0 -46
  74. package/src/utils/get-hasher.ts +0 -39
  75. package/src/utils/networked-storage.ts +0 -73
  76. package/src/utils/session-storage.ts +0 -174
  77. package/src/utils/storage.ts +0 -294
  78. /package/dist/src/{utils/is-promise.d.ts → is-promise.d.ts} +0 -0
  79. /package/dist/src/{utils/is-promise.js → is-promise.js} +0 -0
  80. /package/src/{utils/is-promise.ts → is-promise.ts} +0 -0
package/dist/src/pins.js DELETED
@@ -1,169 +0,0 @@
1
- import { InvalidParametersError } from '@libp2p/interface';
2
- import { Queue } from '@libp2p/utils';
3
- import * as cborg from 'cborg';
4
- import { Key } from 'interface-datastore';
5
- import toBuffer from 'it-to-buffer';
6
- import { base36 } from 'multiformats/bases/base36';
7
- import { createUnsafe } from 'multiformats/block';
8
- import { CID } from 'multiformats/cid';
9
- import { CustomProgressEvent } from 'progress-events';
10
- import { equals as uint8ArrayEquals } from 'uint8arrays/equals';
11
- import { AlreadyPinnedError } from "./errors.js";
12
- const DATASTORE_PIN_PREFIX = '/pin/';
13
- const DATASTORE_BLOCK_PREFIX = '/pinned-block/';
14
- const DATASTORE_ENCODING = base36;
15
- const DAG_WALK_QUEUE_CONCURRENCY = 1;
16
- function toDSKey(cid) {
17
- if (cid.version === 0) {
18
- cid = cid.toV1();
19
- }
20
- return new Key(`${DATASTORE_PIN_PREFIX}${cid.toString(DATASTORE_ENCODING)}`);
21
- }
22
- export class PinsImpl {
23
- datastore;
24
- blockstore;
25
- getCodec;
26
- constructor(datastore, blockstore, getCodec) {
27
- this.datastore = datastore;
28
- this.blockstore = blockstore;
29
- this.getCodec = getCodec;
30
- }
31
- async *add(cid, options = {}) {
32
- const pinKey = toDSKey(cid);
33
- if (await this.datastore.has(pinKey)) {
34
- throw new AlreadyPinnedError('Already pinned');
35
- }
36
- const depth = Math.round(options.depth ?? Infinity);
37
- if (depth < 0) {
38
- throw new InvalidParametersError('Depth must be greater than or equal to 0');
39
- }
40
- // use a queue to walk the DAG instead of recursion so we can traverse very large DAGs
41
- const queue = new Queue({
42
- concurrency: DAG_WALK_QUEUE_CONCURRENCY
43
- });
44
- for await (const childCid of this.#walkDag(cid, queue, {
45
- ...options,
46
- depth
47
- })) {
48
- await this.#updatePinnedBlock(childCid, (pinnedBlock) => {
49
- // do not update pinned block if this block is already pinned by this CID
50
- if (pinnedBlock.pinnedBy.find(c => uint8ArrayEquals(c, cid.bytes)) != null) {
51
- return false;
52
- }
53
- pinnedBlock.pinCount++;
54
- pinnedBlock.pinnedBy.push(cid.bytes);
55
- return true;
56
- }, options);
57
- yield childCid;
58
- }
59
- const pin = {
60
- depth,
61
- metadata: options.metadata ?? {}
62
- };
63
- await this.datastore.put(pinKey, cborg.encode(pin), options);
64
- }
65
- /**
66
- * Walk a DAG in an iterable fashion
67
- */
68
- async *#walkDag(cid, queue, options) {
69
- if (options.depth === -1) {
70
- return;
71
- }
72
- const codec = await this.getCodec(cid.code);
73
- const bytes = await toBuffer(this.blockstore.get(cid, options));
74
- const block = createUnsafe({ bytes, cid, codec });
75
- yield cid;
76
- // walk dag, ensure all blocks are present
77
- for (const [, cid] of block.links()) {
78
- yield* await queue.add(async () => {
79
- return this.#walkDag(cid, queue, {
80
- ...options,
81
- depth: options.depth - 1
82
- });
83
- });
84
- }
85
- }
86
- /**
87
- * Update the pin count for the CID
88
- */
89
- async #updatePinnedBlock(cid, withPinnedBlock, options) {
90
- const blockKey = new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(cid.multihash.bytes)}`);
91
- let pinnedBlock = {
92
- pinCount: 0,
93
- pinnedBy: []
94
- };
95
- try {
96
- pinnedBlock = cborg.decode(await this.datastore.get(blockKey, options));
97
- }
98
- catch (err) {
99
- if (err.name !== 'NotFoundError') {
100
- throw err;
101
- }
102
- }
103
- const shouldContinue = withPinnedBlock(pinnedBlock);
104
- if (!shouldContinue) {
105
- return;
106
- }
107
- if (pinnedBlock.pinCount === 0) {
108
- if (await this.datastore.has(blockKey)) {
109
- await this.datastore.delete(blockKey);
110
- return;
111
- }
112
- }
113
- await this.datastore.put(blockKey, cborg.encode(pinnedBlock), options);
114
- options.onProgress?.(new CustomProgressEvent('helia:pin:add', cid));
115
- }
116
- async *rm(cid, options = {}) {
117
- const pinKey = toDSKey(cid);
118
- const buf = await this.datastore.get(pinKey, options);
119
- const pin = cborg.decode(buf);
120
- await this.datastore.delete(pinKey, options);
121
- // use a queue to walk the DAG instead of recursion so we can traverse very large DAGs
122
- const queue = new Queue({
123
- concurrency: DAG_WALK_QUEUE_CONCURRENCY
124
- });
125
- for await (const childCid of this.#walkDag(cid, queue, {
126
- ...options,
127
- depth: pin.depth
128
- })) {
129
- await this.#updatePinnedBlock(childCid, (pinnedBlock) => {
130
- pinnedBlock.pinCount--;
131
- pinnedBlock.pinnedBy = pinnedBlock.pinnedBy.filter(c => uint8ArrayEquals(c, cid.bytes));
132
- return true;
133
- }, {
134
- ...options,
135
- depth: pin.depth
136
- });
137
- yield childCid;
138
- }
139
- }
140
- async *ls(options = {}) {
141
- for await (const { key, value } of this.datastore.query({
142
- prefix: DATASTORE_PIN_PREFIX + (options.cid != null ? `${options.cid.toString(base36)}` : '')
143
- }, options)) {
144
- const cid = CID.parse(key.toString().substring(5), base36);
145
- const pin = cborg.decode(value);
146
- yield {
147
- cid,
148
- ...pin
149
- };
150
- }
151
- }
152
- async isPinned(cid, options = {}) {
153
- const blockKey = new Key(`${DATASTORE_BLOCK_PREFIX}${DATASTORE_ENCODING.encode(cid.multihash.bytes)}`);
154
- return this.datastore.has(blockKey, options);
155
- }
156
- async get(cid, options) {
157
- const pinKey = toDSKey(cid);
158
- const buf = await this.datastore.get(pinKey, options);
159
- return cborg.decode(buf);
160
- }
161
- async setMetadata(cid, metadata, options) {
162
- const pinKey = toDSKey(cid);
163
- const buf = await this.datastore.get(pinKey, options);
164
- const pin = cborg.decode(buf);
165
- pin.metadata = metadata ?? {};
166
- await this.datastore.put(pinKey, cborg.encode(pin), options);
167
- }
168
- }
169
- //# sourceMappingURL=pins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pins.js","sourceRoot":"","sources":["../../src/pins.ts"],"names":[],"mappings":"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"}
@@ -1,49 +0,0 @@
1
- import type { Routing as RoutingInterface, Provider, RoutingOptions, RoutingFindProvidersProgressEvents, RoutingProvideProgressEvents, RoutingPutProgressEvents, RoutingGetProgressEvents, RoutingFindPeerProgressEvents, RoutingGetClosestPeersProgressEvents, RoutingCancelReprovideProgressEvents } from '@helia/interface';
2
- import type { ComponentLogger, Metrics, PeerId, PeerInfo, Startable } from '@libp2p/interface';
3
- import type { CID } from 'multiformats/cid';
4
- export interface RoutingInit {
5
- routers: Array<Partial<RoutingInterface>>;
6
- providerLookupConcurrency?: number;
7
- }
8
- export interface RoutingComponents {
9
- logger: ComponentLogger;
10
- metrics?: Metrics;
11
- }
12
- export declare class Routing implements RoutingInterface, Startable {
13
- name: string;
14
- private readonly log;
15
- private readonly routers;
16
- private readonly providerLookupConcurrency;
17
- constructor(components: RoutingComponents, init: RoutingInit);
18
- start(): Promise<void>;
19
- stop(): Promise<void>;
20
- /**
21
- * Iterates over all content routers in parallel to find providers of the
22
- * given key
23
- */
24
- findProviders(key: CID, options?: RoutingOptions<RoutingFindProvidersProgressEvents>): AsyncIterable<Provider>;
25
- /**
26
- * Iterates over all content routers in parallel to notify it is
27
- * a provider of the given key
28
- */
29
- provide(key: CID, options?: RoutingOptions<RoutingProvideProgressEvents>): Promise<void>;
30
- cancelReprovide(key: CID, options?: RoutingOptions<RoutingCancelReprovideProgressEvents>): Promise<void>;
31
- /**
32
- * Store the given key/value pair in the available content routings
33
- */
34
- put(key: Uint8Array, value: Uint8Array, options?: RoutingOptions<RoutingPutProgressEvents>): Promise<void>;
35
- /**
36
- * Get the value to the given key. The first value offered by any configured
37
- * router will be returned.
38
- */
39
- get(key: Uint8Array, options?: RoutingOptions<RoutingGetProgressEvents>): Promise<Uint8Array>;
40
- /**
41
- * Iterates over all peer routers in parallel to find the given peer
42
- */
43
- findPeer(id: PeerId, options?: RoutingOptions<RoutingFindPeerProgressEvents>): Promise<PeerInfo>;
44
- /**
45
- * Attempt to find the closest peers on the network to the given key
46
- */
47
- getClosestPeers(key: Uint8Array, options?: RoutingOptions<RoutingGetClosestPeersProgressEvents>): AsyncIterable<PeerInfo>;
48
- }
49
- //# sourceMappingURL=routing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,OAAO,IAAI,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,kCAAkC,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,oCAAoC,EAAE,oCAAoC,EAAE,MAAM,kBAAkB,CAAA;AAC9T,OAAO,KAAK,EAAE,eAAe,EAAU,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACtG,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAI3C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACzC,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,qBAAa,OAAQ,YAAW,gBAAgB,EAAE,SAAS;IAClD,IAAI,EAAE,MAAM,CAAA;IAEnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;gBAErC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,WAAW;IA6BvD,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAIvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAI5B;;;OAGG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAc,CAAC,kCAAkC,CAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;IAmH3H;;;OAGG;IACG,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAc,CAAC,4BAA4B,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB7F,eAAe,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAc,CAAC,oCAAoC,CAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBnH;;OAEG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBjH;;;OAGG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,wBAAwB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAqCpG;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsCvG;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAc,CAAC,oCAAoC,CAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;CA8BvI"}
@@ -1,305 +0,0 @@
1
- import { NoRoutersAvailableError } from '@helia/interface';
2
- import { NotFoundError, start, stop } from '@libp2p/interface';
3
- import { PeerQueue } from '@libp2p/utils';
4
- import merge from 'it-merge';
5
- import { CustomProgressEvent } from 'progress-events';
6
- import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
7
- import { GetFailedError } from "./errors.js";
8
- const DEFAULT_PROVIDER_LOOKUP_CONCURRENCY = 5;
9
- export class Routing {
10
- name;
11
- log;
12
- routers;
13
- providerLookupConcurrency;
14
- constructor(components, init) {
15
- this.name = 'helia';
16
- this.log = components.logger.forComponent('helia:routing');
17
- this.routers = init.routers ?? [];
18
- this.providerLookupConcurrency = init.providerLookupConcurrency ?? DEFAULT_PROVIDER_LOOKUP_CONCURRENCY;
19
- this.findProviders = components.metrics?.traceFunction('helia.routing.findProviders', this.findProviders.bind(this), {
20
- optionsIndex: 1
21
- }) ?? this.findProviders;
22
- this.provide = components.metrics?.traceFunction('helia.routing.provide', this.provide.bind(this), {
23
- optionsIndex: 1
24
- }) ?? this.provide;
25
- this.cancelReprovide = components.metrics?.traceFunction('helia.routing.cancelReprovide', this.cancelReprovide.bind(this), {
26
- optionsIndex: 1
27
- }) ?? this.cancelReprovide;
28
- this.put = components.metrics?.traceFunction('helia.routing.put', this.put.bind(this), {
29
- optionsIndex: 2
30
- }) ?? this.put;
31
- this.get = components.metrics?.traceFunction('helia.routing.get', this.get.bind(this), {
32
- optionsIndex: 1
33
- }) ?? this.get;
34
- this.findPeer = components.metrics?.traceFunction('helia.routing.findPeer', this.findPeer.bind(this), {
35
- optionsIndex: 1
36
- }) ?? this.findPeer;
37
- this.getClosestPeers = components.metrics?.traceFunction('helia.routing.getClosestPeers', this.getClosestPeers.bind(this), {
38
- optionsIndex: 1
39
- }) ?? this.getClosestPeers;
40
- }
41
- async start() {
42
- await start(...this.routers);
43
- }
44
- async stop() {
45
- await stop(...this.routers);
46
- }
47
- /**
48
- * Iterates over all content routers in parallel to find providers of the
49
- * given key
50
- */
51
- async *findProviders(key, options = {}) {
52
- if (this.routers.length === 0) {
53
- throw new NoRoutersAvailableError('No content routers available');
54
- }
55
- // provider multiaddrs are only cached for a limited time, so they can come
56
- // back as an empty array - when this happens we have to do a FIND_PEER
57
- // query to get updated addresses, but we shouldn't block on this so use a
58
- // separate bounded queue to perform this lookup
59
- const queue = new PeerQueue({
60
- concurrency: this.providerLookupConcurrency
61
- });
62
- let foundProviders = 0;
63
- const errors = [];
64
- const self = this;
65
- let routersFinished = 0;
66
- this.log('findProviders for %c start using routers %s', key, this.routers.map(r => r.toString()).join(', '));
67
- const routers = supports(this.routers, 'findProviders')
68
- .map(async function* (router) {
69
- let foundProviders = 0;
70
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:start', {
71
- routing: router.name,
72
- cid: key
73
- }));
74
- try {
75
- for await (const prov of router.findProviders(key, options)) {
76
- foundProviders++;
77
- // @ts-expect-error router.name is a string, needs to be specific
78
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:provider', {
79
- routing: router.name,
80
- cid: key,
81
- provider: prov
82
- }));
83
- yield prov;
84
- }
85
- }
86
- catch (err) {
87
- errors.push(err);
88
- }
89
- finally {
90
- self.log('router %s found %d providers for %c', router, foundProviders, key);
91
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:end', {
92
- routing: router.name,
93
- cid: key,
94
- found: foundProviders
95
- }));
96
- routersFinished++;
97
- // if all routers have finished and there are no jobs to find updated
98
- // peer multiaddres running or queued, cause the generator to exit
99
- if (routersFinished === routers.length && queue.size === 0) {
100
- queue.emitIdle();
101
- }
102
- }
103
- });
104
- for await (const peer of merge(queue.toGenerator(), ...routers)) {
105
- // the peer was yielded by a content router without multiaddrs and we
106
- // failed to load them
107
- if (peer == null) {
108
- continue;
109
- }
110
- // have to refresh peer info for this peer to get updated multiaddrs
111
- if (peer.multiaddrs.length === 0) {
112
- // already looking this peer up
113
- if (queue.find(peer.id) != null) {
114
- continue;
115
- }
116
- queue.add(async () => {
117
- try {
118
- const provider = await this.findPeer(peer.id, options);
119
- if (provider.multiaddrs.length === 0) {
120
- return null;
121
- }
122
- return {
123
- ...provider,
124
- protocols: peer.protocols,
125
- routing: peer.routing
126
- };
127
- }
128
- catch (err) {
129
- this.log.error('could not load multiaddrs for peer %p - %e', peer.id, err);
130
- return null;
131
- }
132
- }, {
133
- peerId: peer.id,
134
- signal: options.signal
135
- })
136
- .catch(err => {
137
- this.log.error('could not load multiaddrs for peer %p - %e', peer.id, err);
138
- });
139
- continue;
140
- }
141
- foundProviders++;
142
- yield peer;
143
- }
144
- this.log('findProviders finished, found %d providers for %c', foundProviders, key);
145
- }
146
- /**
147
- * Iterates over all content routers in parallel to notify it is
148
- * a provider of the given key
149
- */
150
- async provide(key, options = {}) {
151
- if (this.routers.length === 0) {
152
- throw new NoRoutersAvailableError('No content routers available');
153
- }
154
- await Promise.all(supports(this.routers, 'provide')
155
- .map(async (router) => {
156
- options?.onProgress?.(new CustomProgressEvent('helia:routing:provide:start', {
157
- routing: router.name,
158
- cid: key
159
- }));
160
- await router.provide(key, options);
161
- options?.onProgress?.(new CustomProgressEvent('helia:routing:provide:end', {
162
- routing: router.name,
163
- cid: key
164
- }));
165
- }));
166
- }
167
- async cancelReprovide(key, options = {}) {
168
- await Promise.all(supports(this.routers, 'cancelReprovide')
169
- .map(async (router) => {
170
- options?.onProgress?.(new CustomProgressEvent('helia:routing:cancel-reprovide:start', {
171
- routing: router.name,
172
- cid: key
173
- }));
174
- await router.cancelReprovide(key, options);
175
- options?.onProgress?.(new CustomProgressEvent('helia:routing:cancel-reprovide:end', {
176
- routing: router.name,
177
- cid: key
178
- }));
179
- }));
180
- }
181
- /**
182
- * Store the given key/value pair in the available content routings
183
- */
184
- async put(key, value, options) {
185
- await Promise.all(supports(this.routers, 'put')
186
- .map(async (router) => {
187
- options?.onProgress?.(new CustomProgressEvent('helia:routing:put:start', {
188
- routing: router.name,
189
- key,
190
- value
191
- }));
192
- await router.put(key, value, options);
193
- options?.onProgress?.(new CustomProgressEvent('helia:routing:put:end', {
194
- routing: router.name,
195
- key,
196
- value
197
- }));
198
- }));
199
- }
200
- /**
201
- * Get the value to the given key. The first value offered by any configured
202
- * router will be returned.
203
- */
204
- async get(key, options) {
205
- const errors = [];
206
- let result;
207
- try {
208
- result = await Promise.any(supports(this.routers, 'get')
209
- .map(async (router) => {
210
- options?.onProgress?.(new CustomProgressEvent('helia:routing:get:start', {
211
- routing: router.name,
212
- key
213
- }));
214
- try {
215
- return await router.get(key, options);
216
- }
217
- catch (err) {
218
- this.log('router %s failed with %e', router, err);
219
- errors.push(err);
220
- }
221
- finally {
222
- options?.onProgress?.(new CustomProgressEvent('helia:routing:get:end', {
223
- routing: router.name,
224
- key
225
- }));
226
- }
227
- }));
228
- }
229
- catch {
230
- // ignore AggregateError as we will throw a better-named one
231
- }
232
- if (result == null) {
233
- throw new GetFailedError(errors, `Failed to get value key ${uint8ArrayToString(key, 'base58btc')}`);
234
- }
235
- return result;
236
- }
237
- /**
238
- * Iterates over all peer routers in parallel to find the given peer
239
- */
240
- async findPeer(id, options) {
241
- if (this.routers.length === 0) {
242
- throw new NoRoutersAvailableError('No peer routers available');
243
- }
244
- const self = this;
245
- const source = merge(...supports(this.routers, 'findPeer')
246
- .map(router => (async function* () {
247
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-peer:start', {
248
- routing: router.name,
249
- peerId: id
250
- }));
251
- try {
252
- yield await router.findPeer(id, options);
253
- }
254
- catch (err) {
255
- self.log.error(err);
256
- }
257
- finally {
258
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-peer:end', {
259
- routing: router.name,
260
- peerId: id
261
- }));
262
- }
263
- })()));
264
- for await (const peer of source) {
265
- if (peer == null) {
266
- continue;
267
- }
268
- return peer;
269
- }
270
- throw new NotFoundError('Could not find peer in routing');
271
- }
272
- /**
273
- * Attempt to find the closest peers on the network to the given key
274
- */
275
- async *getClosestPeers(key, options = {}) {
276
- if (this.routers.length === 0) {
277
- throw new NoRoutersAvailableError('No peer routers available');
278
- }
279
- for await (const peer of merge(...supports(this.routers, 'getClosestPeers')
280
- .map(async function* (router) {
281
- options?.onProgress?.(new CustomProgressEvent('helia:routing:get-closest-peers:start', {
282
- routing: router.name,
283
- key
284
- }));
285
- try {
286
- yield* router.getClosestPeers(key, options);
287
- }
288
- finally {
289
- options?.onProgress?.(new CustomProgressEvent('helia:routing:get-closest-peers:end', {
290
- routing: router.name,
291
- key
292
- }));
293
- }
294
- }))) {
295
- if (peer == null) {
296
- continue;
297
- }
298
- yield peer;
299
- }
300
- }
301
- }
302
- function supports(routers, key) {
303
- return routers.filter(router => router[key] != null);
304
- }
305
- //# sourceMappingURL=routing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- import type { Routing } from '@helia/interface';
2
- import type { Blocks, Pair, DeleteManyBlocksProgressEvents, DeleteBlockProgressEvents, GetBlockProgressEvents, GetManyBlocksProgressEvents, PutManyBlocksProgressEvents, PutBlockProgressEvents, GetAllBlocksProgressEvents, GetOfflineOptions, SessionBlockstore } from '@helia/interface/blocks';
3
- import type { Pins } from '@helia/interface/pins';
4
- import type { AbortOptions, Startable } from '@libp2p/interface';
5
- import type { Blockstore, InputPair } from 'interface-blockstore';
6
- import type { Mortice } from 'mortice';
7
- import type { CID } from 'multiformats/cid';
8
- import type { ProgressOptions } from 'progress-events';
9
- export interface BlockStorageInit {
10
- holdGcLock?: boolean;
11
- }
12
- export interface GetOptions extends AbortOptions {
13
- progress?(evt: Event): void;
14
- }
15
- /**
16
- * BlockStorage is a hybrid blockstore that puts/gets blocks from a configured
17
- * blockstore (that may be on disk, s3, or something else). If the blocks are
18
- * not present Bitswap will be used to fetch them from network peers.
19
- */
20
- export declare class BlockStorage implements Blocks, Startable {
21
- lock: Mortice;
22
- private readonly child;
23
- private readonly pins;
24
- private readonly routing;
25
- private started;
26
- /**
27
- * Create a new BlockStorage
28
- */
29
- constructor(blockstore: Blocks, pins: Pins, routing: Routing, options?: BlockStorageInit);
30
- isStarted(): boolean;
31
- start(): Promise<void>;
32
- stop(): Promise<void>;
33
- unwrap(): Blockstore;
34
- /**
35
- * Put a block to the underlying datastore
36
- */
37
- put(cid: CID, block: Uint8Array, options?: AbortOptions & ProgressOptions<PutBlockProgressEvents>): Promise<CID>;
38
- /**
39
- * Put a multiple blocks to the underlying datastore
40
- */
41
- putMany(blocks: Iterable<InputPair> | AsyncIterable<InputPair>, options?: AbortOptions & ProgressOptions<PutManyBlocksProgressEvents>): AsyncGenerator<CID>;
42
- /**
43
- * Get a block by cid
44
- */
45
- get(cid: CID, options?: GetOfflineOptions & AbortOptions & ProgressOptions<GetBlockProgressEvents>): AsyncGenerator<Uint8Array>;
46
- /**
47
- * Get multiple blocks back from an (async) iterable of cids
48
- */
49
- getMany(cids: Iterable<CID> | AsyncIterable<CID>, options?: GetOfflineOptions & AbortOptions & ProgressOptions<GetManyBlocksProgressEvents>): AsyncGenerator<Pair>;
50
- /**
51
- * Delete a block from the blockstore
52
- */
53
- delete(cid: CID, options?: AbortOptions & ProgressOptions<DeleteBlockProgressEvents>): Promise<void>;
54
- /**
55
- * Delete multiple blocks from the blockstore
56
- */
57
- deleteMany(cids: Iterable<CID> | AsyncIterable<CID>, options?: AbortOptions & ProgressOptions<DeleteManyBlocksProgressEvents>): AsyncGenerator<CID>;
58
- has(cid: CID, options?: AbortOptions): Promise<boolean>;
59
- getAll(options?: AbortOptions & ProgressOptions<GetAllBlocksProgressEvents>): AsyncGenerator<Pair>;
60
- createSession(root: CID, options?: AbortOptions): SessionBlockstore;
61
- }
62
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/storage.ts"],"names":[],"mappings":"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"}