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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAIrD,OAAO,EAAE,WAAW,EAAa,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/components.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ConnectionGater } from '@libp2p/interface-connection-gater';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a connection gater that disallows dialling private addresses by
|
|
4
|
+
* default. Browsers are severely limited in their resource usage so don't
|
|
5
|
+
* waste time trying to dial undiallable addresses.
|
|
6
|
+
*/
|
|
7
|
+
export declare function connectionGater(gater?: ConnectionGater): ConnectionGater;
|
|
8
|
+
//# sourceMappingURL=connection-gater.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-gater.browser.d.ts","sourceRoot":"","sources":["../../../src/config/connection-gater.browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAIzE;;;;GAIG;AACH,wBAAgB,eAAe,CAAE,KAAK,GAAE,eAAoB,GAAG,eAAe,CAqB7E"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import isPrivate from 'private-ip';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a connection gater that disallows dialling private addresses by
|
|
4
|
+
* default. Browsers are severely limited in their resource usage so don't
|
|
5
|
+
* waste time trying to dial undiallable addresses.
|
|
6
|
+
*/
|
|
7
|
+
export function connectionGater(gater = {}) {
|
|
8
|
+
return {
|
|
9
|
+
denyDialPeer: async () => false,
|
|
10
|
+
denyDialMultiaddr: async (multiaddr) => {
|
|
11
|
+
const tuples = multiaddr.stringTuples();
|
|
12
|
+
if (tuples[0][0] === 4 || tuples[0][0] === 41) {
|
|
13
|
+
return Boolean(isPrivate(`${tuples[0][1]}`));
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
},
|
|
17
|
+
denyInboundConnection: async () => false,
|
|
18
|
+
denyOutboundConnection: async () => false,
|
|
19
|
+
denyInboundEncryptedConnection: async () => false,
|
|
20
|
+
denyOutboundEncryptedConnection: async () => false,
|
|
21
|
+
denyInboundUpgradedConnection: async () => false,
|
|
22
|
+
denyOutboundUpgradedConnection: async () => false,
|
|
23
|
+
filterMultiaddrForPeer: async () => true,
|
|
24
|
+
...gater
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=connection-gater.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-gater.browser.js","sourceRoot":"","sources":["../../../src/config/connection-gater.browser.ts"],"names":[],"mappings":"AAEA,OAAO,SAAS,MAAM,YAAY,CAAA;AAElC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAE,QAAyB,EAAE;IAC1D,OAAO;QACL,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QAC/B,iBAAiB,EAAE,KAAK,EAAE,SAAoB,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,EAAE,CAAA;YAEvC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC7C,OAAO,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;aAC7C;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QACD,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACxC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACzC,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACjD,+BAA+B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QAClD,6BAA6B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QAChD,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACjD,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QACxC,GAAG,KAAK;KACT,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ConnectionGater } from '@libp2p/interface-connection-gater';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a default connection gater implementation that allows everything
|
|
4
|
+
*/
|
|
5
|
+
export declare function connectionGater(gater?: ConnectionGater): ConnectionGater;
|
|
6
|
+
//# sourceMappingURL=connection-gater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-gater.d.ts","sourceRoot":"","sources":["../../../src/config/connection-gater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEzE;;GAEG;AACH,wBAAgB,eAAe,CAAE,KAAK,GAAE,eAAoB,GAAG,eAAe,CAa7E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a default connection gater implementation that allows everything
|
|
3
|
+
*/
|
|
4
|
+
export function connectionGater(gater = {}) {
|
|
5
|
+
return {
|
|
6
|
+
denyDialPeer: async () => false,
|
|
7
|
+
denyDialMultiaddr: async () => false,
|
|
8
|
+
denyInboundConnection: async () => false,
|
|
9
|
+
denyOutboundConnection: async () => false,
|
|
10
|
+
denyInboundEncryptedConnection: async () => false,
|
|
11
|
+
denyOutboundEncryptedConnection: async () => false,
|
|
12
|
+
denyInboundUpgradedConnection: async () => false,
|
|
13
|
+
denyOutboundUpgradedConnection: async () => false,
|
|
14
|
+
filterMultiaddrForPeer: async () => true,
|
|
15
|
+
...gater
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=connection-gater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-gater.js","sourceRoot":"","sources":["../../../src/config/connection-gater.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAE,QAAyB,EAAE;IAC1D,OAAO;QACL,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QAC/B,iBAAiB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACpC,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACxC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACzC,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACjD,+BAA+B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QAClD,6BAA6B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QAChD,8BAA8B,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACjD,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QACxC,GAAG,KAAK;KACT,CAAA;AACH,CAAC"}
|
package/dist/src/config.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Libp2pInit } from './index.js';
|
|
2
2
|
import type { RecursivePartial } from '@libp2p/interfaces';
|
|
3
|
-
|
|
3
|
+
import type { ServiceMap } from '@libp2p/interface-libp2p';
|
|
4
|
+
export declare function validateConfig<T extends ServiceMap = {}>(opts: RecursivePartial<Libp2pInit<T>>): Libp2pInit<T>;
|
|
4
5
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAoB1D,wBAAgB,cAAc,CAAE,CAAC,SAAS,UAAU,GAAG,EAAE,EAAG,IAAI,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAgBhH"}
|
package/dist/src/config.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import mergeOptions from 'merge-options';
|
|
2
2
|
import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers';
|
|
3
|
-
import * as Constants from './constants.js';
|
|
4
|
-
import { AGENT_VERSION } from './identify/consts.js';
|
|
5
3
|
import { publicAddressesFirst } from '@libp2p/utils/address-sort';
|
|
6
4
|
import { FaultTolerance } from '@libp2p/interface-transport';
|
|
7
5
|
import { codes, messages } from './errors.js';
|
|
8
6
|
import { CodeError } from '@libp2p/interfaces/errors';
|
|
9
|
-
import { isNode, isBrowser, isWebWorker, isElectronMain, isElectronRenderer, isReactNative } from 'wherearewe';
|
|
10
7
|
const DefaultConfig = {
|
|
11
8
|
addresses: {
|
|
12
9
|
listen: [],
|
|
@@ -15,72 +12,13 @@ const DefaultConfig = {
|
|
|
15
12
|
announceFilter: (multiaddrs) => multiaddrs
|
|
16
13
|
},
|
|
17
14
|
connectionManager: {
|
|
18
|
-
maxConnections: 300,
|
|
19
|
-
minConnections: 50,
|
|
20
|
-
autoDialInterval: 10000,
|
|
21
|
-
maxParallelDials: Constants.MAX_PARALLEL_DIALS,
|
|
22
|
-
maxDialsPerPeer: Constants.MAX_PER_PEER_DIALS,
|
|
23
|
-
dialTimeout: Constants.DIAL_TIMEOUT,
|
|
24
|
-
inboundUpgradeTimeout: Constants.INBOUND_UPGRADE_TIMEOUT,
|
|
25
15
|
resolvers: {
|
|
26
16
|
dnsaddr: dnsaddrResolver
|
|
27
17
|
},
|
|
28
18
|
addressSorter: publicAddressesFirst
|
|
29
19
|
},
|
|
30
|
-
connectionGater: {},
|
|
31
20
|
transportManager: {
|
|
32
21
|
faultTolerance: FaultTolerance.FATAL_ALL
|
|
33
|
-
},
|
|
34
|
-
peerRouting: {
|
|
35
|
-
refreshManager: {
|
|
36
|
-
enabled: true,
|
|
37
|
-
interval: 6e5,
|
|
38
|
-
bootDelay: 10e3
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
nat: {
|
|
42
|
-
enabled: true,
|
|
43
|
-
ttl: 7200,
|
|
44
|
-
keepAlive: true
|
|
45
|
-
},
|
|
46
|
-
identify: {
|
|
47
|
-
protocolPrefix: 'ipfs',
|
|
48
|
-
host: {
|
|
49
|
-
agentVersion: AGENT_VERSION
|
|
50
|
-
},
|
|
51
|
-
// https://github.com/libp2p/go-libp2p/blob/8d2e54e1637041d5cf4fac1e531287560bd1f4ac/p2p/protocol/identify/id.go#L48
|
|
52
|
-
timeout: 60000,
|
|
53
|
-
maxInboundStreams: 1,
|
|
54
|
-
maxOutboundStreams: 1,
|
|
55
|
-
maxPushIncomingStreams: 1,
|
|
56
|
-
maxPushOutgoingStreams: 1,
|
|
57
|
-
maxObservedAddresses: 10
|
|
58
|
-
},
|
|
59
|
-
ping: {
|
|
60
|
-
protocolPrefix: 'ipfs',
|
|
61
|
-
// See https://github.com/libp2p/specs/blob/d4b5fb0152a6bb86cfd9ea/ping/ping.md?plain=1#L38-L43
|
|
62
|
-
// The dialing peer MUST NOT keep more than one outbound stream for the ping protocol per peer.
|
|
63
|
-
// The listening peer SHOULD accept at most two streams per peer since cross-stream behavior is
|
|
64
|
-
// non-linear and stream writes occur asynchronously. The listening peer may perceive the
|
|
65
|
-
// dialing peer closing and opening the wrong streams (for instance, closing stream B and
|
|
66
|
-
// opening stream A even though the dialing peer is opening stream B and closing stream A).
|
|
67
|
-
maxInboundStreams: 2,
|
|
68
|
-
maxOutboundStreams: 1,
|
|
69
|
-
timeout: 10000
|
|
70
|
-
},
|
|
71
|
-
fetch: {
|
|
72
|
-
protocolPrefix: 'libp2p',
|
|
73
|
-
maxInboundStreams: 1,
|
|
74
|
-
maxOutboundStreams: 1,
|
|
75
|
-
timeout: 10000
|
|
76
|
-
},
|
|
77
|
-
autonat: {
|
|
78
|
-
protocolPrefix: 'libp2p',
|
|
79
|
-
maxInboundStreams: 1,
|
|
80
|
-
maxOutboundStreams: 1,
|
|
81
|
-
timeout: 30000,
|
|
82
|
-
startupDelay: 5000,
|
|
83
|
-
refreshInterval: 60000
|
|
84
22
|
}
|
|
85
23
|
};
|
|
86
24
|
export function validateConfig(opts) {
|
|
@@ -94,15 +32,6 @@ export function validateConfig(opts) {
|
|
|
94
32
|
if (resultingOptions.connectionProtector === null && globalThis.process?.env?.LIBP2P_FORCE_PNET != null) { // eslint-disable-line no-undef
|
|
95
33
|
throw new CodeError(messages.ERR_PROTECTOR_REQUIRED, codes.ERR_PROTECTOR_REQUIRED);
|
|
96
34
|
}
|
|
97
|
-
// Append user agent version to default AGENT_VERSION depending on the environment
|
|
98
|
-
if (resultingOptions.identify.host.agentVersion === AGENT_VERSION) {
|
|
99
|
-
if (isNode || isElectronMain) {
|
|
100
|
-
resultingOptions.identify.host.agentVersion += ` UserAgent=${globalThis.process.version}`;
|
|
101
|
-
}
|
|
102
|
-
else if (isBrowser || isWebWorker || isElectronRenderer || isReactNative) {
|
|
103
|
-
resultingOptions.identify.host.agentVersion += ` UserAgent=${globalThis.navigator.userAgent}`;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
35
|
return resultingOptions;
|
|
107
36
|
}
|
|
108
37
|
//# sourceMappingURL=config.js.map
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAG5D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAIrD,MAAM,aAAa,GAAwB;IACzC,SAAS,EAAE;QACT,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,cAAc,EAAE,CAAC,UAAuB,EAAE,EAAE,CAAC,UAAU;KACxD;IACD,iBAAiB,EAAE;QACjB,SAAS,EAAE;YACT,OAAO,EAAE,eAAe;SACzB;QACD,aAAa,EAAE,oBAAoB;KACpC;IACD,gBAAgB,EAAE;QAChB,cAAc,EAAE,cAAc,CAAC,SAAS;KACzC;CACF,CAAA;AAED,MAAM,UAAU,cAAc,CAA8B,IAAqC;IAC/F,MAAM,gBAAgB,GAAkB,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;IAEzE,IAAI,gBAAgB,CAAC,UAAU,IAAI,IAAI,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACjF,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAA;KACrF;IAED,IAAI,gBAAgB,CAAC,oBAAoB,IAAI,IAAI,IAAI,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;QACvG,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAA;KACvF;IAED,IAAI,gBAAgB,CAAC,mBAAmB,KAAK,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,iBAAiB,IAAI,IAAI,EAAE,EAAE,+BAA+B;QACxI,MAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;KACnF;IAED,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
2
|
+
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
3
|
+
import type { Startable } from '@libp2p/interfaces/startable';
|
|
4
|
+
import type { EventEmitter } from '@libp2p/interfaces/events';
|
|
5
|
+
import type { Libp2pEvents } from '@libp2p/interface-libp2p';
|
|
6
|
+
interface AutoDialInit {
|
|
7
|
+
minConnections?: number;
|
|
8
|
+
autoDialConcurrency?: number;
|
|
9
|
+
autoDialPriority?: number;
|
|
10
|
+
autoDialInterval?: number;
|
|
11
|
+
}
|
|
12
|
+
interface AutoDialComponents {
|
|
13
|
+
connectionManager: ConnectionManager;
|
|
14
|
+
peerStore: PeerStore;
|
|
15
|
+
events: EventEmitter<Libp2pEvents>;
|
|
16
|
+
}
|
|
17
|
+
export declare class AutoDial implements Startable {
|
|
18
|
+
private readonly connectionManager;
|
|
19
|
+
private readonly peerStore;
|
|
20
|
+
private readonly queue;
|
|
21
|
+
private readonly minConnections;
|
|
22
|
+
private readonly autoDialPriority;
|
|
23
|
+
private readonly autoDialIntervalMs;
|
|
24
|
+
private autoDialInterval?;
|
|
25
|
+
private started;
|
|
26
|
+
/**
|
|
27
|
+
* Proactively tries to connect to known peers stored in the PeerStore.
|
|
28
|
+
* It will keep the number of connections below the upper limit and sort
|
|
29
|
+
* the peers to connect based on whether we know their keys and protocols.
|
|
30
|
+
*/
|
|
31
|
+
constructor(components: AutoDialComponents, init: AutoDialInit);
|
|
32
|
+
isStarted(): boolean;
|
|
33
|
+
start(): void;
|
|
34
|
+
afterStart(): void;
|
|
35
|
+
stop(): void;
|
|
36
|
+
autoDial(): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=auto-dial.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-dial.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/auto-dial.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAI7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAI5D,UAAU,YAAY;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,UAAU,kBAAkB;IAC1B,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AASD,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,gBAAgB,CAAC,CAAgC;IACzD,OAAO,CAAC,OAAO,CAAS;IAExB;;;;OAIG;gBACU,UAAU,EAAE,kBAAkB,EAAE,IAAI,EAAE,YAAY;IAuB/D,SAAS,IAAK,OAAO;IAIrB,KAAK,IAAK,IAAI;IAUd,UAAU,IAAK,IAAI;IAOnB,IAAI,IAAK,IAAI;IAOP,QAAQ,IAAK,OAAO,CAAC,IAAI,CAAC;CA0FjC"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger';
|
|
2
|
+
import { PeerMap } from '@libp2p/peer-collections';
|
|
3
|
+
import PQueue from 'p-queue';
|
|
4
|
+
import { AUTO_DIAL_CONCURRENCY, AUTO_DIAL_INTERVAL, AUTO_DIAL_PRIORITY, MIN_CONNECTIONS } from './constants.js';
|
|
5
|
+
const log = logger('libp2p:connection-manager:auto-dial');
|
|
6
|
+
const defaultOptions = {
|
|
7
|
+
minConnections: MIN_CONNECTIONS,
|
|
8
|
+
autoDialConcurrency: AUTO_DIAL_CONCURRENCY,
|
|
9
|
+
autoDialPriority: AUTO_DIAL_PRIORITY,
|
|
10
|
+
autoDialInterval: AUTO_DIAL_INTERVAL
|
|
11
|
+
};
|
|
12
|
+
export class AutoDial {
|
|
13
|
+
/**
|
|
14
|
+
* Proactively tries to connect to known peers stored in the PeerStore.
|
|
15
|
+
* It will keep the number of connections below the upper limit and sort
|
|
16
|
+
* the peers to connect based on whether we know their keys and protocols.
|
|
17
|
+
*/
|
|
18
|
+
constructor(components, init) {
|
|
19
|
+
this.connectionManager = components.connectionManager;
|
|
20
|
+
this.peerStore = components.peerStore;
|
|
21
|
+
this.minConnections = init.minConnections ?? defaultOptions.minConnections;
|
|
22
|
+
this.autoDialPriority = init.autoDialPriority ?? defaultOptions.autoDialPriority;
|
|
23
|
+
this.autoDialIntervalMs = init.autoDialInterval ?? defaultOptions.autoDialInterval;
|
|
24
|
+
this.started = false;
|
|
25
|
+
this.queue = new PQueue({
|
|
26
|
+
concurrency: init.autoDialConcurrency ?? defaultOptions.autoDialConcurrency
|
|
27
|
+
});
|
|
28
|
+
this.queue.addListener('error', (err) => {
|
|
29
|
+
log.error('error during auto-dial', err);
|
|
30
|
+
});
|
|
31
|
+
// check the min connection limit whenever a peer disconnects
|
|
32
|
+
components.events.addEventListener('connection:close', () => {
|
|
33
|
+
this.autoDial()
|
|
34
|
+
.catch(err => {
|
|
35
|
+
log.error(err);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
isStarted() {
|
|
40
|
+
return this.started;
|
|
41
|
+
}
|
|
42
|
+
start() {
|
|
43
|
+
this.autoDialInterval = setInterval(() => {
|
|
44
|
+
this.autoDial()
|
|
45
|
+
.catch(err => {
|
|
46
|
+
log.error('error while autodialing', err);
|
|
47
|
+
});
|
|
48
|
+
}, this.autoDialIntervalMs);
|
|
49
|
+
this.started = true;
|
|
50
|
+
}
|
|
51
|
+
afterStart() {
|
|
52
|
+
this.autoDial()
|
|
53
|
+
.catch(err => {
|
|
54
|
+
log.error('error while autodialing', err);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
stop() {
|
|
58
|
+
// clear the queue
|
|
59
|
+
this.queue.clear();
|
|
60
|
+
clearInterval(this.autoDialInterval);
|
|
61
|
+
this.started = false;
|
|
62
|
+
}
|
|
63
|
+
async autoDial() {
|
|
64
|
+
if (!this.started) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const connections = this.connectionManager.getConnectionsMap();
|
|
68
|
+
const numConnections = connections.size;
|
|
69
|
+
// Already has enough connections
|
|
70
|
+
if (numConnections >= this.minConnections) {
|
|
71
|
+
log('have enough connections %d/%d', numConnections, this.minConnections);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
log('not enough connections %d/%d - will dial peers to increase the number of connections', numConnections, this.minConnections);
|
|
75
|
+
// Sort peers on whether we know protocols or public keys for them
|
|
76
|
+
const peers = await this.peerStore.all();
|
|
77
|
+
// Remove some peers
|
|
78
|
+
const filteredPeers = peers.filter((peer) => {
|
|
79
|
+
// Remove peers without addresses
|
|
80
|
+
if (peer.addresses.length === 0) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
// remove peers we are already connected to
|
|
84
|
+
if (connections.has(peer.id)) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
});
|
|
89
|
+
// shuffle the peers - this is so peers with the same tag values will be
|
|
90
|
+
// dialled in a different order each time
|
|
91
|
+
const shuffledPeers = filteredPeers.sort(() => Math.random() > 0.5 ? 1 : -1);
|
|
92
|
+
// Sort shuffled peers by tag value
|
|
93
|
+
const peerValues = new PeerMap();
|
|
94
|
+
for (const peer of shuffledPeers) {
|
|
95
|
+
if (peerValues.has(peer.id)) {
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// sum all tag values
|
|
99
|
+
peerValues.set(peer.id, [...peer.tags.values()].reduce((acc, curr) => {
|
|
100
|
+
return acc + curr.value;
|
|
101
|
+
}, 0));
|
|
102
|
+
}
|
|
103
|
+
// sort by value, highest to lowest
|
|
104
|
+
const sortedPeers = shuffledPeers.sort((a, b) => {
|
|
105
|
+
const peerAValue = peerValues.get(a.id) ?? 0;
|
|
106
|
+
const peerBValue = peerValues.get(b.id) ?? 0;
|
|
107
|
+
if (peerAValue > peerBValue) {
|
|
108
|
+
return -1;
|
|
109
|
+
}
|
|
110
|
+
if (peerAValue < peerBValue) {
|
|
111
|
+
return 1;
|
|
112
|
+
}
|
|
113
|
+
return 0;
|
|
114
|
+
});
|
|
115
|
+
log('selected %d/%d peers to dial', sortedPeers.length, peers.length);
|
|
116
|
+
for (const peer of sortedPeers) {
|
|
117
|
+
this.queue.add(async () => {
|
|
118
|
+
const numConnections = this.connectionManager.getConnectionsMap().size;
|
|
119
|
+
// Check to see if we still need to auto dial
|
|
120
|
+
if (numConnections >= this.minConnections) {
|
|
121
|
+
log('got enough connections now %d/%d', numConnections, this.minConnections);
|
|
122
|
+
this.queue.clear();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
log('connecting to a peerStore stored peer %p', peer.id);
|
|
126
|
+
await this.connectionManager.openConnection(peer.id, {
|
|
127
|
+
// @ts-expect-error needs adding to the ConnectionManager interface
|
|
128
|
+
priority: this.autoDialPriority
|
|
129
|
+
});
|
|
130
|
+
}).catch(err => {
|
|
131
|
+
log.error('could not connect to peerStore stored peer', err);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=auto-dial.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-dial.js","sourceRoot":"","sources":["../../../src/connection-manager/auto-dial.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ConnectionManager } from '@libp2p/interface-connection-manager';
|
|
2
|
+
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
3
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
4
|
+
import type { EventEmitter } from '@libp2p/interfaces/events';
|
|
5
|
+
import type { Libp2pEvents } from '@libp2p/interface-libp2p';
|
|
6
|
+
interface ConnectionPrunerInit {
|
|
7
|
+
maxConnections?: number;
|
|
8
|
+
allow?: Multiaddr[];
|
|
9
|
+
}
|
|
10
|
+
interface ConnectionPrunerComponents {
|
|
11
|
+
connectionManager: ConnectionManager;
|
|
12
|
+
peerStore: PeerStore;
|
|
13
|
+
events: EventEmitter<Libp2pEvents>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* If we go over the max connections limit, choose some connections to close
|
|
17
|
+
*/
|
|
18
|
+
export declare class ConnectionPruner {
|
|
19
|
+
private readonly maxConnections;
|
|
20
|
+
private readonly connectionManager;
|
|
21
|
+
private readonly peerStore;
|
|
22
|
+
private readonly allow;
|
|
23
|
+
private readonly events;
|
|
24
|
+
constructor(components: ConnectionPrunerComponents, init?: ConnectionPrunerInit);
|
|
25
|
+
/**
|
|
26
|
+
* If we have more connections than our maximum, select some excess connections
|
|
27
|
+
* to prune based on peer value
|
|
28
|
+
*/
|
|
29
|
+
maybePruneConnections(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=connection-pruner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-pruner.d.ts","sourceRoot":"","sources":["../../../src/connection-manager/connection-pruner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAI5D,UAAU,oBAAoB;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAA;CACpB;AAED,UAAU,0BAA0B;IAClC,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAOD;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;gBAEtC,UAAU,EAAE,0BAA0B,EAAE,IAAI,GAAE,oBAAyB;IAgBpF;;;OAGG;IACG,qBAAqB,IAAK,OAAO,CAAC,IAAI,CAAC;CAmG9C"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger';
|
|
2
|
+
import { PeerMap } from '@libp2p/peer-collections';
|
|
3
|
+
import { MAX_CONNECTIONS } from './constants.js';
|
|
4
|
+
const log = logger('libp2p:connection-manager:connection-pruner');
|
|
5
|
+
const defaultOptions = {
|
|
6
|
+
maxConnections: MAX_CONNECTIONS,
|
|
7
|
+
allow: []
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* If we go over the max connections limit, choose some connections to close
|
|
11
|
+
*/
|
|
12
|
+
export class ConnectionPruner {
|
|
13
|
+
constructor(components, init = {}) {
|
|
14
|
+
this.maxConnections = init.maxConnections ?? defaultOptions.maxConnections;
|
|
15
|
+
this.allow = init.allow ?? defaultOptions.allow;
|
|
16
|
+
this.connectionManager = components.connectionManager;
|
|
17
|
+
this.peerStore = components.peerStore;
|
|
18
|
+
this.events = components.events;
|
|
19
|
+
// check the max connection limit whenever a peer connects
|
|
20
|
+
components.events.addEventListener('connection:open', () => {
|
|
21
|
+
this.maybePruneConnections()
|
|
22
|
+
.catch(err => {
|
|
23
|
+
log.error(err);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* If we have more connections than our maximum, select some excess connections
|
|
29
|
+
* to prune based on peer value
|
|
30
|
+
*/
|
|
31
|
+
async maybePruneConnections() {
|
|
32
|
+
const connections = this.connectionManager.getConnections();
|
|
33
|
+
const numConnections = connections.length;
|
|
34
|
+
const toPrune = Math.max(numConnections - this.maxConnections, 0);
|
|
35
|
+
log('checking max connections limit %d/%d', numConnections, this.maxConnections);
|
|
36
|
+
if (numConnections <= this.maxConnections) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
log('max connections limit exceeded %d/%d, pruning %d connection(s)', numConnections, this.maxConnections, toPrune);
|
|
40
|
+
const peerValues = new PeerMap();
|
|
41
|
+
// work out peer values
|
|
42
|
+
for (const connection of connections) {
|
|
43
|
+
const remotePeer = connection.remotePeer;
|
|
44
|
+
if (peerValues.has(remotePeer)) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
peerValues.set(remotePeer, 0);
|
|
48
|
+
try {
|
|
49
|
+
const peer = await this.peerStore.get(remotePeer);
|
|
50
|
+
// sum all tag values
|
|
51
|
+
peerValues.set(remotePeer, [...peer.tags.values()].reduce((acc, curr) => {
|
|
52
|
+
return acc + curr.value;
|
|
53
|
+
}, 0));
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
if (err.code !== 'ERR_NOT_FOUND') {
|
|
57
|
+
log.error('error loading peer tags', err);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// sort by value, lowest to highest
|
|
62
|
+
const sortedConnections = connections.sort((a, b) => {
|
|
63
|
+
const peerAValue = peerValues.get(a.remotePeer) ?? 0;
|
|
64
|
+
const peerBValue = peerValues.get(b.remotePeer) ?? 0;
|
|
65
|
+
if (peerAValue > peerBValue) {
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
if (peerAValue < peerBValue) {
|
|
69
|
+
return -1;
|
|
70
|
+
}
|
|
71
|
+
// if the peers have an equal tag value then we want to close short-lived connections first
|
|
72
|
+
const connectionALifespan = a.stat.timeline.open;
|
|
73
|
+
const connectionBLifespan = b.stat.timeline.open;
|
|
74
|
+
if (connectionALifespan < connectionBLifespan) {
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
if (connectionALifespan > connectionBLifespan) {
|
|
78
|
+
return -1;
|
|
79
|
+
}
|
|
80
|
+
return 0;
|
|
81
|
+
});
|
|
82
|
+
// close some connections
|
|
83
|
+
const toClose = [];
|
|
84
|
+
for (const connection of sortedConnections) {
|
|
85
|
+
log('too many connections open - closing a connection to %p', connection.remotePeer);
|
|
86
|
+
// check allow list
|
|
87
|
+
const connectionInAllowList = this.allow.some((ma) => {
|
|
88
|
+
return connection.remoteAddr.toString().startsWith(ma.toString());
|
|
89
|
+
});
|
|
90
|
+
// Connections in the allow list should be excluded from pruning
|
|
91
|
+
if (!connectionInAllowList) {
|
|
92
|
+
toClose.push(connection);
|
|
93
|
+
}
|
|
94
|
+
if (toClose.length === toPrune) {
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// close connections
|
|
99
|
+
await Promise.all(toClose.map(async (connection) => {
|
|
100
|
+
try {
|
|
101
|
+
await connection.close();
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
log.error(err);
|
|
105
|
+
}
|
|
106
|
+
}));
|
|
107
|
+
// despatch prune event
|
|
108
|
+
this.events.safeDispatchEvent('connection:prune', { detail: toClose });
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=connection-pruner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-pruner.js","sourceRoot":"","sources":["../../../src/connection-manager/connection-pruner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#dialTimeout
|
|
3
|
+
*/
|
|
4
|
+
export declare const DIAL_TIMEOUT = 30000;
|
|
5
|
+
/**
|
|
6
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#inboundUpgradeTimeout
|
|
7
|
+
*/
|
|
8
|
+
export declare const INBOUND_UPGRADE_TIMEOUT = 30000;
|
|
9
|
+
/**
|
|
10
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxParallelDials
|
|
11
|
+
*/
|
|
12
|
+
export declare const MAX_PARALLEL_DIALS = 100;
|
|
13
|
+
/**
|
|
14
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxPeerAddrsToDial
|
|
15
|
+
*/
|
|
16
|
+
export declare const MAX_PEER_ADDRS_TO_DIAL = 25;
|
|
17
|
+
/**
|
|
18
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxParallelDialsPerPeer
|
|
19
|
+
*/
|
|
20
|
+
export declare const MAX_PARALLEL_DIALS_PER_PEER = 10;
|
|
21
|
+
/**
|
|
22
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#minConnections
|
|
23
|
+
*/
|
|
24
|
+
export declare const MIN_CONNECTIONS = 50;
|
|
25
|
+
/**
|
|
26
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxConnections
|
|
27
|
+
*/
|
|
28
|
+
export declare const MAX_CONNECTIONS = 300;
|
|
29
|
+
/**
|
|
30
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialInterval
|
|
31
|
+
*/
|
|
32
|
+
export declare const AUTO_DIAL_INTERVAL = 5000;
|
|
33
|
+
/**
|
|
34
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialConcurrency
|
|
35
|
+
*/
|
|
36
|
+
export declare const AUTO_DIAL_CONCURRENCY = 25;
|
|
37
|
+
/**
|
|
38
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#autoDialPriority
|
|
39
|
+
*/
|
|
40
|
+
export declare const AUTO_DIAL_PRIORITY = 0;
|
|
41
|
+
/**
|
|
42
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#inboundConnectionThreshold
|
|
43
|
+
*/
|
|
44
|
+
export declare const INBOUND_CONNECTION_THRESHOLD = 5;
|
|
45
|
+
/**
|
|
46
|
+
* @see https://libp2p.github.io/js-libp2p/interfaces/index._internal_.ConnectionManagerConfig.html#maxIncomingPendingConnections
|
|
47
|
+
*/
|
|
48
|
+
export declare const MAX_INCOMING_PENDING_CONNECTIONS = 10;
|
|
49
|
+
//# sourceMappingURL=constants.d.ts.map
|