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
|
@@ -1,67 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { StreamHandler } from './stream-handler.js';
|
|
2
|
+
import { CircuitRelay as CircuitPB } from '../pb/index.js';
|
|
3
|
+
import type { Connection } from '@libp2p/interfaces/connection';
|
|
4
|
+
import type { Duplex } from 'it-stream-types';
|
|
5
|
+
import type { Circuit } from '../transport.js';
|
|
6
|
+
import type { ConnectionManager } from '@libp2p/interfaces/connection-manager';
|
|
7
|
+
export interface HopRequest {
|
|
6
8
|
connection: Connection;
|
|
7
|
-
request:
|
|
9
|
+
request: CircuitPB;
|
|
8
10
|
streamHandler: StreamHandler;
|
|
9
|
-
circuit:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @typedef {Object} HopRequest
|
|
19
|
-
* @property {Connection} connection
|
|
20
|
-
* @property {ICircuitRelay} request
|
|
21
|
-
* @property {StreamHandler} streamHandler
|
|
22
|
-
* @property {Transport} circuit
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* @param {HopRequest} options
|
|
26
|
-
* @returns {Promise<void>}
|
|
27
|
-
*/
|
|
28
|
-
export function handleHop({ connection, request, streamHandler, circuit }: HopRequest): Promise<void>;
|
|
11
|
+
circuit: Circuit;
|
|
12
|
+
connectionManager: ConnectionManager;
|
|
13
|
+
}
|
|
14
|
+
export declare function handleHop(hopRequest: HopRequest): Promise<void>;
|
|
15
|
+
export interface HopConfig {
|
|
16
|
+
connection: Connection;
|
|
17
|
+
request: CircuitPB;
|
|
18
|
+
}
|
|
29
19
|
/**
|
|
30
20
|
* Performs a HOP request to a relay peer, to request a connection to another
|
|
31
21
|
* peer. A new, virtual, connection will be created between the two via the relay.
|
|
32
|
-
*
|
|
33
|
-
* @param {object} options
|
|
34
|
-
* @param {Connection} options.connection - Connection to the relay
|
|
35
|
-
* @param {ICircuitRelay} options.request
|
|
36
|
-
* @returns {Promise<MuxedStream>}
|
|
37
22
|
*/
|
|
38
|
-
export function hop(
|
|
23
|
+
export declare function hop(options: HopConfig): Promise<Duplex<Uint8Array>>;
|
|
24
|
+
export interface CanHopOptions {
|
|
39
25
|
connection: Connection;
|
|
40
|
-
|
|
41
|
-
}): Promise<MuxedStream>;
|
|
26
|
+
}
|
|
42
27
|
/**
|
|
43
|
-
* Performs a CAN_HOP request to a relay peer, in order to understand its capabilities
|
|
44
|
-
*
|
|
45
|
-
* @param {object} options
|
|
46
|
-
* @param {Connection} options.connection - Connection to the relay
|
|
47
|
-
* @returns {Promise<boolean>}
|
|
28
|
+
* Performs a CAN_HOP request to a relay peer, in order to understand its capabilities
|
|
48
29
|
*/
|
|
49
|
-
export function canHop(
|
|
30
|
+
export declare function canHop(options: CanHopOptions): Promise<boolean>;
|
|
31
|
+
export interface HandleCanHopOptions {
|
|
50
32
|
connection: Connection;
|
|
51
|
-
|
|
33
|
+
streamHandler: StreamHandler;
|
|
34
|
+
circuit: Circuit;
|
|
35
|
+
}
|
|
52
36
|
/**
|
|
53
37
|
* Creates an unencoded CAN_HOP response based on the Circuits configuration
|
|
54
|
-
*
|
|
55
|
-
* @param {Object} options
|
|
56
|
-
* @param {Connection} options.connection
|
|
57
|
-
* @param {StreamHandler} options.streamHandler
|
|
58
|
-
* @param {Transport} options.circuit
|
|
59
|
-
* @private
|
|
60
38
|
*/
|
|
61
|
-
export function handleCanHop(
|
|
62
|
-
connection: Connection;
|
|
63
|
-
streamHandler: StreamHandler;
|
|
64
|
-
circuit: Transport;
|
|
65
|
-
}): void;
|
|
66
|
-
import StreamHandler = require("./stream-handler");
|
|
39
|
+
export declare function handleCanHop(options: HandleCanHopOptions): void;
|
|
67
40
|
//# sourceMappingURL=hop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/hop.
|
|
1
|
+
{"version":3,"file":"hop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/hop.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAK1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAE/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAI9E,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,iBAAiB,CAAA;CACrC;AAED,wBAAsB,SAAS,CAAE,UAAU,EAAE,UAAU,iBA6FtD;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAsB,GAAG,CAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CA2B1E;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,UAAU,CAAA;CACvB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAE,OAAO,EAAE,aAAa,oBAsBnD;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,UAAU,CAAA;IACtB,aAAa,EAAE,aAAa,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,QAYzD"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger';
|
|
2
|
+
import errCode from 'err-code';
|
|
3
|
+
import { validateAddrs } from './utils.js';
|
|
4
|
+
import { StreamHandler } from './stream-handler.js';
|
|
5
|
+
import { CircuitRelay as CircuitPB } from '../pb/index.js';
|
|
6
|
+
import { pipe } from 'it-pipe';
|
|
7
|
+
import { codes as Errors } from '../../errors.js';
|
|
8
|
+
import { stop } from './stop.js';
|
|
9
|
+
import { RELAY_CODEC } from '../multicodec.js';
|
|
10
|
+
import { peerIdFromBytes } from '@libp2p/peer-id';
|
|
11
|
+
const log = logger('libp2p:circuit:hop');
|
|
12
|
+
export async function handleHop(hopRequest) {
|
|
13
|
+
const { connection, request, streamHandler, circuit, connectionManager } = hopRequest;
|
|
14
|
+
// Ensure hop is enabled
|
|
15
|
+
if (!circuit.hopEnabled()) {
|
|
16
|
+
log('HOP request received but we are not acting as a relay');
|
|
17
|
+
return streamHandler.end({
|
|
18
|
+
type: CircuitPB.Type.STATUS,
|
|
19
|
+
code: CircuitPB.Status.HOP_CANT_SPEAK_RELAY
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
// Validate the HOP request has the required input
|
|
23
|
+
try {
|
|
24
|
+
validateAddrs(request, streamHandler);
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
log.error('invalid hop request via peer %p %o', connection.remotePeer, err);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (request.dstPeer == null) {
|
|
31
|
+
log('HOP request received but we do not receive a dstPeer');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Get the connection to the destination (stop) peer
|
|
35
|
+
const destinationPeer = peerIdFromBytes(request.dstPeer.id);
|
|
36
|
+
const destinationConnections = connectionManager.getConnections(destinationPeer);
|
|
37
|
+
if (destinationConnections.length === 0 && !circuit.hopActive()) {
|
|
38
|
+
log('HOP request received but we are not connected to the destination peer');
|
|
39
|
+
return streamHandler.end({
|
|
40
|
+
type: CircuitPB.Type.STATUS,
|
|
41
|
+
code: CircuitPB.Status.HOP_NO_CONN_TO_DST
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// TODO: Handle being an active relay
|
|
45
|
+
if (destinationConnections.length === 0) {
|
|
46
|
+
log('did not have connection to remote peer');
|
|
47
|
+
return streamHandler.end({
|
|
48
|
+
type: CircuitPB.Type.STATUS,
|
|
49
|
+
code: CircuitPB.Status.HOP_NO_CONN_TO_DST
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
// Handle the incoming HOP request by performing a STOP request
|
|
53
|
+
const stopRequest = {
|
|
54
|
+
type: CircuitPB.Type.STOP,
|
|
55
|
+
dstPeer: request.dstPeer,
|
|
56
|
+
srcPeer: request.srcPeer
|
|
57
|
+
};
|
|
58
|
+
let destinationStream;
|
|
59
|
+
try {
|
|
60
|
+
log('performing STOP request');
|
|
61
|
+
const result = await stop({
|
|
62
|
+
connection: destinationConnections[0],
|
|
63
|
+
request: stopRequest
|
|
64
|
+
});
|
|
65
|
+
if (result == null) {
|
|
66
|
+
throw new Error('Could not stop');
|
|
67
|
+
}
|
|
68
|
+
destinationStream = result;
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
log.error(err);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
log('hop request from %p is valid', connection.remotePeer);
|
|
75
|
+
streamHandler.write({
|
|
76
|
+
type: CircuitPB.Type.STATUS,
|
|
77
|
+
code: CircuitPB.Status.SUCCESS
|
|
78
|
+
});
|
|
79
|
+
const sourceStream = streamHandler.rest();
|
|
80
|
+
log('creating related connections');
|
|
81
|
+
// Short circuit the two streams to create the relayed connection
|
|
82
|
+
return await pipe(sourceStream, destinationStream, sourceStream);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Performs a HOP request to a relay peer, to request a connection to another
|
|
86
|
+
* peer. A new, virtual, connection will be created between the two via the relay.
|
|
87
|
+
*/
|
|
88
|
+
export async function hop(options) {
|
|
89
|
+
const { connection, request } = options;
|
|
90
|
+
// Create a new stream to the relay
|
|
91
|
+
const { stream } = await connection.newStream(RELAY_CODEC);
|
|
92
|
+
// Send the HOP request
|
|
93
|
+
const streamHandler = new StreamHandler({ stream });
|
|
94
|
+
streamHandler.write(request);
|
|
95
|
+
const response = await streamHandler.read();
|
|
96
|
+
if (response == null) {
|
|
97
|
+
throw errCode(new Error('HOP request had no response'), Errors.ERR_HOP_REQUEST_FAILED);
|
|
98
|
+
}
|
|
99
|
+
if (response.code === CircuitPB.Status.SUCCESS) {
|
|
100
|
+
log('hop request was successful');
|
|
101
|
+
return streamHandler.rest();
|
|
102
|
+
}
|
|
103
|
+
log('hop request failed with code %d, closing stream', response.code);
|
|
104
|
+
streamHandler.close();
|
|
105
|
+
throw errCode(new Error(`HOP request failed with code "${response.code ?? 'unknown'}"`), Errors.ERR_HOP_REQUEST_FAILED);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Performs a CAN_HOP request to a relay peer, in order to understand its capabilities
|
|
109
|
+
*/
|
|
110
|
+
export async function canHop(options) {
|
|
111
|
+
const { connection } = options;
|
|
112
|
+
// Create a new stream to the relay
|
|
113
|
+
const { stream } = await connection.newStream(RELAY_CODEC);
|
|
114
|
+
// Send the HOP request
|
|
115
|
+
const streamHandler = new StreamHandler({ stream });
|
|
116
|
+
streamHandler.write({
|
|
117
|
+
type: CircuitPB.Type.CAN_HOP
|
|
118
|
+
});
|
|
119
|
+
const response = await streamHandler.read();
|
|
120
|
+
await streamHandler.close();
|
|
121
|
+
if (response == null || response.code !== CircuitPB.Status.SUCCESS) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Creates an unencoded CAN_HOP response based on the Circuits configuration
|
|
128
|
+
*/
|
|
129
|
+
export function handleCanHop(options) {
|
|
130
|
+
const { connection, streamHandler, circuit } = options;
|
|
131
|
+
const canHop = circuit.hopEnabled();
|
|
132
|
+
log('can hop (%s) request from %p', canHop, connection.remotePeer);
|
|
133
|
+
streamHandler.end({
|
|
134
|
+
type: CircuitPB.Type.STATUS,
|
|
135
|
+
code: canHop ? CircuitPB.Status.SUCCESS : CircuitPB.Status.HOP_CANT_SPEAK_RELAY
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=hop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hop.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/hop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
|
|
1
|
+
import { CircuitRelay as CircuitPB } from '../pb/index.js';
|
|
2
|
+
import { StreamHandler } from './stream-handler.js';
|
|
3
|
+
import type { Connection } from '@libp2p/interfaces/connection';
|
|
4
|
+
import type { Duplex } from 'it-stream-types';
|
|
5
|
+
export interface HandleStopOptions {
|
|
2
6
|
connection: Connection;
|
|
3
|
-
request:
|
|
7
|
+
request: CircuitPB;
|
|
4
8
|
streamHandler: StreamHandler;
|
|
5
|
-
}
|
|
6
|
-
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Handles incoming STOP requests
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleStop(options: HandleStopOptions): Duplex<Uint8Array> | undefined;
|
|
14
|
+
export interface StopOptions {
|
|
7
15
|
connection: Connection;
|
|
8
|
-
request:
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
request: CircuitPB;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Creates a STOP request
|
|
20
|
+
*/
|
|
21
|
+
export declare function stop(options: StopOptions): Promise<Duplex<Uint8Array, Uint8Array, Promise<void>> | undefined>;
|
|
14
22
|
//# sourceMappingURL=stop.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stop.
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAI7C,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;IAClB,aAAa,EAAE,aAAa,CAAA;CAC7B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAE,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAuBtF;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,UAAU,CAAA;IACtB,OAAO,EAAE,SAAS,CAAA;CACnB;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAE,OAAO,EAAE,WAAW,sEAyB/C"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger';
|
|
2
|
+
import { CircuitRelay as CircuitPB } from '../pb/index.js';
|
|
3
|
+
import { RELAY_CODEC } from '../multicodec.js';
|
|
4
|
+
import { StreamHandler } from './stream-handler.js';
|
|
5
|
+
import { validateAddrs } from './utils.js';
|
|
6
|
+
const log = logger('libp2p:circuit:stop');
|
|
7
|
+
/**
|
|
8
|
+
* Handles incoming STOP requests
|
|
9
|
+
*/
|
|
10
|
+
export function handleStop(options) {
|
|
11
|
+
const { connection, request, streamHandler } = options;
|
|
12
|
+
// Validate the STOP request has the required input
|
|
13
|
+
try {
|
|
14
|
+
validateAddrs(request, streamHandler);
|
|
15
|
+
}
|
|
16
|
+
catch (err) {
|
|
17
|
+
log.error('invalid stop request via peer %p %o', connection.remotePeer, err);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// The request is valid
|
|
21
|
+
log('stop request is valid');
|
|
22
|
+
streamHandler.write({
|
|
23
|
+
type: CircuitPB.Type.STATUS,
|
|
24
|
+
code: CircuitPB.Status.SUCCESS
|
|
25
|
+
});
|
|
26
|
+
return streamHandler.rest();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates a STOP request
|
|
30
|
+
*/
|
|
31
|
+
export async function stop(options) {
|
|
32
|
+
const { connection, request } = options;
|
|
33
|
+
const { stream } = await connection.newStream([RELAY_CODEC]);
|
|
34
|
+
log('starting stop request to %p', connection.remotePeer);
|
|
35
|
+
const streamHandler = new StreamHandler({ stream });
|
|
36
|
+
streamHandler.write(request);
|
|
37
|
+
const response = await streamHandler.read();
|
|
38
|
+
if (response == null) {
|
|
39
|
+
streamHandler.close();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (response.code === CircuitPB.Status.SUCCESS) {
|
|
43
|
+
log('stop request to %p was successful', connection.remotePeer);
|
|
44
|
+
return streamHandler.rest();
|
|
45
|
+
}
|
|
46
|
+
log('stop request failed with code %d', response.code);
|
|
47
|
+
streamHandler.close();
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=stop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI1C,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAQzC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAE,OAA0B;IACpD,MAAM,EACJ,UAAU,EACV,OAAO,EACP,aAAa,EACd,GAAG,OAAO,CAAA;IAEX,mDAAmD;IACnD,IAAI;QACF,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;KACtC;IAAC,OAAO,GAAQ,EAAE;QACjB,GAAG,CAAC,KAAK,CAAC,qCAAqC,EAAE,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QAC5E,OAAM;KACP;IAED,uBAAuB;IACvB,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAC5B,aAAa,CAAC,KAAK,CAAC;QAClB,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,MAAM;QAC3B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,OAAO;KAC/B,CAAC,CAAA;IAEF,OAAO,aAAa,CAAC,IAAI,EAAE,CAAA;AAC7B,CAAC;AAOD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAE,OAAoB;IAC9C,MAAM,EACJ,UAAU,EACV,OAAO,EACR,GAAG,OAAO,CAAA;IAEX,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;IAC5D,GAAG,CAAC,6BAA6B,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;IACzD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;IAEnD,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC5B,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAA;IAE3C,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,aAAa,CAAC,KAAK,EAAE,CAAA;QACrB,OAAM;KACP;IAED,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;QAC9C,GAAG,CAAC,mCAAmC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;QAC/D,OAAO,aAAa,CAAC,IAAI,EAAE,CAAA;KAC5B;IAED,GAAG,CAAC,kCAAkC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;IACtD,aAAa,CAAC,KAAK,EAAE,CAAA;AACvB,CAAC"}
|
|
@@ -1,58 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* @typedef {import('../protocol').ICircuitRelay} ICircuitRelay
|
|
5
|
-
*/
|
|
6
|
-
declare class StreamHandler {
|
|
1
|
+
import { CircuitRelay } from '../pb/index.js';
|
|
2
|
+
import type { Stream } from '@libp2p/interfaces/connection';
|
|
3
|
+
export interface StreamHandlerOptions {
|
|
7
4
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* @class
|
|
11
|
-
* @param {object} options
|
|
12
|
-
* @param {MuxedStream} options.stream - A duplex iterable
|
|
13
|
-
* @param {number} [options.maxLength = 4096] - max bytes length of message
|
|
5
|
+
* A duplex iterable
|
|
14
6
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
7
|
+
stream: Stream;
|
|
8
|
+
/**
|
|
9
|
+
* max bytes length of message
|
|
10
|
+
*/
|
|
11
|
+
maxLength?: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class StreamHandler {
|
|
14
|
+
private readonly stream;
|
|
15
|
+
private readonly shake;
|
|
16
|
+
private readonly decoder;
|
|
17
|
+
constructor(options: StreamHandlerOptions);
|
|
22
18
|
/**
|
|
23
19
|
* Read and decode message
|
|
24
|
-
*
|
|
25
|
-
* @async
|
|
26
20
|
*/
|
|
27
21
|
read(): Promise<CircuitRelay | undefined>;
|
|
28
22
|
/**
|
|
29
23
|
* Encode and write array of buffers
|
|
30
|
-
*
|
|
31
|
-
* @param {ICircuitRelay} msg - An unencoded CircuitRelay protobuf message
|
|
32
|
-
* @returns {void}
|
|
33
24
|
*/
|
|
34
|
-
write(msg:
|
|
25
|
+
write(msg: CircuitRelay): void;
|
|
35
26
|
/**
|
|
36
27
|
* Return the handshake rest stream and invalidate handler
|
|
37
|
-
*
|
|
38
|
-
* @returns {*} A duplex iterable
|
|
39
28
|
*/
|
|
40
|
-
rest():
|
|
29
|
+
rest(): import("it-stream-types").Duplex<Uint8Array, Uint8Array, Promise<void>>;
|
|
41
30
|
/**
|
|
42
|
-
* @param {
|
|
31
|
+
* @param {CircuitRelay} msg - An unencoded CircuitRelay protobuf message
|
|
43
32
|
*/
|
|
44
|
-
end(msg:
|
|
33
|
+
end(msg: CircuitRelay): void;
|
|
45
34
|
/**
|
|
46
35
|
* Close the stream
|
|
47
|
-
*
|
|
48
|
-
* @returns {void}
|
|
49
36
|
*/
|
|
50
37
|
close(): void;
|
|
51
38
|
}
|
|
52
|
-
declare namespace StreamHandler {
|
|
53
|
-
export { MuxedStream, ICircuitRelay };
|
|
54
|
-
}
|
|
55
|
-
import { CircuitRelay } from "../protocol";
|
|
56
|
-
type ICircuitRelay = import('../protocol').ICircuitRelay;
|
|
57
|
-
type MuxedStream = import('libp2p-interfaces/src/stream-muxer/types').MuxedStream;
|
|
58
39
|
//# sourceMappingURL=stream-handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stream-handler.
|
|
1
|
+
{"version":3,"file":"stream-handler.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/stream-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAK3D,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAE/B,OAAO,EAAE,oBAAoB;IAQ1C;;OAEG;IACG,IAAI;IAeV;;OAEG;IACH,KAAK,CAAE,GAAG,EAAE,YAAY;IAKxB;;OAEG;IACH,IAAI;IAKJ;;OAEG;IACH,GAAG,CAAE,GAAG,EAAE,YAAY;IAKtB;;OAEG;IACH,KAAK;CAMN"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { logger } from '@libp2p/logger';
|
|
2
|
+
import * as lp from 'it-length-prefixed';
|
|
3
|
+
import { handshake } from 'it-handshake';
|
|
4
|
+
import { CircuitRelay } from '../pb/index.js';
|
|
5
|
+
const log = logger('libp2p:circuit:stream-handler');
|
|
6
|
+
export class StreamHandler {
|
|
7
|
+
constructor(options) {
|
|
8
|
+
const { stream, maxLength = 4096 } = options;
|
|
9
|
+
this.stream = stream;
|
|
10
|
+
this.shake = handshake(this.stream);
|
|
11
|
+
this.decoder = lp.decode.fromReader(this.shake.reader, { maxDataLength: maxLength });
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Read and decode message
|
|
15
|
+
*/
|
|
16
|
+
async read() {
|
|
17
|
+
// @ts-expect-error FIXME is a source, needs to be a generator
|
|
18
|
+
const msg = await this.decoder.next();
|
|
19
|
+
if (msg.value != null) {
|
|
20
|
+
const value = CircuitRelay.decode(msg.value.slice());
|
|
21
|
+
log('read message type', value.type);
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
log('read received no value, closing stream');
|
|
25
|
+
// End the stream, we didn't get data
|
|
26
|
+
this.close();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Encode and write array of buffers
|
|
30
|
+
*/
|
|
31
|
+
write(msg) {
|
|
32
|
+
log('write message type %s', msg.type);
|
|
33
|
+
this.shake.write(lp.encode.single(CircuitRelay.encode(msg)).slice());
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Return the handshake rest stream and invalidate handler
|
|
37
|
+
*/
|
|
38
|
+
rest() {
|
|
39
|
+
this.shake.rest();
|
|
40
|
+
return this.shake.stream;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* @param {CircuitRelay} msg - An unencoded CircuitRelay protobuf message
|
|
44
|
+
*/
|
|
45
|
+
end(msg) {
|
|
46
|
+
this.write(msg);
|
|
47
|
+
this.close();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Close the stream
|
|
51
|
+
*/
|
|
52
|
+
close() {
|
|
53
|
+
log('closing the stream');
|
|
54
|
+
void this.rest().sink([]).catch(err => {
|
|
55
|
+
log.error(err);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=stream-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-handler.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/stream-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAa,SAAS,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C,MAAM,GAAG,GAAG,MAAM,CAAC,+BAA+B,CAAC,CAAA;AAcnD,MAAM,OAAO,aAAa;IAKxB,YAAa,OAA6B;QACxC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAE5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,CAAA;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,8DAA8D;QAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;QAErC,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,EAAE;YACrB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;YACpD,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YACpC,OAAO,KAAK,CAAA;SACb;QAED,GAAG,CAAC,wCAAwC,CAAC,CAAA;QAC7C,qCAAqC;QACrC,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAE,GAAiB;QACtB,GAAG,CAAC,uBAAuB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACtE,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG,CAAE,GAAiB;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED;;OAEG;IACH,KAAK;QACH,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACzB,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACpC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { CircuitRelay } from '../pb/index.js';
|
|
2
|
+
import type { StreamHandler } from './stream-handler.js';
|
|
3
3
|
/**
|
|
4
4
|
* Validate incomming HOP/STOP message
|
|
5
|
-
*
|
|
6
|
-
* @param {ICircuitRelay} msg - A CircuitRelay unencoded protobuf message
|
|
7
|
-
* @param {StreamHandler} streamHandler
|
|
8
5
|
*/
|
|
9
|
-
export function validateAddrs(msg:
|
|
6
|
+
export declare function validateAddrs(msg: CircuitRelay, streamHandler: StreamHandler): void;
|
|
10
7
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/utils.
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/circuit/circuit/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAYxD;;GAEG;AACH,wBAAgB,aAAa,CAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,QA0B7E"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Multiaddr } from '@multiformats/multiaddr';
|
|
2
|
+
import { CircuitRelay } from '../pb/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Write a response
|
|
5
|
+
*/
|
|
6
|
+
function writeResponse(streamHandler, status) {
|
|
7
|
+
streamHandler.write({
|
|
8
|
+
type: CircuitRelay.Type.STATUS,
|
|
9
|
+
code: status
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Validate incomming HOP/STOP message
|
|
14
|
+
*/
|
|
15
|
+
export function validateAddrs(msg, streamHandler) {
|
|
16
|
+
try {
|
|
17
|
+
if (msg.dstPeer?.addrs != null) {
|
|
18
|
+
msg.dstPeer.addrs.forEach((addr) => {
|
|
19
|
+
return new Multiaddr(addr);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
|
|
25
|
+
? CircuitRelay.Status.HOP_DST_MULTIADDR_INVALID
|
|
26
|
+
: CircuitRelay.Status.STOP_DST_MULTIADDR_INVALID);
|
|
27
|
+
throw err;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
if (msg.srcPeer?.addrs != null) {
|
|
31
|
+
msg.srcPeer.addrs.forEach((addr) => {
|
|
32
|
+
return new Multiaddr(addr);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
writeResponse(streamHandler, msg.type === CircuitRelay.Type.HOP
|
|
38
|
+
? CircuitRelay.Status.HOP_SRC_MULTIADDR_INVALID
|
|
39
|
+
: CircuitRelay.Status.STOP_SRC_MULTIADDR_INVALID);
|
|
40
|
+
throw err;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/circuit/circuit/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C;;GAEG;AACH,SAAS,aAAa,CAAE,aAA4B,EAAE,MAA2B;IAC/E,aAAa,CAAC,KAAK,CAAC;QAClB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM;QAC9B,IAAI,EAAE,MAAM;KACb,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAE,GAAiB,EAAE,aAA4B;IAC5E,IAAI;QACF,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;YAC9B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;SACH;KACF;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG;YAC7D,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,yBAAyB;YAC/C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QACnD,MAAM,GAAG,CAAA;KACV;IAED,IAAI;QACF,IAAI,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,EAAE;YAC9B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;SACH;KACF;IAAC,OAAO,GAAQ,EAAE;QACjB,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG;YAC7D,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,yBAAyB;YAC/C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAA;QACnD,MAAM,GAAG,CAAA;KACV;AACH,CAAC"}
|
|
@@ -1,7 +1,25 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export const
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Delay before HOP relay service is advertised on the network
|
|
3
|
+
*/
|
|
4
|
+
export declare const ADVERTISE_BOOT_DELAY: number;
|
|
5
|
+
/**
|
|
6
|
+
* Delay Between HOP relay service advertisements on the network
|
|
7
|
+
*/
|
|
8
|
+
export declare const ADVERTISE_TTL: number;
|
|
9
|
+
/**
|
|
10
|
+
* Multicodec code
|
|
11
|
+
*/
|
|
12
|
+
export declare const CIRCUIT_PROTO_CODE = 290;
|
|
13
|
+
/**
|
|
14
|
+
* PeerStore metadaBook key for HOP relay service
|
|
15
|
+
*/
|
|
16
|
+
export declare const HOP_METADATA_KEY = "hop_relay";
|
|
17
|
+
/**
|
|
18
|
+
* PeerStore metadaBook value for HOP relay service
|
|
19
|
+
*/
|
|
20
|
+
export declare const HOP_METADATA_VALUE = "true";
|
|
21
|
+
/**
|
|
22
|
+
* Relay HOP relay service namespace for discovery
|
|
23
|
+
*/
|
|
24
|
+
export declare const RELAY_RENDEZVOUS_NS = "/libp2p/relay";
|
|
7
25
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/circuit/constants.
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,oBAAoB,QAAc,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,aAAa,QAAc,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,kBAAkB,MAAM,CAAA;AAErC;;GAEG;AACH,eAAO,MAAM,gBAAgB,cAAc,CAAA;AAE3C;;GAEG;AACH,eAAO,MAAM,kBAAkB,SAAS,CAAA;AAExC;;GAEG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const minute = 60 * 1000;
|
|
2
|
+
/**
|
|
3
|
+
* Delay before HOP relay service is advertised on the network
|
|
4
|
+
*/
|
|
5
|
+
export const ADVERTISE_BOOT_DELAY = 15 * minute;
|
|
6
|
+
/**
|
|
7
|
+
* Delay Between HOP relay service advertisements on the network
|
|
8
|
+
*/
|
|
9
|
+
export const ADVERTISE_TTL = 30 * minute;
|
|
10
|
+
/**
|
|
11
|
+
* Multicodec code
|
|
12
|
+
*/
|
|
13
|
+
export const CIRCUIT_PROTO_CODE = 290;
|
|
14
|
+
/**
|
|
15
|
+
* PeerStore metadaBook key for HOP relay service
|
|
16
|
+
*/
|
|
17
|
+
export const HOP_METADATA_KEY = 'hop_relay';
|
|
18
|
+
/**
|
|
19
|
+
* PeerStore metadaBook value for HOP relay service
|
|
20
|
+
*/
|
|
21
|
+
export const HOP_METADATA_VALUE = 'true';
|
|
22
|
+
/**
|
|
23
|
+
* Relay HOP relay service namespace for discovery
|
|
24
|
+
*/
|
|
25
|
+
export const RELAY_RENDEZVOUS_NS = '/libp2p/relay';
|
|
26
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/circuit/constants.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAA;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,MAAM,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,GAAG,MAAM,CAAA;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAA;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAExC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAA"}
|