libp2p 0.43.4 → 0.44.0-0d46c78f
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 +29 -29
- package/dist/src/address-manager/index.d.ts +4 -4
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +9 -6
- package/dist/src/address-manager/index.js.map +1 -1
- package/dist/src/autonat/index.d.ts +1 -2
- package/dist/src/autonat/index.d.ts.map +1 -1
- package/dist/src/autonat/index.js +19 -19
- package/dist/src/autonat/index.js.map +1 -1
- package/dist/src/circuit-relay/server/advert-service.d.ts.map +1 -1
- package/dist/src/circuit-relay/server/advert-service.js +2 -2
- package/dist/src/circuit-relay/server/advert-service.js.map +1 -1
- package/dist/src/circuit-relay/server/index.d.ts.map +1 -1
- package/dist/src/circuit-relay/server/index.js +7 -3
- package/dist/src/circuit-relay/server/index.js.map +1 -1
- package/dist/src/circuit-relay/transport/discovery.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/discovery.js +3 -1
- package/dist/src/circuit-relay/transport/discovery.js.map +1 -1
- package/dist/src/circuit-relay/transport/index.d.ts +3 -0
- package/dist/src/circuit-relay/transport/index.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/index.js +6 -2
- package/dist/src/circuit-relay/transport/index.js.map +1 -1
- package/dist/src/circuit-relay/transport/listener.d.ts +3 -0
- package/dist/src/circuit-relay/transport/listener.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/listener.js +5 -4
- package/dist/src/circuit-relay/transport/listener.js.map +1 -1
- package/dist/src/circuit-relay/transport/reservation-store.d.ts +4 -1
- package/dist/src/circuit-relay/transport/reservation-store.d.ts.map +1 -1
- package/dist/src/circuit-relay/transport/reservation-store.js +11 -6
- package/dist/src/circuit-relay/transport/reservation-store.js.map +1 -1
- package/dist/src/circuit-relay/utils.d.ts.map +1 -1
- package/dist/src/circuit-relay/utils.js +3 -1
- package/dist/src/circuit-relay/utils.js.map +1 -1
- package/dist/src/components.d.ts +7 -69
- package/dist/src/components.d.ts.map +1 -1
- package/dist/src/components.js +60 -174
- package/dist/src/components.js.map +1 -1
- package/dist/src/config/connection-gater.browser.d.ts +8 -0
- package/dist/src/config/connection-gater.browser.d.ts.map +1 -0
- package/dist/src/config/connection-gater.browser.js +27 -0
- package/dist/src/config/connection-gater.browser.js.map +1 -0
- package/dist/src/config/connection-gater.d.ts +6 -0
- package/dist/src/config/connection-gater.d.ts.map +1 -0
- package/dist/src/config/connection-gater.js +18 -0
- package/dist/src/config/connection-gater.js.map +1 -0
- package/dist/src/config.d.ts +2 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +0 -71
- package/dist/src/config.js.map +1 -1
- package/dist/src/connection-manager/auto-dial.d.ts +39 -0
- package/dist/src/connection-manager/auto-dial.d.ts.map +1 -0
- package/dist/src/connection-manager/auto-dial.js +136 -0
- package/dist/src/connection-manager/auto-dial.js.map +1 -0
- package/dist/src/connection-manager/connection-pruner.d.ts +32 -0
- package/dist/src/connection-manager/connection-pruner.d.ts.map +1 -0
- package/dist/src/connection-manager/connection-pruner.js +111 -0
- package/dist/src/connection-manager/connection-pruner.js.map +1 -0
- package/dist/src/connection-manager/constants.d.ts +49 -0
- package/dist/src/connection-manager/constants.d.ts.map +1 -0
- package/dist/src/connection-manager/constants.js +49 -0
- package/dist/src/connection-manager/constants.js.map +1 -0
- package/dist/src/connection-manager/dial-queue.d.ts +78 -0
- package/dist/src/connection-manager/dial-queue.d.ts.map +1 -0
- package/dist/src/connection-manager/dial-queue.js +372 -0
- package/dist/src/connection-manager/dial-queue.js.map +1 -0
- package/dist/src/connection-manager/index.d.ts +70 -73
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +118 -247
- package/dist/src/connection-manager/index.js.map +1 -1
- package/dist/src/connection-manager/utils.d.ts +9 -0
- package/dist/src/connection-manager/utils.d.ts.map +1 -0
- package/dist/src/connection-manager/utils.js +66 -0
- package/dist/src/connection-manager/utils.js.map +1 -0
- package/dist/src/content-routing/index.d.ts +0 -10
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +7 -42
- package/dist/src/content-routing/index.js.map +1 -1
- package/dist/src/content-routing/utils.d.ts.map +1 -1
- package/dist/src/content-routing/utils.js +3 -1
- package/dist/src/content-routing/utils.js.map +1 -1
- package/dist/src/fetch/index.d.ts +13 -35
- package/dist/src/fetch/index.d.ts.map +1 -1
- package/dist/src/fetch/index.js +10 -12
- package/dist/src/fetch/index.js.map +1 -1
- package/dist/src/identify/index.d.ts +16 -48
- package/dist/src/identify/index.d.ts.map +1 -1
- package/dist/src/identify/index.js +203 -201
- package/dist/src/identify/index.js.map +1 -1
- package/dist/src/index.d.ts +11 -67
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/insecure/index.d.ts.map +1 -1
- package/dist/src/insecure/index.js +3 -1
- package/dist/src/insecure/index.js.map +1 -1
- package/dist/src/libp2p.d.ts +12 -35
- package/dist/src/libp2p.d.ts.map +1 -1
- package/dist/src/libp2p.js +141 -206
- package/dist/src/libp2p.js.map +1 -1
- package/dist/src/peer-routing.d.ts +1 -38
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +0 -59
- package/dist/src/peer-routing.js.map +1 -1
- package/dist/src/ping/constants.d.ts +4 -0
- package/dist/src/ping/constants.d.ts.map +1 -1
- package/dist/src/ping/constants.js +10 -0
- package/dist/src/ping/constants.js.map +1 -1
- package/dist/src/ping/index.d.ts +10 -27
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/ping/index.js +18 -21
- package/dist/src/ping/index.js.map +1 -1
- package/dist/src/registrar.d.ts +5 -2
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +27 -25
- package/dist/src/registrar.js.map +1 -1
- package/dist/src/transport-manager.d.ts +15 -4
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +37 -12
- package/dist/src/transport-manager.js.map +1 -1
- package/dist/src/upgrader.d.ts +16 -11
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +38 -47
- package/dist/src/upgrader.js.map +1 -1
- package/dist/src/upnp-nat/index.d.ts +42 -0
- package/dist/src/upnp-nat/index.d.ts.map +1 -0
- package/dist/src/{nat-manager.js → upnp-nat/index.js} +11 -7
- package/dist/src/upnp-nat/index.js.map +1 -0
- package/package.json +70 -54
- package/src/address-manager/index.ts +12 -8
- package/src/autonat/index.ts +20 -22
- package/src/circuit-relay/server/advert-service.ts +2 -2
- package/src/circuit-relay/server/index.ts +7 -3
- package/src/circuit-relay/transport/discovery.ts +3 -1
- package/src/circuit-relay/transport/index.ts +10 -2
- package/src/circuit-relay/transport/listener.ts +8 -4
- package/src/circuit-relay/transport/reservation-store.ts +15 -7
- package/src/circuit-relay/utils.ts +3 -1
- package/src/components.ts +72 -251
- package/src/config/connection-gater.browser.ts +31 -0
- package/src/config/connection-gater.ts +19 -0
- package/src/config.ts +3 -73
- package/src/connection-manager/auto-dial.ts +189 -0
- package/src/connection-manager/connection-pruner.ts +157 -0
- package/src/connection-manager/constants.ts +60 -0
- package/src/connection-manager/dial-queue.ts +506 -0
- package/src/connection-manager/index.ts +194 -339
- package/src/connection-manager/utils.ts +76 -0
- package/src/content-routing/index.ts +7 -55
- package/src/content-routing/utils.ts +3 -1
- package/src/fetch/index.ts +55 -18
- package/src/identify/index.ts +238 -228
- package/src/index.ts +12 -76
- package/src/insecure/index.ts +9 -5
- package/src/libp2p.ts +146 -265
- package/src/peer-routing.ts +1 -101
- package/src/ping/constants.ts +11 -0
- package/src/ping/index.ts +32 -28
- package/src/registrar.ts +31 -27
- package/src/transport-manager.ts +49 -15
- package/src/upgrader.ts +62 -57
- package/src/{nat-manager.ts → upnp-nat/index.ts} +15 -16
- package/src/version.ts +1 -1
- package/dist/src/connection-manager/auto-dialler.d.ts +0 -42
- package/dist/src/connection-manager/auto-dialler.d.ts.map +0 -1
- package/dist/src/connection-manager/auto-dialler.js +0 -105
- package/dist/src/connection-manager/auto-dialler.js.map +0 -1
- package/dist/src/connection-manager/dialer/dial-request.d.ts +0 -27
- package/dist/src/connection-manager/dialer/dial-request.d.ts.map +0 -1
- package/dist/src/connection-manager/dialer/dial-request.js +0 -114
- package/dist/src/connection-manager/dialer/dial-request.js.map +0 -1
- package/dist/src/connection-manager/dialer/index.d.ts +0 -121
- package/dist/src/connection-manager/dialer/index.d.ts.map +0 -1
- package/dist/src/connection-manager/dialer/index.js +0 -324
- package/dist/src/connection-manager/dialer/index.js.map +0 -1
- package/dist/src/connection-manager/latency-monitor.d.ts +0 -120
- package/dist/src/connection-manager/latency-monitor.d.ts.map +0 -1
- package/dist/src/connection-manager/latency-monitor.js +0 -220
- package/dist/src/connection-manager/latency-monitor.js.map +0 -1
- package/dist/src/connection-manager/visibility-change-emitter.d.ts +0 -66
- package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +0 -1
- package/dist/src/connection-manager/visibility-change-emitter.js +0 -118
- package/dist/src/connection-manager/visibility-change-emitter.js.map +0 -1
- package/dist/src/constants.d.ts +0 -27
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -31
- package/dist/src/constants.js.map +0 -1
- package/dist/src/dht/dht-content-routing.d.ts +0 -17
- package/dist/src/dht/dht-content-routing.d.ts.map +0 -1
- package/dist/src/dht/dht-content-routing.js +0 -32
- package/dist/src/dht/dht-content-routing.js.map +0 -1
- package/dist/src/dht/dht-peer-routing.d.ts +0 -15
- package/dist/src/dht/dht-peer-routing.d.ts.map +0 -1
- package/dist/src/dht/dht-peer-routing.js +0 -26
- package/dist/src/dht/dht-peer-routing.js.map +0 -1
- package/dist/src/dht/dummy-dht.d.ts +0 -20
- package/dist/src/dht/dummy-dht.d.ts.map +0 -1
- package/dist/src/dht/dummy-dht.js +0 -46
- package/dist/src/dht/dummy-dht.js.map +0 -1
- package/dist/src/nat-manager.d.ts +0 -74
- package/dist/src/nat-manager.d.ts.map +0 -1
- package/dist/src/nat-manager.js.map +0 -1
- package/dist/src/peer-record-updater.d.ts +0 -24
- package/dist/src/peer-record-updater.d.ts.map +0 -1
- package/dist/src/peer-record-updater.js +0 -44
- package/dist/src/peer-record-updater.js.map +0 -1
- package/dist/typedoc-urls.json +0 -41
- package/src/connection-manager/auto-dialler.ts +0 -158
- package/src/connection-manager/dialer/dial-request.ts +0 -144
- package/src/connection-manager/dialer/index.ts +0 -461
- package/src/connection-manager/latency-monitor.ts +0 -319
- package/src/connection-manager/visibility-change-emitter.ts +0 -135
- package/src/constants.ts +0 -36
- package/src/dht/dht-content-routing.ts +0 -44
- package/src/dht/dht-peer-routing.ts +0 -36
- package/src/dht/dummy-dht.ts +0 -60
- package/src/peer-record-updater.ts +0 -65
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
|
2
|
+
import { logger } from '@libp2p/logger';
|
|
3
|
+
import { anySignal } from 'any-signal';
|
|
4
|
+
import { setMaxListeners } from 'events';
|
|
5
|
+
const log = logger('libp2p:connection-manager:utils');
|
|
6
|
+
/**
|
|
7
|
+
* Resolve multiaddr recursively
|
|
8
|
+
*/
|
|
9
|
+
export async function resolveMultiaddrs(ma, options) {
|
|
10
|
+
// TODO: recursive logic should live in multiaddr once dns4/dns6 support is in place
|
|
11
|
+
// Now only supporting resolve for dnsaddr
|
|
12
|
+
const resolvableProto = ma.protoNames().includes('dnsaddr');
|
|
13
|
+
// Multiaddr is not resolvable? End recursion!
|
|
14
|
+
if (!resolvableProto) {
|
|
15
|
+
return [ma];
|
|
16
|
+
}
|
|
17
|
+
const resolvedMultiaddrs = await resolveRecord(ma, options);
|
|
18
|
+
const recursiveMultiaddrs = await Promise.all(resolvedMultiaddrs.map(async (nm) => {
|
|
19
|
+
return await resolveMultiaddrs(nm, options);
|
|
20
|
+
}));
|
|
21
|
+
const addrs = recursiveMultiaddrs.flat();
|
|
22
|
+
const output = addrs.reduce((array, newM) => {
|
|
23
|
+
if (array.find(m => m.equals(newM)) == null) {
|
|
24
|
+
array.push(newM);
|
|
25
|
+
}
|
|
26
|
+
return array;
|
|
27
|
+
}, ([]));
|
|
28
|
+
log('resolved %s to', ma, output.map(ma => ma.toString()));
|
|
29
|
+
return output;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Resolve a given multiaddr. If this fails, an empty array will be returned
|
|
33
|
+
*/
|
|
34
|
+
async function resolveRecord(ma, options) {
|
|
35
|
+
try {
|
|
36
|
+
ma = multiaddr(ma.toString()); // Use current multiaddr module
|
|
37
|
+
const multiaddrs = await ma.resolve(options);
|
|
38
|
+
return multiaddrs;
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
log.error(`multiaddr ${ma.toString()} could not be resolved`, err);
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function combineSignals(...signals) {
|
|
46
|
+
const sigs = [];
|
|
47
|
+
for (const sig of signals) {
|
|
48
|
+
if (sig != null) {
|
|
49
|
+
try {
|
|
50
|
+
// fails on node < 15.4
|
|
51
|
+
setMaxListeners?.(Infinity, sig);
|
|
52
|
+
}
|
|
53
|
+
catch { }
|
|
54
|
+
sigs.push(sig);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// let any signal abort the dial
|
|
58
|
+
const signal = anySignal(sigs);
|
|
59
|
+
try {
|
|
60
|
+
// fails on node < 15.4
|
|
61
|
+
setMaxListeners?.(Infinity, signal);
|
|
62
|
+
}
|
|
63
|
+
catch { }
|
|
64
|
+
return signal;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/connection-manager/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAmB,SAAS,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAExC,MAAM,GAAG,GAAG,MAAM,CAAC,iCAAiC,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAE,EAAa,EAAE,OAAqB;IAC3E,oFAAoF;IACpF,0CAA0C;IAC1C,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAE3D,8CAA8C;IAC9C,IAAI,CAAC,eAAe,EAAE;QACpB,OAAO,CAAC,EAAE,CAAC,CAAA;KACZ;IAED,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC3D,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAChF,OAAO,MAAM,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAC,CAAA;IAEH,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAc,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACvD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE;YAC3C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACjB;QACD,OAAO,KAAK,CAAA;IACd,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAER,GAAG,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IAE1D,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAAE,EAAa,EAAE,OAAqB;IAChE,IAAI;QACF,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAC,+BAA+B;QAC7D,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC5C,OAAO,UAAU,CAAA;KAClB;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAA;QAClE,OAAO,EAAE,CAAA;KACV;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAE,GAAG,OAAuC;IACxE,MAAM,IAAI,GAAkB,EAAE,CAAA;IAE9B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACzB,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,IAAI;gBACF,uBAAuB;gBACvB,eAAe,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;aACjC;YAAC,MAAM,GAAG;YACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACf;KACF;IAED,gCAAgC;IAChC,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;IAE9B,IAAI;QACF,uBAAuB;QACvB,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;KACpC;IAAC,MAAM,GAAE;IAEV,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -3,15 +3,12 @@ import type { AbortOptions } from '@libp2p/interfaces';
|
|
|
3
3
|
import type { Startable } from '@libp2p/interfaces/startable';
|
|
4
4
|
import type { CID } from 'multiformats/cid';
|
|
5
5
|
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
6
|
-
import type { DualDHT } from '@libp2p/interface-dht';
|
|
7
6
|
import type { PeerInfo } from '@libp2p/interface-peer-info';
|
|
8
|
-
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
9
7
|
export interface CompoundContentRoutingInit {
|
|
10
8
|
routers: ContentRouting[];
|
|
11
9
|
}
|
|
12
10
|
export interface CompoundContentRoutingComponents {
|
|
13
11
|
peerStore: PeerStore;
|
|
14
|
-
dht?: DualDHT;
|
|
15
12
|
}
|
|
16
13
|
export declare class CompoundContentRouting implements ContentRouting, Startable {
|
|
17
14
|
private readonly routers;
|
|
@@ -39,12 +36,5 @@ export declare class CompoundContentRouting implements ContentRouting, Startable
|
|
|
39
36
|
* Times out after 1 minute by default.
|
|
40
37
|
*/
|
|
41
38
|
get(key: Uint8Array, options?: AbortOptions): Promise<Uint8Array>;
|
|
42
|
-
/**
|
|
43
|
-
* Get the `n` values to the given key without sorting
|
|
44
|
-
*/
|
|
45
|
-
getMany(key: Uint8Array, nVals: number, options: AbortOptions): AsyncIterable<{
|
|
46
|
-
from: PeerId;
|
|
47
|
-
val: Uint8Array;
|
|
48
|
-
}>;
|
|
49
39
|
}
|
|
50
40
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAE3D,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,SAAS,CAAA;CACrB;AAED,qBAAa,sBAAuB,YAAW,cAAc,EAAE,SAAS;IACtE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkB;IAC1C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;gBAEhD,UAAU,EAAE,gCAAgC,EAAE,IAAI,EAAE,0BAA0B;IAM3F,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAIvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACK,aAAa,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,aAAa,CAAC,QAAQ,CAAC;IAerF;;;OAGG;IACG,OAAO,CAAE,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnE;;OAEG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrF;;;OAGG;IACG,GAAG,CAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;CASzE"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interfaces/errors';
|
|
2
2
|
import { messages, codes } from '../errors.js';
|
|
3
3
|
import { storeAddresses, uniquePeers, requirePeers } from './utils.js';
|
|
4
|
-
import drain from 'it-drain';
|
|
5
4
|
import merge from 'it-merge';
|
|
6
5
|
import { pipe } from 'it-pipe';
|
|
7
6
|
export class CompoundContentRouting {
|
|
@@ -24,7 +23,7 @@ export class CompoundContentRouting {
|
|
|
24
23
|
*/
|
|
25
24
|
async *findProviders(key, options = {}) {
|
|
26
25
|
if (this.routers.length === 0) {
|
|
27
|
-
throw new CodeError('No content
|
|
26
|
+
throw new CodeError('No content routers available', codes.ERR_NO_ROUTERS_AVAILABLE);
|
|
28
27
|
}
|
|
29
28
|
yield* pipe(merge(...this.routers.map(router => router.findProviders(key, options))), (source) => storeAddresses(source, this.components.peerStore), (source) => uniquePeers(source), (source) => requirePeers(source));
|
|
30
29
|
}
|
|
@@ -45,10 +44,9 @@ export class CompoundContentRouting {
|
|
|
45
44
|
if (!this.isStarted()) {
|
|
46
45
|
throw new CodeError(messages.NOT_STARTED_YET, codes.DHT_NOT_STARTED);
|
|
47
46
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
47
|
+
await Promise.all(this.routers.map(async (router) => {
|
|
48
|
+
await router.put(key, value, options);
|
|
49
|
+
}));
|
|
52
50
|
}
|
|
53
51
|
/**
|
|
54
52
|
* Get the value to the given key.
|
|
@@ -58,42 +56,9 @@ export class CompoundContentRouting {
|
|
|
58
56
|
if (!this.isStarted()) {
|
|
59
57
|
throw new CodeError(messages.NOT_STARTED_YET, codes.DHT_NOT_STARTED);
|
|
60
58
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (event.name === 'VALUE') {
|
|
65
|
-
return event.value;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
throw new CodeError(messages.NOT_FOUND, codes.ERR_NOT_FOUND);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Get the `n` values to the given key without sorting
|
|
73
|
-
*/
|
|
74
|
-
async *getMany(key, nVals, options) {
|
|
75
|
-
if (!this.isStarted()) {
|
|
76
|
-
throw new CodeError(messages.NOT_STARTED_YET, codes.DHT_NOT_STARTED);
|
|
77
|
-
}
|
|
78
|
-
if (nVals == null || nVals === 0) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
let gotValues = 0;
|
|
82
|
-
const dht = this.components.dht;
|
|
83
|
-
if (dht != null) {
|
|
84
|
-
for await (const event of dht.get(key, options)) {
|
|
85
|
-
if (event.name === 'VALUE') {
|
|
86
|
-
yield { from: event.from, val: event.value };
|
|
87
|
-
gotValues++;
|
|
88
|
-
if (gotValues === nVals) {
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
if (gotValues === 0) {
|
|
95
|
-
throw new CodeError(messages.NOT_FOUND, codes.ERR_NOT_FOUND);
|
|
96
|
-
}
|
|
59
|
+
return await Promise.any(this.routers.map(async (router) => {
|
|
60
|
+
return await router.get(key, options);
|
|
61
|
+
}));
|
|
97
62
|
}
|
|
98
63
|
}
|
|
99
64
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/content-routing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EACL,cAAc,EACd,WAAW,EACX,YAAY,EACb,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAgB9B,MAAM,OAAO,sBAAsB;IAKjC,YAAa,UAA4C,EAAE,IAAgC;QACzF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAE,aAAa,CAAE,GAAQ,EAAE,UAAwB,EAAE;QACzD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAA;SACpF;QAED,KAAM,CAAC,CAAC,IAAI,CACV,KAAK,CACH,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAClE,EACD,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAC7D,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAC/B,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,CACjC,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAE,GAAQ,EAAE,UAAwB,EAAE;QACjD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,SAAS,CAAC,8BAA8B,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAA;SACpF;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/F,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAE,GAAe,EAAE,KAAiB,EAAE,OAAsB;QACnE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;SACrE;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAClD,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,GAAG,CAAE,GAAe,EAAE,OAAsB;QAChD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrB,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;SACrE;QAED,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACzD,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC,CAAC,CAAC,CAAA;IACL,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/content-routing/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D;;GAEG;AACH,wBAAwB,cAAc,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/content-routing/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D;;GAEG;AACH,wBAAwB,cAAc,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAS/G;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAc9E;AAED;;GAEG;AACH,wBAAwB,YAAY,CAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAE,MAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAYxG"}
|
|
@@ -7,7 +7,9 @@ import map from 'it-map';
|
|
|
7
7
|
export async function* storeAddresses(source, peerStore) {
|
|
8
8
|
yield* map(source, async (peer) => {
|
|
9
9
|
// ensure we have the addresses for a given peer
|
|
10
|
-
await peerStore.
|
|
10
|
+
await peerStore.merge(peer.id, {
|
|
11
|
+
multiaddrs: peer.multiaddrs
|
|
12
|
+
});
|
|
11
13
|
return peer;
|
|
12
14
|
});
|
|
13
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/content-routing/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,GAAG,MAAM,QAAQ,CAAA;AAKxB;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAC,cAAc,CAAE,MAAwB,EAAE,SAAoB;IACpF,KAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACjC,gDAAgD;QAChD,MAAM,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/content-routing/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,MAAM,MAAM,WAAW,CAAA;AAC9B,OAAO,GAAG,MAAM,QAAQ,CAAA;AAKxB;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAC,cAAc,CAAE,MAAwB,EAAE,SAAoB;IACpF,KAAM,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACjC,gDAAgD;QAChD,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAE,MAAwB;IACnD,wBAAwB;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAA;IAEtB,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC7B,oBAAoB;QACpB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE;YAChC,OAAO,KAAK,CAAA;SACb;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAA;QAE5B,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,SAAU,CAAC,CAAC,YAAY,CAAE,MAAwB,EAAE,MAAc,CAAC;IAC7E,IAAI,IAAI,GAAG,CAAC,CAAA;IAEZ,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE;QAC/B,IAAI,EAAE,CAAA;QAEN,MAAM,IAAI,CAAA;KACX;IAED,IAAI,IAAI,GAAG,GAAG,EAAE;QACd,MAAM,IAAI,SAAS,CAAC,8BAA8B,IAAI,UAAU,GAAG,EAAE,EAAE,WAAW,CAAC,CAAA;KACpF;AACH,CAAC"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
2
|
-
import type { Startable } from '@libp2p/interfaces/startable';
|
|
3
2
|
import type { Stream } from '@libp2p/interface-connection';
|
|
4
|
-
import type {
|
|
3
|
+
import type { Registrar } from '@libp2p/interface-registrar';
|
|
5
4
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
6
5
|
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
7
6
|
export interface FetchServiceInit {
|
|
8
|
-
protocolPrefix
|
|
9
|
-
maxInboundStreams
|
|
10
|
-
maxOutboundStreams
|
|
7
|
+
protocolPrefix?: string;
|
|
8
|
+
maxInboundStreams?: number;
|
|
9
|
+
maxOutboundStreams?: number;
|
|
11
10
|
/**
|
|
12
11
|
* How long we should wait for a remote peer to send any data
|
|
13
12
|
*/
|
|
14
|
-
timeout
|
|
13
|
+
timeout?: number;
|
|
15
14
|
}
|
|
16
15
|
export interface HandleMessageOptions {
|
|
17
16
|
stream: Stream;
|
|
@@ -24,37 +23,15 @@ export interface FetchServiceComponents {
|
|
|
24
23
|
registrar: Registrar;
|
|
25
24
|
connectionManager: ConnectionManager;
|
|
26
25
|
}
|
|
27
|
-
|
|
28
|
-
* A simple libp2p protocol for requesting a value corresponding to a key from a peer.
|
|
29
|
-
* Developers can register one or more lookup function for retrieving the value corresponding to
|
|
30
|
-
* a given key. Each lookup function must act on a distinct part of the overall key space, defined
|
|
31
|
-
* by a fixed prefix that all keys that should be routed to that lookup function will start with.
|
|
32
|
-
*/
|
|
33
|
-
export declare class FetchService implements Startable {
|
|
34
|
-
readonly protocol: string;
|
|
35
|
-
private readonly components;
|
|
36
|
-
private readonly lookupFunctions;
|
|
37
|
-
private started;
|
|
38
|
-
private readonly init;
|
|
39
|
-
constructor(components: FetchServiceComponents, init: FetchServiceInit);
|
|
40
|
-
start(): Promise<void>;
|
|
41
|
-
stop(): Promise<void>;
|
|
42
|
-
isStarted(): boolean;
|
|
26
|
+
export interface FetchService {
|
|
43
27
|
/**
|
|
44
|
-
*
|
|
45
|
-
*/
|
|
46
|
-
fetch(peer: PeerId, key: string, options?: AbortOptions): Promise<Uint8Array | null>;
|
|
47
|
-
/**
|
|
48
|
-
* Invoked when a fetch request is received. Reads the request message off the given stream and
|
|
49
|
-
* responds based on looking up the key in the request via the lookup callback that corresponds
|
|
50
|
-
* to the key's prefix.
|
|
28
|
+
* The protocol name used by this fetch service
|
|
51
29
|
*/
|
|
52
|
-
|
|
30
|
+
protocol: string;
|
|
53
31
|
/**
|
|
54
|
-
*
|
|
55
|
-
* the key's prefix.
|
|
32
|
+
* Sends a request to fetch the value associated with the given key from the given peer
|
|
56
33
|
*/
|
|
57
|
-
|
|
34
|
+
fetch: (peer: PeerId, key: string, options?: AbortOptions) => Promise<Uint8Array | null>;
|
|
58
35
|
/**
|
|
59
36
|
* Registers a new lookup callback that can map keys to values, for a given set of keys that
|
|
60
37
|
* share the same prefix
|
|
@@ -66,7 +43,7 @@ export declare class FetchService implements Startable {
|
|
|
66
43
|
* libp2p.fetchService.registerLookupFunction('/prefix', (key) => { ... })
|
|
67
44
|
* ```
|
|
68
45
|
*/
|
|
69
|
-
registerLookupFunction(prefix: string, lookup: LookupFunction)
|
|
46
|
+
registerLookupFunction: (prefix: string, lookup: LookupFunction) => void;
|
|
70
47
|
/**
|
|
71
48
|
* Registers a new lookup callback that can map keys to values, for a given set of keys that
|
|
72
49
|
* share the same prefix.
|
|
@@ -78,6 +55,7 @@ export declare class FetchService implements Startable {
|
|
|
78
55
|
* libp2p.fetchService.unregisterLookupFunction('/prefix')
|
|
79
56
|
* ```
|
|
80
57
|
*/
|
|
81
|
-
unregisterLookupFunction(prefix: string, lookup?: LookupFunction)
|
|
58
|
+
unregisterLookupFunction: (prefix: string, lookup?: LookupFunction) => void;
|
|
82
59
|
}
|
|
60
|
+
export declare function fetchService(init?: FetchServiceInit): (components: FetchServiceComponents) => FetchService;
|
|
83
61
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fetch/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fetch/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAOtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAM7E,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;CAC1C;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAA;IAExF;;;;;;;;;;OAUG;IACH,sBAAsB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;IAExE;;;;;;;;;;OAUG;IACH,wBAAwB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;CAC5E;AAkOD,wBAAgB,YAAY,CAAE,IAAI,GAAE,gBAAqB,GAAG,CAAC,UAAU,EAAE,sBAAsB,KAAK,YAAY,CAE/G"}
|
package/dist/src/fetch/index.js
CHANGED
|
@@ -7,18 +7,18 @@ import { PROTOCOL_NAME, PROTOCOL_VERSION } from './constants.js';
|
|
|
7
7
|
import { abortableDuplex } from 'abortable-iterator';
|
|
8
8
|
import { pipe } from 'it-pipe';
|
|
9
9
|
import first from 'it-first';
|
|
10
|
-
import { TimeoutController } from 'timeout-abort-controller';
|
|
11
10
|
import { setMaxListeners } from 'events';
|
|
12
11
|
import { fromString as uint8arrayFromString } from 'uint8arrays/from-string';
|
|
13
12
|
import { toString as uint8arrayToString } from 'uint8arrays/to-string';
|
|
14
13
|
const log = logger('libp2p:fetch');
|
|
14
|
+
const DEFAULT_TIMEOUT = 10000;
|
|
15
15
|
/**
|
|
16
16
|
* A simple libp2p protocol for requesting a value corresponding to a key from a peer.
|
|
17
17
|
* Developers can register one or more lookup function for retrieving the value corresponding to
|
|
18
18
|
* a given key. Each lookup function must act on a distinct part of the overall key space, defined
|
|
19
19
|
* by a fixed prefix that all keys that should be routed to that lookup function will start with.
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
class DefaultFetchService {
|
|
22
22
|
constructor(components, init) {
|
|
23
23
|
this.started = false;
|
|
24
24
|
this.components = components;
|
|
@@ -55,17 +55,15 @@ export class FetchService {
|
|
|
55
55
|
async fetch(peer, key, options = {}) {
|
|
56
56
|
log('dialing %s to %p', this.protocol, peer);
|
|
57
57
|
const connection = await this.components.connectionManager.openConnection(peer, options);
|
|
58
|
-
let timeoutController;
|
|
59
58
|
let signal = options.signal;
|
|
60
59
|
let stream;
|
|
61
60
|
// create a timeout if no abort signal passed
|
|
62
61
|
if (signal == null) {
|
|
63
62
|
log('using default timeout of %d ms', this.init.timeout);
|
|
64
|
-
|
|
65
|
-
signal = timeoutController.signal;
|
|
63
|
+
signal = AbortSignal.timeout(this.init.timeout ?? DEFAULT_TIMEOUT);
|
|
66
64
|
try {
|
|
67
65
|
// fails on node < 15.4
|
|
68
|
-
setMaxListeners?.(Infinity,
|
|
66
|
+
setMaxListeners?.(Infinity, signal);
|
|
69
67
|
}
|
|
70
68
|
catch { }
|
|
71
69
|
}
|
|
@@ -76,7 +74,7 @@ export class FetchService {
|
|
|
76
74
|
// make stream abortable
|
|
77
75
|
const source = abortableDuplex(stream, signal);
|
|
78
76
|
log('fetch %s', key);
|
|
79
|
-
const result = await pipe([FetchRequest.encode({ identifier: key })], lp.encode(), source, lp.decode(), async function (source) {
|
|
77
|
+
const result = await pipe([FetchRequest.encode({ identifier: key })], (source) => lp.encode(source), source, (source) => lp.decode(source), async function (source) {
|
|
80
78
|
const buf = await first(source);
|
|
81
79
|
if (buf == null) {
|
|
82
80
|
throw new CodeError('No data received', codes.ERR_INVALID_MESSAGE);
|
|
@@ -105,9 +103,6 @@ export class FetchService {
|
|
|
105
103
|
return result ?? null;
|
|
106
104
|
}
|
|
107
105
|
finally {
|
|
108
|
-
if (timeoutController != null) {
|
|
109
|
-
timeoutController.clear();
|
|
110
|
-
}
|
|
111
106
|
if (stream != null) {
|
|
112
107
|
stream.close();
|
|
113
108
|
}
|
|
@@ -121,7 +116,7 @@ export class FetchService {
|
|
|
121
116
|
async handleMessage(data) {
|
|
122
117
|
const { stream } = data;
|
|
123
118
|
const self = this;
|
|
124
|
-
await pipe(stream, lp.decode(), async function* (source) {
|
|
119
|
+
await pipe(stream, (source) => lp.decode(source), async function* (source) {
|
|
125
120
|
const buf = await first(source);
|
|
126
121
|
if (buf == null) {
|
|
127
122
|
throw new CodeError('No data received', codes.ERR_INVALID_MESSAGE);
|
|
@@ -148,7 +143,7 @@ export class FetchService {
|
|
|
148
143
|
response = { status: FetchResponse.StatusCode.ERROR, data: errmsg };
|
|
149
144
|
}
|
|
150
145
|
yield FetchResponse.encode(response);
|
|
151
|
-
}, lp.encode(), stream);
|
|
146
|
+
}, (source) => lp.encode(source), stream);
|
|
152
147
|
}
|
|
153
148
|
/**
|
|
154
149
|
* Given a key, finds the appropriate function for looking up its corresponding value, based on
|
|
@@ -199,4 +194,7 @@ export class FetchService {
|
|
|
199
194
|
this.lookupFunctions.delete(prefix);
|
|
200
195
|
}
|
|
201
196
|
}
|
|
197
|
+
export function fetchService(init = {}) {
|
|
198
|
+
return (components) => new DefaultFetchService(components, init);
|
|
199
|
+
}
|
|
202
200
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AACpC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAMhE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAC9B,OAAO,KAAK,MAAM,UAAU,CAAA;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/fetch/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,34 @@
|
|
|
1
|
-
import { Multiaddr } from '@multiformats/multiaddr';
|
|
2
1
|
import { Identify } from './pb/message.js';
|
|
3
|
-
import type {
|
|
2
|
+
import type { Registrar } from '@libp2p/interface-registrar';
|
|
4
3
|
import type { Connection } from '@libp2p/interface-connection';
|
|
5
|
-
import type { Startable } from '@libp2p/interfaces/startable';
|
|
6
4
|
import type { AbortOptions } from '@libp2p/interfaces';
|
|
7
5
|
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
8
6
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
9
7
|
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
10
8
|
import type { AddressManager } from '@libp2p/interface-address-manager';
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
9
|
+
import type { EventEmitter } from '@libp2p/interfaces/events';
|
|
10
|
+
import type { Libp2pEvents } from '@libp2p/interface-libp2p';
|
|
14
11
|
export interface IdentifyServiceInit {
|
|
15
12
|
/**
|
|
16
13
|
* The prefix to use for the protocol (default: 'ipfs')
|
|
17
14
|
*/
|
|
18
|
-
protocolPrefix
|
|
15
|
+
protocolPrefix?: string;
|
|
19
16
|
/**
|
|
20
17
|
* What details we should send as part of an identify message
|
|
21
18
|
*/
|
|
22
|
-
|
|
19
|
+
agentVersion?: string;
|
|
23
20
|
/**
|
|
24
21
|
* How long we should wait for a remote peer to send their identify response
|
|
25
22
|
*/
|
|
26
|
-
timeout
|
|
23
|
+
timeout?: number;
|
|
27
24
|
/**
|
|
28
25
|
* Identify responses larger than this in bytes will be rejected (default: 8192)
|
|
29
26
|
*/
|
|
30
27
|
maxIdentifyMessageSize?: number;
|
|
31
|
-
maxInboundStreams
|
|
32
|
-
maxOutboundStreams
|
|
33
|
-
maxPushIncomingStreams
|
|
34
|
-
maxPushOutgoingStreams
|
|
28
|
+
maxInboundStreams?: number;
|
|
29
|
+
maxOutboundStreams?: number;
|
|
30
|
+
maxPushIncomingStreams?: number;
|
|
31
|
+
maxPushOutgoingStreams?: number;
|
|
35
32
|
maxObservedAddresses?: number;
|
|
36
33
|
}
|
|
37
34
|
export interface IdentifyServiceComponents {
|
|
@@ -40,49 +37,19 @@ export interface IdentifyServiceComponents {
|
|
|
40
37
|
connectionManager: ConnectionManager;
|
|
41
38
|
registrar: Registrar;
|
|
42
39
|
addressManager: AddressManager;
|
|
40
|
+
events: EventEmitter<Libp2pEvents>;
|
|
43
41
|
}
|
|
44
|
-
export
|
|
45
|
-
private readonly components;
|
|
46
|
-
private readonly identifyProtocolStr;
|
|
47
|
-
private readonly identifyPushProtocolStr;
|
|
48
|
-
readonly host: {
|
|
49
|
-
protocolVersion: string;
|
|
50
|
-
agentVersion: string;
|
|
51
|
-
};
|
|
52
|
-
private readonly init;
|
|
53
|
-
private started;
|
|
54
|
-
constructor(components: IdentifyServiceComponents, init: IdentifyServiceInit);
|
|
55
|
-
isStarted(): boolean;
|
|
56
|
-
start(): Promise<void>;
|
|
57
|
-
stop(): Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Send an Identify Push update to the list of connections
|
|
60
|
-
*/
|
|
61
|
-
push(connections: Connection[]): Promise<void>;
|
|
62
|
-
/**
|
|
63
|
-
* Calls `push` on all peer connections
|
|
64
|
-
*/
|
|
65
|
-
pushToPeerStore(): Promise<void>;
|
|
66
|
-
_identify(connection: Connection, options?: AbortOptions): Promise<Identify>;
|
|
42
|
+
export interface IdentifyService {
|
|
67
43
|
/**
|
|
68
44
|
* Requests the `Identify` message from peer associated with the given `connection`.
|
|
69
45
|
* If the identified peer does not match the `PeerId` associated with the connection,
|
|
70
46
|
* an error will be thrown.
|
|
71
47
|
*/
|
|
72
|
-
identify(connection: Connection, options?: AbortOptions)
|
|
48
|
+
identify: (connection: Connection, options?: AbortOptions) => Promise<void>;
|
|
73
49
|
/**
|
|
74
|
-
*
|
|
75
|
-
* to the requesting peer over the given `connection`
|
|
76
|
-
*/
|
|
77
|
-
_handleIdentify(data: IncomingStreamData): Promise<void>;
|
|
78
|
-
/**
|
|
79
|
-
* Reads the Identify Push message from the given `connection`
|
|
80
|
-
*/
|
|
81
|
-
_handlePush(data: IncomingStreamData): Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Takes the `addr` and converts it to a Multiaddr if possible
|
|
50
|
+
* Calls `push` on all peer connections
|
|
84
51
|
*/
|
|
85
|
-
|
|
52
|
+
push: () => Promise<void>;
|
|
86
53
|
}
|
|
87
54
|
/**
|
|
88
55
|
* The protocols the IdentifyService supports
|
|
@@ -94,4 +61,5 @@ export declare const multicodecs: {
|
|
|
94
61
|
export declare const Message: {
|
|
95
62
|
Identify: typeof Identify;
|
|
96
63
|
};
|
|
64
|
+
export declare function identifyService(init?: IdentifyServiceInit): (components: IdentifyServiceComponents) => IdentifyService;
|
|
97
65
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identify/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAa1C,OAAO,KAAK,EAAsB,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,UAAU,EAAU,MAAM,8BAA8B,CAAA;AAGtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAQ,SAAS,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAU5D,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAE/B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAE3B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAE3E;;OAEG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1B;AA2cD;;GAEG;AACH,eAAO,MAAM,WAAW;;;CAGvB,CAAA;AAED,eAAO,MAAM,OAAO;;CAAe,CAAA;AAEnC,wBAAgB,eAAe,CAAE,IAAI,GAAE,mBAAwB,GAAG,CAAC,UAAU,EAAE,yBAAyB,KAAK,eAAe,CAE3H"}
|