@helia/utils 2.4.0 → 2.4.1-e16b7a7d
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/index.min.js.map +3 -3
- package/dist/src/abstract-session.d.ts +8 -3
- package/dist/src/abstract-session.d.ts.map +1 -1
- package/dist/src/abstract-session.js +58 -40
- package/dist/src/abstract-session.js.map +1 -1
- package/package.json +2 -2
- package/src/abstract-session.ts +83 -51
- package/dist/typedoc-urls.json +0 -19
|
@@ -25,6 +25,7 @@ export declare abstract class AbstractSession<Provider, RetrieveBlockProgressEve
|
|
|
25
25
|
readonly providers: Provider[];
|
|
26
26
|
private readonly evictionFilter;
|
|
27
27
|
private readonly initialProviders;
|
|
28
|
+
private readonly cidPeerFilterSize;
|
|
28
29
|
constructor(components: AbstractSessionComponents, init: AbstractCreateSessionOptions);
|
|
29
30
|
retrieve(cid: CID, options?: BlockRetrievalOptions<RetrieveBlockProgressEvents>): Promise<Uint8Array>;
|
|
30
31
|
evict(provider: Provider): void;
|
|
@@ -37,7 +38,7 @@ export declare abstract class AbstractSession<Provider, RetrieveBlockProgressEve
|
|
|
37
38
|
* into the format required or return `undefined` if the provider is not
|
|
38
39
|
* compatible with this session implementation
|
|
39
40
|
*/
|
|
40
|
-
abstract convertToProvider(provider: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<Provider | undefined>;
|
|
41
|
+
abstract convertToProvider(provider: PeerId | Multiaddr | Multiaddr[], routing: string, options?: AbortOptions): Promise<Provider | undefined>;
|
|
41
42
|
/**
|
|
42
43
|
* This method should search for new providers and yield them.
|
|
43
44
|
*/
|
|
@@ -52,12 +53,16 @@ export declare abstract class AbstractSession<Provider, RetrieveBlockProgressEve
|
|
|
52
53
|
abstract queryProvider(cid: CID, provider: Provider, options: AbortOptions): Promise<Uint8Array>;
|
|
53
54
|
/**
|
|
54
55
|
* Turn a provider into a concise Uint8Array representation for use in a Bloom
|
|
55
|
-
* filter
|
|
56
|
+
* or Cuckoo filter
|
|
56
57
|
*/
|
|
57
|
-
abstract
|
|
58
|
+
abstract toFilterKey(provider: Provider): Uint8Array | string;
|
|
58
59
|
/**
|
|
59
60
|
* Return `true` if we consider one provider to be the same as another
|
|
60
61
|
*/
|
|
61
62
|
abstract equals(providerA: Provider, providerB: Provider): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Invoke the progress handler with the session-specific found provider event
|
|
65
|
+
*/
|
|
66
|
+
abstract emitFoundProviderProgressEvent(cid: CID, provider: Provider, options: BlockRetrievalOptions<RetrieveBlockProgressEvents>): void;
|
|
62
67
|
}
|
|
63
68
|
//# sourceMappingURL=abstract-session.d.ts.map
|
|
@@ -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,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;
|
|
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;AAQD,8BAAsB,eAAe,CAAC,QAAQ,EAAE,2BAA2B,SAAS,aAAa,CAAE,SAAQ,iBAAiB,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAE,YAAW,WAAW,CAAC,2BAA2B,CAAC;IACjN,SAAgB,IAAI,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,yBAAyB,CAAC,CAAe;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,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;IAC1E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;gBAE7B,UAAU,EAAE,yBAAyB,EAAE,IAAI,EAAE,4BAA4B;IAgBhF,QAAQ,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,qBAAqB,CAAC,2BAA2B,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA4LhH,KAAK,CAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAWhC,SAAS,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAIvC,WAAW,CAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAcnC,OAAO,CAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAe/E,aAAa;IAwG3B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAE/I;;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,WAAW,CAAE,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM;IAE9D;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO;IAEnE;;OAEG;IACH,QAAQ,CAAC,8BAA8B,CAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,CAAC,2BAA2B,CAAC,GAAG,IAAI;CAC1I"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_SESSION_MIN_PROVIDERS, DEFAULT_SESSION_MAX_PROVIDERS, InsufficientProvidersError } from '@helia/interface';
|
|
1
|
+
import { DEFAULT_SESSION_MIN_PROVIDERS, DEFAULT_SESSION_MAX_PROVIDERS, DEFAULT_CID_PEER_FILTER_SIZE, InsufficientProvidersError } from '@helia/interface';
|
|
2
2
|
import { AbortError, TypedEventEmitter, setMaxListeners } from '@libp2p/interface';
|
|
3
3
|
import { createScalableCuckooFilter, Queue } from '@libp2p/utils';
|
|
4
4
|
import { base64 } from 'multiformats/bases/base64';
|
|
@@ -15,6 +15,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
15
15
|
providers;
|
|
16
16
|
evictionFilter;
|
|
17
17
|
initialProviders;
|
|
18
|
+
cidPeerFilterSize;
|
|
18
19
|
constructor(components, init) {
|
|
19
20
|
super();
|
|
20
21
|
setMaxListeners(Infinity, this);
|
|
@@ -24,9 +25,10 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
24
25
|
this.requests = new Map();
|
|
25
26
|
this.minProviders = init.minProviders ?? DEFAULT_SESSION_MIN_PROVIDERS;
|
|
26
27
|
this.maxProviders = init.maxProviders ?? DEFAULT_SESSION_MAX_PROVIDERS;
|
|
28
|
+
this.cidPeerFilterSize = init.cidPeerFilterSize ?? DEFAULT_CID_PEER_FILTER_SIZE;
|
|
27
29
|
this.providers = [];
|
|
28
30
|
this.evictionFilter = createScalableCuckooFilter(this.maxProviders);
|
|
29
|
-
this.initialProviders = init.providers ?? [];
|
|
31
|
+
this.initialProviders = [...(init.providers ?? [])];
|
|
30
32
|
}
|
|
31
33
|
async retrieve(cid, options = {}) {
|
|
32
34
|
// see if we are already requesting this CID in this session
|
|
@@ -40,35 +42,16 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
40
42
|
const deferred = pDefer();
|
|
41
43
|
const request = {
|
|
42
44
|
promise: deferred.promise,
|
|
43
|
-
observers: 1
|
|
45
|
+
observers: 1,
|
|
46
|
+
queryFilter: createScalableCuckooFilter(this.cidPeerFilterSize)
|
|
44
47
|
};
|
|
45
48
|
this.requests.set(cidStr, request);
|
|
46
|
-
if
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
try {
|
|
54
|
-
await raceSignal(this.initialPeerSearchComplete, options.signal);
|
|
55
|
-
if (first) {
|
|
56
|
-
this.log('found initial session peers for %c', cid);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (err) {
|
|
60
|
-
if (first) {
|
|
61
|
-
this.log('failed to find initial session peers for %c - %e', cid, err);
|
|
62
|
-
}
|
|
63
|
-
this.requests.delete(cidStr);
|
|
64
|
-
if (request.observers > 1) {
|
|
65
|
-
// only need to reject request if another context is now also waiting
|
|
66
|
-
// for the result - otherwise we can end up with an unhandled promise
|
|
67
|
-
// rejection
|
|
68
|
-
deferred.reject(err);
|
|
69
|
-
}
|
|
70
|
-
throw err;
|
|
71
|
-
}
|
|
49
|
+
// if this is the first time this session has been used
|
|
50
|
+
let first = false;
|
|
51
|
+
if (this.initialPeerSearchComplete == null) {
|
|
52
|
+
first = true;
|
|
53
|
+
this.log = this.logger.forComponent(`${this.logName}:${cid}`);
|
|
54
|
+
this.initialPeerSearchComplete = this.findProviders(cid, this.minProviders, options);
|
|
72
55
|
}
|
|
73
56
|
let foundBlock = false;
|
|
74
57
|
// this queue manages outgoing requests - as new peers are added to the
|
|
@@ -121,6 +104,13 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
121
104
|
});
|
|
122
105
|
});
|
|
123
106
|
const peerAddedToSessionListener = (event) => {
|
|
107
|
+
const filterKey = this.toFilterKey(event.detail);
|
|
108
|
+
if (request.queryFilter.has(filterKey)) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
request.queryFilter.add(filterKey);
|
|
112
|
+
// dispatch progress notification
|
|
113
|
+
this.emitFoundProviderProgressEvent(cid, event.detail, options);
|
|
124
114
|
queue.add(async () => {
|
|
125
115
|
return this.queryProvider(cid, event.detail, options);
|
|
126
116
|
}, {
|
|
@@ -137,11 +127,39 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
137
127
|
};
|
|
138
128
|
// add new session peers to query as they are discovered
|
|
139
129
|
this.addEventListener('provider', peerAddedToSessionListener);
|
|
130
|
+
if (first) {
|
|
131
|
+
try {
|
|
132
|
+
await raceSignal(this.initialPeerSearchComplete, options.signal);
|
|
133
|
+
if (first) {
|
|
134
|
+
this.log('found initial session peers for %c', cid);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch (err) {
|
|
138
|
+
if (first) {
|
|
139
|
+
this.log('failed to find initial session peers for %c - %e', cid, err);
|
|
140
|
+
}
|
|
141
|
+
this.requests.delete(cidStr);
|
|
142
|
+
if (request.observers > 1) {
|
|
143
|
+
// only need to reject request if another context is now also waiting
|
|
144
|
+
// for the result - otherwise we can end up with an unhandled promise
|
|
145
|
+
// rejection
|
|
146
|
+
deferred.reject(err);
|
|
147
|
+
}
|
|
148
|
+
throw err;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
140
151
|
// query each session peer directly
|
|
141
|
-
Promise.all([...this.providers]
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
152
|
+
Promise.all([...this.providers]
|
|
153
|
+
.filter(provider => {
|
|
154
|
+
const filterKey = this.toFilterKey(provider);
|
|
155
|
+
const has = request.queryFilter.has(filterKey);
|
|
156
|
+
if (!has) {
|
|
157
|
+
request.queryFilter.add(this.toFilterKey(provider));
|
|
158
|
+
}
|
|
159
|
+
return !has;
|
|
160
|
+
})
|
|
161
|
+
.map(async (provider) => {
|
|
162
|
+
return queue.add(async () => this.queryProvider(cid, provider, options), {
|
|
145
163
|
provider
|
|
146
164
|
});
|
|
147
165
|
}))
|
|
@@ -169,7 +187,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
169
187
|
}
|
|
170
188
|
}
|
|
171
189
|
evict(provider) {
|
|
172
|
-
this.evictionFilter.add(this.
|
|
190
|
+
this.evictionFilter.add(this.toFilterKey(provider));
|
|
173
191
|
const index = this.providers.findIndex(prov => this.equals(prov, provider));
|
|
174
192
|
if (index === -1) {
|
|
175
193
|
return;
|
|
@@ -177,7 +195,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
177
195
|
this.providers.splice(index, 1);
|
|
178
196
|
}
|
|
179
197
|
isEvicted(provider) {
|
|
180
|
-
return this.evictionFilter.has(this.
|
|
198
|
+
return this.evictionFilter.has(this.toFilterKey(provider));
|
|
181
199
|
}
|
|
182
200
|
hasProvider(provider) {
|
|
183
201
|
// dedupe existing gateways
|
|
@@ -191,7 +209,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
191
209
|
return false;
|
|
192
210
|
}
|
|
193
211
|
async addPeer(peer, options) {
|
|
194
|
-
const provider = await this.convertToProvider(peer, options);
|
|
212
|
+
const provider = await this.convertToProvider(peer, 'manually-added', options);
|
|
195
213
|
if (provider == null || this.hasProvider(provider)) {
|
|
196
214
|
return;
|
|
197
215
|
}
|
|
@@ -208,7 +226,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
208
226
|
// found but continue util this.providers reaches this.maxProviders
|
|
209
227
|
void Promise.resolve()
|
|
210
228
|
.then(async () => {
|
|
211
|
-
this.log('finding %d-%d new provider(s) for %c', count, this.maxProviders, cid);
|
|
229
|
+
this.log('finding %d-%d new provider(s) for %c - %d initial providers', count, this.maxProviders, cid, this.initialProviders.length);
|
|
212
230
|
// process any specific providers for this session
|
|
213
231
|
if (this.initialProviders.length > 0) {
|
|
214
232
|
while (found < count && this.initialProviders.length > 0) {
|
|
@@ -216,7 +234,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
216
234
|
if (prov == null) {
|
|
217
235
|
break;
|
|
218
236
|
}
|
|
219
|
-
const provider = await this.convertToProvider(prov, options);
|
|
237
|
+
const provider = await this.convertToProvider(prov, 'manual', options);
|
|
220
238
|
if (options.signal?.aborted === true) {
|
|
221
239
|
break;
|
|
222
240
|
}
|
|
@@ -234,7 +252,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
234
252
|
});
|
|
235
253
|
found++;
|
|
236
254
|
if (found === count) {
|
|
237
|
-
this.log('session is ready');
|
|
255
|
+
this.log('session is ready with %d peer(s), only initial peers present', count);
|
|
238
256
|
deferred.resolve();
|
|
239
257
|
// continue finding peers until we reach this.maxProviders
|
|
240
258
|
}
|
|
@@ -261,7 +279,7 @@ export class AbstractSession extends TypedEventEmitter {
|
|
|
261
279
|
});
|
|
262
280
|
found++;
|
|
263
281
|
if (found === count) {
|
|
264
|
-
this.log('session is ready');
|
|
282
|
+
this.log('session is ready with %d peer(s), new peers present', count);
|
|
265
283
|
deferred.resolve();
|
|
266
284
|
// continue finding peers until we reach this.maxProviders
|
|
267
285
|
}
|
|
@@ -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": "2.4.
|
|
3
|
+
"version": "2.4.1-e16b7a7d",
|
|
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",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"test:electron-main": "aegir test -t electron-main"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@helia/interface": "
|
|
50
|
+
"@helia/interface": "6.1.0-e16b7a7d",
|
|
51
51
|
"@ipld/dag-cbor": "^9.2.5",
|
|
52
52
|
"@ipld/dag-json": "^10.2.5",
|
|
53
53
|
"@ipld/dag-pb": "^4.1.5",
|
package/src/abstract-session.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DEFAULT_SESSION_MIN_PROVIDERS, DEFAULT_SESSION_MAX_PROVIDERS, InsufficientProvidersError } from '@helia/interface'
|
|
1
|
+
import { DEFAULT_SESSION_MIN_PROVIDERS, DEFAULT_SESSION_MAX_PROVIDERS, DEFAULT_CID_PEER_FILTER_SIZE, InsufficientProvidersError } from '@helia/interface'
|
|
2
2
|
import { AbortError, TypedEventEmitter, setMaxListeners } from '@libp2p/interface'
|
|
3
3
|
import { createScalableCuckooFilter, Queue } from '@libp2p/utils'
|
|
4
4
|
import { base64 } from 'multiformats/bases/base64'
|
|
@@ -27,6 +27,7 @@ export interface BlockstoreSessionEvents<Provider> {
|
|
|
27
27
|
interface Request {
|
|
28
28
|
promise: Promise<Uint8Array>
|
|
29
29
|
observers: number
|
|
30
|
+
queryFilter: Filter
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents extends ProgressEvent> extends TypedEventEmitter<BlockstoreSessionEvents<Provider>> implements BlockBroker<RetrieveBlockProgressEvents> {
|
|
@@ -41,6 +42,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
41
42
|
public readonly providers: Provider[]
|
|
42
43
|
private readonly evictionFilter: Filter
|
|
43
44
|
private readonly initialProviders: Array<PeerId | Multiaddr | Multiaddr[]>
|
|
45
|
+
private readonly cidPeerFilterSize: number
|
|
44
46
|
|
|
45
47
|
constructor (components: AbstractSessionComponents, init: AbstractCreateSessionOptions) {
|
|
46
48
|
super()
|
|
@@ -52,9 +54,10 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
52
54
|
this.requests = new Map()
|
|
53
55
|
this.minProviders = init.minProviders ?? DEFAULT_SESSION_MIN_PROVIDERS
|
|
54
56
|
this.maxProviders = init.maxProviders ?? DEFAULT_SESSION_MAX_PROVIDERS
|
|
57
|
+
this.cidPeerFilterSize = init.cidPeerFilterSize ?? DEFAULT_CID_PEER_FILTER_SIZE
|
|
55
58
|
this.providers = []
|
|
56
59
|
this.evictionFilter = createScalableCuckooFilter(this.maxProviders)
|
|
57
|
-
this.initialProviders = init.providers ?? []
|
|
60
|
+
this.initialProviders = [...(init.providers ?? [])]
|
|
58
61
|
}
|
|
59
62
|
|
|
60
63
|
async retrieve (cid: CID, options: BlockRetrievalOptions<RetrieveBlockProgressEvents> = {}): Promise<Uint8Array> {
|
|
@@ -71,41 +74,18 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
71
74
|
const deferred: DeferredPromise<Uint8Array> = pDefer()
|
|
72
75
|
const request = {
|
|
73
76
|
promise: deferred.promise,
|
|
74
|
-
observers: 1
|
|
77
|
+
observers: 1,
|
|
78
|
+
queryFilter: createScalableCuckooFilter(this.cidPeerFilterSize)
|
|
75
79
|
}
|
|
76
80
|
this.requests.set(cidStr, request)
|
|
77
81
|
|
|
78
|
-
if
|
|
79
|
-
|
|
82
|
+
// if this is the first time this session has been used
|
|
83
|
+
let first = false
|
|
80
84
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
try {
|
|
88
|
-
await raceSignal(this.initialPeerSearchComplete, options.signal)
|
|
89
|
-
|
|
90
|
-
if (first) {
|
|
91
|
-
this.log('found initial session peers for %c', cid)
|
|
92
|
-
}
|
|
93
|
-
} catch (err) {
|
|
94
|
-
if (first) {
|
|
95
|
-
this.log('failed to find initial session peers for %c - %e', cid, err)
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
this.requests.delete(cidStr)
|
|
99
|
-
|
|
100
|
-
if (request.observers > 1) {
|
|
101
|
-
// only need to reject request if another context is now also waiting
|
|
102
|
-
// for the result - otherwise we can end up with an unhandled promise
|
|
103
|
-
// rejection
|
|
104
|
-
deferred.reject(err)
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
throw err
|
|
108
|
-
}
|
|
85
|
+
if (this.initialPeerSearchComplete == null) {
|
|
86
|
+
first = true
|
|
87
|
+
this.log = this.logger.forComponent(`${this.logName}:${cid}`)
|
|
88
|
+
this.initialPeerSearchComplete = this.findProviders(cid, this.minProviders, options)
|
|
109
89
|
}
|
|
110
90
|
|
|
111
91
|
let foundBlock = false
|
|
@@ -167,6 +147,17 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
167
147
|
})
|
|
168
148
|
|
|
169
149
|
const peerAddedToSessionListener = (event: CustomEvent<Provider>): void => {
|
|
150
|
+
const filterKey = this.toFilterKey(event.detail)
|
|
151
|
+
|
|
152
|
+
if (request.queryFilter.has(filterKey)) {
|
|
153
|
+
return
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
request.queryFilter.add(filterKey)
|
|
157
|
+
|
|
158
|
+
// dispatch progress notification
|
|
159
|
+
this.emitFoundProviderProgressEvent(cid, event.detail, options)
|
|
160
|
+
|
|
170
161
|
queue.add(async () => {
|
|
171
162
|
return this.queryProvider(cid, event.detail, options)
|
|
172
163
|
}, {
|
|
@@ -186,14 +177,50 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
186
177
|
// add new session peers to query as they are discovered
|
|
187
178
|
this.addEventListener('provider', peerAddedToSessionListener)
|
|
188
179
|
|
|
180
|
+
if (first) {
|
|
181
|
+
try {
|
|
182
|
+
await raceSignal(this.initialPeerSearchComplete, options.signal)
|
|
183
|
+
|
|
184
|
+
if (first) {
|
|
185
|
+
this.log('found initial session peers for %c', cid)
|
|
186
|
+
}
|
|
187
|
+
} catch (err) {
|
|
188
|
+
if (first) {
|
|
189
|
+
this.log('failed to find initial session peers for %c - %e', cid, err)
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
this.requests.delete(cidStr)
|
|
193
|
+
|
|
194
|
+
if (request.observers > 1) {
|
|
195
|
+
// only need to reject request if another context is now also waiting
|
|
196
|
+
// for the result - otherwise we can end up with an unhandled promise
|
|
197
|
+
// rejection
|
|
198
|
+
deferred.reject(err)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
throw err
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
189
205
|
// query each session peer directly
|
|
190
|
-
Promise.all(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
206
|
+
Promise.all(
|
|
207
|
+
[...this.providers]
|
|
208
|
+
.filter(provider => {
|
|
209
|
+
const filterKey = this.toFilterKey(provider)
|
|
210
|
+
const has = request.queryFilter.has(filterKey)
|
|
211
|
+
|
|
212
|
+
if (!has) {
|
|
213
|
+
request.queryFilter.add(this.toFilterKey(provider))
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
return !has
|
|
217
|
+
})
|
|
218
|
+
.map(async (provider) => {
|
|
219
|
+
return queue.add(async () => this.queryProvider(cid, provider, options), {
|
|
220
|
+
provider
|
|
221
|
+
})
|
|
222
|
+
})
|
|
223
|
+
)
|
|
197
224
|
.catch(err => {
|
|
198
225
|
if (options.signal?.aborted === true) {
|
|
199
226
|
// skip logging error if signal was aborted because abort can happen
|
|
@@ -222,7 +249,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
222
249
|
}
|
|
223
250
|
|
|
224
251
|
evict (provider: Provider): void {
|
|
225
|
-
this.evictionFilter.add(this.
|
|
252
|
+
this.evictionFilter.add(this.toFilterKey(provider))
|
|
226
253
|
const index = this.providers.findIndex(prov => this.equals(prov, provider))
|
|
227
254
|
|
|
228
255
|
if (index === -1) {
|
|
@@ -233,7 +260,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
233
260
|
}
|
|
234
261
|
|
|
235
262
|
isEvicted (provider: Provider): boolean {
|
|
236
|
-
return this.evictionFilter.has(this.
|
|
263
|
+
return this.evictionFilter.has(this.toFilterKey(provider))
|
|
237
264
|
}
|
|
238
265
|
|
|
239
266
|
hasProvider (provider: Provider): boolean {
|
|
@@ -251,7 +278,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
251
278
|
}
|
|
252
279
|
|
|
253
280
|
async addPeer (peer: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<void> {
|
|
254
|
-
const provider = await this.convertToProvider(peer, options)
|
|
281
|
+
const provider = await this.convertToProvider(peer, 'manually-added', options)
|
|
255
282
|
|
|
256
283
|
if (provider == null || this.hasProvider(provider)) {
|
|
257
284
|
return
|
|
@@ -265,7 +292,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
265
292
|
})
|
|
266
293
|
}
|
|
267
294
|
|
|
268
|
-
private async findProviders (cid: CID, count: number, options:
|
|
295
|
+
private async findProviders (cid: CID, count: number, options: BlockRetrievalOptions<RetrieveBlockProgressEvents>): Promise<void> {
|
|
269
296
|
const deferred: DeferredPromise<void> = pDefer()
|
|
270
297
|
let found = 0
|
|
271
298
|
|
|
@@ -273,7 +300,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
273
300
|
// found but continue util this.providers reaches this.maxProviders
|
|
274
301
|
void Promise.resolve()
|
|
275
302
|
.then(async () => {
|
|
276
|
-
this.log('finding %d-%d new provider(s) for %c', count, this.maxProviders, cid)
|
|
303
|
+
this.log('finding %d-%d new provider(s) for %c - %d initial providers', count, this.maxProviders, cid, this.initialProviders.length)
|
|
277
304
|
|
|
278
305
|
// process any specific providers for this session
|
|
279
306
|
if (this.initialProviders.length > 0) {
|
|
@@ -284,7 +311,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
284
311
|
break
|
|
285
312
|
}
|
|
286
313
|
|
|
287
|
-
const provider = await this.convertToProvider(prov, options)
|
|
314
|
+
const provider = await this.convertToProvider(prov, 'manual', options)
|
|
288
315
|
|
|
289
316
|
if (options.signal?.aborted === true) {
|
|
290
317
|
break
|
|
@@ -309,7 +336,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
309
336
|
found++
|
|
310
337
|
|
|
311
338
|
if (found === count) {
|
|
312
|
-
this.log('session is ready')
|
|
339
|
+
this.log('session is ready with %d peer(s), only initial peers present', count)
|
|
313
340
|
deferred.resolve()
|
|
314
341
|
// continue finding peers until we reach this.maxProviders
|
|
315
342
|
}
|
|
@@ -343,7 +370,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
343
370
|
found++
|
|
344
371
|
|
|
345
372
|
if (found === count) {
|
|
346
|
-
this.log('session is ready')
|
|
373
|
+
this.log('session is ready with %d peer(s), new peers present', count)
|
|
347
374
|
deferred.resolve()
|
|
348
375
|
// continue finding peers until we reach this.maxProviders
|
|
349
376
|
}
|
|
@@ -374,7 +401,7 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
374
401
|
* into the format required or return `undefined` if the provider is not
|
|
375
402
|
* compatible with this session implementation
|
|
376
403
|
*/
|
|
377
|
-
abstract convertToProvider (provider: PeerId | Multiaddr | Multiaddr[], options?: AbortOptions): Promise<Provider | undefined>
|
|
404
|
+
abstract convertToProvider (provider: PeerId | Multiaddr | Multiaddr[], routing: string, options?: AbortOptions): Promise<Provider | undefined>
|
|
378
405
|
|
|
379
406
|
/**
|
|
380
407
|
* This method should search for new providers and yield them.
|
|
@@ -392,12 +419,17 @@ export abstract class AbstractSession<Provider, RetrieveBlockProgressEvents exte
|
|
|
392
419
|
|
|
393
420
|
/**
|
|
394
421
|
* Turn a provider into a concise Uint8Array representation for use in a Bloom
|
|
395
|
-
* filter
|
|
422
|
+
* or Cuckoo filter
|
|
396
423
|
*/
|
|
397
|
-
abstract
|
|
424
|
+
abstract toFilterKey (provider: Provider): Uint8Array | string
|
|
398
425
|
|
|
399
426
|
/**
|
|
400
427
|
* Return `true` if we consider one provider to be the same as another
|
|
401
428
|
*/
|
|
402
429
|
abstract equals (providerA: Provider, providerB: Provider): boolean
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Invoke the progress handler with the session-specific found provider event
|
|
433
|
+
*/
|
|
434
|
+
abstract emitFoundProviderProgressEvent (cid: CID, provider: Provider, options: BlockRetrievalOptions<RetrieveBlockProgressEvents>): void
|
|
403
435
|
}
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"GraphWalker": "https://ipfs.github.io/helia/interfaces/_helia_car.GraphWalker.html",
|
|
3
|
-
"breadthFirstWalker": "https://ipfs.github.io/helia/functions/_helia_car.breadthFirstWalker.html",
|
|
4
|
-
"depthFirstWalker": "https://ipfs.github.io/helia/functions/_helia_car.depthFirstWalker.html",
|
|
5
|
-
"naturalOrderWalker": "https://ipfs.github.io/helia/functions/_helia_car.naturalOrderWalker.html",
|
|
6
|
-
"AbstractSession": "https://ipfs.github.io/helia/classes/_helia_utils.AbstractSession.html",
|
|
7
|
-
"Helia": "https://ipfs.github.io/helia/classes/_helia_utils.Helia.html",
|
|
8
|
-
".:Helia": "https://ipfs.github.io/helia/classes/_helia_utils.Helia.html",
|
|
9
|
-
"AbstractCreateSessionOptions": "https://ipfs.github.io/helia/interfaces/_helia_utils.AbstractCreateSessionOptions.html",
|
|
10
|
-
"AbstractSessionComponents": "https://ipfs.github.io/helia/interfaces/_helia_utils.AbstractSessionComponents.html",
|
|
11
|
-
"BlockStorage": "https://ipfs.github.io/helia/interfaces/_helia_utils.BlockStorage.html",
|
|
12
|
-
"BlockStorageInit": "https://ipfs.github.io/helia/interfaces/_helia_utils.BlockStorageInit.html",
|
|
13
|
-
"BlockstoreSessionEvents": "https://ipfs.github.io/helia/interfaces/_helia_utils.BlockstoreSessionEvents.html",
|
|
14
|
-
"GraphNode": "https://ipfs.github.io/helia/interfaces/_helia_utils.GraphNode.html",
|
|
15
|
-
"GraphWalkerComponents": "https://ipfs.github.io/helia/interfaces/_helia_utils.GraphWalkerComponents.html",
|
|
16
|
-
"GraphWalkerInit": "https://ipfs.github.io/helia/interfaces/_helia_utils.GraphWalkerInit.html",
|
|
17
|
-
"HeliaInit": "https://ipfs.github.io/helia/interfaces/_helia_utils.HeliaInit.html",
|
|
18
|
-
".:HeliaInit": "https://ipfs.github.io/helia/interfaces/helia.HeliaInit.html"
|
|
19
|
-
}
|