@helia/utils 1.2.2-313e2c1 → 1.2.2-3d77369

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.
@@ -1,6 +1,7 @@
1
1
  import { TypedEventEmitter } from '@libp2p/interface';
2
2
  import type { BlockBroker, BlockRetrievalOptions, CreateSessionOptions } from '@helia/interface';
3
- import type { AbortOptions, ComponentLogger, Logger } from '@libp2p/interface';
3
+ import type { AbortOptions, ComponentLogger, Logger, PeerId } from '@libp2p/interface';
4
+ import type { Multiaddr } from '@multiformats/multiaddr';
4
5
  import type { CID } from 'multiformats/cid';
5
6
  import type { ProgressEvent } from 'progress-events';
6
7
  export interface AbstractSessionComponents {
@@ -22,12 +23,19 @@ export declare abstract class AbstractSession<Provider, RetrieveBlockProgressEve
22
23
  private readonly maxProviders;
23
24
  readonly providers: Provider[];
24
25
  private readonly evictionFilter;
26
+ private readonly initialProviders;
25
27
  constructor(components: AbstractSessionComponents, init: AbstractCreateSessionOptions);
26
28
  retrieve(cid: CID, options?: BlockRetrievalOptions<RetrieveBlockProgressEvents>): Promise<Uint8Array>;
27
29
  evict(provider: Provider): void;
28
30
  isEvicted(provider: Provider): boolean;
29
31
  hasProvider(provider: Provider): boolean;
30
32
  private findProviders;
33
+ /**
34
+ * If this session was created with specific providers, convert one of them
35
+ * into the format required or return `undefined` if the provider is not
36
+ * compatible with this session implementation
37
+ */
38
+ abstract convertToProvider(provider: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<Provider | undefined>;
31
39
  /**
32
40
  * This method should search for new providers and yield them.
33
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-session.d.ts","sourceRoot":"","sources":["../../src/abstract-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,iBAAiB,EAAmB,MAAM,mBAAmB,CAAA;AAKlF,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,uBAAuB,CAAC,QAAQ;IAC/C,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;CAChC;AAED,8BAAsB,eAAe,CAAC,QAAQ,EAAE,2BAA2B,SAAS,aAAa,CAAE,SAAQ,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAE,YAAW,WAAW,CAAC,2BAA2B,CAAC;IACjN,OAAO,CAAC,yBAAyB,CAAC,CAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,MAAM,EAAE,eAAe,CAAA;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,SAAgB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAE1B,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,4BAA4B;IAchF,QAAQ,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,qBAAqB,CAAC,2BAA2B,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA0IhH,KAAK,CAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAWhC,SAAS,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIvC,WAAW,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;YAc3B,aAAa;IAuD3B;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC;IAErF;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAEjG;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAE,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM;IAEhE;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO;CACpE"}
1
+ {"version":3,"file":"abstract-session.d.ts","sourceRoot":"","sources":["../../src/abstract-session.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,iBAAiB,EAAmB,MAAM,mBAAmB,CAAA;AAKlF,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAChG,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,uBAAuB,CAAC,QAAQ;IAC/C,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAA;CAChC;AAED,8BAAsB,eAAe,CAAC,QAAQ,EAAE,2BAA2B,SAAS,aAAa,CAAE,SAAQ,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAE,YAAW,WAAW,CAAC,2BAA2B,CAAC;IACjN,OAAO,CAAC,yBAAyB,CAAC,CAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,MAAM,EAAE,eAAe,CAAA;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,SAAgB,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyC;gBAE7D,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,4BAA4B;IAehF,QAAQ,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,qBAAqB,CAAC,2BAA2B,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA0IhH,KAAK,CAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAWhC,SAAS,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIvC,WAAW,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;YAc3B,aAAa;IAwG3B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAE9H;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC;IAErF;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAEjG;;;OAGG;IACH,QAAQ,CAAC,aAAa,CAAE,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM;IAEhE;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO;CACpE"}
@@ -14,6 +14,7 @@ export class AbstractSession extends TypedEventEmitter {
14
14
  maxProviders;
15
15
  providers;
16
16
  evictionFilter;
17
+ initialProviders;
17
18
  constructor(components, init) {
18
19
  super();
19
20
  setMaxListeners(Infinity, this);
@@ -25,6 +26,7 @@ export class AbstractSession extends TypedEventEmitter {
25
26
  this.maxProviders = init.maxProviders ?? DEFAULT_SESSION_MAX_PROVIDERS;
26
27
  this.providers = [];
27
28
  this.evictionFilter = createScalableCuckooFilter(this.maxProviders);
29
+ this.initialProviders = init.providers ?? [];
28
30
  }
29
31
  async retrieve(cid, options = {}) {
30
32
  // see if we are already requesting this CID in this session
@@ -173,28 +175,66 @@ export class AbstractSession extends TypedEventEmitter {
173
175
  void Promise.resolve()
174
176
  .then(async () => {
175
177
  this.log('finding %d-%d new provider(s) for %c', count, this.maxProviders, cid);
176
- for await (const provider of this.findNewProviders(cid, options)) {
177
- if (found === this.maxProviders || options.signal?.aborted === true) {
178
- break;
179
- }
180
- if (this.hasProvider(provider)) {
181
- continue;
182
- }
183
- this.log('found %d/%d new providers', found, this.maxProviders);
184
- this.providers.push(provider);
185
- // let the new peer join current queries
186
- this.safeDispatchEvent('provider', {
187
- detail: provider
188
- });
189
- found++;
190
- if (found === count) {
191
- this.log('session is ready');
192
- deferred.resolve();
193
- // continue finding peers until we reach this.maxProviders
178
+ // process any specific providers for this session
179
+ if (this.initialProviders.length > 0) {
180
+ while (found < count && this.initialProviders.length > 0) {
181
+ const prov = this.initialProviders.pop();
182
+ if (prov == null) {
183
+ break;
184
+ }
185
+ const provider = await this.convertToProvider(prov, options);
186
+ if (options.signal?.aborted === true) {
187
+ break;
188
+ }
189
+ if (provider == null) {
190
+ continue;
191
+ }
192
+ if (this.hasProvider(provider)) {
193
+ continue;
194
+ }
195
+ this.log('found %d/%d new providers', found, this.maxProviders);
196
+ this.providers.push(provider);
197
+ // let the new peer join current queries
198
+ this.safeDispatchEvent('provider', {
199
+ detail: provider
200
+ });
201
+ found++;
202
+ if (found === count) {
203
+ this.log('session is ready');
204
+ deferred.resolve();
205
+ // continue finding peers until we reach this.maxProviders
206
+ }
207
+ if (this.providers.length === this.maxProviders) {
208
+ this.log('found max session peers', found);
209
+ break;
210
+ }
194
211
  }
195
- if (this.providers.length === this.maxProviders) {
196
- this.log('found max session peers', found);
197
- break;
212
+ }
213
+ // still not got enough providers, search routing for more
214
+ if (found < this.maxProviders) {
215
+ for await (const provider of this.findNewProviders(cid, options)) {
216
+ if (found === this.maxProviders || options.signal?.aborted === true) {
217
+ break;
218
+ }
219
+ if (this.hasProvider(provider)) {
220
+ continue;
221
+ }
222
+ this.log('found %d/%d new providers', found, this.maxProviders);
223
+ this.providers.push(provider);
224
+ // let the new peer join current queries
225
+ this.safeDispatchEvent('provider', {
226
+ detail: provider
227
+ });
228
+ found++;
229
+ if (found === count) {
230
+ this.log('session is ready');
231
+ deferred.resolve();
232
+ // continue finding peers until we reach this.maxProviders
233
+ }
234
+ if (this.providers.length === this.maxProviders) {
235
+ this.log('found max session peers', found);
236
+ break;
237
+ }
198
238
  }
199
239
  }
200
240
  this.log('found %d/%d new session peers', found, this.maxProviders);
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-session.js","sourceRoot":"","sources":["../../src/abstract-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-session.js","sourceRoot":"","sources":["../../src/abstract-session.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helia/utils",
3
- "version": "1.2.2-313e2c1",
3
+ "version": "1.2.2-3d77369",
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",
@@ -54,7 +54,7 @@
54
54
  "test:electron-main": "aegir test -t electron-main"
55
55
  },
56
56
  "dependencies": {
57
- "@helia/interface": "5.2.1-313e2c1",
57
+ "@helia/interface": "5.2.1-3d77369",
58
58
  "@ipld/dag-cbor": "^9.2.2",
59
59
  "@ipld/dag-json": "^10.2.3",
60
60
  "@ipld/dag-pb": "^4.1.3",
@@ -62,6 +62,7 @@
62
62
  "@libp2p/logger": "^5.1.8",
63
63
  "@libp2p/utils": "^6.5.1",
64
64
  "@multiformats/dns": "^1.0.6",
65
+ "@multiformats/multiaddr": "^12.4.0",
65
66
  "any-signal": "^4.1.1",
66
67
  "blockstore-core": "^5.0.2",
67
68
  "cborg": "^4.2.6",
@@ -5,8 +5,9 @@ import { Queue } from '@libp2p/utils/queue'
5
5
  import { base64 } from 'multiformats/bases/base64'
6
6
  import pDefer from 'p-defer'
7
7
  import type { BlockBroker, BlockRetrievalOptions, CreateSessionOptions } from '@helia/interface'
8
- import type { AbortOptions, ComponentLogger, Logger } from '@libp2p/interface'
8
+ import type { AbortOptions, ComponentLogger, Logger, PeerId } from '@libp2p/interface'
9
9
  import type { Filter } from '@libp2p/utils/filters'
10
+ import type { Multiaddr } from '@multiformats/multiaddr'
10
11
  import type { CID } from 'multiformats/cid'
11
12
  import type { DeferredPromise } from 'p-defer'
12
13
  import type { ProgressEvent } from 'progress-events'
@@ -33,6 +34,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
33
34
  private readonly maxProviders: number
34
35
  public readonly providers: Provider[]
35
36
  private readonly evictionFilter: Filter
37
+ private readonly initialProviders: Array<PeerId | Multiaddr | Multiaddr[]>
36
38
 
37
39
  constructor (components: AbstractSessionComponents, init: AbstractCreateSessionOptions) {
38
40
  super()
@@ -46,6 +48,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
46
48
  this.maxProviders = init.maxProviders ?? DEFAULT_SESSION_MAX_PROVIDERS
47
49
  this.providers = []
48
50
  this.evictionFilter = createScalableCuckooFilter(this.maxProviders)
51
+ this.initialProviders = init.providers ?? []
49
52
  }
50
53
 
51
54
  async retrieve (cid: CID, options: BlockRetrievalOptions<RetrieveBlockProgressEvents> = {}): Promise<Uint8Array> {
@@ -225,34 +228,83 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
225
228
  .then(async () => {
226
229
  this.log('finding %d-%d new provider(s) for %c', count, this.maxProviders, cid)
227
230
 
228
- for await (const provider of this.findNewProviders(cid, options)) {
229
- if (found === this.maxProviders || options.signal?.aborted === true) {
230
- break
231
- }
231
+ // process any specific providers for this session
232
+ if (this.initialProviders.length > 0) {
233
+ while (found < count && this.initialProviders.length > 0) {
234
+ const prov = this.initialProviders.pop()
232
235
 
233
- if (this.hasProvider(provider)) {
234
- continue
235
- }
236
+ if (prov == null) {
237
+ break
238
+ }
239
+
240
+ const provider = await this.convertToProvider(prov, options)
241
+
242
+ if (options.signal?.aborted === true) {
243
+ break
244
+ }
236
245
 
237
- this.log('found %d/%d new providers', found, this.maxProviders)
238
- this.providers.push(provider)
246
+ if (provider == null) {
247
+ continue
248
+ }
249
+
250
+ if (this.hasProvider(provider)) {
251
+ continue
252
+ }
253
+
254
+ this.log('found %d/%d new providers', found, this.maxProviders)
255
+ this.providers.push(provider)
239
256
 
240
- // let the new peer join current queries
241
- this.safeDispatchEvent('provider', {
242
- detail: provider
243
- })
257
+ // let the new peer join current queries
258
+ this.safeDispatchEvent('provider', {
259
+ detail: provider
260
+ })
244
261
 
245
- found++
262
+ found++
246
263
 
247
- if (found === count) {
248
- this.log('session is ready')
249
- deferred.resolve()
250
- // continue finding peers until we reach this.maxProviders
264
+ if (found === count) {
265
+ this.log('session is ready')
266
+ deferred.resolve()
267
+ // continue finding peers until we reach this.maxProviders
268
+ }
269
+
270
+ if (this.providers.length === this.maxProviders) {
271
+ this.log('found max session peers', found)
272
+ break
273
+ }
251
274
  }
275
+ }
276
+
277
+ // still not got enough providers, search routing for more
278
+ if (found < this.maxProviders) {
279
+ for await (const provider of this.findNewProviders(cid, options)) {
280
+ if (found === this.maxProviders || options.signal?.aborted === true) {
281
+ break
282
+ }
283
+
284
+ if (this.hasProvider(provider)) {
285
+ continue
286
+ }
287
+
288
+ this.log('found %d/%d new providers', found, this.maxProviders)
289
+ this.providers.push(provider)
290
+
291
+ // let the new peer join current queries
292
+ this.safeDispatchEvent('provider', {
293
+ detail: provider
294
+ })
252
295
 
253
- if (this.providers.length === this.maxProviders) {
254
- this.log('found max session peers', found)
255
- break
296
+ found++
297
+
298
+ if (found === count) {
299
+ this.log('session is ready')
300
+ deferred.resolve()
301
+ // continue finding peers until we reach this.maxProviders
302
+ }
303
+
304
+ if (this.providers.length === this.maxProviders) {
305
+ this.log('found max session peers', found)
306
+ break
307
+ }
256
308
  }
257
309
  }
258
310
 
@@ -270,6 +322,13 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
270
322
  return deferred.promise
271
323
  }
272
324
 
325
+ /**
326
+ * If this session was created with specific providers, convert one of them
327
+ * into the format required or return `undefined` if the provider is not
328
+ * compatible with this session implementation
329
+ */
330
+ abstract convertToProvider (provider: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<Provider | undefined>
331
+
273
332
  /**
274
333
  * This method should search for new providers and yield them.
275
334
  */