libp2p 0.36.0 → 0.36.2-1473044
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 +33 -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 +215 -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 +54 -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 +51 -0
- package/dist/src/circuit/pb/index.d.ts.map +1 -0
- package/dist/src/circuit/pb/index.js +72 -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 +190 -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 +93 -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/index.d.ts +79 -144
- package/dist/src/connection-manager/index.d.ts.map +1 -1
- package/dist/src/connection-manager/index.js +295 -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 +26 -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/dialer/auto-dialer.d.ts +14 -0
- package/dist/src/dialer/auto-dialer.d.ts.map +1 -0
- package/dist/src/dialer/auto-dialer.js +24 -0
- package/dist/src/dialer/auto-dialer.js.map +1 -0
- package/dist/src/dialer/dial-request.d.ts +18 -46
- package/dist/src/dialer/dial-request.d.ts.map +1 -1
- package/dist/src/dialer/dial-request.js +83 -0
- package/dist/src/dialer/dial-request.js.map +1 -0
- package/dist/src/dialer/index.d.ts +41 -148
- package/dist/src/dialer/index.d.ts.map +1 -1
- package/dist/src/dialer/index.js +280 -0
- package/dist/src/dialer/index.js.map +1 -0
- package/dist/src/errors.d.ts +68 -63
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +73 -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 +26 -0
- package/dist/src/fetch/pb/proto.d.ts.map +1 -0
- package/dist/src/fetch/pb/proto.js +44 -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 +15 -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 +162 -581
- 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 +28 -0
- package/dist/src/insecure/pb/proto.d.ts.map +1 -0
- package/dist/src/insecure/pb/proto.js +46 -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 +61 -81
- package/dist/src/keychain/index.d.ts.map +1 -1
- package/dist/src/keychain/index.js +493 -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 +78 -0
- package/dist/src/libp2p.d.ts.map +1 -0
- package/dist/src/libp2p.js +375 -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 +42 -99
- package/dist/src/nat-manager.d.ts.map +1 -1
- package/dist/src/nat-manager.js +114 -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 +39 -84
- package/dist/src/peer-routing.d.ts.map +1 -1
- package/dist/src/peer-routing.js +108 -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 +26 -33
- package/dist/src/ping/index.d.ts.map +1 -1
- package/dist/src/ping/index.js +56 -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 +11 -20
- package/dist/src/pnet/index.d.ts.map +1 -1
- package/dist/src/pnet/index.js +66 -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/registrar.d.ts +27 -65
- package/dist/src/registrar.d.ts.map +1 -1
- package/dist/src/registrar.js +159 -0
- package/dist/src/registrar.js.map +1 -0
- package/dist/src/transport-manager.d.ts +34 -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 +402 -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 +150 -197
- package/src/address-manager/index.ts +129 -0
- package/src/circuit/README.md +16 -11
- package/src/circuit/auto-relay.ts +284 -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.js → listener.ts} +21 -27
- package/src/circuit/multicodec.ts +2 -0
- package/src/circuit/{protocol → pb}/index.proto +1 -1
- package/src/circuit/pb/index.ts +88 -0
- package/src/circuit/transport.ts +216 -0
- package/src/circuit/utils.ts +12 -0
- package/src/config.ts +101 -0
- package/src/connection-manager/auto-dialler.ts +154 -0
- package/src/connection-manager/index.ts +422 -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 +143 -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/dialer/auto-dialer.ts +40 -0
- package/src/dialer/{dial-request.js → dial-request.ts} +60 -51
- package/src/dialer/index.ts +371 -0
- package/src/errors.ts +71 -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 +58 -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 +36 -0
- package/src/index.ts +242 -0
- package/src/insecure/index.ts +101 -0
- package/src/insecure/{proto.proto → pb/proto.proto} +0 -0
- package/src/insecure/pb/proto.ts +61 -0
- package/src/keychain/{cms.js → cms.ts} +62 -58
- package/src/keychain/index.ts +588 -0
- package/src/keychain/{util.js → util.ts} +7 -17
- package/src/libp2p.ts +513 -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 +194 -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 +83 -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 +95 -0
- package/src/pnet/key-generator.ts +28 -0
- package/src/registrar.ts +205 -0
- package/src/transport-manager.ts +279 -0
- package/src/upgrader.ts +499 -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/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/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 -363
- 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/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 -811
- 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 -85
- 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
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const debug = require('debug')
|
|
4
|
-
const log = Object.assign(debug('libp2p:circuit:stop'), {
|
|
5
|
-
error: debug('libp2p:circuit:stop:err')
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
const { CircuitRelay: CircuitPB } = require('../protocol')
|
|
9
|
-
const multicodec = require('../multicodec')
|
|
10
|
-
const StreamHandler = require('./stream-handler')
|
|
11
|
-
const { validateAddrs } = require('./utils')
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @typedef {import('libp2p-interfaces/src/connection').Connection} Connection
|
|
15
|
-
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
|
|
16
|
-
* @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Handles incoming STOP requests
|
|
21
|
-
*
|
|
22
|
-
* @private
|
|
23
|
-
* @param {Object} options
|
|
24
|
-
* @param {Connection} options.connection
|
|
25
|
-
* @param {ICircuitRelay} options.request - The CircuitRelay protobuf request (unencoded)
|
|
26
|
-
* @param {StreamHandler} options.streamHandler
|
|
27
|
-
* @returns {Promise<MuxedStream>|void} Resolves a duplex iterable
|
|
28
|
-
*/
|
|
29
|
-
module.exports.handleStop = function handleStop ({
|
|
30
|
-
connection,
|
|
31
|
-
request,
|
|
32
|
-
streamHandler
|
|
33
|
-
}) {
|
|
34
|
-
// Validate the STOP request has the required input
|
|
35
|
-
try {
|
|
36
|
-
validateAddrs(request, streamHandler)
|
|
37
|
-
} catch (/** @type {any} */ err) {
|
|
38
|
-
return log.error('invalid stop request via peer %s', connection.remotePeer.toB58String(), err)
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// The request is valid
|
|
42
|
-
log('stop request is valid')
|
|
43
|
-
streamHandler.write({
|
|
44
|
-
type: CircuitPB.Type.STATUS,
|
|
45
|
-
code: CircuitPB.Status.SUCCESS
|
|
46
|
-
})
|
|
47
|
-
return streamHandler.rest()
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Creates a STOP request
|
|
52
|
-
*
|
|
53
|
-
* @private
|
|
54
|
-
* @param {Object} options
|
|
55
|
-
* @param {Connection} options.connection
|
|
56
|
-
* @param {ICircuitRelay} options.request - The CircuitRelay protobuf request (unencoded)
|
|
57
|
-
* @returns {Promise<MuxedStream|void>} Resolves a duplex iterable
|
|
58
|
-
*/
|
|
59
|
-
module.exports.stop = async function stop ({
|
|
60
|
-
connection,
|
|
61
|
-
request
|
|
62
|
-
}) {
|
|
63
|
-
const { stream } = await connection.newStream([multicodec.relay])
|
|
64
|
-
log('starting stop request to %s', connection.remotePeer.toB58String())
|
|
65
|
-
const streamHandler = new StreamHandler({ stream })
|
|
66
|
-
|
|
67
|
-
streamHandler.write(request)
|
|
68
|
-
const response = await streamHandler.read()
|
|
69
|
-
|
|
70
|
-
if (!response) {
|
|
71
|
-
return streamHandler.close()
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
if (response.code === CircuitPB.Status.SUCCESS) {
|
|
75
|
-
log('stop request to %s was successful', connection.remotePeer.toB58String())
|
|
76
|
-
return streamHandler.rest()
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
log('stop request failed with code %d', response.code)
|
|
80
|
-
streamHandler.close()
|
|
81
|
-
}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const debug = require('debug')
|
|
4
|
-
const log = Object.assign(debug('libp2p:circuit:stream-handler'), {
|
|
5
|
-
error: debug('libp2p:circuit:stream-handler:err')
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
const lp = require('it-length-prefixed')
|
|
9
|
-
// @ts-ignore it-handshake does not export types
|
|
10
|
-
const handshake = require('it-handshake')
|
|
11
|
-
const { CircuitRelay } = require('../protocol')
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @typedef {import('libp2p-interfaces/src/stream-muxer/types').MuxedStream} MuxedStream
|
|
15
|
-
* @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
class StreamHandler {
|
|
19
|
-
/**
|
|
20
|
-
* Create a stream handler for connection
|
|
21
|
-
*
|
|
22
|
-
* @class
|
|
23
|
-
* @param {object} options
|
|
24
|
-
* @param {MuxedStream} options.stream - A duplex iterable
|
|
25
|
-
* @param {number} [options.maxLength = 4096] - max bytes length of message
|
|
26
|
-
*/
|
|
27
|
-
constructor ({ stream, maxLength = 4096 }) {
|
|
28
|
-
this.stream = stream
|
|
29
|
-
|
|
30
|
-
this.shake = handshake(this.stream)
|
|
31
|
-
// @ts-ignore options are not optional
|
|
32
|
-
this.decoder = lp.decode.fromReader(this.shake.reader, { maxDataLength: maxLength })
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Read and decode message
|
|
37
|
-
*
|
|
38
|
-
* @async
|
|
39
|
-
*/
|
|
40
|
-
async read () {
|
|
41
|
-
const msg = await this.decoder.next()
|
|
42
|
-
if (msg.value) {
|
|
43
|
-
const value = CircuitRelay.decode(msg.value.slice())
|
|
44
|
-
log('read message type', value.type)
|
|
45
|
-
return value
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
log('read received no value, closing stream')
|
|
49
|
-
// End the stream, we didn't get data
|
|
50
|
-
this.close()
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Encode and write array of buffers
|
|
55
|
-
*
|
|
56
|
-
* @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
|
|
57
|
-
* @returns {void}
|
|
58
|
-
*/
|
|
59
|
-
write (msg) {
|
|
60
|
-
log('write message type %s', msg.type)
|
|
61
|
-
// @ts-ignore lp.encode expects type type 'Buffer | BufferList', not 'Uint8Array'
|
|
62
|
-
this.shake.write(lp.encode.single(CircuitRelay.encode(msg).finish()))
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Return the handshake rest stream and invalidate handler
|
|
67
|
-
*
|
|
68
|
-
* @returns {*} A duplex iterable
|
|
69
|
-
*/
|
|
70
|
-
rest () {
|
|
71
|
-
this.shake.rest()
|
|
72
|
-
return this.shake.stream
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
|
|
77
|
-
*/
|
|
78
|
-
end (msg) {
|
|
79
|
-
this.write(msg)
|
|
80
|
-
this.close()
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Close the stream
|
|
85
|
-
*
|
|
86
|
-
* @returns {void}
|
|
87
|
-
*/
|
|
88
|
-
close () {
|
|
89
|
-
log('closing the stream')
|
|
90
|
-
this.rest().sink([])
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
module.exports = StreamHandler
|
package/src/circuit/constants.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const minute = 60 * 1000
|
|
4
|
-
|
|
5
|
-
module.exports = {
|
|
6
|
-
ADVERTISE_BOOT_DELAY: 15 * minute, // Delay before HOP relay service is advertised on the network
|
|
7
|
-
ADVERTISE_TTL: 30 * minute, // Delay Between HOP relay service advertisements on the network
|
|
8
|
-
CIRCUIT_PROTO_CODE: 290, // Multicodec code
|
|
9
|
-
HOP_METADATA_KEY: 'hop_relay', // PeerStore metadaBook key for HOP relay service
|
|
10
|
-
HOP_METADATA_VALUE: 'true', // PeerStore metadaBook value for HOP relay service
|
|
11
|
-
RELAY_RENDEZVOUS_NS: '/libp2p/relay' // Relay HOP relay service namespace for discovery
|
|
12
|
-
}
|
package/src/circuit/index.js
DELETED
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const debug = require('debug')
|
|
4
|
-
const log = Object.assign(debug('libp2p:relay'), {
|
|
5
|
-
error: debug('libp2p:relay:err')
|
|
6
|
-
})
|
|
7
|
-
const { codes } = require('./../errors')
|
|
8
|
-
const {
|
|
9
|
-
setDelayedInterval,
|
|
10
|
-
clearDelayedInterval
|
|
11
|
-
// @ts-ignore set-delayed-interval does not export types
|
|
12
|
-
} = require('set-delayed-interval')
|
|
13
|
-
|
|
14
|
-
const AutoRelay = require('./auto-relay')
|
|
15
|
-
const { namespaceToCid } = require('./utils')
|
|
16
|
-
const {
|
|
17
|
-
RELAY_RENDEZVOUS_NS
|
|
18
|
-
} = require('./constants')
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @typedef {import('../')} Libp2p
|
|
22
|
-
*
|
|
23
|
-
* @typedef {Object} RelayAdvertiseOptions
|
|
24
|
-
* @property {number} [bootDelay = ADVERTISE_BOOT_DELAY]
|
|
25
|
-
* @property {boolean} [enabled = true]
|
|
26
|
-
* @property {number} [ttl = ADVERTISE_TTL]
|
|
27
|
-
*
|
|
28
|
-
* @typedef {Object} HopOptions
|
|
29
|
-
* @property {boolean} [enabled = false]
|
|
30
|
-
* @property {boolean} [active = false]
|
|
31
|
-
*
|
|
32
|
-
* @typedef {Object} AutoRelayOptions
|
|
33
|
-
* @property {number} [maxListeners = 2] - maximum number of relays to listen.
|
|
34
|
-
* @property {boolean} [enabled = false]
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
class Relay {
|
|
38
|
-
/**
|
|
39
|
-
* Creates an instance of Relay.
|
|
40
|
-
*
|
|
41
|
-
* @class
|
|
42
|
-
* @param {Libp2p} libp2p
|
|
43
|
-
*/
|
|
44
|
-
constructor (libp2p) {
|
|
45
|
-
this._libp2p = libp2p
|
|
46
|
-
this._options = {
|
|
47
|
-
...libp2p._config.relay
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Create autoRelay if enabled
|
|
51
|
-
this._autoRelay = this._options.autoRelay.enabled && new AutoRelay({ libp2p, ...this._options.autoRelay })
|
|
52
|
-
|
|
53
|
-
this._advertiseService = this._advertiseService.bind(this)
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Start Relay service.
|
|
58
|
-
*
|
|
59
|
-
* @returns {void}
|
|
60
|
-
*/
|
|
61
|
-
start () {
|
|
62
|
-
// Advertise service if HOP enabled
|
|
63
|
-
const canHop = this._options.hop.enabled
|
|
64
|
-
|
|
65
|
-
if (canHop && this._options.advertise.enabled) {
|
|
66
|
-
this._timeout = setDelayedInterval(
|
|
67
|
-
this._advertiseService, this._options.advertise.ttl, this._options.advertise.bootDelay
|
|
68
|
-
)
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Stop Relay service.
|
|
74
|
-
*
|
|
75
|
-
* @returns {void}
|
|
76
|
-
*/
|
|
77
|
-
stop () {
|
|
78
|
-
clearDelayedInterval(this._timeout)
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Advertise hop relay service in the network.
|
|
83
|
-
*
|
|
84
|
-
* @returns {Promise<void>}
|
|
85
|
-
*/
|
|
86
|
-
async _advertiseService () {
|
|
87
|
-
try {
|
|
88
|
-
const cid = await namespaceToCid(RELAY_RENDEZVOUS_NS)
|
|
89
|
-
await this._libp2p.contentRouting.provide(cid)
|
|
90
|
-
} catch (/** @type {any} */ err) {
|
|
91
|
-
if (err.code === codes.ERR_NO_ROUTERS_AVAILABLE) {
|
|
92
|
-
log.error('a content router, such as a DHT, must be provided in order to advertise the relay service', err)
|
|
93
|
-
// Stop the advertise
|
|
94
|
-
this.stop()
|
|
95
|
-
} else {
|
|
96
|
-
log.error(err)
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
module.exports = Relay
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import * as $protobuf from "protobufjs";
|
|
2
|
-
/** Properties of a CircuitRelay. */
|
|
3
|
-
export interface ICircuitRelay {
|
|
4
|
-
|
|
5
|
-
/** CircuitRelay type */
|
|
6
|
-
type?: (CircuitRelay.Type|null);
|
|
7
|
-
|
|
8
|
-
/** CircuitRelay srcPeer */
|
|
9
|
-
srcPeer?: (CircuitRelay.IPeer|null);
|
|
10
|
-
|
|
11
|
-
/** CircuitRelay dstPeer */
|
|
12
|
-
dstPeer?: (CircuitRelay.IPeer|null);
|
|
13
|
-
|
|
14
|
-
/** CircuitRelay code */
|
|
15
|
-
code?: (CircuitRelay.Status|null);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/** Represents a CircuitRelay. */
|
|
19
|
-
export class CircuitRelay implements ICircuitRelay {
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Constructs a new CircuitRelay.
|
|
23
|
-
* @param [p] Properties to set
|
|
24
|
-
*/
|
|
25
|
-
constructor(p?: ICircuitRelay);
|
|
26
|
-
|
|
27
|
-
/** CircuitRelay type. */
|
|
28
|
-
public type: CircuitRelay.Type;
|
|
29
|
-
|
|
30
|
-
/** CircuitRelay srcPeer. */
|
|
31
|
-
public srcPeer?: (CircuitRelay.IPeer|null);
|
|
32
|
-
|
|
33
|
-
/** CircuitRelay dstPeer. */
|
|
34
|
-
public dstPeer?: (CircuitRelay.IPeer|null);
|
|
35
|
-
|
|
36
|
-
/** CircuitRelay code. */
|
|
37
|
-
public code: CircuitRelay.Status;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Encodes the specified CircuitRelay message. Does not implicitly {@link CircuitRelay.verify|verify} messages.
|
|
41
|
-
* @param m CircuitRelay message or plain object to encode
|
|
42
|
-
* @param [w] Writer to encode to
|
|
43
|
-
* @returns Writer
|
|
44
|
-
*/
|
|
45
|
-
public static encode(m: ICircuitRelay, w?: $protobuf.Writer): $protobuf.Writer;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Decodes a CircuitRelay message from the specified reader or buffer.
|
|
49
|
-
* @param r Reader or buffer to decode from
|
|
50
|
-
* @param [l] Message length if known beforehand
|
|
51
|
-
* @returns CircuitRelay
|
|
52
|
-
* @throws {Error} If the payload is not a reader or valid buffer
|
|
53
|
-
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
54
|
-
*/
|
|
55
|
-
public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): CircuitRelay;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Creates a CircuitRelay message from a plain object. Also converts values to their respective internal types.
|
|
59
|
-
* @param d Plain object
|
|
60
|
-
* @returns CircuitRelay
|
|
61
|
-
*/
|
|
62
|
-
public static fromObject(d: { [k: string]: any }): CircuitRelay;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Creates a plain object from a CircuitRelay message. Also converts values to other types if specified.
|
|
66
|
-
* @param m CircuitRelay
|
|
67
|
-
* @param [o] Conversion options
|
|
68
|
-
* @returns Plain object
|
|
69
|
-
*/
|
|
70
|
-
public static toObject(m: CircuitRelay, o?: $protobuf.IConversionOptions): { [k: string]: any };
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Converts this CircuitRelay to JSON.
|
|
74
|
-
* @returns JSON object
|
|
75
|
-
*/
|
|
76
|
-
public toJSON(): { [k: string]: any };
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export namespace CircuitRelay {
|
|
80
|
-
|
|
81
|
-
/** Status enum. */
|
|
82
|
-
enum Status {
|
|
83
|
-
SUCCESS = 100,
|
|
84
|
-
HOP_SRC_ADDR_TOO_LONG = 220,
|
|
85
|
-
HOP_DST_ADDR_TOO_LONG = 221,
|
|
86
|
-
HOP_SRC_MULTIADDR_INVALID = 250,
|
|
87
|
-
HOP_DST_MULTIADDR_INVALID = 251,
|
|
88
|
-
HOP_NO_CONN_TO_DST = 260,
|
|
89
|
-
HOP_CANT_DIAL_DST = 261,
|
|
90
|
-
HOP_CANT_OPEN_DST_STREAM = 262,
|
|
91
|
-
HOP_CANT_SPEAK_RELAY = 270,
|
|
92
|
-
HOP_CANT_RELAY_TO_SELF = 280,
|
|
93
|
-
STOP_SRC_ADDR_TOO_LONG = 320,
|
|
94
|
-
STOP_DST_ADDR_TOO_LONG = 321,
|
|
95
|
-
STOP_SRC_MULTIADDR_INVALID = 350,
|
|
96
|
-
STOP_DST_MULTIADDR_INVALID = 351,
|
|
97
|
-
STOP_RELAY_REFUSED = 390,
|
|
98
|
-
MALFORMED_MESSAGE = 400
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/** Type enum. */
|
|
102
|
-
enum Type {
|
|
103
|
-
HOP = 1,
|
|
104
|
-
STOP = 2,
|
|
105
|
-
STATUS = 3,
|
|
106
|
-
CAN_HOP = 4
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/** Properties of a Peer. */
|
|
110
|
-
interface IPeer {
|
|
111
|
-
|
|
112
|
-
/** Peer id */
|
|
113
|
-
id: Uint8Array;
|
|
114
|
-
|
|
115
|
-
/** Peer addrs */
|
|
116
|
-
addrs?: (Uint8Array[]|null);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/** Represents a Peer. */
|
|
120
|
-
class Peer implements IPeer {
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Constructs a new Peer.
|
|
124
|
-
* @param [p] Properties to set
|
|
125
|
-
*/
|
|
126
|
-
constructor(p?: CircuitRelay.IPeer);
|
|
127
|
-
|
|
128
|
-
/** Peer id. */
|
|
129
|
-
public id: Uint8Array;
|
|
130
|
-
|
|
131
|
-
/** Peer addrs. */
|
|
132
|
-
public addrs: Uint8Array[];
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Encodes the specified Peer message. Does not implicitly {@link CircuitRelay.Peer.verify|verify} messages.
|
|
136
|
-
* @param m Peer message or plain object to encode
|
|
137
|
-
* @param [w] Writer to encode to
|
|
138
|
-
* @returns Writer
|
|
139
|
-
*/
|
|
140
|
-
public static encode(m: CircuitRelay.IPeer, w?: $protobuf.Writer): $protobuf.Writer;
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Decodes a Peer message from the specified reader or buffer.
|
|
144
|
-
* @param r Reader or buffer to decode from
|
|
145
|
-
* @param [l] Message length if known beforehand
|
|
146
|
-
* @returns Peer
|
|
147
|
-
* @throws {Error} If the payload is not a reader or valid buffer
|
|
148
|
-
* @throws {$protobuf.util.ProtocolError} If required fields are missing
|
|
149
|
-
*/
|
|
150
|
-
public static decode(r: ($protobuf.Reader|Uint8Array), l?: number): CircuitRelay.Peer;
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Creates a Peer message from a plain object. Also converts values to their respective internal types.
|
|
154
|
-
* @param d Plain object
|
|
155
|
-
* @returns Peer
|
|
156
|
-
*/
|
|
157
|
-
public static fromObject(d: { [k: string]: any }): CircuitRelay.Peer;
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* Creates a plain object from a Peer message. Also converts values to other types if specified.
|
|
161
|
-
* @param m Peer
|
|
162
|
-
* @param [o] Conversion options
|
|
163
|
-
* @returns Plain object
|
|
164
|
-
*/
|
|
165
|
-
public static toObject(m: CircuitRelay.Peer, o?: $protobuf.IConversionOptions): { [k: string]: any };
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Converts this Peer to JSON.
|
|
169
|
-
* @returns JSON object
|
|
170
|
-
*/
|
|
171
|
-
public toJSON(): { [k: string]: any };
|
|
172
|
-
}
|
|
173
|
-
}
|