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
package/src/errors.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export enum messages {
|
|
2
|
+
NOT_STARTED_YET = 'The libp2p node is not started yet',
|
|
3
|
+
DHT_DISABLED = 'DHT is not available',
|
|
4
|
+
CONN_ENCRYPTION_REQUIRED = 'At least one connection encryption module is required',
|
|
5
|
+
ERR_TRANSPORTS_REQUIRED = 'At least one transport module is required',
|
|
6
|
+
ERR_PROTECTOR_REQUIRED = 'Private network is enforced, but no protector was provided',
|
|
7
|
+
NOT_FOUND = 'Not found'
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export enum codes {
|
|
11
|
+
DHT_DISABLED = 'ERR_DHT_DISABLED',
|
|
12
|
+
PUBSUB_NOT_STARTED = 'ERR_PUBSUB_NOT_STARTED',
|
|
13
|
+
DHT_NOT_STARTED = 'ERR_DHT_NOT_STARTED',
|
|
14
|
+
CONN_ENCRYPTION_REQUIRED = 'ERR_CONN_ENCRYPTION_REQUIRED',
|
|
15
|
+
ERR_TRANSPORTS_REQUIRED = 'ERR_TRANSPORTS_REQUIRED',
|
|
16
|
+
ERR_PROTECTOR_REQUIRED = 'ERR_PROTECTOR_REQUIRED',
|
|
17
|
+
ERR_PEER_DIAL_INTERCEPTED = 'ERR_PEER_DIAL_INTERCEPTED',
|
|
18
|
+
ERR_CONNECTION_INTERCEPTED = 'ERR_CONNECTION_INTERCEPTED',
|
|
19
|
+
ERR_INVALID_PROTOCOLS_FOR_STREAM = 'ERR_INVALID_PROTOCOLS_FOR_STREAM',
|
|
20
|
+
ERR_CONNECTION_ENDED = 'ERR_CONNECTION_ENDED',
|
|
21
|
+
ERR_CONNECTION_FAILED = 'ERR_CONNECTION_FAILED',
|
|
22
|
+
ERR_NODE_NOT_STARTED = 'ERR_NODE_NOT_STARTED',
|
|
23
|
+
ERR_ALREADY_ABORTED = 'ERR_ALREADY_ABORTED',
|
|
24
|
+
ERR_TOO_MANY_ADDRESSES = 'ERR_TOO_MANY_ADDRESSES',
|
|
25
|
+
ERR_NO_VALID_ADDRESSES = 'ERR_NO_VALID_ADDRESSES',
|
|
26
|
+
ERR_RELAYED_DIAL = 'ERR_RELAYED_DIAL',
|
|
27
|
+
ERR_DIALED_SELF = 'ERR_DIALED_SELF',
|
|
28
|
+
ERR_DISCOVERED_SELF = 'ERR_DISCOVERED_SELF',
|
|
29
|
+
ERR_DUPLICATE_TRANSPORT = 'ERR_DUPLICATE_TRANSPORT',
|
|
30
|
+
ERR_ENCRYPTION_FAILED = 'ERR_ENCRYPTION_FAILED',
|
|
31
|
+
ERR_HOP_REQUEST_FAILED = 'ERR_HOP_REQUEST_FAILED',
|
|
32
|
+
ERR_INVALID_KEY = 'ERR_INVALID_KEY',
|
|
33
|
+
ERR_INVALID_MESSAGE = 'ERR_INVALID_MESSAGE',
|
|
34
|
+
ERR_INVALID_PARAMETERS = 'ERR_INVALID_PARAMETERS',
|
|
35
|
+
ERR_INVALID_PEER = 'ERR_INVALID_PEER',
|
|
36
|
+
ERR_MUXER_UNAVAILABLE = 'ERR_MUXER_UNAVAILABLE',
|
|
37
|
+
ERR_NOT_FOUND = 'ERR_NOT_FOUND',
|
|
38
|
+
ERR_TIMEOUT = 'ERR_TIMEOUT',
|
|
39
|
+
ERR_TRANSPORT_UNAVAILABLE = 'ERR_TRANSPORT_UNAVAILABLE',
|
|
40
|
+
ERR_TRANSPORT_DIAL_FAILED = 'ERR_TRANSPORT_DIAL_FAILED',
|
|
41
|
+
ERR_UNSUPPORTED_PROTOCOL = 'ERR_UNSUPPORTED_PROTOCOL',
|
|
42
|
+
ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED = 'ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED',
|
|
43
|
+
ERR_INVALID_MULTIADDR = 'ERR_INVALID_MULTIADDR',
|
|
44
|
+
ERR_SIGNATURE_NOT_VALID = 'ERR_SIGNATURE_NOT_VALID',
|
|
45
|
+
ERR_FIND_SELF = 'ERR_FIND_SELF',
|
|
46
|
+
ERR_NO_ROUTERS_AVAILABLE = 'ERR_NO_ROUTERS_AVAILABLE',
|
|
47
|
+
ERR_CONNECTION_NOT_MULTIPLEXED = 'ERR_CONNECTION_NOT_MULTIPLEXED',
|
|
48
|
+
ERR_NO_DIAL_TOKENS = 'ERR_NO_DIAL_TOKENS',
|
|
49
|
+
ERR_KEYCHAIN_REQUIRED = 'ERR_KEYCHAIN_REQUIRED',
|
|
50
|
+
ERR_INVALID_CMS = 'ERR_INVALID_CMS',
|
|
51
|
+
ERR_MISSING_KEYS = 'ERR_MISSING_KEYS',
|
|
52
|
+
ERR_NO_KEY = 'ERR_NO_KEY',
|
|
53
|
+
ERR_INVALID_KEY_NAME = 'ERR_INVALID_KEY_NAME',
|
|
54
|
+
ERR_INVALID_KEY_TYPE = 'ERR_INVALID_KEY_TYPE',
|
|
55
|
+
ERR_KEY_ALREADY_EXISTS = 'ERR_KEY_ALREADY_EXISTS',
|
|
56
|
+
ERR_INVALID_KEY_SIZE = 'ERR_INVALID_KEY_SIZE',
|
|
57
|
+
ERR_KEY_NOT_FOUND = 'ERR_KEY_NOT_FOUND',
|
|
58
|
+
ERR_OLD_KEY_NAME_INVALID = 'ERR_OLD_KEY_NAME_INVALID',
|
|
59
|
+
ERR_NEW_KEY_NAME_INVALID = 'ERR_NEW_KEY_NAME_INVALID',
|
|
60
|
+
ERR_PASSWORD_REQUIRED = 'ERR_PASSWORD_REQUIRED',
|
|
61
|
+
ERR_PEM_REQUIRED = 'ERR_PEM_REQUIRED',
|
|
62
|
+
ERR_CANNOT_READ_KEY = 'ERR_CANNOT_READ_KEY',
|
|
63
|
+
ERR_MISSING_PRIVATE_KEY = 'ERR_MISSING_PRIVATE_KEY',
|
|
64
|
+
ERR_MISSING_PUBLIC_KEY = 'ERR_MISSING_PUBLIC_KEY',
|
|
65
|
+
ERR_INVALID_OLD_PASS_TYPE = 'ERR_INVALID_OLD_PASS_TYPE',
|
|
66
|
+
ERR_INVALID_NEW_PASS_TYPE = 'ERR_INVALID_NEW_PASS_TYPE',
|
|
67
|
+
ERR_INVALID_PASS_LENGTH = 'ERR_INVALID_PASS_LENGTH',
|
|
68
|
+
ERR_NOT_IMPLEMENTED = 'ERR_NOT_IMPLEMENTED',
|
|
69
|
+
ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK',
|
|
70
|
+
ERR_INVALID_RECORD = 'ERR_INVALID_RECORD'
|
|
71
|
+
}
|
package/src/fetch/README.md
CHANGED
|
@@ -12,7 +12,7 @@ The fetch protocol is a simple protocol for requesting a value corresponding to
|
|
|
12
12
|
## Usage
|
|
13
13
|
|
|
14
14
|
```javascript
|
|
15
|
-
|
|
15
|
+
import { createLibp2p } from 'libp2p'
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* Given a key (as a string) returns a value (as a Uint8Array), or null if the key isn't found.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger'
|
|
2
|
+
import errCode from 'err-code'
|
|
3
|
+
import { codes } from '../errors.js'
|
|
4
|
+
import * as lp from 'it-length-prefixed'
|
|
5
|
+
import { FetchRequest, FetchResponse } from './pb/proto.js'
|
|
6
|
+
import { handshake } from 'it-handshake'
|
|
7
|
+
import { PROTOCOL } from './constants.js'
|
|
8
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
9
|
+
import type { Startable } from '@libp2p/interfaces'
|
|
10
|
+
import type { Stream } from '@libp2p/interfaces/connection'
|
|
11
|
+
import type { IncomingStreamData } from '@libp2p/interfaces/registrar'
|
|
12
|
+
import type { Components } from '@libp2p/interfaces/components'
|
|
13
|
+
|
|
14
|
+
const log = logger('libp2p:fetch')
|
|
15
|
+
|
|
16
|
+
export interface FetchInit {
|
|
17
|
+
protocolPrefix: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface HandleMessageOptions {
|
|
21
|
+
stream: Stream
|
|
22
|
+
protocol: string
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface LookupFunction {
|
|
26
|
+
(key: string): Promise<Uint8Array | null>
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* A simple libp2p protocol for requesting a value corresponding to a key from a peer.
|
|
31
|
+
* Developers can register one or more lookup function for retrieving the value corresponding to
|
|
32
|
+
* a given key. Each lookup function must act on a distinct part of the overall key space, defined
|
|
33
|
+
* by a fixed prefix that all keys that should be routed to that lookup function will start with.
|
|
34
|
+
*/
|
|
35
|
+
export class FetchService implements Startable {
|
|
36
|
+
private readonly components: Components
|
|
37
|
+
private readonly lookupFunctions: Map<string, LookupFunction>
|
|
38
|
+
private readonly protocol: string
|
|
39
|
+
private started: boolean
|
|
40
|
+
|
|
41
|
+
constructor (components: Components, init: FetchInit) {
|
|
42
|
+
this.started = false
|
|
43
|
+
this.components = components
|
|
44
|
+
this.protocol = PROTOCOL
|
|
45
|
+
this.lookupFunctions = new Map() // Maps key prefix to value lookup function
|
|
46
|
+
this.handleMessage = this.handleMessage.bind(this)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async start () {
|
|
50
|
+
await this.components.getRegistrar().handle(this.protocol, (data) => {
|
|
51
|
+
void this.handleMessage(data).catch(err => {
|
|
52
|
+
log.error(err)
|
|
53
|
+
})
|
|
54
|
+
})
|
|
55
|
+
this.started = true
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async stop () {
|
|
59
|
+
await this.components.getRegistrar().unhandle(this.protocol)
|
|
60
|
+
this.started = false
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
isStarted () {
|
|
64
|
+
return this.started
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Sends a request to fetch the value associated with the given key from the given peer
|
|
69
|
+
*/
|
|
70
|
+
async fetch (peer: PeerId, key: string): Promise<Uint8Array | null> {
|
|
71
|
+
log('dialing %s to %p', this.protocol, peer)
|
|
72
|
+
|
|
73
|
+
const connection = await this.components.getDialer().dial(peer)
|
|
74
|
+
const { stream } = await connection.newStream([this.protocol])
|
|
75
|
+
const shake = handshake(stream)
|
|
76
|
+
|
|
77
|
+
// send message
|
|
78
|
+
shake.write(lp.encode.single(FetchRequest.encode({ identifier: key })).slice())
|
|
79
|
+
|
|
80
|
+
// read response
|
|
81
|
+
// @ts-expect-error fromReader returns a Source which has no .next method
|
|
82
|
+
const response = FetchResponse.decode((await lp.decode.fromReader(shake.reader).next()).value.slice())
|
|
83
|
+
switch (response.status) {
|
|
84
|
+
case (FetchResponse.StatusCode.OK): {
|
|
85
|
+
return response.data
|
|
86
|
+
}
|
|
87
|
+
case (FetchResponse.StatusCode.NOT_FOUND): {
|
|
88
|
+
return null
|
|
89
|
+
}
|
|
90
|
+
case (FetchResponse.StatusCode.ERROR): {
|
|
91
|
+
const errmsg = (new TextDecoder()).decode(response.data)
|
|
92
|
+
throw errCode(new Error('Error in fetch protocol response: ' + errmsg), codes.ERR_INVALID_PARAMETERS)
|
|
93
|
+
}
|
|
94
|
+
default: {
|
|
95
|
+
throw errCode(new Error('Unknown response status'), codes.ERR_INVALID_MESSAGE)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Invoked when a fetch request is received. Reads the request message off the given stream and
|
|
102
|
+
* responds based on looking up the key in the request via the lookup callback that corresponds
|
|
103
|
+
* to the key's prefix.
|
|
104
|
+
*/
|
|
105
|
+
async handleMessage (data: IncomingStreamData) {
|
|
106
|
+
const { stream } = data
|
|
107
|
+
const shake = handshake(stream)
|
|
108
|
+
// @ts-expect-error fromReader returns a Source which has no .next method
|
|
109
|
+
const request = FetchRequest.decode((await lp.decode.fromReader(shake.reader).next()).value.slice())
|
|
110
|
+
|
|
111
|
+
let response: FetchResponse
|
|
112
|
+
const lookup = this._getLookupFunction(request.identifier)
|
|
113
|
+
if (lookup != null) {
|
|
114
|
+
const data = await lookup(request.identifier)
|
|
115
|
+
if (data != null) {
|
|
116
|
+
response = { status: FetchResponse.StatusCode.OK, data }
|
|
117
|
+
} else {
|
|
118
|
+
response = { status: FetchResponse.StatusCode.NOT_FOUND, data: new Uint8Array(0) }
|
|
119
|
+
}
|
|
120
|
+
} else {
|
|
121
|
+
const errmsg = (new TextEncoder()).encode('No lookup function registered for key: ' + request.identifier)
|
|
122
|
+
response = { status: FetchResponse.StatusCode.ERROR, data: errmsg }
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
shake.write(lp.encode.single(FetchResponse.encode(response)).slice())
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Given a key, finds the appropriate function for looking up its corresponding value, based on
|
|
130
|
+
* the key's prefix.
|
|
131
|
+
*/
|
|
132
|
+
_getLookupFunction (key: string) {
|
|
133
|
+
for (const prefix of this.lookupFunctions.keys()) {
|
|
134
|
+
if (key.startsWith(prefix)) {
|
|
135
|
+
return this.lookupFunctions.get(prefix)
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Registers a new lookup callback that can map keys to values, for a given set of keys that
|
|
142
|
+
* share the same prefix
|
|
143
|
+
*/
|
|
144
|
+
registerLookupFunction (prefix: string, lookup: LookupFunction) {
|
|
145
|
+
if (this.lookupFunctions.has(prefix)) {
|
|
146
|
+
throw errCode(new Error("Fetch protocol handler for key prefix '" + prefix + "' already registered"), codes.ERR_KEY_ALREADY_EXISTS)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
this.lookupFunctions.set(prefix, lookup)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Registers a new lookup callback that can map keys to values, for a given set of keys that
|
|
154
|
+
* share the same prefix.
|
|
155
|
+
*/
|
|
156
|
+
unregisterLookupFunction (prefix: string, lookup?: LookupFunction) {
|
|
157
|
+
if (lookup != null) {
|
|
158
|
+
const existingLookup = this.lookupFunctions.get(prefix)
|
|
159
|
+
|
|
160
|
+
if (existingLookup !== lookup) {
|
|
161
|
+
return
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
this.lookupFunctions.delete(prefix)
|
|
166
|
+
}
|
|
167
|
+
}
|
|
File without changes
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* eslint-disable import/export */
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-namespace */
|
|
3
|
+
|
|
4
|
+
import { encodeMessage, decodeMessage, message, string, enumeration, bytes } from 'protons-runtime'
|
|
5
|
+
|
|
6
|
+
export interface FetchRequest {
|
|
7
|
+
identifier: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export namespace FetchRequest {
|
|
11
|
+
export const codec = () => {
|
|
12
|
+
return message<FetchRequest>({
|
|
13
|
+
1: { name: 'identifier', codec: string }
|
|
14
|
+
})
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const encode = (obj: FetchRequest): Uint8Array => {
|
|
18
|
+
return encodeMessage(obj, FetchRequest.codec())
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const decode = (buf: Uint8Array): FetchRequest => {
|
|
22
|
+
return decodeMessage(buf, FetchRequest.codec())
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface FetchResponse {
|
|
27
|
+
status: FetchResponse.StatusCode
|
|
28
|
+
data: Uint8Array
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export namespace FetchResponse {
|
|
32
|
+
export enum StatusCode {
|
|
33
|
+
OK = 'OK',
|
|
34
|
+
NOT_FOUND = 'NOT_FOUND',
|
|
35
|
+
ERROR = 'ERROR'
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export namespace StatusCode {
|
|
39
|
+
export const codec = () => {
|
|
40
|
+
return enumeration<typeof StatusCode>(StatusCode)
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export const codec = () => {
|
|
45
|
+
return message<FetchResponse>({
|
|
46
|
+
1: { name: 'status', codec: FetchResponse.StatusCode.codec() },
|
|
47
|
+
2: { name: 'data', codec: bytes }
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const encode = (obj: FetchResponse): Uint8Array => {
|
|
52
|
+
return encodeMessage(obj, FetchResponse.codec())
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export const decode = (buf: Uint8Array): FetchResponse => {
|
|
56
|
+
return decodeMessage(buf, FetchResponse.codec())
|
|
57
|
+
}
|
|
58
|
+
}
|
package/src/get-peer.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { peerIdFromString } from '@libp2p/peer-id'
|
|
2
|
+
import { Multiaddr } from '@multiformats/multiaddr'
|
|
3
|
+
import errCode from 'err-code'
|
|
4
|
+
import { codes } from './errors.js'
|
|
5
|
+
import { isPeerId } from '@libp2p/interfaces/peer-id'
|
|
6
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
7
|
+
import type { PeerInfo } from '@libp2p/interfaces/peer-info'
|
|
8
|
+
|
|
9
|
+
function peerIdFromMultiaddr (ma: Multiaddr) {
|
|
10
|
+
const idStr = ma.getPeerId()
|
|
11
|
+
|
|
12
|
+
if (idStr == null) {
|
|
13
|
+
throw errCode(
|
|
14
|
+
new Error(`${ma.toString()} does not have a valid peer type`),
|
|
15
|
+
codes.ERR_INVALID_MULTIADDR
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
try {
|
|
20
|
+
return peerIdFromString(idStr)
|
|
21
|
+
} catch (err: any) {
|
|
22
|
+
throw errCode(
|
|
23
|
+
new Error(`${ma.toString()} is not a valid peer type`),
|
|
24
|
+
codes.ERR_INVALID_MULTIADDR
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Converts the given `peer` to a `Peer` object.
|
|
31
|
+
*/
|
|
32
|
+
export function getPeer (peer: PeerId | Multiaddr | string): PeerInfo {
|
|
33
|
+
if (isPeerId(peer)) {
|
|
34
|
+
return {
|
|
35
|
+
id: peer,
|
|
36
|
+
multiaddrs: [],
|
|
37
|
+
protocols: []
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
if (typeof peer === 'string') {
|
|
42
|
+
peer = new Multiaddr(peer)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
let addr
|
|
46
|
+
|
|
47
|
+
if (Multiaddr.isMultiaddr(peer)) {
|
|
48
|
+
addr = peer
|
|
49
|
+
peer = peerIdFromMultiaddr(peer)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
id: peer,
|
|
54
|
+
multiaddrs: addr != null ? [addr] : [],
|
|
55
|
+
protocols: []
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
import { version } from '../version.js'
|
|
3
|
+
|
|
4
|
+
export const PROTOCOL_VERSION = 'ipfs/0.1.0' // deprecated
|
|
5
|
+
export const AGENT_VERSION = `js-libp2p/${version}`
|
|
6
|
+
export const MULTICODEC_IDENTIFY = '/ipfs/id/1.0.0' // deprecated
|
|
7
|
+
export const MULTICODEC_IDENTIFY_PUSH = '/ipfs/id/push/1.0.0' // deprecated
|
|
8
|
+
|
|
9
|
+
export const IDENTIFY_PROTOCOL_VERSION = '0.1.0'
|
|
10
|
+
export const MULTICODEC_IDENTIFY_PROTOCOL_NAME = 'id'
|
|
11
|
+
export const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_NAME = 'id/push'
|
|
12
|
+
export const MULTICODEC_IDENTIFY_PROTOCOL_VERSION = '1.0.0'
|
|
13
|
+
export const MULTICODEC_IDENTIFY_PUSH_PROTOCOL_VERSION = '1.0.0'
|