helia 7.0.5 → 7.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"AAQA,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,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5U,OAAO,KAAK,EAAE,eAAe,EAAU,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEpF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAI3C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAMD,qBAAa,OAAQ,YAAW,gBAAgB,EAAE,SAAS;IAClD,IAAI,EAAE,MAAM,CAAA;IAEnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,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,SAAS,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,SAAS,CAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;;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,WAAW,CAAC,CAAC;IAkDjH;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDhG;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAc,CAAC,oCAAoC,CAAM,GAAG,aAAa,CAAC,IAAI,CAAC;CA8BnI"}
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"AAQA,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,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5U,OAAO,KAAK,EAAE,eAAe,EAAU,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEpF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAI3C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAMD,qBAAa,OAAQ,YAAW,gBAAgB,EAAE,SAAS;IAClD,IAAI,EAAE,MAAM,CAAA;IAEnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,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,SAAS,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,SAAS,CAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;;OAGG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,cAAc,CAAC,kCAAkC,CAAM,GAAG,aAAa,CAAC,QAAQ,CAAC;IAkI3H;;;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,WAAW,CAAC,CAAC;IAkDjH;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoDhG;;OAEG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,cAAc,CAAC,oCAAoC,CAAM,GAAG,aAAa,CAAC,IAAI,CAAC;CA8BnI"}
@@ -59,94 +59,105 @@ export class Routing {
59
59
  if (this.routers.length === 0) {
60
60
  throw new NoRoutersAvailableError('No content routers available');
61
61
  }
62
- // provider multiaddrs are only cached for a limited time, so they can come
63
- // back as an empty array - when this happens we have to do a FIND_PEER
64
- // query to get updated addresses, but we shouldn't block on this so use a
65
- // separate bounded queue to perform this lookup
66
- const queue = new Queue({
67
- concurrency: this.providerLookupConcurrency
68
- });
69
62
  let foundProviders = 0;
70
63
  const errors = [];
71
64
  const self = this;
72
- let routersFinished = 0;
73
- this.log('findProviders for %c start using routers %s', key, this.routers.map(r => r.toString()).join(', '));
74
- const routers = supports(this.routers, 'findProviders')
75
- .map(async function* (router) {
76
- let foundProviders = 0;
77
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:start', {
78
- router: router.name,
79
- cid: key
80
- }));
81
- try {
82
- for await (const prov of router.findProviders(key, options)) {
83
- foundProviders++;
84
- // @ts-expect-error router.name is a string, needs to be specific
85
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:provider', {
65
+ async function* findProviders(routers) {
66
+ let routersFinished = 0;
67
+ const streams = routers.map(async function* (router) {
68
+ let foundProviders = 0;
69
+ options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:start', {
70
+ router: router.name,
71
+ cid: key
72
+ }));
73
+ try {
74
+ for await (const prov of router.findProviders(key, options)) {
75
+ foundProviders++;
76
+ // @ts-expect-error router.name is a string, needs to be specific
77
+ options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:provider', {
78
+ router: router.name,
79
+ cid: key,
80
+ provider: prov
81
+ }));
82
+ yield prov;
83
+ }
84
+ }
85
+ catch (err) {
86
+ errors.push(err);
87
+ }
88
+ finally {
89
+ self.log('router %s found %d providers for %c', router.name, foundProviders, key);
90
+ options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:end', {
86
91
  router: router.name,
87
92
  cid: key,
88
- provider: prov
93
+ found: foundProviders
89
94
  }));
90
- yield prov;
91
- }
92
- }
93
- catch (err) {
94
- errors.push(err);
95
- }
96
- finally {
97
- self.log('router %s found %d providers for %c', router, foundProviders, key);
98
- options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:end', {
99
- router: router.name,
100
- cid: key,
101
- found: foundProviders
102
- }));
103
- routersFinished++;
104
- // if all routers have finished and there are no jobs to find updated
105
- // peer multiaddres running or queued, cause the generator to exit
106
- if (routersFinished === routers.length && queue.size === 0) {
107
- queue.emitIdle();
95
+ routersFinished++;
96
+ // if all routers have finished and there are no jobs to find updated
97
+ // peer multiaddres running or queued, cause the generator to exit
98
+ if (routersFinished === routers.length && queue.size === 0) {
99
+ queue.emitIdle();
100
+ }
108
101
  }
109
- }
110
- });
111
- for await (const peer of merge(queue.toGenerator(), ...routers)) {
112
- // the peer was yielded by a content router without multiaddrs and we
113
- // failed to load them
114
- if (peer == null) {
115
- continue;
116
- }
117
- // have to refresh peer info for this peer to get updated multiaddrs
118
- if (peer.multiaddrs.length === 0) {
119
- // already looking this peer up
120
- if (queue.queue.find(job => job.options.peer.equals(peer.id)) != null) {
102
+ });
103
+ // provider multiaddrs are only cached for a limited time, so they can come
104
+ // back as an empty array - when this happens we have to do a FIND_PEER
105
+ // query to get updated addresses, but we shouldn't block on this so use a
106
+ // separate bounded queue to perform this lookup
107
+ const queue = new Queue({
108
+ concurrency: self.providerLookupConcurrency
109
+ });
110
+ for await (const peer of merge(queue.toGenerator(), ...streams)) {
111
+ // the peer was yielded by a content router without multiaddrs and we
112
+ // failed to load them
113
+ if (peer == null) {
121
114
  continue;
122
115
  }
123
- queue.add(async () => {
124
- try {
125
- const provider = await this.findPeer(peer.id, options);
126
- if (provider.multiaddrs.length === 0) {
116
+ // have to refresh peer info for this peer to get updated multiaddrs
117
+ if (peer.multiaddrs.length === 0) {
118
+ // already looking this peer up
119
+ if (queue.queue.find(job => job.options.peer.equals(peer.id)) != null) {
120
+ continue;
121
+ }
122
+ queue.add(async () => {
123
+ try {
124
+ const provider = await self.findPeer(peer.id, options);
125
+ if (provider.multiaddrs.length === 0) {
126
+ return null;
127
+ }
128
+ return {
129
+ ...provider,
130
+ protocols: peer.protocols,
131
+ router: peer.router
132
+ };
133
+ }
134
+ catch (err) {
135
+ self.log.error('could not load multiaddrs for peer %p - %e', peer.id, err);
127
136
  return null;
128
137
  }
129
- return {
130
- ...provider,
131
- protocols: peer.protocols,
132
- router: peer.router
133
- };
134
- }
135
- catch (err) {
136
- this.log.error('could not load multiaddrs for peer %p - %e', peer.id, err);
137
- return null;
138
- }
139
- }, {
140
- peer: peer.id,
141
- signal: options.signal
142
- })
143
- .catch(err => {
144
- this.log.error('could not load multiaddrs for peer %p - %e', peer.id, err);
145
- });
146
- continue;
138
+ }, {
139
+ peer: peer.id,
140
+ signal: options.signal
141
+ })
142
+ .catch(err => {
143
+ self.log.error('could not load multiaddrs for peer %p - %e', peer.id, err);
144
+ });
145
+ continue;
146
+ }
147
+ foundProviders++;
148
+ yield peer;
147
149
  }
148
- foundProviders++;
149
- yield peer;
150
+ }
151
+ const routers = supports(this.routers, 'findProviders');
152
+ const defaultRouters = routers.filter(r => r.capabilities == null || !r.capabilities().includes('fallback'));
153
+ const fallbackRouters = routers.filter(r => r.capabilities?.().includes('fallback') === true);
154
+ this.log('findProviders for %c start using routers %s', key, defaultRouters.map(r => r.name).join(', '));
155
+ // use non-fallback routers first
156
+ yield* findProviders(defaultRouters);
157
+ // only use fallback routers if no providers have been found
158
+ if (foundProviders === 0 && fallbackRouters.length > 0) {
159
+ this.log('findProviders for %c using fallback routers %s', key, fallbackRouters.map(r => r.name).join(', '));
160
+ yield* findProviders(fallbackRouters);
150
161
  }
151
162
  this.log('findProviders finished, found %d providers for %c', foundProviders, key);
152
163
  }
@@ -229,7 +240,7 @@ export class Routing {
229
240
  });
230
241
  }
231
242
  catch (err) {
232
- this.log('router %s failed with %e', router, err);
243
+ this.log('router %s failed with %e', router.name, err);
233
244
  errors.push(err);
234
245
  throw err;
235
246
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../src/routing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAMtE,MAAM,mCAAmC,GAAG,CAAC,CAAA;AAgB7C,MAAM,OAAO,OAAO;IACX,IAAI,CAAQ;IAEF,GAAG,CAAQ;IACX,OAAO,CAAU;IACjB,yBAAyB,CAAQ;IAElD,YAAa,UAA6B,EAAE,IAAiB;QAC3D,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;QACnB,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QACjC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,IAAI,mCAAmC,CAAA;QAEtG,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,6BAA6B,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACnH,YAAY,EAAE,CAAC;SAChB,CAAC,IAAI,IAAI,CAAC,aAAa,CAAA;QACxB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACjG,YAAY,EAAE,CAAC;SAChB,CAAC,IAAI,IAAI,CAAC,OAAO,CAAA;QAClB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,+BAA+B,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzH,YAAY,EAAE,CAAC;SAChB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAA;QAC1B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrF,YAAY,EAAE,CAAC;SAChB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAA;QACd,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACrF,YAAY,EAAE,CAAC;SAChB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAA;QACd,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,wBAAwB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpG,YAAY,EAAE,CAAC;SAChB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAA;QACnB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,+BAA+B,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzH,YAAY,EAAE,CAAC;SAChB,CAAC,IAAI,IAAI,CAAC,eAAe,CAAA;IAC5B,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,SAAS,CAAE,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,SAAS,CAAE,MAAc;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAE,aAAa,CAAE,GAAQ,EAAE,UAA8D,EAAE;QAC/F,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,uBAAuB,CAAC,8BAA8B,CAAC,CAAA;QACnE,CAAC;QAED,IAAI,cAAc,GAAG,CAAC,CAAA;QACtB,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAA;QAEjB,KAAK,SAAU,CAAC,CAAC,aAAa,CAAE,OAA2D;YACzF,IAAI,eAAe,GAAG,CAAC,CAAA;YAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,SAAU,CAAC,EAAE,MAAM;gBAClD,IAAI,cAAc,GAAG,CAAC,CAAA;gBAEtB,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,oCAAoC,EAAE;oBAClF,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,GAAG,EAAE,GAAG;iBACT,CAAC,CAAC,CAAA;gBAEH,IAAI,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;wBAC5D,cAAc,EAAE,CAAA;wBAEhB,iEAAiE;wBACjE,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,uCAAuC,EAAE;4BACrF,MAAM,EAAE,MAAM,CAAC,IAAI;4BACnB,GAAG,EAAE,GAAG;4BACR,QAAQ,EAAE,IAAI;yBACf,CAAC,CAAC,CAAA;wBAEH,MAAM,IAAI,CAAA;oBACZ,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAClB,CAAC;wBAAS,CAAC;oBACT,IAAI,CAAC,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;oBAEjF,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,kCAAkC,EAAE;wBAChF,MAAM,EAAE,MAAM,CAAC,IAAI;wBACnB,GAAG,EAAE,GAAG;wBACR,KAAK,EAAE,cAAc;qBACtB,CAAC,CAAC,CAAA;oBAEH,eAAe,EAAE,CAAA;oBAEjB,qEAAqE;oBACrE,kEAAkE;oBAClE,IAAI,eAAe,KAAK,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;wBAC3D,KAAK,CAAC,QAAQ,EAAE,CAAA;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,2EAA2E;YAC3E,uEAAuE;YACvE,0EAA0E;YAC1E,gDAAgD;YAChD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAoC;gBACzD,WAAW,EAAE,IAAI,CAAC,yBAAyB;aAC5C,CAAC,CAAA;YAEF,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,CAC5B,KAAK,CAAC,WAAW,EAAE,EACnB,GAAG,OAAO,CAAC,EACX,CAAC;gBACD,qEAAqE;gBACrE,sBAAsB;gBACtB,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBACjB,SAAQ;gBACV,CAAC;gBAED,oEAAoE;gBACpE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjC,+BAA+B;oBAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;wBACtE,SAAQ;oBACV,CAAC;oBAED,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;wBACnB,IAAI,CAAC;4BACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;4BAEtD,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gCACrC,OAAO,IAAI,CAAA;4BACb,CAAC;4BAED,OAAO;gCACL,GAAG,QAAQ;gCACX,SAAS,EAAE,IAAI,CAAC,SAAS;gCACzB,MAAM,EAAE,IAAI,CAAC,MAAM;6BACpB,CAAA;wBACH,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;4BAC1E,OAAO,IAAI,CAAA;wBACb,CAAC;oBACH,CAAC,EAAE;wBACD,IAAI,EAAE,IAAI,CAAC,EAAE;wBACb,MAAM,EAAE,OAAO,CAAC,MAAM;qBACvB,CAAC;yBACC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;oBAC5E,CAAC,CAAC,CAAA;oBAEJ,SAAQ;gBACV,CAAC;gBAED,cAAc,EAAE,CAAA;gBAChB,MAAM,IAAI,CAAA;YACZ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;QACvD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;QAC5G,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,CAAA;QAE7F,IAAI,CAAC,GAAG,CAAC,6CAA6C,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAExG,iCAAiC;QACjC,KAAM,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;QAErC,4DAA4D;QAC5D,IAAI,cAAc,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,gDAAgD,EAAE,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5G,KAAM,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,CAAA;QACxC,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,mDAAmD,EAAE,cAAc,EAAE,GAAG,CAAC,CAAA;IACpF,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAE,GAAQ,EAAE,UAAwD,EAAE;QACjF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,uBAAuB,CAAC,8BAA8B,CAAC,CAAA;QACnE,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;aAC9B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,6BAA6B,EAAE;gBAC3E,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,GAAG,EAAE,GAAG;aACT,CAAC,CAAC,CAAA;YAEH,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAElC,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,2BAA2B,EAAE;gBACzE,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,GAAG,EAAE,GAAG;aACT,CAAC,CAAC,CAAA;QACL,CAAC,CAAC,CACL,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAE,GAAQ,EAAE,UAAgE,EAAE;QACjG,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;aACtC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,sCAAsC,EAAE;gBACpF,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,GAAG,EAAE,GAAG;aACT,CAAC,CAAC,CAAA;YAEH,MAAM,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAE1C,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,oCAAoC,EAAE;gBAClF,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,GAAG,EAAE,GAAG;aACT,CAAC,CAAC,CAAA;QACL,CAAC,CAAC,CACL,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAE,GAAe,EAAE,KAAiB,EAAE,OAAkD;QAC/F,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;aAC1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpB,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,yBAAyB,EAAE;gBACvE,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,GAAG;gBACH,KAAK;aACN,CAAC,CAAC,CAAA;YAEH,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;YAErC,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,uBAAuB,EAAE;gBACrE,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,GAAG;gBACH,KAAK;aACN,CAAC,CAAC,CAAA;QACL,CAAC,CAAC,CACL,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAE,GAAe,EAAE,OAAkD;QAC5E,MAAM,MAAM,GAAY,EAAE,CAAA;QAC1B,IAAI,MAA2C,CAAA;QAE/C,gCAAgC;QAChC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9D,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAEjC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CACxB,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;iBAC1B,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACpB,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,yBAAyB,EAAE;oBACvE,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,GAAG;iBACJ,CAAC,CAAC,CAAA;gBAEH,IAAI,CAAC;oBACH,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;wBAC3B,GAAG,OAAO;wBACV,MAAM;qBACP,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;oBACtD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAChB,MAAM,GAAG,CAAA;gBACX,CAAC;wBAAS,CAAC;oBACT,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,uBAAuB,EAAE;wBACrE,MAAM,EAAE,MAAM,CAAC,IAAI;wBACnB,GAAG;qBACJ,CAAC,CAAC,CAAA;gBACL,CAAC;YACH,CAAC,CAAC,CACL,CAAA;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;QAC9D,CAAC;gBAAS,CAAC;YACT,+BAA+B;YAC/B,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,MAAM,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,2BAA2B,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;QACrG,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAE,EAAO,EAAE,OAAuD;QAC9E,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,uBAAuB,CAAC,2BAA2B,CAAC,CAAA;QAChE,CAAC;QAED,gCAAgC;QAChC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9D,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAEjC,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,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,+BAA+B,EAAE;gBAC7E,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,MAAM,EAAE,EAAE;aACX,CAAC,CAAC,CAAA;YAEH,IAAI,CAAC;gBACH,MAAM,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;oBAC9B,GAAG,OAAO;oBACV,MAAM;iBACP,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACrB,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,6BAA6B,EAAE;oBAC3E,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC,CAAA;YACL,CAAC;QACH,CAAC,CAAC,EAAE,CAAC,CACR,CAAA;QAED,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAChC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBACjB,SAAQ;gBACV,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,+BAA+B;YAC/B,UAAU,CAAC,KAAK,EAAE,CAAA;YAClB,MAAM,CAAC,KAAK,EAAE,CAAA;QAChB,CAAC;QAED,MAAM,IAAI,aAAa,CAAC,gCAAgC,CAAC,CAAA;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAE,eAAe,CAAE,GAAe,EAAE,UAAgE,EAAE;QAC1G,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,uBAAuB,CAAC,2BAA2B,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,CAC5B,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC;aACzC,GAAG,CAAC,KAAK,SAAU,CAAC,EAAE,MAAM;YAC3B,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,uCAAuC,EAAE;gBACrF,MAAM,EAAE,MAAM,CAAC,IAAI;gBACnB,GAAG;aACJ,CAAC,CAAC,CAAA;YAEH,IAAI,CAAC;gBACH,KAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;YAC9C,CAAC;oBAAS,CAAC;gBACT,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,qCAAqC,EAAE;oBACnF,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,GAAG;iBACJ,CAAC,CAAC,CAAA;YACL,CAAC;QACH,CAAC,CAAC,CACL,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,CAAmC,OAAc,EAAE,GAAc;IAChF,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;AACtD,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const version = "7.0.5";
1
+ export declare const version = "7.1.0";
2
2
  export declare const name = "helia";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
- export const version = '7.0.5';
1
+ export const version = '7.1.0';
2
2
  export const name = 'helia';
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "helia",
3
- "version": "7.0.5",
3
+ "version": "7.1.0",
4
4
  "description": "An implementation of IPFS in JavaScript",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/ipfs/helia/tree/main/packages/helia#readme",
@@ -49,11 +49,11 @@
49
49
  "prepublishOnly": "node scripts/update-version.js && npm run build"
50
50
  },
51
51
  "dependencies": {
52
- "@helia/bitswap": "^4.0.5",
53
- "@helia/http": "^4.0.4",
54
- "@helia/interface": "^7.0.3",
55
- "@helia/libp2p": "^1.0.5",
56
- "@helia/utils": "^3.0.3",
52
+ "@helia/bitswap": "^4.0.6",
53
+ "@helia/http": "^4.0.5",
54
+ "@helia/interface": "^7.1.0",
55
+ "@helia/libp2p": "^1.0.6",
56
+ "@helia/utils": "^3.0.4",
57
57
  "@ipld/dag-cbor": "^10.0.1",
58
58
  "@ipld/dag-json": "^11.0.0",
59
59
  "@ipld/dag-pb": "^4.1.7",
package/src/routing.ts CHANGED
@@ -88,23 +88,14 @@ export class Routing implements RoutingInterface, Startable {
88
88
  throw new NoRoutersAvailableError('No content routers available')
89
89
  }
90
90
 
91
- // provider multiaddrs are only cached for a limited time, so they can come
92
- // back as an empty array - when this happens we have to do a FIND_PEER
93
- // query to get updated addresses, but we shouldn't block on this so use a
94
- // separate bounded queue to perform this lookup
95
- const queue = new Queue<Provider | null, PeerQueueOptions>({
96
- concurrency: this.providerLookupConcurrency
97
- })
98
-
99
91
  let foundProviders = 0
100
92
  const errors: Error[] = []
101
93
  const self = this
102
- let routersFinished = 0
103
94
 
104
- this.log('findProviders for %c start using routers %s', key, this.routers.map(r => r.toString()).join(', '))
95
+ async function * findProviders (routers: Required<Pick<Router, 'findProviders' | 'name'>>[]): AsyncGenerator<Provider> {
96
+ let routersFinished = 0
105
97
 
106
- const routers = supports(this.routers, 'findProviders')
107
- .map(async function * (router) {
98
+ const streams = routers.map(async function * (router) {
108
99
  let foundProviders = 0
109
100
 
110
101
  options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:start', {
@@ -128,7 +119,7 @@ export class Routing implements RoutingInterface, Startable {
128
119
  } catch (err: any) {
129
120
  errors.push(err)
130
121
  } finally {
131
- self.log('router %s found %d providers for %c', router, foundProviders, key)
122
+ self.log('router %s found %d providers for %c', router.name, foundProviders, key)
132
123
 
133
124
  options?.onProgress?.(new CustomProgressEvent('helia:routing:find-providers:end', {
134
125
  router: router.name,
@@ -146,53 +137,77 @@ export class Routing implements RoutingInterface, Startable {
146
137
  }
147
138
  })
148
139
 
149
- for await (const peer of merge(
150
- queue.toGenerator(),
151
- ...routers)
152
- ) {
153
- // the peer was yielded by a content router without multiaddrs and we
154
- // failed to load them
155
- if (peer == null) {
156
- continue
157
- }
140
+ // provider multiaddrs are only cached for a limited time, so they can come
141
+ // back as an empty array - when this happens we have to do a FIND_PEER
142
+ // query to get updated addresses, but we shouldn't block on this so use a
143
+ // separate bounded queue to perform this lookup
144
+ const queue = new Queue<Provider | null, PeerQueueOptions>({
145
+ concurrency: self.providerLookupConcurrency
146
+ })
158
147
 
159
- // have to refresh peer info for this peer to get updated multiaddrs
160
- if (peer.multiaddrs.length === 0) {
161
- // already looking this peer up
162
- if (queue.queue.find(job => job.options.peer.equals(peer.id)) != null) {
148
+ for await (const peer of merge(
149
+ queue.toGenerator(),
150
+ ...streams)
151
+ ) {
152
+ // the peer was yielded by a content router without multiaddrs and we
153
+ // failed to load them
154
+ if (peer == null) {
163
155
  continue
164
156
  }
165
157
 
166
- queue.add(async () => {
167
- try {
168
- const provider = await this.findPeer(peer.id, options)
158
+ // have to refresh peer info for this peer to get updated multiaddrs
159
+ if (peer.multiaddrs.length === 0) {
160
+ // already looking this peer up
161
+ if (queue.queue.find(job => job.options.peer.equals(peer.id)) != null) {
162
+ continue
163
+ }
169
164
 
170
- if (provider.multiaddrs.length === 0) {
165
+ queue.add(async () => {
166
+ try {
167
+ const provider = await self.findPeer(peer.id, options)
168
+
169
+ if (provider.multiaddrs.length === 0) {
170
+ return null
171
+ }
172
+
173
+ return {
174
+ ...provider,
175
+ protocols: peer.protocols,
176
+ router: peer.router
177
+ }
178
+ } catch (err) {
179
+ self.log.error('could not load multiaddrs for peer %p - %e', peer.id, err)
171
180
  return null
172
181
  }
173
-
174
- return {
175
- ...provider,
176
- protocols: peer.protocols,
177
- router: peer.router
178
- }
179
- } catch (err) {
180
- this.log.error('could not load multiaddrs for peer %p - %e', peer.id, err)
181
- return null
182
- }
183
- }, {
184
- peer: peer.id,
185
- signal: options.signal
186
- })
187
- .catch(err => {
188
- this.log.error('could not load multiaddrs for peer %p - %e', peer.id, err)
182
+ }, {
183
+ peer: peer.id,
184
+ signal: options.signal
189
185
  })
186
+ .catch(err => {
187
+ self.log.error('could not load multiaddrs for peer %p - %e', peer.id, err)
188
+ })
190
189
 
191
- continue
190
+ continue
191
+ }
192
+
193
+ foundProviders++
194
+ yield peer
192
195
  }
196
+ }
193
197
 
194
- foundProviders++
195
- yield peer
198
+ const routers = supports(this.routers, 'findProviders')
199
+ const defaultRouters = routers.filter(r => r.capabilities == null || !r.capabilities().includes('fallback'))
200
+ const fallbackRouters = routers.filter(r => r.capabilities?.().includes('fallback') === true)
201
+
202
+ this.log('findProviders for %c start using routers %s', key, defaultRouters.map(r => r.name).join(', '))
203
+
204
+ // use non-fallback routers first
205
+ yield * findProviders(defaultRouters)
206
+
207
+ // only use fallback routers if no providers have been found
208
+ if (foundProviders === 0 && fallbackRouters.length > 0) {
209
+ this.log('findProviders for %c using fallback routers %s', key, fallbackRouters.map(r => r.name).join(', '))
210
+ yield * findProviders(fallbackRouters)
196
211
  }
197
212
 
198
213
  this.log('findProviders finished, found %d providers for %c', foundProviders, key)
@@ -296,7 +311,7 @@ export class Routing implements RoutingInterface, Startable {
296
311
  signal
297
312
  })
298
313
  } catch (err: any) {
299
- this.log('router %s failed with %e', router, err)
314
+ this.log('router %s failed with %e', router.name, err)
300
315
  errors.push(err)
301
316
  throw err
302
317
  } finally {
@@ -412,6 +427,6 @@ export class Routing implements RoutingInterface, Startable {
412
427
  }
413
428
  }
414
429
 
415
- function supports <Operation extends keyof Routing> (routers: any[], key: Operation): Array<Pick<Routing, Operation | 'name'>> {
430
+ function supports <Operation extends keyof Router> (routers: any[], key: Operation): Array<Required<Pick<Router, Operation | 'name'>> & Pick<Router, 'capabilities'>> {
416
431
  return routers.filter(router => router[key] != null)
417
432
  }
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
- export const version = '7.0.5'
1
+ export const version = '7.1.0'
2
2
  export const name = 'helia'