@libp2p/kad-dht 10.0.13-fb8a6f188 → 10.0.14-c960eb659
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 +7 -7
- package/dist/src/query/manager.d.ts.map +1 -1
- package/dist/src/query/manager.js +6 -2
- package/dist/src/query/manager.js.map +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/package.json +12 -10
- package/src/query/manager.ts +7 -2
- package/src/query/query-path.ts +2 -71
- package/src/query/utils.ts +65 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAYA,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,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;CAClB;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,UAAU,CAAwB;IACnD,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,OAAO,CAAC,CAGf;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;gBAEzC,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAkBvE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAW7B;;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;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"AAYA,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,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;CAClB;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,UAAU,CAAwB;IACnD,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,OAAO,CAAC,CAGf;IAED,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,sBAAsB,CAAC,CAAuB;gBAEzC,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAkBvE,SAAS,IAAK,OAAO;IAIrB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAW7B;;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"}
|
|
@@ -66,10 +66,14 @@ export class QueryManager {
|
|
|
66
66
|
const stopQueryTimer = this.metrics?.queryTime.timer();
|
|
67
67
|
if (options.signal == null) {
|
|
68
68
|
// don't let queries run forever
|
|
69
|
-
|
|
69
|
+
const signal = AbortSignal.timeout(DEFAULT_QUERY_TIMEOUT);
|
|
70
70
|
// this signal will get listened to for network requests, etc
|
|
71
71
|
// so make sure we don't make a lot of noise in the logs
|
|
72
|
-
setMaxListeners(Infinity,
|
|
72
|
+
setMaxListeners(Infinity, signal);
|
|
73
|
+
options = {
|
|
74
|
+
...options,
|
|
75
|
+
signal
|
|
76
|
+
};
|
|
73
77
|
}
|
|
74
78
|
const signal = anySignal([this.shutDownController.signal, options.signal]);
|
|
75
79
|
// this signal will get listened to for every invocation of queryFunc
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/query/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAS7C,MAAM,OAAO,GAAG,MAAM,CAAC,oEAAoE,CAAC,CAAA;AAgE5F;;;GAGG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAC,SAAS,CAAE,OAAyB;IAC1D,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IACtI,+EAA+E;IAC/E,yFAAyF;IACzF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,WAAW,EAAE,KAAK;KACnB,CAAC,CAAA;IAEF,iDAAiD;IACjD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,CAAA;IAEtC;;;OAGG;IACH,SAAS,SAAS,CAAE,IAAY,EAAE,SAAqB;QACrD,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,OAAM;SACP;QAED,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEnB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;QAExE,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACnB,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,CAAA;YAExB,IAAI,gBAAgB,IAAI,IAAI,EAAE;gBAC5B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;aACpD;YAED,MAAM,cAAc,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;YAEzC,IAAI;gBACF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,KAAK,CAAC;oBAC9B,GAAG;oBACH,IAAI;oBACJ,MAAM,EAAE,cAAc;oBACtB,SAAS;oBACT,QAAQ;iBACT,CAAC,EAAE;oBACF,IAAI,cAAc,CAAC,OAAO,EAAE;wBAC1B,OAAM;qBACP;oBAED,gFAAgF;oBAChF,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE;wBAClC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;4BACrC,IAAI,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,gCAAgC;gCAClE,GAAG,CAAC,0BAA0B,EAAE,UAAU,CAAC,EAAE,CAAC,CAAA;gCAC9C,SAAQ;6BACT;4BAED,IAAI,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,gCAAgC;gCACrE,GAAG,CAAC,wBAAwB,CAAC,CAAA;gCAC7B,SAAQ;6BACT;4BAED,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;4BAC1D,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;4BAEpF,wDAAwD;4BACxD,IAAI,aAAa,GAAG,OAAO,EAAE,EAAE,gCAAgC;gCAC7D,GAAG,CAAC,kDAAkD,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,CAAA;gCACjF,SAAQ;6BACT;4BAED,GAAG,CAAC,yBAAyB,EAAE,UAAU,CAAC,EAAE,CAAC,CAAA;4BAC7C,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,eAAe,CAAC,CAAA;yBAC1C;qBACF;oBACD,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;iBAC/B;aACF;YAAC,OAAO,GAAQ,EAAE;gBACjB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;oBACnB,OAAO,eAAe,CAAC;wBACrB,IAAI,EAAE,IAAI;wBACV,KAAK,EAAE,GAAG;qBACX,EAAE,OAAO,CAAC,CAAA;iBACZ;aACF;oBAAS;gBACR,cAAc,CAAC,KAAK,EAAE,CAAA;aACvB;QACH,CAAC,EAAE;YACD,0EAA0E;YAC1E,yEAAyE;YAEzE,8EAA8E;YAC9E,8EAA8E;YAC9E,kCAAkC;YAClC,QAAQ,EAAE,OAAO,GAAG,OAAO;SAC5B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACb,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,yCAAyC;IACzC,SAAS,CAAC,YAAY,EAAE,MAAM,aAAa,CAAC,YAAY,CAAC,CAAC,CAAA;IAE1D,gCAAgC;IAChC,KAAM,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;AACvD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CleanUpEvents } from './manager.js';
|
|
2
|
+
import type { QueryEvent } from '../index.js';
|
|
3
|
+
import type { TypedEventTarget } from '@libp2p/interface/events';
|
|
4
|
+
import type { Logger } from '@libp2p/logger';
|
|
5
|
+
import type Queue from 'p-queue';
|
|
6
|
+
export declare function queueToGenerator(queue: Queue, signal: AbortSignal, cleanUp: TypedEventTarget<CleanUpEvents>, log: Logger): AsyncGenerator<QueryEvent, void, undefined>;
|
|
7
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/query/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,SAAS,CAAA;AAEhC,wBAAwB,gBAAgB,CAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAwD/K"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
+
import { pushable } from 'it-pushable';
|
|
3
|
+
export async function* queueToGenerator(queue, signal, cleanUp, log) {
|
|
4
|
+
const stream = pushable({
|
|
5
|
+
objectMode: true
|
|
6
|
+
});
|
|
7
|
+
const cleanup = (err) => {
|
|
8
|
+
log('clean up queue, results %d, queue size %d, pending tasks %d', stream.readableLength, queue.size, queue.pending);
|
|
9
|
+
queue.clear();
|
|
10
|
+
stream.end(err);
|
|
11
|
+
};
|
|
12
|
+
const onQueueJobComplete = (result) => {
|
|
13
|
+
if (result != null) {
|
|
14
|
+
stream.push(result);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const onQueueError = (err) => {
|
|
18
|
+
log('queue error', err);
|
|
19
|
+
cleanup(err);
|
|
20
|
+
};
|
|
21
|
+
const onQueueIdle = () => {
|
|
22
|
+
log('queue idle');
|
|
23
|
+
cleanup();
|
|
24
|
+
};
|
|
25
|
+
// clear the queue and throw if the query is aborted
|
|
26
|
+
const onSignalAbort = () => {
|
|
27
|
+
log('abort queue');
|
|
28
|
+
cleanup(new CodeError('Query aborted', 'ERR_QUERY_ABORTED'));
|
|
29
|
+
};
|
|
30
|
+
// the user broke out of the loop early, ensure we resolve the deferred result
|
|
31
|
+
// promise and clear the queue of any remaining jobs
|
|
32
|
+
const onCleanUp = () => {
|
|
33
|
+
cleanup();
|
|
34
|
+
};
|
|
35
|
+
// add listeners
|
|
36
|
+
queue.on('completed', onQueueJobComplete);
|
|
37
|
+
queue.on('error', onQueueError);
|
|
38
|
+
queue.on('idle', onQueueIdle);
|
|
39
|
+
signal.addEventListener('abort', onSignalAbort);
|
|
40
|
+
cleanUp.addEventListener('cleanup', onCleanUp);
|
|
41
|
+
try {
|
|
42
|
+
yield* stream;
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
// remove listeners
|
|
46
|
+
queue.removeListener('completed', onQueueJobComplete);
|
|
47
|
+
queue.removeListener('error', onQueueError);
|
|
48
|
+
queue.removeListener('idle', onQueueIdle);
|
|
49
|
+
signal.removeEventListener('abort', onSignalAbort);
|
|
50
|
+
cleanUp.removeEventListener('cleanup', onCleanUp);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/query/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAOtC,MAAM,CAAC,KAAK,SAAU,CAAC,CAAC,gBAAgB,CAAE,KAAY,EAAE,MAAmB,EAAE,OAAwC,EAAE,GAAW;IAChI,MAAM,MAAM,GAAG,QAAQ,CAAa;QAClC,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,CAAC,GAAW,EAAQ,EAAE;QACpC,GAAG,CAAC,6DAA6D,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;QACpH,KAAK,CAAC,KAAK,EAAE,CAAA;QACb,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC,CAAA;IAED,MAAM,kBAAkB,GAAG,CAAC,MAAkB,EAAQ,EAAE;QACtD,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SACpB;IACH,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,GAAU,EAAQ,EAAE;QACxC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAA;QACvB,OAAO,CAAC,GAAG,CAAC,CAAA;IACd,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,GAAG,CAAC,YAAY,CAAC,CAAA;QACjB,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IAED,oDAAoD;IACpD,MAAM,aAAa,GAAG,GAAS,EAAE;QAC/B,GAAG,CAAC,aAAa,CAAC,CAAA;QAClB,OAAO,CAAC,IAAI,SAAS,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAA;IAED,8EAA8E;IAC9E,oDAAoD;IACpD,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,OAAO,EAAE,CAAA;IACX,CAAC,CAAA;IAED,gBAAgB;IAChB,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;IACzC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC7B,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;IAC/C,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAE9C,IAAI;QACF,KAAM,CAAC,CAAC,MAAM,CAAA;KACf;YAAS;QACR,mBAAmB;QACnB,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QACrD,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;QAC3C,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;QACzC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAClD,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;KAClD;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/kad-dht",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.14-c960eb659",
|
|
4
4
|
"description": "JavaScript implementation of the Kad-DHT for libp2p",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/kad-dht#readme",
|
|
@@ -52,12 +52,12 @@
|
|
|
52
52
|
"dep-check": "aegir dep-check"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@libp2p/crypto": "2.0.
|
|
56
|
-
"@libp2p/interface": "0.1.
|
|
57
|
-
"@libp2p/interface-internal": "0.1.
|
|
58
|
-
"@libp2p/logger": "3.0
|
|
59
|
-
"@libp2p/peer-collections": "4.0.
|
|
60
|
-
"@libp2p/peer-id": "3.0.
|
|
55
|
+
"@libp2p/crypto": "2.0.8-c960eb659",
|
|
56
|
+
"@libp2p/interface": "0.1.6-c960eb659",
|
|
57
|
+
"@libp2p/interface-internal": "0.1.9-c960eb659",
|
|
58
|
+
"@libp2p/logger": "3.1.0-c960eb659",
|
|
59
|
+
"@libp2p/peer-collections": "4.0.8-c960eb659",
|
|
60
|
+
"@libp2p/peer-id": "3.0.6-c960eb659",
|
|
61
61
|
"@multiformats/multiaddr": "^12.1.5",
|
|
62
62
|
"@types/sinon": "^17.0.0",
|
|
63
63
|
"abortable-iterator": "^5.0.1",
|
|
@@ -74,6 +74,7 @@
|
|
|
74
74
|
"it-merge": "^3.0.0",
|
|
75
75
|
"it-parallel": "^3.0.0",
|
|
76
76
|
"it-pipe": "^3.0.1",
|
|
77
|
+
"it-pushable": "^3.2.1",
|
|
77
78
|
"it-stream-types": "^2.0.1",
|
|
78
79
|
"it-take": "^3.0.1",
|
|
79
80
|
"multiformats": "^12.0.1",
|
|
@@ -88,9 +89,9 @@
|
|
|
88
89
|
"uint8arrays": "^4.0.6"
|
|
89
90
|
},
|
|
90
91
|
"devDependencies": {
|
|
91
|
-
"@libp2p/interface-compliance-tests": "4.1.
|
|
92
|
-
"@libp2p/peer-id-factory": "3.0.
|
|
93
|
-
"@libp2p/peer-store": "9.0.
|
|
92
|
+
"@libp2p/interface-compliance-tests": "4.1.5-c960eb659",
|
|
93
|
+
"@libp2p/peer-id-factory": "3.0.8-c960eb659",
|
|
94
|
+
"@libp2p/peer-store": "9.0.9-c960eb659",
|
|
94
95
|
"@types/lodash.random": "^3.2.6",
|
|
95
96
|
"@types/lodash.range": "^3.2.6",
|
|
96
97
|
"@types/which": "^3.0.0",
|
|
@@ -107,6 +108,7 @@
|
|
|
107
108
|
"protons": "^7.0.2",
|
|
108
109
|
"sinon": "^17.0.0",
|
|
109
110
|
"ts-sinon": "^2.0.2",
|
|
111
|
+
"wherearewe": "^2.0.1",
|
|
110
112
|
"which": "^4.0.0"
|
|
111
113
|
},
|
|
112
114
|
"browser": {
|
package/src/query/manager.ts
CHANGED
|
@@ -113,11 +113,16 @@ export class QueryManager implements Startable {
|
|
|
113
113
|
|
|
114
114
|
if (options.signal == null) {
|
|
115
115
|
// don't let queries run forever
|
|
116
|
-
|
|
116
|
+
const signal = AbortSignal.timeout(DEFAULT_QUERY_TIMEOUT)
|
|
117
117
|
|
|
118
118
|
// this signal will get listened to for network requests, etc
|
|
119
119
|
// so make sure we don't make a lot of noise in the logs
|
|
120
|
-
setMaxListeners(Infinity,
|
|
120
|
+
setMaxListeners(Infinity, signal)
|
|
121
|
+
|
|
122
|
+
options = {
|
|
123
|
+
...options,
|
|
124
|
+
signal
|
|
125
|
+
}
|
|
121
126
|
}
|
|
122
127
|
|
|
123
128
|
const signal = anySignal([this.shutDownController.signal, options.signal])
|
package/src/query/query-path.ts
CHANGED
|
@@ -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
|
import type { CleanUpEvents } from './manager.js'
|
|
10
9
|
import type { QueryEvent, QueryOptions } from '../index.js'
|
|
11
10
|
import type { QueryFunc } from '../query/types.js'
|
|
@@ -182,73 +181,5 @@ export async function * queryPath (options: QueryPathOptions): AsyncGenerator<Qu
|
|
|
182
181
|
queryPeer(startingPeer, await convertPeerId(startingPeer))
|
|
183
182
|
|
|
184
183
|
// yield results as they come in
|
|
185
|
-
yield *
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
async function * toGenerator (queue: Queue, signal: AbortSignal, cleanUp: TypedEventTarget<CleanUpEvents>, log: Logger): AsyncGenerator<QueryEvent, void, undefined> {
|
|
189
|
-
let deferred = defer()
|
|
190
|
-
let running = true
|
|
191
|
-
const results: QueryEvent[] = []
|
|
192
|
-
|
|
193
|
-
const cleanup = (): void => {
|
|
194
|
-
if (!running) {
|
|
195
|
-
return
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
log('clean up queue, results %d, queue size %d, pending tasks %d', results.length, queue.size, queue.pending)
|
|
199
|
-
|
|
200
|
-
running = false
|
|
201
|
-
queue.clear()
|
|
202
|
-
results.splice(0, results.length)
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
queue.on('completed', result => {
|
|
206
|
-
results.push(result)
|
|
207
|
-
deferred.resolve()
|
|
208
|
-
})
|
|
209
|
-
queue.on('error', err => {
|
|
210
|
-
log('queue error', err)
|
|
211
|
-
cleanup()
|
|
212
|
-
deferred.reject(err)
|
|
213
|
-
})
|
|
214
|
-
queue.on('idle', () => {
|
|
215
|
-
log('queue idle')
|
|
216
|
-
running = false
|
|
217
|
-
deferred.resolve()
|
|
218
|
-
})
|
|
219
|
-
|
|
220
|
-
// clear the queue and throw if the query is aborted
|
|
221
|
-
signal.addEventListener('abort', () => {
|
|
222
|
-
log('abort queue')
|
|
223
|
-
const wasRunning = running
|
|
224
|
-
cleanup()
|
|
225
|
-
|
|
226
|
-
if (wasRunning) {
|
|
227
|
-
deferred.reject(new CodeError('Query aborted', 'ERR_QUERY_ABORTED'))
|
|
228
|
-
}
|
|
229
|
-
})
|
|
230
|
-
|
|
231
|
-
// the user broke out of the loop early, ensure we resolve the deferred result
|
|
232
|
-
// promise and clear the queue of any remaining jobs
|
|
233
|
-
cleanUp.addEventListener('cleanup', () => {
|
|
234
|
-
cleanup()
|
|
235
|
-
deferred.resolve()
|
|
236
|
-
})
|
|
237
|
-
|
|
238
|
-
while (running) { // eslint-disable-line no-unmodified-loop-condition
|
|
239
|
-
await deferred.promise
|
|
240
|
-
deferred = defer()
|
|
241
|
-
|
|
242
|
-
// yield all available results
|
|
243
|
-
while (results.length > 0) {
|
|
244
|
-
const result = results.shift()
|
|
245
|
-
|
|
246
|
-
if (result != null) {
|
|
247
|
-
yield result
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// yield any remaining results
|
|
253
|
-
yield * results
|
|
184
|
+
yield * queueToGenerator(queue, signal, cleanUp, log)
|
|
254
185
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CodeError } from '@libp2p/interface/errors'
|
|
2
|
+
import { pushable } from 'it-pushable'
|
|
3
|
+
import type { CleanUpEvents } from './manager.js'
|
|
4
|
+
import type { QueryEvent } from '../index.js'
|
|
5
|
+
import type { TypedEventTarget } from '@libp2p/interface/events'
|
|
6
|
+
import type { Logger } from '@libp2p/logger'
|
|
7
|
+
import type Queue from 'p-queue'
|
|
8
|
+
|
|
9
|
+
export async function * queueToGenerator (queue: Queue, signal: AbortSignal, cleanUp: TypedEventTarget<CleanUpEvents>, log: Logger): AsyncGenerator<QueryEvent, void, undefined> {
|
|
10
|
+
const stream = pushable<QueryEvent>({
|
|
11
|
+
objectMode: true
|
|
12
|
+
})
|
|
13
|
+
|
|
14
|
+
const cleanup = (err?: Error): void => {
|
|
15
|
+
log('clean up queue, results %d, queue size %d, pending tasks %d', stream.readableLength, queue.size, queue.pending)
|
|
16
|
+
queue.clear()
|
|
17
|
+
stream.end(err)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const onQueueJobComplete = (result: QueryEvent): void => {
|
|
21
|
+
if (result != null) {
|
|
22
|
+
stream.push(result)
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const onQueueError = (err: Error): void => {
|
|
27
|
+
log('queue error', err)
|
|
28
|
+
cleanup(err)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const onQueueIdle = (): void => {
|
|
32
|
+
log('queue idle')
|
|
33
|
+
cleanup()
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// clear the queue and throw if the query is aborted
|
|
37
|
+
const onSignalAbort = (): void => {
|
|
38
|
+
log('abort queue')
|
|
39
|
+
cleanup(new CodeError('Query aborted', 'ERR_QUERY_ABORTED'))
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// the user broke out of the loop early, ensure we resolve the deferred result
|
|
43
|
+
// promise and clear the queue of any remaining jobs
|
|
44
|
+
const onCleanUp = (): void => {
|
|
45
|
+
cleanup()
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// add listeners
|
|
49
|
+
queue.on('completed', onQueueJobComplete)
|
|
50
|
+
queue.on('error', onQueueError)
|
|
51
|
+
queue.on('idle', onQueueIdle)
|
|
52
|
+
signal.addEventListener('abort', onSignalAbort)
|
|
53
|
+
cleanUp.addEventListener('cleanup', onCleanUp)
|
|
54
|
+
|
|
55
|
+
try {
|
|
56
|
+
yield * stream
|
|
57
|
+
} finally {
|
|
58
|
+
// remove listeners
|
|
59
|
+
queue.removeListener('completed', onQueueJobComplete)
|
|
60
|
+
queue.removeListener('error', onQueueError)
|
|
61
|
+
queue.removeListener('idle', onQueueIdle)
|
|
62
|
+
signal.removeEventListener('abort', onSignalAbort)
|
|
63
|
+
cleanUp.removeEventListener('cleanup', onCleanUp)
|
|
64
|
+
}
|
|
65
|
+
}
|