libp2p 0.36.2 → 0.37.0
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 +83 -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 +267 -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 +333 -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 +70 -63
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +75 -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 +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 +40 -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 +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 +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 +144 -201
- 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/{dialer/dial-request.js → connection-manager/dialer/dial-request.ts} +60 -51
- package/src/connection-manager/dialer/index.ts +382 -0
- package/src/connection-manager/index.ts +508 -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 +73 -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 +194 -0
- package/src/peer-record-updater.ts +55 -0
- package/src/peer-routing.ts +186 -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 +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/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/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
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import drain from 'it-drain'
|
|
2
|
+
import errCode from 'err-code'
|
|
3
|
+
import type { DHT } from '@libp2p/interfaces/dht'
|
|
4
|
+
import type { ContentRouting } from '@libp2p/interfaces/content-routing'
|
|
5
|
+
import type { CID } from 'multiformats/cid'
|
|
6
|
+
import type { AbortOptions } from '@libp2p/interfaces'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Wrapper class to convert events into returned values
|
|
10
|
+
*/
|
|
11
|
+
export class DHTContentRouting implements ContentRouting {
|
|
12
|
+
private readonly dht: DHT
|
|
13
|
+
|
|
14
|
+
constructor (dht: DHT) {
|
|
15
|
+
this.dht = dht
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async provide (cid: CID) {
|
|
19
|
+
await drain(this.dht.provide(cid))
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
async * findProviders (cid: CID, options: AbortOptions = {}) {
|
|
23
|
+
for await (const event of this.dht.findProviders(cid, options)) {
|
|
24
|
+
if (event.name === 'PROVIDER') {
|
|
25
|
+
yield * event.providers
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async put (key: Uint8Array, value: Uint8Array, options?: AbortOptions): Promise<void> {
|
|
31
|
+
await drain(this.dht.put(key, value, options))
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async get (key: Uint8Array, options?: AbortOptions): Promise<Uint8Array> {
|
|
35
|
+
for await (const event of this.dht.get(key, options)) {
|
|
36
|
+
if (event.name === 'VALUE') {
|
|
37
|
+
return event.value
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
throw errCode(new Error('Not found'), 'ERR_NOT_FOUND')
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import errCode from 'err-code'
|
|
2
|
+
import { messages, codes } from '../errors.js'
|
|
3
|
+
import type { PeerRouting } from '@libp2p/interfaces/peer-routing'
|
|
4
|
+
import type { DHT } from '@libp2p/interfaces/dht'
|
|
5
|
+
import type { PeerId } from '@libp2p/interfaces/peer-id'
|
|
6
|
+
import type { AbortOptions } from '@libp2p/interfaces'
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Wrapper class to convert events into returned values
|
|
10
|
+
*/
|
|
11
|
+
export class DHTPeerRouting implements PeerRouting {
|
|
12
|
+
private readonly dht: DHT
|
|
13
|
+
|
|
14
|
+
constructor (dht: DHT) {
|
|
15
|
+
this.dht = dht
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async findPeer (peerId: PeerId, options: AbortOptions = {}) {
|
|
19
|
+
for await (const event of this.dht.findPeer(peerId, options)) {
|
|
20
|
+
if (event.name === 'FINAL_PEER') {
|
|
21
|
+
return event.peer
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
throw errCode(new Error(messages.NOT_FOUND), codes.ERR_NOT_FOUND)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async * getClosestPeers (key: Uint8Array, options: AbortOptions = {}) {
|
|
29
|
+
for await (const event of this.dht.getClosestPeers(key, options)) {
|
|
30
|
+
if (event.name === 'PEER_RESPONSE') {
|
|
31
|
+
yield * event.closer
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { DualDHT, QueryEvent, SingleDHT } from '@libp2p/interfaces/dht'
|
|
2
|
+
import type { PeerDiscoveryEvents } from '@libp2p/interfaces/peer-discovery'
|
|
3
|
+
import errCode from 'err-code'
|
|
4
|
+
import { messages, codes } from '../errors.js'
|
|
5
|
+
import { EventEmitter } from '@libp2p/interfaces/events'
|
|
6
|
+
import { symbol } from '@libp2p/interfaces/peer-discovery'
|
|
7
|
+
|
|
8
|
+
export class DummyDHT extends EventEmitter<PeerDiscoveryEvents> implements DualDHT {
|
|
9
|
+
get [symbol] (): true {
|
|
10
|
+
return true
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get [Symbol.toStringTag] () {
|
|
14
|
+
return '@libp2p/dummy-dht'
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
get wan (): SingleDHT {
|
|
18
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get lan (): SingleDHT {
|
|
22
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
get (): AsyncIterable<QueryEvent> {
|
|
26
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
findProviders (): AsyncIterable<QueryEvent> {
|
|
30
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
findPeer (): AsyncIterable<QueryEvent> {
|
|
34
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getClosestPeers (): AsyncIterable<QueryEvent> {
|
|
38
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
provide (): AsyncIterable<QueryEvent> {
|
|
42
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
put (): AsyncIterable<QueryEvent> {
|
|
46
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async getMode (): Promise<'client' | 'server'> {
|
|
50
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async setMode (): Promise<void> {
|
|
54
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
async refreshRoutingTable (): Promise<void> {
|
|
58
|
+
throw errCode(new Error(messages.DHT_DISABLED), codes.DHT_DISABLED)
|
|
59
|
+
}
|
|
60
|
+
}
|
package/src/errors.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export enum messages {
|
|
2
|
+
NOT_STARTED_YET = 'The libp2p node is not started yet',
|
|
3
|
+
DHT_DISABLED = 'DHT is not available',
|
|
4
|
+
PUBSUB_DISABLED = 'PubSub is not available',
|
|
5
|
+
CONN_ENCRYPTION_REQUIRED = 'At least one connection encryption module is required',
|
|
6
|
+
ERR_TRANSPORTS_REQUIRED = 'At least one transport module is required',
|
|
7
|
+
ERR_PROTECTOR_REQUIRED = 'Private network is enforced, but no protector was provided',
|
|
8
|
+
NOT_FOUND = 'Not found'
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export enum codes {
|
|
12
|
+
DHT_DISABLED = 'ERR_DHT_DISABLED',
|
|
13
|
+
ERR_PUBSUB_DISABLED = 'ERR_PUBSUB_DISABLED',
|
|
14
|
+
PUBSUB_NOT_STARTED = 'ERR_PUBSUB_NOT_STARTED',
|
|
15
|
+
DHT_NOT_STARTED = 'ERR_DHT_NOT_STARTED',
|
|
16
|
+
CONN_ENCRYPTION_REQUIRED = 'ERR_CONN_ENCRYPTION_REQUIRED',
|
|
17
|
+
ERR_TRANSPORTS_REQUIRED = 'ERR_TRANSPORTS_REQUIRED',
|
|
18
|
+
ERR_PROTECTOR_REQUIRED = 'ERR_PROTECTOR_REQUIRED',
|
|
19
|
+
ERR_PEER_DIAL_INTERCEPTED = 'ERR_PEER_DIAL_INTERCEPTED',
|
|
20
|
+
ERR_CONNECTION_INTERCEPTED = 'ERR_CONNECTION_INTERCEPTED',
|
|
21
|
+
ERR_INVALID_PROTOCOLS_FOR_STREAM = 'ERR_INVALID_PROTOCOLS_FOR_STREAM',
|
|
22
|
+
ERR_CONNECTION_ENDED = 'ERR_CONNECTION_ENDED',
|
|
23
|
+
ERR_CONNECTION_FAILED = 'ERR_CONNECTION_FAILED',
|
|
24
|
+
ERR_NODE_NOT_STARTED = 'ERR_NODE_NOT_STARTED',
|
|
25
|
+
ERR_ALREADY_ABORTED = 'ERR_ALREADY_ABORTED',
|
|
26
|
+
ERR_TOO_MANY_ADDRESSES = 'ERR_TOO_MANY_ADDRESSES',
|
|
27
|
+
ERR_NO_VALID_ADDRESSES = 'ERR_NO_VALID_ADDRESSES',
|
|
28
|
+
ERR_RELAYED_DIAL = 'ERR_RELAYED_DIAL',
|
|
29
|
+
ERR_DIALED_SELF = 'ERR_DIALED_SELF',
|
|
30
|
+
ERR_DISCOVERED_SELF = 'ERR_DISCOVERED_SELF',
|
|
31
|
+
ERR_DUPLICATE_TRANSPORT = 'ERR_DUPLICATE_TRANSPORT',
|
|
32
|
+
ERR_ENCRYPTION_FAILED = 'ERR_ENCRYPTION_FAILED',
|
|
33
|
+
ERR_HOP_REQUEST_FAILED = 'ERR_HOP_REQUEST_FAILED',
|
|
34
|
+
ERR_INVALID_KEY = 'ERR_INVALID_KEY',
|
|
35
|
+
ERR_INVALID_MESSAGE = 'ERR_INVALID_MESSAGE',
|
|
36
|
+
ERR_INVALID_PARAMETERS = 'ERR_INVALID_PARAMETERS',
|
|
37
|
+
ERR_INVALID_PEER = 'ERR_INVALID_PEER',
|
|
38
|
+
ERR_MUXER_UNAVAILABLE = 'ERR_MUXER_UNAVAILABLE',
|
|
39
|
+
ERR_NOT_FOUND = 'ERR_NOT_FOUND',
|
|
40
|
+
ERR_TIMEOUT = 'ERR_TIMEOUT',
|
|
41
|
+
ERR_TRANSPORT_UNAVAILABLE = 'ERR_TRANSPORT_UNAVAILABLE',
|
|
42
|
+
ERR_TRANSPORT_DIAL_FAILED = 'ERR_TRANSPORT_DIAL_FAILED',
|
|
43
|
+
ERR_UNSUPPORTED_PROTOCOL = 'ERR_UNSUPPORTED_PROTOCOL',
|
|
44
|
+
ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED = 'ERR_PROTOCOL_HANDLER_ALREADY_REGISTERED',
|
|
45
|
+
ERR_INVALID_MULTIADDR = 'ERR_INVALID_MULTIADDR',
|
|
46
|
+
ERR_SIGNATURE_NOT_VALID = 'ERR_SIGNATURE_NOT_VALID',
|
|
47
|
+
ERR_FIND_SELF = 'ERR_FIND_SELF',
|
|
48
|
+
ERR_NO_ROUTERS_AVAILABLE = 'ERR_NO_ROUTERS_AVAILABLE',
|
|
49
|
+
ERR_CONNECTION_NOT_MULTIPLEXED = 'ERR_CONNECTION_NOT_MULTIPLEXED',
|
|
50
|
+
ERR_NO_DIAL_TOKENS = 'ERR_NO_DIAL_TOKENS',
|
|
51
|
+
ERR_KEYCHAIN_REQUIRED = 'ERR_KEYCHAIN_REQUIRED',
|
|
52
|
+
ERR_INVALID_CMS = 'ERR_INVALID_CMS',
|
|
53
|
+
ERR_MISSING_KEYS = 'ERR_MISSING_KEYS',
|
|
54
|
+
ERR_NO_KEY = 'ERR_NO_KEY',
|
|
55
|
+
ERR_INVALID_KEY_NAME = 'ERR_INVALID_KEY_NAME',
|
|
56
|
+
ERR_INVALID_KEY_TYPE = 'ERR_INVALID_KEY_TYPE',
|
|
57
|
+
ERR_KEY_ALREADY_EXISTS = 'ERR_KEY_ALREADY_EXISTS',
|
|
58
|
+
ERR_INVALID_KEY_SIZE = 'ERR_INVALID_KEY_SIZE',
|
|
59
|
+
ERR_KEY_NOT_FOUND = 'ERR_KEY_NOT_FOUND',
|
|
60
|
+
ERR_OLD_KEY_NAME_INVALID = 'ERR_OLD_KEY_NAME_INVALID',
|
|
61
|
+
ERR_NEW_KEY_NAME_INVALID = 'ERR_NEW_KEY_NAME_INVALID',
|
|
62
|
+
ERR_PASSWORD_REQUIRED = 'ERR_PASSWORD_REQUIRED',
|
|
63
|
+
ERR_PEM_REQUIRED = 'ERR_PEM_REQUIRED',
|
|
64
|
+
ERR_CANNOT_READ_KEY = 'ERR_CANNOT_READ_KEY',
|
|
65
|
+
ERR_MISSING_PRIVATE_KEY = 'ERR_MISSING_PRIVATE_KEY',
|
|
66
|
+
ERR_MISSING_PUBLIC_KEY = 'ERR_MISSING_PUBLIC_KEY',
|
|
67
|
+
ERR_INVALID_OLD_PASS_TYPE = 'ERR_INVALID_OLD_PASS_TYPE',
|
|
68
|
+
ERR_INVALID_NEW_PASS_TYPE = 'ERR_INVALID_NEW_PASS_TYPE',
|
|
69
|
+
ERR_INVALID_PASS_LENGTH = 'ERR_INVALID_PASS_LENGTH',
|
|
70
|
+
ERR_NOT_IMPLEMENTED = 'ERR_NOT_IMPLEMENTED',
|
|
71
|
+
ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK',
|
|
72
|
+
ERR_INVALID_RECORD = 'ERR_INVALID_RECORD'
|
|
73
|
+
}
|
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/startable'
|
|
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.getConnectionManager().openConnection(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,65 @@
|
|
|
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
|
+
import type { Codec } from 'protons-runtime'
|
|
6
|
+
|
|
7
|
+
export interface FetchRequest {
|
|
8
|
+
identifier: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export namespace FetchRequest {
|
|
12
|
+
export const codec = (): Codec<FetchRequest> => {
|
|
13
|
+
return message<FetchRequest>({
|
|
14
|
+
1: { name: 'identifier', codec: string }
|
|
15
|
+
})
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const encode = (obj: FetchRequest): Uint8Array => {
|
|
19
|
+
return encodeMessage(obj, FetchRequest.codec())
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const decode = (buf: Uint8Array): FetchRequest => {
|
|
23
|
+
return decodeMessage(buf, FetchRequest.codec())
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface FetchResponse {
|
|
28
|
+
status: FetchResponse.StatusCode
|
|
29
|
+
data: Uint8Array
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export namespace FetchResponse {
|
|
33
|
+
export enum StatusCode {
|
|
34
|
+
OK = 'OK',
|
|
35
|
+
NOT_FOUND = 'NOT_FOUND',
|
|
36
|
+
ERROR = 'ERROR'
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
enum __StatusCodeValues {
|
|
40
|
+
OK = 0,
|
|
41
|
+
NOT_FOUND = 1,
|
|
42
|
+
ERROR = 2
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export namespace StatusCode {
|
|
46
|
+
export const codec = () => {
|
|
47
|
+
return enumeration<typeof StatusCode>(__StatusCodeValues)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const codec = (): Codec<FetchResponse> => {
|
|
52
|
+
return message<FetchResponse>({
|
|
53
|
+
1: { name: 'status', codec: FetchResponse.StatusCode.codec() },
|
|
54
|
+
2: { name: 'data', codec: bytes }
|
|
55
|
+
})
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const encode = (obj: FetchResponse): Uint8Array => {
|
|
59
|
+
return encodeMessage(obj, FetchResponse.codec())
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export const decode = (buf: Uint8Array): FetchResponse => {
|
|
63
|
+
return decodeMessage(buf, FetchResponse.codec())
|
|
64
|
+
}
|
|
65
|
+
}
|
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'
|