libp2p 0.36.2 → 0.37.0-b09eb8f
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/LICENSE +3 -21
- package/README.md +13 -10
- package/dist/src/address-manager/index.d.ts +34 -52
- package/dist/src/address-manager/index.d.ts.map +1 -1
- package/dist/src/address-manager/index.js +81 -0
- package/dist/src/address-manager/index.js.map +1 -0
- package/dist/src/circuit/auto-relay.d.ts +24 -85
- package/dist/src/circuit/auto-relay.d.ts.map +1 -1
- package/dist/src/circuit/auto-relay.js +216 -0
- package/dist/src/circuit/auto-relay.js.map +1 -0
- package/dist/src/circuit/circuit/hop.d.ts +26 -53
- package/dist/src/circuit/circuit/hop.d.ts.map +1 -1
- package/dist/src/circuit/circuit/hop.js +138 -0
- package/dist/src/circuit/circuit/hop.js.map +1 -0
- package/dist/src/circuit/circuit/stop.d.ts +18 -10
- package/dist/src/circuit/circuit/stop.d.ts.map +1 -1
- package/dist/src/circuit/circuit/stop.js +49 -0
- package/dist/src/circuit/circuit/stop.js.map +1 -0
- package/dist/src/circuit/circuit/stream-handler.d.ts +19 -38
- package/dist/src/circuit/circuit/stream-handler.d.ts.map +1 -1
- package/dist/src/circuit/circuit/stream-handler.js +59 -0
- package/dist/src/circuit/circuit/stream-handler.js.map +1 -0
- package/dist/src/circuit/circuit/utils.d.ts +3 -6
- package/dist/src/circuit/circuit/utils.d.ts.map +1 -1
- package/dist/src/circuit/circuit/utils.js +43 -0
- package/dist/src/circuit/circuit/utils.js.map +1 -0
- package/dist/src/circuit/constants.d.ts +24 -6
- package/dist/src/circuit/constants.d.ts.map +1 -1
- package/dist/src/circuit/constants.js +26 -0
- package/dist/src/circuit/constants.js.map +1 -0
- package/dist/src/circuit/index.d.ts +41 -74
- package/dist/src/circuit/index.d.ts.map +1 -1
- package/dist/src/circuit/index.js +69 -0
- package/dist/src/circuit/index.js.map +1 -0
- package/dist/src/circuit/listener.d.ts +8 -3
- package/dist/src/circuit/listener.d.ts.map +1 -1
- package/dist/src/circuit/listener.js +62 -0
- package/dist/src/circuit/listener.js.map +1 -0
- package/dist/src/circuit/multicodec.d.ts +1 -1
- package/dist/src/circuit/multicodec.d.ts.map +1 -1
- package/dist/src/circuit/multicodec.js +2 -0
- package/dist/src/circuit/multicodec.js.map +1 -0
- package/dist/src/circuit/pb/index.d.ts +52 -0
- package/dist/src/circuit/pb/index.d.ts.map +1 -0
- package/dist/src/circuit/pb/index.js +98 -0
- package/dist/src/circuit/pb/index.js.map +1 -0
- package/dist/src/circuit/transport.d.ts +18 -78
- package/dist/src/circuit/transport.d.ts.map +1 -1
- package/dist/src/circuit/transport.js +192 -0
- package/dist/src/circuit/transport.js.map +1 -0
- package/dist/src/circuit/utils.d.ts +5 -2
- package/dist/src/circuit/utils.d.ts.map +1 -1
- package/dist/src/circuit/utils.js +11 -0
- package/dist/src/circuit/utils.js.map +1 -0
- package/dist/src/config.d.ts +3 -85
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +91 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/connection-manager/auto-dialler.d.ts +24 -41
- package/dist/src/connection-manager/auto-dialler.d.ts.map +1 -1
- package/dist/src/connection-manager/auto-dialler.js +105 -0
- package/dist/src/connection-manager/auto-dialler.js.map +1 -0
- package/dist/src/connection-manager/dialer/auto-dialer.d.ts +16 -0
- package/dist/src/connection-manager/dialer/auto-dialer.d.ts.map +1 -0
- package/dist/src/connection-manager/dialer/auto-dialer.js +37 -0
- package/dist/src/connection-manager/dialer/auto-dialer.js.map +1 -0
- package/dist/src/connection-manager/dialer/dial-request.d.ts +27 -0
- package/dist/src/connection-manager/dialer/dial-request.d.ts.map +1 -0
- package/dist/src/connection-manager/dialer/dial-request.js +107 -0
- package/dist/src/connection-manager/dialer/dial-request.js.map +1 -0
- package/dist/src/connection-manager/dialer/index.d.ts +104 -0
- package/dist/src/connection-manager/dialer/index.d.ts.map +1 -0
- package/dist/src/connection-manager/dialer/index.js +266 -0
- package/dist/src/connection-manager/dialer/index.js.map +1 -0
- package/dist/src/connection-manager/index.d.ts +102 -136
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +339 -0
- package/dist/src/connection-manager/index.js.map +1 -0
- package/dist/src/connection-manager/latency-monitor.d.ts +72 -97
- package/dist/src/connection-manager/latency-monitor.d.ts.map +1 -1
- package/dist/src/connection-manager/latency-monitor.js +220 -0
- package/dist/src/connection-manager/latency-monitor.js.map +1 -0
- package/dist/src/connection-manager/visibility-change-emitter.d.ts +15 -16
- package/dist/src/connection-manager/visibility-change-emitter.d.ts.map +1 -1
- package/dist/src/connection-manager/visibility-change-emitter.js +118 -0
- package/dist/src/connection-manager/visibility-change-emitter.js.map +1 -0
- package/dist/src/constants.d.ts +22 -10
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +27 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/content-routing/index.d.ts +27 -81
- package/dist/src/content-routing/index.d.ts.map +1 -1
- package/dist/src/content-routing/index.js +99 -0
- package/dist/src/content-routing/index.js.map +1 -0
- package/dist/src/content-routing/utils.d.ts +6 -49
- package/dist/src/content-routing/utils.d.ts.map +1 -1
- package/dist/src/content-routing/utils.js +42 -0
- package/dist/src/content-routing/utils.js.map +1 -0
- package/dist/src/dht/dht-content-routing.d.ts +10 -24
- package/dist/src/dht/dht-content-routing.d.ts.map +1 -1
- package/dist/src/dht/dht-content-routing.js +32 -0
- package/dist/src/dht/dht-content-routing.js.map +1 -0
- package/dist/src/dht/dht-peer-routing.d.ts +9 -24
- package/dist/src/dht/dht-peer-routing.d.ts.map +1 -1
- package/dist/src/dht/dht-peer-routing.js +26 -0
- package/dist/src/dht/dht-peer-routing.js.map +1 -0
- package/dist/src/dht/dummy-dht.d.ts +20 -0
- package/dist/src/dht/dummy-dht.d.ts.map +1 -0
- package/dist/src/dht/dummy-dht.js +46 -0
- package/dist/src/dht/dummy-dht.js.map +1 -0
- package/dist/src/errors.d.ts +71 -63
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +76 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/fetch/constants.d.ts +1 -1
- package/dist/src/fetch/constants.d.ts.map +1 -1
- package/dist/src/fetch/constants.js +3 -0
- package/dist/src/fetch/constants.js.map +1 -0
- package/dist/src/fetch/index.d.ts +30 -49
- package/dist/src/fetch/index.d.ts.map +1 -1
- package/dist/src/fetch/index.js +129 -0
- package/dist/src/fetch/index.js.map +1 -0
- package/dist/src/fetch/pb/proto.d.ts +27 -0
- package/dist/src/fetch/pb/proto.d.ts.map +1 -0
- package/dist/src/fetch/pb/proto.js +50 -0
- package/dist/src/fetch/pb/proto.js.map +1 -0
- package/dist/src/get-peer.d.ts +4 -11
- package/dist/src/get-peer.d.ts.map +1 -1
- package/dist/src/get-peer.js +43 -0
- package/dist/src/get-peer.js.map +1 -0
- package/dist/src/identify/consts.d.ts +9 -9
- package/dist/src/identify/consts.d.ts.map +1 -1
- package/dist/src/identify/consts.js +11 -0
- package/dist/src/identify/consts.js.map +1 -0
- package/dist/src/identify/index.d.ts +42 -96
- package/dist/src/identify/index.d.ts.map +1 -1
- package/dist/src/identify/index.js +322 -0
- package/dist/src/identify/index.js.map +1 -0
- package/dist/src/identify/pb/message.d.ts +16 -0
- package/dist/src/identify/pb/message.d.ts.map +1 -0
- package/dist/src/identify/pb/message.js +24 -0
- package/dist/src/identify/pb/message.js.map +1 -0
- package/dist/src/index.d.ts +150 -496
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/insecure/index.d.ts +9 -0
- package/dist/src/insecure/index.d.ts.map +1 -0
- package/dist/src/insecure/index.js +81 -0
- package/dist/src/insecure/index.js.map +1 -0
- package/dist/src/insecure/pb/proto.d.ts +29 -0
- package/dist/src/insecure/pb/proto.d.ts.map +1 -0
- package/dist/src/insecure/pb/proto.js +53 -0
- package/dist/src/insecure/pb/proto.js.map +1 -0
- package/dist/src/keychain/cms.d.ts +6 -14
- package/dist/src/keychain/cms.d.ts.map +1 -1
- package/dist/src/keychain/cms.js +129 -0
- package/dist/src/keychain/cms.js.map +1 -0
- package/dist/src/keychain/index.d.ts +60 -81
- package/dist/src/keychain/index.d.ts.map +1 -1
- package/dist/src/keychain/index.js +492 -0
- package/dist/src/keychain/index.js.map +1 -0
- package/dist/src/keychain/util.d.ts +3 -6
- package/dist/src/keychain/util.d.ts.map +1 -1
- package/dist/src/keychain/util.js +79 -0
- package/dist/src/keychain/util.js.map +1 -0
- package/dist/src/libp2p.d.ts +80 -0
- package/dist/src/libp2p.d.ts.map +1 -0
- package/dist/src/libp2p.js +397 -0
- package/dist/src/libp2p.js.map +1 -0
- package/dist/src/metrics/index.d.ts +47 -104
- package/dist/src/metrics/index.d.ts.map +1 -1
- package/dist/src/metrics/index.js +231 -0
- package/dist/src/metrics/index.js.map +1 -0
- package/dist/src/metrics/moving-average.d.ts +14 -0
- package/dist/src/metrics/moving-average.d.ts.map +1 -0
- package/dist/src/metrics/moving-average.js +40 -0
- package/dist/src/metrics/moving-average.js.map +1 -0
- package/dist/src/metrics/stats.d.ts +41 -93
- package/dist/src/metrics/stats.d.ts.map +1 -1
- package/dist/src/metrics/stats.js +183 -0
- package/dist/src/metrics/stats.js.map +1 -0
- package/dist/src/nat-manager.d.ts +45 -99
- package/dist/src/nat-manager.d.ts.map +1 -1
- package/dist/src/nat-manager.js +117 -0
- package/dist/src/nat-manager.js.map +1 -0
- package/dist/src/peer-record-updater.d.ts +15 -0
- package/dist/src/peer-record-updater.d.ts.map +1 -0
- package/dist/src/peer-record-updater.js +44 -0
- package/dist/src/peer-record-updater.js.map +1 -0
- package/dist/src/peer-routing.d.ts +40 -84
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +107 -0
- package/dist/src/peer-routing.js.map +1 -0
- package/dist/src/ping/constants.d.ts +4 -4
- package/dist/src/ping/constants.d.ts.map +1 -1
- package/dist/src/ping/constants.js +5 -0
- package/dist/src/ping/constants.js.map +1 -0
- package/dist/src/ping/index.d.ts +17 -31
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/ping/index.js +57 -0
- package/dist/src/ping/index.js.map +1 -0
- package/dist/src/pnet/crypto.d.ts +15 -5
- package/dist/src/pnet/crypto.d.ts.map +1 -1
- package/dist/src/pnet/crypto.js +60 -0
- package/dist/src/pnet/crypto.js.map +1 -0
- package/dist/src/pnet/errors.d.ts +5 -5
- package/dist/src/pnet/errors.d.ts.map +1 -1
- package/dist/src/pnet/errors.js +6 -0
- package/dist/src/pnet/errors.js.map +1 -0
- package/dist/src/pnet/index.d.ts +12 -20
- package/dist/src/pnet/index.d.ts.map +1 -1
- package/dist/src/pnet/index.js +67 -0
- package/dist/src/pnet/index.js.map +1 -0
- package/dist/src/pnet/key-generator.d.ts +3 -7
- package/dist/src/pnet/key-generator.d.ts.map +1 -1
- package/dist/src/pnet/key-generator.js +25 -0
- package/dist/src/pnet/key-generator.js.map +1 -0
- package/dist/src/pubsub/dummy-pubsub.d.ts +17 -0
- package/dist/src/pubsub/dummy-pubsub.d.ts.map +1 -0
- package/dist/src/pubsub/dummy-pubsub.js +37 -0
- package/dist/src/pubsub/dummy-pubsub.js.map +1 -0
- package/dist/src/registrar.d.ts +26 -65
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +144 -0
- package/dist/src/registrar.js.map +1 -0
- package/dist/src/transport-manager.d.ts +36 -82
- package/dist/src/transport-manager.d.ts.map +1 -1
- package/dist/src/transport-manager.js +223 -0
- package/dist/src/transport-manager.js.map +1 -0
- package/dist/src/upgrader.d.ts +49 -129
- package/dist/src/upgrader.d.ts.map +1 -1
- package/dist/src/upgrader.js +404 -0
- package/dist/src/upgrader.js.map +1 -0
- package/dist/src/version.d.ts +3 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +3 -0
- package/dist/src/version.js.map +1 -0
- package/package.json +143 -203
- package/src/address-manager/index.ts +130 -0
- package/src/circuit/README.md +16 -11
- package/src/circuit/auto-relay.ts +286 -0
- package/src/circuit/circuit/hop.ts +211 -0
- package/src/circuit/circuit/stop.ts +78 -0
- package/src/circuit/circuit/stream-handler.ts +86 -0
- package/src/circuit/circuit/{utils.js → utils.ts} +9 -25
- package/src/circuit/constants.ts +31 -0
- package/src/circuit/index.ts +120 -0
- package/src/circuit/listener.ts +82 -0
- package/src/circuit/multicodec.ts +2 -0
- package/src/circuit/{protocol → pb}/index.proto +1 -1
- package/src/circuit/pb/index.ts +117 -0
- package/src/circuit/transport.ts +219 -0
- package/src/circuit/utils.ts +12 -0
- package/src/config.ts +99 -0
- package/src/connection-manager/auto-dialler.ts +154 -0
- package/src/connection-manager/dialer/auto-dialer.ts +59 -0
- package/src/connection-manager/dialer/dial-request.ts +137 -0
- package/src/connection-manager/dialer/index.ts +381 -0
- package/src/connection-manager/index.ts +513 -0
- package/src/connection-manager/latency-monitor.ts +319 -0
- package/src/connection-manager/{visibility-change-emitter.js → visibility-change-emitter.ts} +48 -38
- package/src/constants.ts +31 -0
- package/src/content-routing/index.ts +144 -0
- package/src/content-routing/utils.ts +54 -0
- package/src/dht/dht-content-routing.ts +43 -0
- package/src/dht/dht-peer-routing.ts +35 -0
- package/src/dht/dummy-dht.ts +60 -0
- package/src/errors.ts +74 -0
- package/src/fetch/README.md +1 -1
- package/src/fetch/constants.ts +3 -0
- package/src/fetch/index.ts +167 -0
- package/src/fetch/{proto.proto → pb/proto.proto} +0 -0
- package/src/fetch/pb/proto.ts +65 -0
- package/src/get-peer.ts +57 -0
- package/src/identify/consts.ts +13 -0
- package/src/identify/index.ts +445 -0
- package/src/identify/{message.proto → pb/message.proto} +0 -0
- package/src/identify/pb/message.ts +37 -0
- package/src/index.ts +220 -0
- package/src/insecure/index.ts +101 -0
- package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
- package/src/insecure/pb/proto.ts +68 -0
- package/src/keychain/{cms.js → cms.ts} +62 -58
- package/src/keychain/index.ts +587 -0
- package/src/keychain/{util.js → util.ts} +7 -17
- package/src/libp2p.ts +538 -0
- package/src/metrics/index.ts +310 -0
- package/src/metrics/moving-average.ts +53 -0
- package/src/metrics/stats.ts +238 -0
- package/src/nat-manager.ts +198 -0
- package/src/peer-record-updater.ts +55 -0
- package/src/peer-routing.ts +185 -0
- package/src/ping/README.md +1 -1
- package/src/ping/constants.ts +5 -0
- package/src/ping/index.ts +84 -0
- package/src/pnet/README.md +2 -2
- package/src/pnet/crypto.ts +67 -0
- package/src/pnet/errors.ts +5 -0
- package/src/pnet/index.ts +97 -0
- package/src/pnet/key-generator.ts +28 -0
- package/src/pubsub/dummy-pubsub.ts +51 -0
- package/src/registrar.ts +189 -0
- package/src/transport-manager.ts +281 -0
- package/src/upgrader.ts +501 -0
- package/src/version.ts +3 -0
- package/dist/index.min.js +0 -55
- package/dist/src/circuit/protocol/index.d.ts +0 -173
- package/dist/src/dialer/dial-request.d.ts +0 -55
- package/dist/src/dialer/dial-request.d.ts.map +0 -1
- package/dist/src/dialer/index.d.ts +0 -182
- package/dist/src/dialer/index.d.ts.map +0 -1
- package/dist/src/fetch/proto.d.ts +0 -134
- package/dist/src/identify/message.d.ts +0 -95
- package/dist/src/insecure/plaintext.d.ts +0 -12
- package/dist/src/insecure/plaintext.d.ts.map +0 -1
- package/dist/src/insecure/proto.d.ts +0 -128
- package/dist/src/metrics/old-peers.d.ts +0 -3
- package/dist/src/metrics/old-peers.d.ts.map +0 -1
- package/dist/src/metrics/tracked-map.d.ts +0 -8
- package/dist/src/metrics/tracked-map.d.ts.map +0 -1
- package/dist/src/peer-store/address-book.d.ts +0 -67
- package/dist/src/peer-store/address-book.d.ts.map +0 -1
- package/dist/src/peer-store/index.d.ts +0 -58
- package/dist/src/peer-store/index.d.ts.map +0 -1
- package/dist/src/peer-store/key-book.d.ts +0 -40
- package/dist/src/peer-store/key-book.d.ts.map +0 -1
- package/dist/src/peer-store/metadata-book.d.ts +0 -58
- package/dist/src/peer-store/metadata-book.d.ts.map +0 -1
- package/dist/src/peer-store/pb/peer.d.ts +0 -222
- package/dist/src/peer-store/proto-book.d.ts +0 -43
- package/dist/src/peer-store/proto-book.d.ts.map +0 -1
- package/dist/src/peer-store/store.d.ts +0 -73
- package/dist/src/peer-store/store.d.ts.map +0 -1
- package/dist/src/peer-store/types.d.ts +0 -202
- package/dist/src/peer-store/types.d.ts.map +0 -1
- package/dist/src/ping/util.d.ts +0 -5
- package/dist/src/ping/util.d.ts.map +0 -1
- package/dist/src/pubsub-adapter.d.ts +0 -22
- package/dist/src/pubsub-adapter.d.ts.map +0 -1
- package/dist/src/record/envelope/envelope.d.ts +0 -77
- package/dist/src/record/envelope/index.d.ts +0 -80
- package/dist/src/record/envelope/index.d.ts.map +0 -1
- package/dist/src/record/peer-record/consts.d.ts +0 -4
- package/dist/src/record/peer-record/consts.d.ts.map +0 -1
- package/dist/src/record/peer-record/index.d.ts +0 -60
- package/dist/src/record/peer-record/index.d.ts.map +0 -1
- package/dist/src/record/peer-record/peer-record.d.ts +0 -133
- package/dist/src/record/utils.d.ts +0 -12
- package/dist/src/record/utils.d.ts.map +0 -1
- package/dist/src/types.d.ts +0 -90
- package/dist/src/types.d.ts.map +0 -1
- package/src/address-manager/index.js +0 -96
- package/src/circuit/auto-relay.js +0 -302
- package/src/circuit/circuit/hop.js +0 -205
- package/src/circuit/circuit/stop.js +0 -81
- package/src/circuit/circuit/stream-handler.js +0 -94
- package/src/circuit/constants.js +0 -12
- package/src/circuit/index.js +0 -102
- package/src/circuit/listener.js +0 -75
- package/src/circuit/multicodec.js +0 -5
- package/src/circuit/protocol/index.d.ts +0 -173
- package/src/circuit/protocol/index.js +0 -530
- package/src/circuit/transport.js +0 -229
- package/src/circuit/utils.js +0 -17
- package/src/config.js +0 -114
- package/src/connection-manager/auto-dialler.js +0 -132
- package/src/connection-manager/index.js +0 -374
- package/src/connection-manager/latency-monitor.js +0 -264
- package/src/constants.js +0 -18
- package/src/content-routing/index.js +0 -163
- package/src/content-routing/utils.js +0 -89
- package/src/dht/dht-content-routing.js +0 -44
- package/src/dht/dht-peer-routing.js +0 -51
- package/src/dialer/dial-request.js +0 -103
- package/src/dialer/index.js +0 -376
- package/src/errors.js +0 -66
- package/src/fetch/constants.js +0 -6
- package/src/fetch/index.js +0 -159
- package/src/fetch/proto.d.ts +0 -134
- package/src/fetch/proto.js +0 -333
- package/src/get-peer.js +0 -49
- package/src/identify/consts.js +0 -15
- package/src/identify/index.js +0 -384
- package/src/identify/message.d.ts +0 -95
- package/src/identify/message.js +0 -328
- package/src/index.js +0 -813
- package/src/insecure/plaintext.js +0 -95
- package/src/insecure/proto.d.ts +0 -128
- package/src/insecure/proto.js +0 -371
- package/src/keychain/index.js +0 -561
- package/src/metrics/index.js +0 -290
- package/src/metrics/old-peers.js +0 -16
- package/src/metrics/stats.js +0 -270
- package/src/metrics/tracked-map.js +0 -94
- package/src/nat-manager.js +0 -197
- package/src/peer-routing.js +0 -176
- package/src/peer-store/README.md +0 -145
- package/src/peer-store/address-book.js +0 -382
- package/src/peer-store/index.js +0 -121
- package/src/peer-store/key-book.js +0 -141
- package/src/peer-store/metadata-book.js +0 -250
- package/src/peer-store/pb/peer.d.ts +0 -222
- package/src/peer-store/pb/peer.js +0 -643
- package/src/peer-store/pb/peer.proto +0 -31
- package/src/peer-store/proto-book.js +0 -237
- package/src/peer-store/store.js +0 -263
- package/src/peer-store/types.ts +0 -245
- package/src/ping/constants.js +0 -8
- package/src/ping/index.js +0 -84
- package/src/ping/util.js +0 -18
- package/src/pnet/crypto.js +0 -84
- package/src/pnet/errors.js +0 -7
- package/src/pnet/index.js +0 -86
- package/src/pnet/key-generator.js +0 -33
- package/src/pubsub-adapter.js +0 -61
- package/src/record/README.md +0 -130
- package/src/record/envelope/envelope.d.ts +0 -77
- package/src/record/envelope/envelope.js +0 -243
- package/src/record/envelope/envelope.proto +0 -19
- package/src/record/envelope/index.js +0 -183
- package/src/record/peer-record/consts.js +0 -14
- package/src/record/peer-record/index.js +0 -113
- package/src/record/peer-record/peer-record.d.ts +0 -133
- package/src/record/peer-record/peer-record.js +0 -367
- package/src/record/peer-record/peer-record.proto +0 -18
- package/src/record/utils.js +0 -25
- package/src/registrar.js +0 -127
- package/src/transport-manager.js +0 -269
- package/src/types.ts +0 -98
- package/src/upgrader.js +0 -492
package/src/config.ts
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import mergeOptions from 'merge-options'
|
|
2
|
+
import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
|
|
3
|
+
import * as Constants from './constants.js'
|
|
4
|
+
import { AGENT_VERSION } from './identify/consts.js'
|
|
5
|
+
import * as RelayConstants from './circuit/constants.js'
|
|
6
|
+
import { publicAddressesFirst } from '@libp2p/utils/address-sort'
|
|
7
|
+
import { FaultTolerance } from './transport-manager.js'
|
|
8
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
9
|
+
import type { Libp2pInit } from './index.js'
|
|
10
|
+
import { codes, messages } from './errors.js'
|
|
11
|
+
import errCode from 'err-code'
|
|
12
|
+
import type { RecursivePartial } from '@libp2p/interfaces'
|
|
13
|
+
|
|
14
|
+
const DefaultConfig: Partial<Libp2pInit> = {
|
|
15
|
+
addresses: {
|
|
16
|
+
listen: [],
|
|
17
|
+
announce: [],
|
|
18
|
+
noAnnounce: [],
|
|
19
|
+
announceFilter: (multiaddrs: Multiaddr[]) => multiaddrs
|
|
20
|
+
},
|
|
21
|
+
connectionManager: {
|
|
22
|
+
maxConnections: 300,
|
|
23
|
+
minConnections: 50,
|
|
24
|
+
autoDial: true,
|
|
25
|
+
autoDialInterval: 10000,
|
|
26
|
+
maxParallelDials: Constants.MAX_PARALLEL_DIALS,
|
|
27
|
+
maxDialsPerPeer: Constants.MAX_PER_PEER_DIALS,
|
|
28
|
+
dialTimeout: Constants.DIAL_TIMEOUT,
|
|
29
|
+
resolvers: {
|
|
30
|
+
dnsaddr: dnsaddrResolver
|
|
31
|
+
},
|
|
32
|
+
addressSorter: publicAddressesFirst
|
|
33
|
+
},
|
|
34
|
+
connectionGater: {},
|
|
35
|
+
transportManager: {
|
|
36
|
+
faultTolerance: FaultTolerance.FATAL_ALL
|
|
37
|
+
},
|
|
38
|
+
host: {
|
|
39
|
+
agentVersion: AGENT_VERSION
|
|
40
|
+
},
|
|
41
|
+
metrics: {
|
|
42
|
+
enabled: false,
|
|
43
|
+
computeThrottleMaxQueueSize: 1000,
|
|
44
|
+
computeThrottleTimeout: 2000,
|
|
45
|
+
movingAverageIntervals: [
|
|
46
|
+
60 * 1000, // 1 minute
|
|
47
|
+
5 * 60 * 1000, // 5 minutes
|
|
48
|
+
15 * 60 * 1000 // 15 minutes
|
|
49
|
+
],
|
|
50
|
+
maxOldPeersRetention: 50
|
|
51
|
+
},
|
|
52
|
+
peerRouting: {
|
|
53
|
+
refreshManager: {
|
|
54
|
+
enabled: true,
|
|
55
|
+
interval: 6e5,
|
|
56
|
+
bootDelay: 10e3
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
protocolPrefix: 'ipfs',
|
|
60
|
+
nat: {
|
|
61
|
+
enabled: true,
|
|
62
|
+
ttl: 7200,
|
|
63
|
+
keepAlive: true
|
|
64
|
+
},
|
|
65
|
+
relay: {
|
|
66
|
+
enabled: true,
|
|
67
|
+
advertise: {
|
|
68
|
+
bootDelay: RelayConstants.ADVERTISE_BOOT_DELAY,
|
|
69
|
+
enabled: false,
|
|
70
|
+
ttl: RelayConstants.ADVERTISE_TTL
|
|
71
|
+
},
|
|
72
|
+
hop: {
|
|
73
|
+
enabled: false,
|
|
74
|
+
active: false
|
|
75
|
+
},
|
|
76
|
+
autoRelay: {
|
|
77
|
+
enabled: false,
|
|
78
|
+
maxListeners: 2
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export function validateConfig (opts: RecursivePartial<Libp2pInit>): Libp2pInit {
|
|
84
|
+
const resultingOptions: Libp2pInit = mergeOptions(DefaultConfig, opts)
|
|
85
|
+
|
|
86
|
+
if (resultingOptions.transports == null || resultingOptions.transports.length < 1) {
|
|
87
|
+
throw errCode(new Error(messages.ERR_TRANSPORTS_REQUIRED), codes.ERR_TRANSPORTS_REQUIRED)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (resultingOptions.connectionEncryption == null || resultingOptions.connectionEncryption.length === 0) {
|
|
91
|
+
throw errCode(new Error(messages.CONN_ENCRYPTION_REQUIRED), codes.CONN_ENCRYPTION_REQUIRED)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (resultingOptions.connectionProtector === null && globalThis.process?.env?.LIBP2P_FORCE_PNET != null) { // eslint-disable-line no-undef
|
|
95
|
+
throw errCode(new Error(messages.ERR_PROTECTOR_REQUIRED), codes.ERR_PROTECTOR_REQUIRED)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return resultingOptions
|
|
99
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger'
|
|
2
|
+
import mergeOptions from 'merge-options'
|
|
3
|
+
// @ts-expect-error retimer does not have types
|
|
4
|
+
import retimer from 'retimer'
|
|
5
|
+
import all from 'it-all'
|
|
6
|
+
import { pipe } from 'it-pipe'
|
|
7
|
+
import filter from 'it-filter'
|
|
8
|
+
import sort from 'it-sort'
|
|
9
|
+
import type { Startable } from '@libp2p/interfaces/startable'
|
|
10
|
+
import type { Components } from '@libp2p/interfaces/components'
|
|
11
|
+
|
|
12
|
+
const log = logger('libp2p:connection-manager:auto-dialler')
|
|
13
|
+
|
|
14
|
+
export interface AutoDiallerInit {
|
|
15
|
+
/**
|
|
16
|
+
* Should preemptively guarantee connections are above the low watermark
|
|
17
|
+
*/
|
|
18
|
+
enabled?: boolean
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The minimum number of connections to avoid pruning
|
|
22
|
+
*/
|
|
23
|
+
minConnections?: number
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* How often, in milliseconds, it should preemptively guarantee connections are above the low watermark
|
|
27
|
+
*/
|
|
28
|
+
autoDialInterval?: number
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const defaultOptions: Partial<AutoDiallerInit> = {
|
|
32
|
+
enabled: true,
|
|
33
|
+
minConnections: 0,
|
|
34
|
+
autoDialInterval: 10000
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export class AutoDialler implements Startable {
|
|
38
|
+
private readonly components: Components
|
|
39
|
+
private readonly options: Required<AutoDiallerInit>
|
|
40
|
+
private running: boolean
|
|
41
|
+
private autoDialTimeout?: ReturnType<retimer>
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Proactively tries to connect to known peers stored in the PeerStore.
|
|
45
|
+
* It will keep the number of connections below the upper limit and sort
|
|
46
|
+
* the peers to connect based on wether we know their keys and protocols.
|
|
47
|
+
*/
|
|
48
|
+
constructor (components: Components, init: AutoDiallerInit) {
|
|
49
|
+
this.components = components
|
|
50
|
+
this.options = mergeOptions.call({ ignoreUndefined: true }, defaultOptions, init)
|
|
51
|
+
this.running = false
|
|
52
|
+
this._autoDial = this._autoDial.bind(this)
|
|
53
|
+
|
|
54
|
+
log('options: %j', this.options)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
isStarted () {
|
|
58
|
+
return this.running
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Starts the auto dialer
|
|
63
|
+
*/
|
|
64
|
+
async start () {
|
|
65
|
+
if (!this.options.enabled) {
|
|
66
|
+
log('not enabled')
|
|
67
|
+
return
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
this.running = true
|
|
71
|
+
|
|
72
|
+
void this._autoDial().catch(err => {
|
|
73
|
+
log.error('could start autodial', err)
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
log('started')
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Stops the auto dialler
|
|
81
|
+
*/
|
|
82
|
+
async stop () {
|
|
83
|
+
if (!this.options.enabled) {
|
|
84
|
+
log('not enabled')
|
|
85
|
+
return
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this.running = false
|
|
89
|
+
|
|
90
|
+
if (this.autoDialTimeout != null) {
|
|
91
|
+
this.autoDialTimeout.clear()
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
log('stopped')
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async _autoDial () {
|
|
98
|
+
if (this.autoDialTimeout != null) {
|
|
99
|
+
this.autoDialTimeout.clear()
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const minConnections = this.options.minConnections
|
|
103
|
+
|
|
104
|
+
// Already has enough connections
|
|
105
|
+
if (this.components.getConnectionManager().getConnections().length >= minConnections) {
|
|
106
|
+
this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval)
|
|
107
|
+
|
|
108
|
+
return
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Sort peers on whether we know protocols or public keys for them
|
|
112
|
+
const allPeers = await this.components.getPeerStore().all()
|
|
113
|
+
|
|
114
|
+
const peers = await pipe(
|
|
115
|
+
// shuffle the peers
|
|
116
|
+
allPeers.sort(() => Math.random() > 0.5 ? 1 : -1),
|
|
117
|
+
(source) => filter(source, (peer) => !peer.id.equals(this.components.getPeerId())),
|
|
118
|
+
(source) => sort(source, (a, b) => {
|
|
119
|
+
if (b.protocols.length > a.protocols.length) {
|
|
120
|
+
return 1
|
|
121
|
+
} else if (b.id.publicKey != null && a.id.publicKey == null) {
|
|
122
|
+
return 1
|
|
123
|
+
}
|
|
124
|
+
return -1
|
|
125
|
+
}),
|
|
126
|
+
async (source) => await all(source)
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
for (let i = 0; this.running && i < peers.length && this.components.getConnectionManager().getConnections().length < minConnections; i++) {
|
|
130
|
+
// Connection Manager was stopped during async dial
|
|
131
|
+
if (!this.running) {
|
|
132
|
+
return
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const peer = peers[i]
|
|
136
|
+
|
|
137
|
+
if (this.components.getConnectionManager().getConnections(peer.id).length === 0) {
|
|
138
|
+
log('connecting to a peerStore stored peer %p', peer.id)
|
|
139
|
+
try {
|
|
140
|
+
await this.components.getConnectionManager().openConnection(peer.id)
|
|
141
|
+
} catch (err: any) {
|
|
142
|
+
log.error('could not connect to peerStore stored peer', err)
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Connection Manager was stopped
|
|
148
|
+
if (!this.running) {
|
|
149
|
+
return
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
this.autoDialTimeout = retimer(this._autoDial, this.options.autoDialInterval)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { PeerInfo } from '@libp2p/interfaces/peer-info'
|
|
2
|
+
import { logger } from '@libp2p/logger'
|
|
3
|
+
import type { Components } from '@libp2p/interfaces/components'
|
|
4
|
+
import { TimeoutController } from 'timeout-abort-controller'
|
|
5
|
+
|
|
6
|
+
const log = logger('libp2p:dialer:auto-dialer')
|
|
7
|
+
|
|
8
|
+
export interface AutoDialerInit {
|
|
9
|
+
enabled: boolean
|
|
10
|
+
minConnections: number
|
|
11
|
+
dialTimeout: number
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class AutoDialer {
|
|
15
|
+
private readonly components: Components
|
|
16
|
+
private readonly enabled: boolean
|
|
17
|
+
private readonly minConnections: number
|
|
18
|
+
private readonly dialTimeout: number
|
|
19
|
+
|
|
20
|
+
constructor (components: Components, init: AutoDialerInit) {
|
|
21
|
+
this.components = components
|
|
22
|
+
this.enabled = init.enabled
|
|
23
|
+
this.minConnections = init.minConnections
|
|
24
|
+
this.dialTimeout = init.dialTimeout
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public handle (evt: CustomEvent<PeerInfo>) {
|
|
28
|
+
const { detail: peer } = evt
|
|
29
|
+
|
|
30
|
+
if (!this.enabled) {
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const connections = this.components.getConnectionManager().getConnections(peer.id)
|
|
35
|
+
|
|
36
|
+
// If auto dialing is on and we have no connection to the peer, check if we should dial
|
|
37
|
+
if (connections.length === 0) {
|
|
38
|
+
const minConnections = this.minConnections ?? 0
|
|
39
|
+
|
|
40
|
+
const allConnections = this.components.getConnectionManager().getConnections()
|
|
41
|
+
|
|
42
|
+
if (minConnections > allConnections.length) {
|
|
43
|
+
log('auto-dialing discovered peer %p with timeout %d', peer.id, this.dialTimeout)
|
|
44
|
+
|
|
45
|
+
const controller = new TimeoutController(this.dialTimeout)
|
|
46
|
+
|
|
47
|
+
void this.components.getConnectionManager().openConnection(peer.id, {
|
|
48
|
+
signal: controller.signal
|
|
49
|
+
})
|
|
50
|
+
.catch(err => {
|
|
51
|
+
log.error('could not connect to discovered peer %p with %o', peer.id, err)
|
|
52
|
+
})
|
|
53
|
+
.finally(() => {
|
|
54
|
+
controller.clear()
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import errCode from 'err-code'
|
|
2
|
+
import { anySignal } from 'any-signal'
|
|
3
|
+
import FIFO from 'p-fifo'
|
|
4
|
+
import { setMaxListeners } from 'events'
|
|
5
|
+
import { codes } from '../../errors.js'
|
|
6
|
+
import { logger } from '@libp2p/logger'
|
|
7
|
+
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
8
|
+
import type { Connection } from '@libp2p/interfaces/connection'
|
|
9
|
+
import type { AbortOptions } from '@libp2p/interfaces'
|
|
10
|
+
import type { Dialer } from './index.js'
|
|
11
|
+
|
|
12
|
+
const log = logger('libp2p:dialer:dial-request')
|
|
13
|
+
|
|
14
|
+
export interface DialAction {
|
|
15
|
+
(m: Multiaddr, options: AbortOptions): Promise<Connection>
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface DialRequestOptions {
|
|
19
|
+
addrs: Multiaddr[]
|
|
20
|
+
dialAction: DialAction
|
|
21
|
+
dialer: Dialer
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export class DialRequest {
|
|
25
|
+
private readonly addrs: Multiaddr[]
|
|
26
|
+
private readonly dialer: Dialer
|
|
27
|
+
private readonly dialAction: DialAction
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Manages running the `dialAction` on multiple provided `addrs` in parallel
|
|
31
|
+
* up to a maximum determined by the number of tokens returned
|
|
32
|
+
* from `dialer.getTokens`. Once a DialRequest is created, it can be
|
|
33
|
+
* started using `DialRequest.run(options)`. Once a single dial has succeeded,
|
|
34
|
+
* all other dials in the request will be cancelled.
|
|
35
|
+
*/
|
|
36
|
+
constructor (options: DialRequestOptions) {
|
|
37
|
+
const {
|
|
38
|
+
addrs,
|
|
39
|
+
dialAction,
|
|
40
|
+
dialer
|
|
41
|
+
} = options
|
|
42
|
+
|
|
43
|
+
this.addrs = addrs
|
|
44
|
+
this.dialer = dialer
|
|
45
|
+
this.dialAction = dialAction
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async run (options: AbortOptions = {}): Promise<Connection> {
|
|
49
|
+
const tokens = this.dialer.getTokens(this.addrs.length)
|
|
50
|
+
|
|
51
|
+
// If no tokens are available, throw
|
|
52
|
+
if (tokens.length < 1) {
|
|
53
|
+
throw errCode(new Error('No dial tokens available'), codes.ERR_NO_DIAL_TOKENS)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const tokenHolder = new FIFO<number>()
|
|
57
|
+
|
|
58
|
+
for (const token of tokens) {
|
|
59
|
+
void tokenHolder.push(token).catch(err => {
|
|
60
|
+
log.error(err)
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const dialAbortControllers: Array<(AbortController | undefined)> = this.addrs.map(() => {
|
|
65
|
+
const controller = new AbortController()
|
|
66
|
+
try {
|
|
67
|
+
// fails on node < 15.4
|
|
68
|
+
setMaxListeners?.(Infinity, controller.signal)
|
|
69
|
+
} catch {}
|
|
70
|
+
|
|
71
|
+
return controller
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
if (options.signal != null) {
|
|
75
|
+
try {
|
|
76
|
+
// fails on node < 15.4
|
|
77
|
+
setMaxListeners?.(Infinity, options.signal)
|
|
78
|
+
} catch {}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
let completedDials = 0
|
|
82
|
+
let done = false
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
return await Promise.any(this.addrs.map(async (addr, i) => {
|
|
86
|
+
const token = await tokenHolder.shift() // get token
|
|
87
|
+
// End attempt once another attempt succeeded
|
|
88
|
+
if (done) {
|
|
89
|
+
this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0])
|
|
90
|
+
throw errCode(new Error('dialAction already succeeded'), codes.ERR_ALREADY_SUCCEEDED)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
const controller = dialAbortControllers[i]
|
|
94
|
+
if (controller == null) {
|
|
95
|
+
throw errCode(new Error('dialAction did not come with an AbortController'), codes.ERR_INVALID_PARAMETERS)
|
|
96
|
+
}
|
|
97
|
+
let conn
|
|
98
|
+
try {
|
|
99
|
+
const signal = controller.signal
|
|
100
|
+
conn = await this.dialAction(addr, { ...options, signal: (options.signal != null) ? anySignal([signal, options.signal]) : signal })
|
|
101
|
+
// Remove the successful AbortController so it is not aborted
|
|
102
|
+
dialAbortControllers[i] = undefined
|
|
103
|
+
} finally {
|
|
104
|
+
completedDials++
|
|
105
|
+
// If we have more or equal dials remaining than tokens, recycle the token, otherwise release it
|
|
106
|
+
if (this.addrs.length - completedDials >= tokens.length) {
|
|
107
|
+
void tokenHolder.push(token).catch(err => {
|
|
108
|
+
log.error(err)
|
|
109
|
+
})
|
|
110
|
+
} else {
|
|
111
|
+
this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0])
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (conn == null) {
|
|
116
|
+
// Notify Promise.any that attempt was not successful
|
|
117
|
+
// to prevent from returning undefined despite there
|
|
118
|
+
// were successful dial attempts
|
|
119
|
+
throw errCode(new Error('dialAction led to empty object'), codes.ERR_TRANSPORT_DIAL_FAILED)
|
|
120
|
+
} else {
|
|
121
|
+
// This dial succeeded, don't attempt anything else
|
|
122
|
+
done = true
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return conn
|
|
126
|
+
}))
|
|
127
|
+
} finally {
|
|
128
|
+
// success/failure happened, abort everything else
|
|
129
|
+
dialAbortControllers.forEach(c => {
|
|
130
|
+
if (c !== undefined) {
|
|
131
|
+
c.abort()
|
|
132
|
+
}
|
|
133
|
+
})
|
|
134
|
+
tokens.forEach(token => this.dialer.releaseToken(token)) // release tokens back to the dialer
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|