@libp2p/kad-dht 10.0.14 → 10.0.15-0b4a2ee79
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/README.md +1 -5
- package/dist/index.min.js +20 -20
- package/dist/src/content-fetching/index.d.ts.map +1 -1
- package/dist/src/content-fetching/index.js +1 -2
- package/dist/src/content-fetching/index.js.map +1 -1
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +3 -6
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/dual-kad-dht.d.ts +1 -0
- package/dist/src/dual-kad-dht.d.ts.map +1 -1
- package/dist/src/dual-kad-dht.js +5 -5
- package/dist/src/dual-kad-dht.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/kad-dht.d.ts.map +1 -1
- package/dist/src/kad-dht.js +3 -4
- package/dist/src/kad-dht.js.map +1 -1
- package/dist/src/message/index.d.ts +2 -0
- package/dist/src/message/index.d.ts.map +1 -1
- package/dist/src/message/index.js +7 -2
- package/dist/src/message/index.js.map +1 -1
- package/dist/src/network.d.ts +3 -4
- package/dist/src/network.d.ts.map +1 -1
- package/dist/src/network.js +11 -25
- package/dist/src/network.js.map +1 -1
- package/dist/src/peer-routing/index.d.ts +2 -1
- package/dist/src/peer-routing/index.d.ts.map +1 -1
- package/dist/src/peer-routing/index.js +15 -17
- package/dist/src/peer-routing/index.js.map +1 -1
- package/dist/src/providers.d.ts +4 -1
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +17 -17
- package/dist/src/providers.js.map +1 -1
- package/dist/src/query/manager.d.ts +5 -2
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +13 -12
- package/dist/src/query/manager.js.map +1 -1
- package/dist/src/query/query-path.d.ts +1 -1
- package/dist/src/query/query-path.d.ts.map +1 -1
- package/dist/src/query/query-path.js +2 -59
- package/dist/src/query/query-path.js.map +1 -1
- package/dist/src/query/utils.d.ts +7 -0
- package/dist/src/query/utils.d.ts.map +1 -0
- package/dist/src/query/utils.js +53 -0
- package/dist/src/query/utils.js.map +1 -0
- package/dist/src/query-self.d.ts +3 -1
- package/dist/src/query-self.d.ts.map +1 -1
- package/dist/src/query-self.js +4 -5
- package/dist/src/query-self.js.map +1 -1
- package/dist/src/routing-table/index.d.ts +2 -0
- package/dist/src/routing-table/index.d.ts.map +1 -1
- package/dist/src/routing-table/index.js +1 -2
- package/dist/src/routing-table/index.js.map +1 -1
- package/dist/src/routing-table/refresh.d.ts +5 -1
- package/dist/src/routing-table/refresh.d.ts.map +1 -1
- package/dist/src/routing-table/refresh.js +2 -3
- package/dist/src/routing-table/refresh.js.map +1 -1
- package/dist/src/rpc/handlers/add-provider.d.ts +6 -1
- package/dist/src/rpc/handlers/add-provider.d.ts.map +1 -1
- package/dist/src/rpc/handlers/add-provider.js +9 -10
- package/dist/src/rpc/handlers/add-provider.js.map +1 -1
- package/dist/src/rpc/handlers/find-node.d.ts +5 -1
- package/dist/src/rpc/handlers/find-node.d.ts.map +1 -1
- package/dist/src/rpc/handlers/find-node.js +11 -10
- package/dist/src/rpc/handlers/find-node.js.map +1 -1
- package/dist/src/rpc/handlers/get-providers.d.ts +4 -1
- package/dist/src/rpc/handlers/get-providers.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-providers.js +8 -9
- package/dist/src/rpc/handlers/get-providers.js.map +1 -1
- package/dist/src/rpc/handlers/get-value.d.ts +5 -1
- package/dist/src/rpc/handlers/get-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/get-value.js +16 -15
- package/dist/src/rpc/handlers/get-value.js.map +1 -1
- package/dist/src/rpc/handlers/ping.d.ts +6 -0
- package/dist/src/rpc/handlers/ping.d.ts.map +1 -1
- package/dist/src/rpc/handlers/ping.js +5 -3
- package/dist/src/rpc/handlers/ping.js.map +1 -1
- package/dist/src/rpc/handlers/put-value.d.ts +3 -1
- package/dist/src/rpc/handlers/put-value.d.ts.map +1 -1
- package/dist/src/rpc/handlers/put-value.js +2 -3
- package/dist/src/rpc/handlers/put-value.js.map +1 -1
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +3 -4
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/src/topology-listener.d.ts.map +1 -1
- package/dist/src/topology-listener.js +1 -2
- package/dist/src/topology-listener.js.map +1 -1
- package/package.json +23 -22
- package/src/content-fetching/index.ts +2 -4
- package/src/content-routing/index.ts +4 -7
- package/src/dual-kad-dht.ts +6 -6
- package/src/index.ts +2 -1
- package/src/kad-dht.ts +4 -4
- package/src/message/index.ts +9 -2
- package/src/network.ts +14 -44
- package/src/peer-routing/index.ts +17 -19
- package/src/providers.ts +19 -18
- package/src/query/manager.ts +18 -16
- package/src/query/query-path.ts +3 -72
- package/src/query/utils.ts +65 -0
- package/src/query-self.ts +6 -5
- package/src/routing-table/index.ts +3 -3
- package/src/routing-table/refresh.ts +7 -4
- package/src/rpc/handlers/add-provider.ts +13 -10
- package/src/rpc/handlers/find-node.ts +13 -11
- package/src/rpc/handlers/get-providers.ts +10 -10
- package/src/rpc/handlers/get-value.ts +18 -17
- package/src/rpc/handlers/ping.ts +11 -3
- package/src/rpc/handlers/put-value.ts +4 -3
- package/src/rpc/index.ts +4 -4
- package/src/topology-listener.ts +2 -3
- package/dist/typedoc-urls.json +0 -55
|
@@ -13,12 +13,13 @@ export interface PeerRoutingInit {
|
|
|
13
13
|
lan: boolean;
|
|
14
14
|
}
|
|
15
15
|
export declare class PeerRouting {
|
|
16
|
-
private readonly components;
|
|
17
16
|
private readonly log;
|
|
18
17
|
private readonly routingTable;
|
|
19
18
|
private readonly network;
|
|
20
19
|
private readonly validators;
|
|
21
20
|
private readonly queryManager;
|
|
21
|
+
private readonly peerStore;
|
|
22
|
+
private readonly peerId;
|
|
22
23
|
constructor(components: KadDHTComponents, init: PeerRoutingInit);
|
|
23
24
|
/**
|
|
24
25
|
* Look if we are connected to a peer with the given id.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACrH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAU,MAAM,mBAAmB,CAAA;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAG3D,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,EAAE,YAAY,CAAA;IAC1B,GAAG,EAAE,OAAO,CAAA;CACb;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;gBAElB,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe;IAYhE;;;OAGG;IACG,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAsCjE;;OAEG;IACK,eAAe,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;IAK/G;;OAEG;IACK,oBAAoB,CAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;IAyBnG;;OAEG;IACK,QAAQ,CAAE,EAAE,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,cAAc,GAAG,UAAU,CAAC;IAqDtG;;;OAGG;IACK,eAAe,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,aAAa,GAAG,UAAU,CAAC;IAgDjH;;;;;OAKG;IACK,eAAe,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,aAAa,GAAG,UAAU,CAAC;IAqB/H;;;OAGG;IACG,mBAAmB,CAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D;;;OAGG;IACG,qBAAqB,CAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAgCvF"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { keys } from '@libp2p/crypto';
|
|
2
2
|
import { CodeError } from '@libp2p/interface/errors';
|
|
3
|
-
import { logger } from '@libp2p/logger';
|
|
4
3
|
import { peerIdFromKeys } from '@libp2p/peer-id';
|
|
5
4
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
6
5
|
import { Message, MESSAGE_TYPE } from '../message/index.js';
|
|
@@ -10,20 +9,22 @@ import { Libp2pRecord } from '../record/index.js';
|
|
|
10
9
|
import { verifyRecord } from '../record/validators.js';
|
|
11
10
|
import * as utils from '../utils.js';
|
|
12
11
|
export class PeerRouting {
|
|
13
|
-
components;
|
|
14
12
|
log;
|
|
15
13
|
routingTable;
|
|
16
14
|
network;
|
|
17
15
|
validators;
|
|
18
16
|
queryManager;
|
|
17
|
+
peerStore;
|
|
18
|
+
peerId;
|
|
19
19
|
constructor(components, init) {
|
|
20
20
|
const { routingTable, network, validators, queryManager, lan } = init;
|
|
21
|
-
this.components = components;
|
|
22
21
|
this.routingTable = routingTable;
|
|
23
22
|
this.network = network;
|
|
24
23
|
this.validators = validators;
|
|
25
24
|
this.queryManager = queryManager;
|
|
26
|
-
this.
|
|
25
|
+
this.peerStore = components.peerStore;
|
|
26
|
+
this.peerId = components.peerId;
|
|
27
|
+
this.log = components.logger.forComponent(`libp2p:kad-dht:${lan ? 'lan' : 'wan'}:peer-routing`);
|
|
27
28
|
}
|
|
28
29
|
/**
|
|
29
30
|
* Look if we are connected to a peer with the given id.
|
|
@@ -35,7 +36,7 @@ export class PeerRouting {
|
|
|
35
36
|
if (p != null) {
|
|
36
37
|
this.log('findPeerLocal found %p in routing table', peer);
|
|
37
38
|
try {
|
|
38
|
-
peerData = await this.
|
|
39
|
+
peerData = await this.peerStore.get(p);
|
|
39
40
|
}
|
|
40
41
|
catch (err) {
|
|
41
42
|
if (err.code !== 'ERR_NOT_FOUND') {
|
|
@@ -45,7 +46,7 @@ export class PeerRouting {
|
|
|
45
46
|
}
|
|
46
47
|
if (peerData == null) {
|
|
47
48
|
try {
|
|
48
|
-
peerData = await this.
|
|
49
|
+
peerData = await this.peerStore.get(peer);
|
|
49
50
|
}
|
|
50
51
|
catch (err) {
|
|
51
52
|
if (err.code !== 'ERR_NOT_FOUND') {
|
|
@@ -57,8 +58,7 @@ export class PeerRouting {
|
|
|
57
58
|
this.log('findPeerLocal found %p in peer store', peer);
|
|
58
59
|
return {
|
|
59
60
|
id: peerData.id,
|
|
60
|
-
multiaddrs: peerData.addresses.map((address) => address.multiaddr)
|
|
61
|
-
protocols: []
|
|
61
|
+
multiaddrs: peerData.addresses.map((address) => address.multiaddr)
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
return undefined;
|
|
@@ -102,7 +102,7 @@ export class PeerRouting {
|
|
|
102
102
|
if (pi != null) {
|
|
103
103
|
this.log('found local');
|
|
104
104
|
yield finalPeerEvent({
|
|
105
|
-
from: this.
|
|
105
|
+
from: this.peerId,
|
|
106
106
|
peer: pi
|
|
107
107
|
}, options);
|
|
108
108
|
return;
|
|
@@ -132,7 +132,7 @@ export class PeerRouting {
|
|
|
132
132
|
yield event;
|
|
133
133
|
}
|
|
134
134
|
if (!foundPeer) {
|
|
135
|
-
yield queryErrorEvent({ from: this.
|
|
135
|
+
yield queryErrorEvent({ from: this.peerId, error: new CodeError('Not found', 'ERR_NOT_FOUND') }, options);
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
@@ -163,13 +163,12 @@ export class PeerRouting {
|
|
|
163
163
|
this.log('found %d peers close to %b', peers.length, key);
|
|
164
164
|
for (const peerId of peers.peers) {
|
|
165
165
|
try {
|
|
166
|
-
const peer = await this.
|
|
166
|
+
const peer = await this.peerStore.get(peerId);
|
|
167
167
|
yield finalPeerEvent({
|
|
168
|
-
from: this.
|
|
168
|
+
from: this.peerId,
|
|
169
169
|
peer: {
|
|
170
170
|
id: peerId,
|
|
171
|
-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
172
|
-
protocols: peer.protocols
|
|
171
|
+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
173
172
|
}
|
|
174
173
|
}, options);
|
|
175
174
|
}
|
|
@@ -228,11 +227,10 @@ export class PeerRouting {
|
|
|
228
227
|
continue;
|
|
229
228
|
}
|
|
230
229
|
try {
|
|
231
|
-
const peer = await this.
|
|
230
|
+
const peer = await this.peerStore.get(peerId);
|
|
232
231
|
output.push({
|
|
233
232
|
id: peerId,
|
|
234
|
-
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
235
|
-
protocols: peer.protocols
|
|
233
|
+
multiaddrs: peer.addresses.map(({ multiaddr }) => multiaddr)
|
|
236
234
|
});
|
|
237
235
|
}
|
|
238
236
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/peer-routing/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/providers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ComponentLogger } from '@libp2p/interface';
|
|
1
2
|
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
2
3
|
import type { Startable } from '@libp2p/interface/startable';
|
|
3
4
|
import type { Datastore } from 'interface-datastore';
|
|
@@ -15,6 +16,7 @@ export interface ProvidersInit {
|
|
|
15
16
|
}
|
|
16
17
|
export interface ProvidersComponents {
|
|
17
18
|
datastore: Datastore;
|
|
19
|
+
logger: ComponentLogger;
|
|
18
20
|
}
|
|
19
21
|
/**
|
|
20
22
|
* This class manages known providers.
|
|
@@ -29,7 +31,8 @@ export interface ProvidersComponents {
|
|
|
29
31
|
* access is fast there is an LRU cache in front of that.
|
|
30
32
|
*/
|
|
31
33
|
export declare class Providers implements Startable {
|
|
32
|
-
private readonly
|
|
34
|
+
private readonly log;
|
|
35
|
+
private readonly datastore;
|
|
33
36
|
private readonly cache;
|
|
34
37
|
private readonly cleanupInterval;
|
|
35
38
|
private readonly provideValidity;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,SAAU,YAAW,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAC,CAAgC;gBAEnC,UAAU,EAAE,mBAAmB,EAAE,IAAI,GAAE,aAAkB;IAYtE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAiB7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACG,QAAQ,IAAK,OAAO,CAAC,IAAI,CAAC;IAkEhC;;OAEG;IACG,gBAAgB,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAY7D;;OAEG;IACG,WAAW,CAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7D;;OAEG;IACG,YAAY,CAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAejD"}
|
package/dist/src/providers.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { logger } from '@libp2p/logger';
|
|
2
1
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
3
2
|
import cache from 'hashlru';
|
|
4
3
|
import { Key } from 'interface-datastore/key';
|
|
@@ -6,7 +5,6 @@ import Queue from 'p-queue';
|
|
|
6
5
|
import * as varint from 'uint8-varint';
|
|
7
6
|
import { toString as uint8ArrayToString } from 'uint8arrays/to-string';
|
|
8
7
|
import { PROVIDERS_CLEANUP_INTERVAL, PROVIDERS_VALIDITY, PROVIDERS_LRU_CACHE_SIZE, PROVIDER_KEY_PREFIX } from './constants.js';
|
|
9
|
-
const log = logger('libp2p:kad-dht:providers');
|
|
10
8
|
/**
|
|
11
9
|
* This class manages known providers.
|
|
12
10
|
* A provider is a peer that we know to have the content for a given CID.
|
|
@@ -20,7 +18,8 @@ const log = logger('libp2p:kad-dht:providers');
|
|
|
20
18
|
* access is fast there is an LRU cache in front of that.
|
|
21
19
|
*/
|
|
22
20
|
export class Providers {
|
|
23
|
-
|
|
21
|
+
log;
|
|
22
|
+
datastore;
|
|
24
23
|
cache;
|
|
25
24
|
cleanupInterval;
|
|
26
25
|
provideValidity;
|
|
@@ -29,7 +28,8 @@ export class Providers {
|
|
|
29
28
|
cleaner;
|
|
30
29
|
constructor(components, init = {}) {
|
|
31
30
|
const { cacheSize, cleanupInterval, provideValidity } = init;
|
|
32
|
-
this.
|
|
31
|
+
this.log = components.logger.forComponent('libp2p:kad-dht:providers');
|
|
32
|
+
this.datastore = components.datastore;
|
|
33
33
|
this.cleanupInterval = cleanupInterval ?? PROVIDERS_CLEANUP_INTERVAL;
|
|
34
34
|
this.provideValidity = provideValidity ?? PROVIDERS_VALIDITY;
|
|
35
35
|
this.cache = cache(cacheSize ?? PROVIDERS_LRU_CACHE_SIZE);
|
|
@@ -49,7 +49,7 @@ export class Providers {
|
|
|
49
49
|
this.started = true;
|
|
50
50
|
this.cleaner = setInterval(() => {
|
|
51
51
|
this._cleanup().catch(err => {
|
|
52
|
-
log.error(err);
|
|
52
|
+
this.log.error(err);
|
|
53
53
|
});
|
|
54
54
|
}, this.cleanupInterval);
|
|
55
55
|
}
|
|
@@ -72,9 +72,9 @@ export class Providers {
|
|
|
72
72
|
let count = 0;
|
|
73
73
|
let deleteCount = 0;
|
|
74
74
|
const deleted = new Map();
|
|
75
|
-
const batch = this.
|
|
75
|
+
const batch = this.datastore.batch();
|
|
76
76
|
// Get all provider entries from the datastore
|
|
77
|
-
const query = this.
|
|
77
|
+
const query = this.datastore.query({ prefix: PROVIDER_KEY_PREFIX });
|
|
78
78
|
for await (const entry of query) {
|
|
79
79
|
try {
|
|
80
80
|
// Add a delete to the batch for each expired entry
|
|
@@ -83,7 +83,7 @@ export class Providers {
|
|
|
83
83
|
const now = Date.now();
|
|
84
84
|
const delta = now - time;
|
|
85
85
|
const expired = delta > this.provideValidity;
|
|
86
|
-
log('comparing: %d - %d = %d > %d %s', now, time, delta, this.provideValidity, expired ? '(expired)' : '');
|
|
86
|
+
this.log('comparing: %d - %d = %d > %d %s', now, time, delta, this.provideValidity, expired ? '(expired)' : '');
|
|
87
87
|
if (expired) {
|
|
88
88
|
deleteCount++;
|
|
89
89
|
batch.delete(entry.key);
|
|
@@ -94,16 +94,16 @@ export class Providers {
|
|
|
94
94
|
count++;
|
|
95
95
|
}
|
|
96
96
|
catch (err) {
|
|
97
|
-
log.error(err.message);
|
|
97
|
+
this.log.error(err.message);
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
// Commit the deletes to the datastore
|
|
101
101
|
if (deleted.size > 0) {
|
|
102
|
-
log('deleting %d / %d entries', deleteCount, count);
|
|
102
|
+
this.log('deleting %d / %d entries', deleteCount, count);
|
|
103
103
|
await batch.commit();
|
|
104
104
|
}
|
|
105
105
|
else {
|
|
106
|
-
log('nothing to delete');
|
|
106
|
+
this.log('nothing to delete');
|
|
107
107
|
}
|
|
108
108
|
// Clear expired entries from the cache
|
|
109
109
|
for (const [cid, peers] of deleted) {
|
|
@@ -121,7 +121,7 @@ export class Providers {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
-
log('Cleanup successful (%dms)', Date.now() - start);
|
|
124
|
+
this.log('Cleanup successful (%dms)', Date.now() - start);
|
|
125
125
|
});
|
|
126
126
|
}
|
|
127
127
|
/**
|
|
@@ -131,7 +131,7 @@ export class Providers {
|
|
|
131
131
|
const cacheKey = makeProviderKey(cid);
|
|
132
132
|
let provs = this.cache.get(cacheKey);
|
|
133
133
|
if (provs == null) {
|
|
134
|
-
provs = await loadProviders(this.
|
|
134
|
+
provs = await loadProviders(this.datastore, cid);
|
|
135
135
|
this.cache.set(cacheKey, provs);
|
|
136
136
|
}
|
|
137
137
|
return provs;
|
|
@@ -141,14 +141,14 @@ export class Providers {
|
|
|
141
141
|
*/
|
|
142
142
|
async addProvider(cid, provider) {
|
|
143
143
|
await this.syncQueue.add(async () => {
|
|
144
|
-
log('%p provides %s', provider, cid);
|
|
144
|
+
this.log('%p provides %s', provider, cid);
|
|
145
145
|
const provs = await this._getProvidersMap(cid);
|
|
146
|
-
log('loaded %s provs', provs.size);
|
|
146
|
+
this.log('loaded %s provs', provs.size);
|
|
147
147
|
const now = new Date();
|
|
148
148
|
provs.set(provider.toString(), now);
|
|
149
149
|
const dsKey = makeProviderKey(cid);
|
|
150
150
|
this.cache.set(dsKey, provs);
|
|
151
|
-
await writeProviderEntry(this.
|
|
151
|
+
await writeProviderEntry(this.datastore, cid, provider, now);
|
|
152
152
|
});
|
|
153
153
|
}
|
|
154
154
|
/**
|
|
@@ -156,7 +156,7 @@ export class Providers {
|
|
|
156
156
|
*/
|
|
157
157
|
async getProviders(cid) {
|
|
158
158
|
return this.syncQueue.add(async () => {
|
|
159
|
-
log('get providers for %s', cid);
|
|
159
|
+
this.log('get providers for %s', cid);
|
|
160
160
|
const provs = await this._getProvidersMap(cid);
|
|
161
161
|
return [...provs.keys()].map(peerIdStr => {
|
|
162
162
|
return peerIdFromString(peerIdStr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { QueryFunc } from './types.js';
|
|
2
2
|
import type { QueryEvent, QueryOptions as RootQueryOptions } from '../index.js';
|
|
3
3
|
import type { RoutingTable } from '../routing-table/index.js';
|
|
4
|
+
import type { ComponentLogger } from '@libp2p/interface';
|
|
4
5
|
import type { Metrics } from '@libp2p/interface/metrics';
|
|
5
6
|
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
6
7
|
import type { Startable } from '@libp2p/interface/startable';
|
|
@@ -18,6 +19,7 @@ export interface QueryManagerInit {
|
|
|
18
19
|
export interface QueryManagerComponents {
|
|
19
20
|
peerId: PeerId;
|
|
20
21
|
metrics?: Metrics;
|
|
22
|
+
logger: ComponentLogger;
|
|
21
23
|
}
|
|
22
24
|
export interface QueryOptions extends RootQueryOptions {
|
|
23
25
|
queryFuncTimeout?: number;
|
|
@@ -27,16 +29,17 @@ export interface QueryOptions extends RootQueryOptions {
|
|
|
27
29
|
* Keeps track of all running queries
|
|
28
30
|
*/
|
|
29
31
|
export declare class QueryManager implements Startable {
|
|
30
|
-
private readonly components;
|
|
31
32
|
private readonly lan;
|
|
32
33
|
disjointPaths: number;
|
|
33
34
|
private readonly alpha;
|
|
34
35
|
private readonly shutDownController;
|
|
35
36
|
private running;
|
|
36
37
|
private queries;
|
|
37
|
-
private
|
|
38
|
+
private readonly logger;
|
|
39
|
+
private readonly peerId;
|
|
38
40
|
private readonly routingTable;
|
|
39
41
|
private initialQuerySelfHasRun?;
|
|
42
|
+
private readonly metrics?;
|
|
40
43
|
constructor(components: QueryManagerComponents, init: QueryManagerInit);
|
|
41
44
|
isStarted(): boolean;
|
|
42
45
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,WAAW,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sBAAsB,EAAE,eAAe,CAAC,IAAI,CAAC,CAAA;IAC7C,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IACtB,aAAa,EAAE,MAAM,CAAA;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;IACpD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAGxB;gBAEY,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IA0BvE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAMpB,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,YAAiB,GAAG,cAAc,CAAC,UAAU,CAAC;CAgH5G"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { AbortError } from '@libp2p/interface/errors';
|
|
2
2
|
import { TypedEventEmitter, CustomEvent, setMaxListeners } from '@libp2p/interface/events';
|
|
3
|
-
import { logger } from '@libp2p/logger';
|
|
4
3
|
import { PeerSet } from '@libp2p/peer-collections';
|
|
5
4
|
import { anySignal } from 'any-signal';
|
|
6
5
|
import merge from 'it-merge';
|
|
@@ -12,19 +11,19 @@ import { queryPath } from './query-path.js';
|
|
|
12
11
|
* Keeps track of all running queries
|
|
13
12
|
*/
|
|
14
13
|
export class QueryManager {
|
|
15
|
-
components;
|
|
16
14
|
lan;
|
|
17
15
|
disjointPaths;
|
|
18
16
|
alpha;
|
|
19
17
|
shutDownController;
|
|
20
18
|
running;
|
|
21
19
|
queries;
|
|
22
|
-
|
|
20
|
+
logger;
|
|
21
|
+
peerId;
|
|
23
22
|
routingTable;
|
|
24
23
|
initialQuerySelfHasRun;
|
|
24
|
+
metrics;
|
|
25
25
|
constructor(components, init) {
|
|
26
26
|
const { lan = false, disjointPaths = K, alpha = ALPHA } = init;
|
|
27
|
-
this.components = components;
|
|
28
27
|
this.disjointPaths = disjointPaths ?? K;
|
|
29
28
|
this.running = false;
|
|
30
29
|
this.alpha = alpha ?? ALPHA;
|
|
@@ -32,6 +31,14 @@ export class QueryManager {
|
|
|
32
31
|
this.queries = 0;
|
|
33
32
|
this.initialQuerySelfHasRun = init.initialQuerySelfHasRun;
|
|
34
33
|
this.routingTable = init.routingTable;
|
|
34
|
+
this.logger = components.logger;
|
|
35
|
+
this.peerId = components.peerId;
|
|
36
|
+
if (components.metrics != null) {
|
|
37
|
+
this.metrics = {
|
|
38
|
+
runningQueries: components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_running_queries`),
|
|
39
|
+
queryTime: components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_query_time_seconds`)
|
|
40
|
+
};
|
|
41
|
+
}
|
|
35
42
|
// allow us to stop queries on shut down
|
|
36
43
|
this.shutDownController = new AbortController();
|
|
37
44
|
// make sure we don't make a lot of noise in the logs
|
|
@@ -45,12 +52,6 @@ export class QueryManager {
|
|
|
45
52
|
*/
|
|
46
53
|
async start() {
|
|
47
54
|
this.running = true;
|
|
48
|
-
if (this.components.metrics != null && this.metrics == null) {
|
|
49
|
-
this.metrics = {
|
|
50
|
-
runningQueries: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_running_queries`),
|
|
51
|
-
queryTime: this.components.metrics.registerMetric(`libp2p_kad_dht_${this.lan ? 'lan' : 'wan'}_query_time_seconds`)
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
55
|
}
|
|
55
56
|
/**
|
|
56
57
|
* Stops all queries
|
|
@@ -79,7 +80,7 @@ export class QueryManager {
|
|
|
79
80
|
// this signal will get listened to for every invocation of queryFunc
|
|
80
81
|
// so make sure we don't make a lot of noise in the logs
|
|
81
82
|
setMaxListeners(Infinity, signal);
|
|
82
|
-
const log = logger(`libp2p:kad-dht:${this.lan ? 'lan' : 'wan'}:query:` + uint8ArrayToString(key, 'base58btc'));
|
|
83
|
+
const log = this.logger.forComponent(`libp2p:kad-dht:${this.lan ? 'lan' : 'wan'}:query:` + uint8ArrayToString(key, 'base58btc'));
|
|
83
84
|
// query a subset of peers up to `kBucketSize / 2` in length
|
|
84
85
|
const startTime = Date.now();
|
|
85
86
|
const cleanUp = new TypedEventEmitter();
|
|
@@ -113,7 +114,7 @@ export class QueryManager {
|
|
|
113
114
|
return queryPath({
|
|
114
115
|
key,
|
|
115
116
|
startingPeer: peer,
|
|
116
|
-
ourPeerId: this.
|
|
117
|
+
ourPeerId: this.peerId,
|
|
117
118
|
signal,
|
|
118
119
|
query: queryFunc,
|
|
119
120
|
pathIndex: index,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { CleanUpEvents } from './manager.js';
|
|
2
2
|
import type { QueryEvent, QueryOptions } from '../index.js';
|
|
3
3
|
import type { QueryFunc } from '../query/types.js';
|
|
4
|
+
import type { Logger } from '@libp2p/interface';
|
|
4
5
|
import type { TypedEventTarget } from '@libp2p/interface/events';
|
|
5
6
|
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
6
|
-
import type { Logger } from '@libp2p/logger';
|
|
7
7
|
import type { PeerSet } from '@libp2p/peer-collections';
|
|
8
8
|
export interface QueryPathOptions extends QueryOptions {
|
|
9
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-path.d.ts","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query-path.d.ts","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAIvD,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD;;OAEG;IACH,GAAG,EAAE,UAAU,CAAA;IAEf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;IAEnB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAA;IAEhB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,CAAA;IAExC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAwB,SAAS,CAAE,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAqGzG"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { CodeError } from '@libp2p/interface/errors';
|
|
2
1
|
import { anySignal } from 'any-signal';
|
|
3
|
-
import defer from 'p-defer';
|
|
4
2
|
import Queue from 'p-queue';
|
|
5
3
|
import { toString } from 'uint8arrays/to-string';
|
|
6
4
|
import { xor } from 'uint8arrays/xor';
|
|
7
5
|
import { convertPeerId, convertBuffer } from '../utils.js';
|
|
8
6
|
import { queryErrorEvent } from './events.js';
|
|
7
|
+
import { queueToGenerator } from './utils.js';
|
|
9
8
|
const MAX_XOR = BigInt('0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF');
|
|
10
9
|
/**
|
|
11
10
|
* Walks a path through the DHT, calling the passed query function for
|
|
@@ -97,62 +96,6 @@ export async function* queryPath(options) {
|
|
|
97
96
|
// begin the query with the starting peer
|
|
98
97
|
queryPeer(startingPeer, await convertPeerId(startingPeer));
|
|
99
98
|
// yield results as they come in
|
|
100
|
-
yield*
|
|
101
|
-
}
|
|
102
|
-
async function* toGenerator(queue, signal, cleanUp, log) {
|
|
103
|
-
let deferred = defer();
|
|
104
|
-
let running = true;
|
|
105
|
-
const results = [];
|
|
106
|
-
const cleanup = () => {
|
|
107
|
-
if (!running) {
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
log('clean up queue, results %d, queue size %d, pending tasks %d', results.length, queue.size, queue.pending);
|
|
111
|
-
running = false;
|
|
112
|
-
queue.clear();
|
|
113
|
-
results.splice(0, results.length);
|
|
114
|
-
};
|
|
115
|
-
queue.on('completed', result => {
|
|
116
|
-
results.push(result);
|
|
117
|
-
deferred.resolve();
|
|
118
|
-
});
|
|
119
|
-
queue.on('error', err => {
|
|
120
|
-
log('queue error', err);
|
|
121
|
-
cleanup();
|
|
122
|
-
deferred.reject(err);
|
|
123
|
-
});
|
|
124
|
-
queue.on('idle', () => {
|
|
125
|
-
log('queue idle');
|
|
126
|
-
running = false;
|
|
127
|
-
deferred.resolve();
|
|
128
|
-
});
|
|
129
|
-
// clear the queue and throw if the query is aborted
|
|
130
|
-
signal.addEventListener('abort', () => {
|
|
131
|
-
log('abort queue');
|
|
132
|
-
const wasRunning = running;
|
|
133
|
-
cleanup();
|
|
134
|
-
if (wasRunning) {
|
|
135
|
-
deferred.reject(new CodeError('Query aborted', 'ERR_QUERY_ABORTED'));
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
// the user broke out of the loop early, ensure we resolve the deferred result
|
|
139
|
-
// promise and clear the queue of any remaining jobs
|
|
140
|
-
cleanUp.addEventListener('cleanup', () => {
|
|
141
|
-
cleanup();
|
|
142
|
-
deferred.resolve();
|
|
143
|
-
});
|
|
144
|
-
while (running) { // eslint-disable-line no-unmodified-loop-condition
|
|
145
|
-
await deferred.promise;
|
|
146
|
-
deferred = defer();
|
|
147
|
-
// yield all available results
|
|
148
|
-
while (results.length > 0) {
|
|
149
|
-
const result = results.shift();
|
|
150
|
-
if (result != null) {
|
|
151
|
-
yield result;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// yield any remaining results
|
|
156
|
-
yield* results;
|
|
99
|
+
yield* queueToGenerator(queue, signal, cleanUp, log);
|
|
157
100
|
}
|
|
158
101
|
//# sourceMappingURL=query-path.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-path.js","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"query-path.js","sourceRoot":"","sources":["../../../src/query/query-path.ts"],"names":[],"mappings":"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"}
|