@bsv/sdk 1.3.12 → 1.3.14
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/dist/cjs/package.json +15 -3
- package/dist/cjs/src/auth/Peer.js +83 -57
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/auth/SessionManager.js +14 -9
- package/dist/cjs/src/auth/SessionManager.js.map +1 -1
- package/dist/cjs/src/auth/certificates/Certificate.js +16 -10
- package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +25 -23
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +2 -2
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +62 -46
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/cjs/src/auth/clients/AuthFetch.js +1 -0
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +70 -43
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/cjs/src/auth/utils/createNonce.js +2 -1
- package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
- package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/validateCertificates.js +5 -2
- package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/verifyNonce.js +2 -1
- package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/cjs/src/compat/BSM.js +7 -17
- package/dist/cjs/src/compat/BSM.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +172 -133
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +63 -73
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +102 -106
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/compat/Utxo.js +2 -2
- package/dist/cjs/src/compat/Utxo.js.map +1 -1
- package/dist/cjs/src/compat/index.js +7 -17
- package/dist/cjs/src/compat/index.js.map +1 -1
- package/dist/cjs/src/messages/EncryptedMessage.js +3 -1
- package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/cjs/src/messages/SignedMessage.js +1 -0
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
- package/dist/cjs/src/messages/index.js +7 -17
- package/dist/cjs/src/messages/index.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +54 -35
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +40 -28
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +6 -5
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/BasePoint.js +1 -1
- package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +50 -62
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/Curve.js +46 -22
- package/dist/cjs/src/primitives/Curve.js.map +1 -1
- package/dist/cjs/src/primitives/DRBG.js +2 -8
- package/dist/cjs/src/primitives/DRBG.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +51 -35
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/Hash.js +191 -216
- package/dist/cjs/src/primitives/Hash.js.map +1 -1
- package/dist/cjs/src/primitives/JacobianPoint.js +19 -5
- package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/cjs/src/primitives/K256.js.map +1 -1
- package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
- package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/cjs/src/primitives/Point.js +117 -88
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/Polynomial.js +4 -2
- package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +32 -33
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js +6 -5
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/ReductionContext.js +1 -1
- package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
- package/dist/cjs/src/primitives/Schnorr.js +21 -15
- package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
- package/dist/cjs/src/primitives/Signature.js +8 -7
- package/dist/cjs/src/primitives/Signature.js.map +1 -1
- package/dist/cjs/src/primitives/SymmetricKey.js +13 -13
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +31 -29
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/index.js +7 -17
- package/dist/cjs/src/primitives/index.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +79 -68
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/script/OP.js +3 -3
- package/dist/cjs/src/script/OP.js.map +1 -1
- package/dist/cjs/src/script/Script.js +12 -10
- package/dist/cjs/src/script/Script.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +47 -49
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/templates/P2PKH.js +24 -12
- package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +28 -23
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
- package/dist/cjs/src/script/templates/RPuzzle.js +10 -6
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/totp/totp.js +2 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +177 -154
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js +24 -24
- package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +26 -18
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/Broadcaster.js +3 -2
- package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +64 -37
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +111 -137
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/ARC.js +25 -16
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -1
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +5 -3
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/FetchHttpClient.js +5 -2
- package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js +5 -3
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/index.js.map +1 -1
- package/dist/cjs/src/transaction/index.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js +91 -66
- package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/KeyDeriver.js +61 -52
- package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js +79 -29
- package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/cjs/src/wallet/WalletClient.js +7 -2
- package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
- package/dist/cjs/src/wallet/WalletError.js +2 -2
- package/dist/cjs/src/wallet/WalletError.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +4 -3
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +2 -2
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +102 -43
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/XDM.js +8 -3
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/window.CWI.js +28 -28
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +15 -15
- package/dist/esm/src/auth/Peer.js +75 -54
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/auth/SessionManager.js +14 -9
- package/dist/esm/src/auth/SessionManager.js.map +1 -1
- package/dist/esm/src/auth/certificates/Certificate.js +15 -11
- package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -23
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js +2 -2
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +64 -47
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/esm/src/auth/clients/AuthFetch.js +1 -0
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +69 -43
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js +1 -1
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
- package/dist/esm/src/auth/utils/validateCertificates.js +6 -3
- package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/esm/src/compat/BSM.js.map +1 -1
- package/dist/esm/src/compat/ECIES.js +165 -116
- package/dist/esm/src/compat/ECIES.js.map +1 -1
- package/dist/esm/src/compat/HD.js +56 -56
- package/dist/esm/src/compat/HD.js.map +1 -1
- package/dist/esm/src/compat/Mnemonic.js +95 -89
- package/dist/esm/src/compat/Mnemonic.js.map +1 -1
- package/dist/esm/src/compat/Utxo.js +1 -1
- package/dist/esm/src/compat/Utxo.js.map +1 -1
- package/dist/esm/src/messages/EncryptedMessage.js +3 -1
- package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/esm/src/messages/SignedMessage.js +1 -0
- package/dist/esm/src/messages/SignedMessage.js.map +1 -1
- package/dist/esm/src/overlay-tools/LookupResolver.js +53 -35
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +32 -20
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +40 -28
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +1 -0
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BasePoint.js +1 -1
- package/dist/esm/src/primitives/BasePoint.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +50 -62
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/Curve.js +45 -22
- package/dist/esm/src/primitives/Curve.js.map +1 -1
- package/dist/esm/src/primitives/DRBG.js +2 -8
- package/dist/esm/src/primitives/DRBG.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +50 -35
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/Hash.js +188 -213
- package/dist/esm/src/primitives/Hash.js.map +1 -1
- package/dist/esm/src/primitives/JacobianPoint.js +18 -5
- package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/esm/src/primitives/K256.js.map +1 -1
- package/dist/esm/src/primitives/Mersenne.js.map +1 -1
- package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/esm/src/primitives/Point.js +107 -88
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/Polynomial.js +4 -2
- package/dist/esm/src/primitives/Polynomial.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +25 -16
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js +7 -6
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/ReductionContext.js +1 -1
- package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
- package/dist/esm/src/primitives/Schnorr.js +21 -15
- package/dist/esm/src/primitives/Schnorr.js.map +1 -1
- package/dist/esm/src/primitives/Signature.js +8 -7
- package/dist/esm/src/primitives/Signature.js.map +1 -1
- package/dist/esm/src/primitives/SymmetricKey.js +13 -13
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/esm/src/primitives/TransactionSignature.js +22 -12
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +76 -66
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/script/OP.js +3 -3
- package/dist/esm/src/script/OP.js.map +1 -1
- package/dist/esm/src/script/Script.js +12 -10
- package/dist/esm/src/script/Script.js.map +1 -1
- package/dist/esm/src/script/Spend.js +39 -32
- package/dist/esm/src/script/Spend.js.map +1 -1
- package/dist/esm/src/script/templates/P2PKH.js +26 -11
- package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
- package/dist/esm/src/script/templates/PushDrop.js +29 -22
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
- package/dist/esm/src/script/templates/RPuzzle.js +11 -6
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/totp/totp.js +2 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +176 -154
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js +24 -24
- package/dist/esm/src/transaction/BeefParty.js.map +1 -1
- package/dist/esm/src/transaction/BeefTx.js +26 -18
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
- package/dist/esm/src/transaction/MerklePath.js +61 -36
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +105 -138
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/ARC.js +25 -16
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +3 -3
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js +3 -2
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/FetchHttpClient.js +4 -2
- package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/NodejsHttpClient.js +5 -3
- package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/index.js.map +1 -1
- package/dist/esm/src/transaction/index.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js +91 -66
- package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/KeyDeriver.js +60 -52
- package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js +75 -29
- package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/esm/src/wallet/WalletClient.js +7 -2
- package/dist/esm/src/wallet/WalletClient.js.map +1 -1
- package/dist/esm/src/wallet/WalletError.js +2 -2
- package/dist/esm/src/wallet/WalletError.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +4 -4
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +2 -2
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1239 -1261
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +95 -43
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/src/wallet/substrates/XDM.js +8 -3
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/esm/src/wallet/substrates/window.CWI.js +28 -28
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +15 -15
- package/dist/types/src/auth/Peer.d.ts +10 -10
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/SessionManager.d.ts +4 -4
- package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/Certificate.d.ts +6 -6
- package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts +5 -5
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +23 -22
- package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
- package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
- package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
- package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
- package/dist/types/src/compat/BSM.d.ts +1 -1
- package/dist/types/src/compat/BSM.d.ts.map +1 -1
- package/dist/types/src/compat/ECIES.d.ts +36 -36
- package/dist/types/src/compat/ECIES.d.ts.map +1 -1
- package/dist/types/src/compat/HD.d.ts +51 -51
- package/dist/types/src/compat/HD.d.ts.map +1 -1
- package/dist/types/src/compat/Mnemonic.d.ts +79 -79
- package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
- package/dist/types/src/compat/Utxo.d.ts.map +1 -1
- package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
- package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
- package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +17 -17
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +14 -14
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
- package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
- package/dist/types/src/primitives/BasePoint.d.ts +8 -8
- package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/Curve.d.ts +14 -7
- package/dist/types/src/primitives/Curve.d.ts.map +1 -1
- package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/Hash.d.ts +11 -11
- package/dist/types/src/primitives/Hash.d.ts.map +1 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts +14 -10
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
- package/dist/types/src/primitives/PrivateKey.d.ts +2 -2
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
- package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
- package/dist/types/src/primitives/Random.d.ts.map +1 -1
- package/dist/types/src/primitives/Schnorr.d.ts +14 -14
- package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
- package/dist/types/src/primitives/Signature.d.ts +1 -1
- package/dist/types/src/primitives/Signature.d.ts.map +1 -1
- package/dist/types/src/primitives/SymmetricKey.d.ts +13 -13
- package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
- package/dist/types/src/primitives/TransactionSignature.d.ts +4 -4
- package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
- package/dist/types/src/primitives/utils.d.ts +3 -6
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/script/Script.d.ts +3 -3
- package/dist/types/src/script/Script.d.ts.map +1 -1
- package/dist/types/src/script/ScriptTemplate.d.ts +2 -2
- package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
- package/dist/types/src/script/Spend.d.ts.map +1 -1
- package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
- package/dist/types/src/script/templates/PushDrop.d.ts +1 -2
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
- package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
- package/dist/types/src/totp/totp.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +96 -96
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefParty.d.ts +22 -22
- package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +5 -5
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
- package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
- package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +4 -12
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts +1 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
- package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +1 -1
- package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts +5 -5
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
- package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +3 -3
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/index.d.ts.map +1 -1
- package/dist/types/src/transaction/index.d.ts.map +1 -1
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts +58 -58
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/KeyDeriver.d.ts +78 -78
- package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/ProtoWallet.d.ts +10 -10
- package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +151 -152
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/src/wallet/WalletClient.d.ts +5 -5
- package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +6 -6
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/XDM.d.ts +1 -1
- package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/window.CWI.d.ts +6 -6
- package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/auth.md +92 -82
- package/docs/compat.md +24 -24
- package/docs/messages.md +7 -5
- package/docs/overlay-tools.md +21 -21
- package/docs/primitives.md +336 -315
- package/docs/script.md +35 -35
- package/docs/swagger/dist/swagger-initializer.js +7 -7
- package/docs/swagger/dist/swagger-ui-bundle.js +1 -1
- package/docs/swagger/dist/swagger-ui-es-bundle-core.js +2 -2
- package/docs/swagger/dist/swagger-ui-es-bundle.js +1 -1
- package/docs/swagger/dist/swagger-ui-standalone-preset.js +1 -1
- package/docs/swagger/dist/swagger-ui.js +2 -2
- package/docs/totp.md +5 -5
- package/docs/transaction.md +103 -105
- package/docs/wallet-substrates.md +17 -17
- package/docs/wallet.md +202 -204
- package/mod.ts +15 -15
- package/package.json +15 -3
- package/src/auth/Peer.ts +271 -121
- package/src/auth/SessionManager.ts +17 -10
- package/src/auth/__tests/Peer.test.ts +361 -179
- package/src/auth/__tests/SessionManager.test.ts +67 -19
- package/src/auth/__tests/build.test.ts +11 -0
- package/src/auth/certificates/Certificate.ts +27 -14
- package/src/auth/certificates/MasterCertificate.ts +106 -62
- package/src/auth/certificates/VerifiableCertificate.ts +30 -8
- package/src/auth/certificates/__tests/Certificate.test.ts +32 -17
- package/src/auth/certificates/__tests/CompletedProtoWallet.ts +171 -68
- package/src/auth/certificates/__tests/MasterCertificate.test.ts +63 -47
- package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +42 -31
- package/src/auth/certificates/index.ts +1 -1
- package/src/auth/clients/AuthFetch.ts +1 -0
- package/src/auth/clients/index.ts +1 -1
- package/src/auth/transports/SimplifiedFetchTransport.ts +145 -72
- package/src/auth/transports/index.ts +1 -1
- package/src/auth/utils/__tests/cryptononce.test.ts +52 -23
- package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +56 -30
- package/src/auth/utils/__tests/validateCertificates.test.ts +53 -31
- package/src/auth/utils/createNonce.ts +11 -3
- package/src/auth/utils/getVerifiableCertificates.ts +12 -7
- package/src/auth/utils/validateCertificates.ts +57 -39
- package/src/auth/utils/verifyNonce.ts +6 -2
- package/src/compat/BSM.ts +10 -2
- package/src/compat/ECIES.ts +265 -141
- package/src/compat/HD.ts +81 -63
- package/src/compat/Mnemonic.ts +104 -91
- package/src/compat/Utxo.ts +8 -5
- package/src/compat/__tests/BSM.test.ts +42 -16
- package/src/compat/__tests/ECIES.test.ts +117 -52
- package/src/compat/__tests/HD.test.ts +55 -42
- package/src/compat/__tests/Mnemonic.test.ts +11 -12
- package/src/compat/__tests/Mnemonic.vectors.ts +110 -55
- package/src/messages/EncryptedMessage.ts +6 -2
- package/src/messages/SignedMessage.ts +14 -8
- package/src/messages/__tests/EncryptedMessage.test.ts +23 -24
- package/src/messages/__tests/SignedMessage.test.ts +17 -11
- package/src/overlay-tools/LookupResolver.ts +108 -56
- package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -23
- package/src/overlay-tools/SHIPBroadcaster.ts +135 -59
- package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
- package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
- package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
- package/src/primitives/AESGCM.ts +2 -0
- package/src/primitives/BasePoint.ts +4 -4
- package/src/primitives/BigNumber.ts +99 -90
- package/src/primitives/Curve.ts +117 -46
- package/src/primitives/DRBG.ts +9 -11
- package/src/primitives/ECDSA.ts +109 -63
- package/src/primitives/Hash.ts +492 -321
- package/src/primitives/JacobianPoint.ts +67 -19
- package/src/primitives/Point.ts +254 -152
- package/src/primitives/Polynomial.ts +8 -3
- package/src/primitives/PrivateKey.ts +41 -17
- package/src/primitives/PublicKey.ts +13 -3
- package/src/primitives/Random.ts +14 -8
- package/src/primitives/ReductionContext.ts +1 -1
- package/src/primitives/Schnorr.ts +40 -18
- package/src/primitives/Signature.ts +26 -16
- package/src/primitives/SymmetricKey.ts +14 -14
- package/src/primitives/TransactionSignature.ts +41 -17
- package/src/primitives/__tests/AESGCM.test.ts +457 -151
- package/src/primitives/__tests/BRC42.private.vectors.ts +30 -15
- package/src/primitives/__tests/BRC42.public.vectors.ts +30 -15
- package/src/primitives/__tests/BigNumber.arithmatic.test.ts +344 -125
- package/src/primitives/__tests/BigNumber.binary.test.ts +148 -67
- package/src/primitives/__tests/BigNumber.constructor.test.ts +65 -25
- package/src/primitives/__tests/BigNumber.dhGroup.test.ts +15 -11
- package/src/primitives/__tests/BigNumber.fixtures.ts +16 -8
- package/src/primitives/__tests/BigNumber.serializers.test.ts +41 -15
- package/src/primitives/__tests/BigNumber.utils.test.ts +132 -42
- package/src/primitives/__tests/Curve.unit.test.ts +75 -53
- package/src/primitives/__tests/DRBG.test.ts +1 -1
- package/src/primitives/__tests/DRBG.vectors.ts +45 -75
- package/src/primitives/__tests/ECDH.test.ts +15 -8
- package/src/primitives/__tests/ECDSA.test.ts +12 -6
- package/src/primitives/__tests/HMAC.test.ts +24 -18
- package/src/primitives/__tests/Hash.test.ts +57 -46
- package/src/primitives/__tests/PBKDF2.vectors.ts +130 -117
- package/src/primitives/__tests/PrivateKey.split.test.ts +33 -11
- package/src/primitives/__tests/PrivateKey.test.ts +11 -10
- package/src/primitives/__tests/PublicKey.test.ts +64 -53
- package/src/primitives/__tests/Random.test.ts +1 -1
- package/src/primitives/__tests/Reader.test.ts +240 -219
- package/src/primitives/__tests/ReductionContext.test.ts +98 -61
- package/src/primitives/__tests/Schnorr.test.ts +249 -237
- package/src/primitives/__tests/SymmetricKey.test.ts +18 -15
- package/src/primitives/__tests/SymmetricKey.vectors.ts +16 -8
- package/src/primitives/__tests/Writer.test.ts +23 -13
- package/src/primitives/__tests/bug-31.test.ts +6 -10
- package/src/primitives/__tests/utils.test.ts +70 -19
- package/src/primitives/utils.ts +103 -79
- package/src/script/Script.ts +18 -12
- package/src/script/ScriptTemplate.ts +3 -5
- package/src/script/Spend.ts +306 -108
- package/src/script/__tests/Script.test.ts +73 -55
- package/src/script/__tests/Spend.test.ts +208 -83
- package/src/script/__tests/SpendComplex.test.ts +19 -13
- package/src/script/__tests/script.invalid.vectors.ts +428 -1796
- package/src/script/__tests/script.valid.vectors.ts +728 -2764
- package/src/script/templates/P2PKH.ts +34 -12
- package/src/script/templates/PushDrop.ts +65 -31
- package/src/script/templates/RPuzzle.ts +29 -8
- package/src/script/templates/__tests/PushDrop.test.ts +146 -41
- package/src/totp/__tests/totp.test.ts +45 -44
- package/src/totp/totp.ts +3 -2
- package/src/transaction/Beef.ts +269 -174
- package/src/transaction/BeefParty.ts +41 -31
- package/src/transaction/BeefTx.ts +36 -26
- package/src/transaction/Broadcaster.ts +10 -6
- package/src/transaction/ChainTracker.ts +2 -2
- package/src/transaction/FeeModel.ts +0 -1
- package/src/transaction/MerklePath.ts +124 -59
- package/src/transaction/Transaction.ts +188 -187
- package/src/transaction/TransactionOutput.ts +0 -1
- package/src/transaction/__tests/Beef.test.ts +390 -287
- package/src/transaction/__tests/MerklePath.test.ts +59 -26
- package/src/transaction/__tests/Transaction.benchmarks.test.ts +231 -201
- package/src/transaction/__tests/Transaction.test.ts +758 -482
- package/src/transaction/__tests/bigtx.vectors.ts +2 -1
- package/src/transaction/__tests/bump.invalid.vectors.ts +24 -6
- package/src/transaction/__tests/bump.valid.vectors.ts +6 -2
- package/src/transaction/__tests/tx.invalid.vectors.ts +881 -185
- package/src/transaction/__tests/tx.valid.vectors.ts +1210 -257
- package/src/transaction/broadcasters/ARC.ts +69 -38
- package/src/transaction/broadcasters/DefaultBroadcaster.ts +9 -3
- package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +20 -7
- package/src/transaction/broadcasters/__tests/ARC.test.ts +127 -59
- package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +27 -18
- package/src/transaction/chaintrackers/DefaultChainTracker.ts +1 -1
- package/src/transaction/chaintrackers/WhatsOnChain.ts +27 -11
- package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +59 -23
- package/src/transaction/fee-models/SatoshisPerKilobyte.ts +9 -5
- package/src/transaction/http/DefaultHttpClient.ts +5 -4
- package/src/transaction/http/FetchHttpClient.ts +18 -9
- package/src/transaction/http/HttpClient.ts +27 -22
- package/src/transaction/http/NodejsHttpClient.ts +23 -9
- package/src/transaction/http/index.ts +5 -1
- package/src/transaction/index.ts +5 -1
- package/src/wallet/CachedKeyDeriver.ts +151 -82
- package/src/wallet/KeyDeriver.ts +186 -105
- package/src/wallet/ProtoWallet.ts +121 -52
- package/src/wallet/Wallet.interfaces.ts +167 -156
- package/src/wallet/WalletClient.ts +314 -59
- package/src/wallet/WalletError.ts +2 -2
- package/src/wallet/__tests/CachedKeyDeriver.test.ts +86 -27
- package/src/wallet/__tests/KeyDeriver.test.ts +136 -33
- package/src/wallet/__tests/ProtoWallet.test.ts +190 -102
- package/src/wallet/substrates/HTTPWalletJSON.ts +250 -67
- package/src/wallet/substrates/HTTPWalletWire.ts +7 -3
- package/src/wallet/substrates/WalletWireCalls.ts +2 -2
- package/src/wallet/substrates/WalletWireProcessor.ts +1412 -1277
- package/src/wallet/substrates/WalletWireTransceiver.ts +713 -138
- package/src/wallet/substrates/XDM.ts +425 -36
- package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +488 -225
- package/src/wallet/substrates/__tests/XDM.test.ts +232 -234
- package/src/wallet/substrates/window.CWI.ts +520 -61
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
import Transaction from '
|
|
2
|
-
import { NodejsHttpClient } from '
|
|
3
|
-
import WhatsOnChainBroadcaster from '
|
|
4
|
-
import { FetchHttpClient } from '
|
|
1
|
+
import Transaction from '../../../transaction/Transaction'
|
|
2
|
+
import { NodejsHttpClient, HttpsNodejs } from '../../../transaction/http/NodejsHttpClient'
|
|
3
|
+
import WhatsOnChainBroadcaster from '../../../transaction/broadcasters/WhatsOnChainBroadcaster'
|
|
4
|
+
import { FetchHttpClient } from '../../../transaction/http/FetchHttpClient'
|
|
5
5
|
|
|
6
6
|
// Mock Transaction
|
|
7
|
-
jest.mock('
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
jest.mock('../../../transaction/Transaction', () => {
|
|
8
|
+
class MockTransaction {
|
|
9
|
+
toHex (): String {
|
|
10
|
+
return 'mocked_transaction_hex'
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
toHexEF (): String {
|
|
14
|
+
return 'mocked_transaction_hexEF'
|
|
15
|
+
}
|
|
14
16
|
}
|
|
17
|
+
return { __esModule: true, default: MockTransaction }
|
|
15
18
|
})
|
|
16
19
|
|
|
17
20
|
describe('WhatsOnChainBroadcaster', () => {
|
|
@@ -47,7 +50,7 @@ describe('WhatsOnChainBroadcaster', () => {
|
|
|
47
50
|
// Mocking Node.js https module
|
|
48
51
|
mockedHttps(successResponse)
|
|
49
52
|
global.window = {} as any
|
|
50
|
-
|
|
53
|
+
|
|
51
54
|
const broadcaster = new WhatsOnChainBroadcaster(network)
|
|
52
55
|
const response = await broadcaster.broadcast(transaction)
|
|
53
56
|
|
|
@@ -61,7 +64,10 @@ describe('WhatsOnChainBroadcaster', () => {
|
|
|
61
64
|
it('should broadcast successfully using provided fetch', async () => {
|
|
62
65
|
const mockFetch = mockedFetch(successResponse)
|
|
63
66
|
|
|
64
|
-
const broadcaster = new WhatsOnChainBroadcaster(
|
|
67
|
+
const broadcaster = new WhatsOnChainBroadcaster(
|
|
68
|
+
network,
|
|
69
|
+
new FetchHttpClient(mockFetch)
|
|
70
|
+
)
|
|
65
71
|
const response = await broadcaster.broadcast(transaction)
|
|
66
72
|
|
|
67
73
|
expect(mockFetch).toHaveBeenCalled()
|
|
@@ -73,8 +79,11 @@ describe('WhatsOnChainBroadcaster', () => {
|
|
|
73
79
|
})
|
|
74
80
|
|
|
75
81
|
it('should broadcast successfully using provided https', async () => {
|
|
76
|
-
const mockHttps = mockedHttps(successResponse)
|
|
77
|
-
const broadcaster = new WhatsOnChainBroadcaster(
|
|
82
|
+
const mockHttps = mockedHttps(successResponse) as unknown as HttpsNodejs
|
|
83
|
+
const broadcaster = new WhatsOnChainBroadcaster(
|
|
84
|
+
network,
|
|
85
|
+
new NodejsHttpClient(mockHttps)
|
|
86
|
+
)
|
|
78
87
|
|
|
79
88
|
const response = await broadcaster.broadcast(transaction)
|
|
80
89
|
|
|
@@ -118,7 +127,7 @@ describe('WhatsOnChainBroadcaster', () => {
|
|
|
118
127
|
})
|
|
119
128
|
})
|
|
120
129
|
|
|
121
|
-
function mockedFetch (response) {
|
|
130
|
+
function mockedFetch (response: any): jest.Mock<any, any, any> {
|
|
122
131
|
return jest.fn().mockResolvedValue({
|
|
123
132
|
ok: response.status === 200,
|
|
124
133
|
status: response.status,
|
|
@@ -134,13 +143,13 @@ describe('WhatsOnChainBroadcaster', () => {
|
|
|
134
143
|
})
|
|
135
144
|
}
|
|
136
145
|
|
|
137
|
-
function mockedHttps (response) {
|
|
146
|
+
function mockedHttps (response: any): { request: Function } {
|
|
138
147
|
const https = {
|
|
139
148
|
request: (url, options, callback) => {
|
|
140
149
|
// eslint-disable-next-line
|
|
141
150
|
callback({
|
|
142
151
|
statusCode: response.status,
|
|
143
|
-
statusMessage: response.status
|
|
152
|
+
statusMessage: response.status === 200 ? 'OK' : 'Bad request',
|
|
144
153
|
headers: {
|
|
145
154
|
'content-type': 'text/plain'
|
|
146
155
|
},
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
import ChainTracker from '../ChainTracker.js'
|
|
2
3
|
import { HttpClient } from '../http/HttpClient.js'
|
|
3
4
|
import { defaultHttpClient } from '../http/DefaultHttpClient.js'
|
|
@@ -29,55 +30,70 @@ export default class WhatsOnChain implements ChainTracker {
|
|
|
29
30
|
* @param {'main' | 'test' | 'stn'} network - The BSV network to use when calling the WhatsOnChain API.
|
|
30
31
|
* @param {WhatsOnChainConfig} config - Configuration options for the WhatsOnChain ChainTracker.
|
|
31
32
|
*/
|
|
32
|
-
constructor
|
|
33
|
+
constructor(
|
|
34
|
+
network: 'main' | 'test' | 'stn' = 'main',
|
|
35
|
+
config: WhatsOnChainConfig = {}
|
|
36
|
+
) {
|
|
33
37
|
const { apiKey, httpClient } = config
|
|
34
38
|
this.network = network
|
|
35
39
|
this.URL = `https://api.whatsonchain.com/v1/bsv/${network}`
|
|
36
40
|
this.httpClient = httpClient ?? defaultHttpClient()
|
|
37
|
-
this.apiKey = apiKey
|
|
41
|
+
this.apiKey = apiKey ?? ''
|
|
38
42
|
}
|
|
39
43
|
|
|
40
|
-
async isValidRootForHeight
|
|
44
|
+
async isValidRootForHeight(root: string, height: number): Promise<boolean> {
|
|
41
45
|
const requestOptions = {
|
|
42
46
|
method: 'GET',
|
|
43
47
|
headers: this.getHttpHeaders()
|
|
44
48
|
}
|
|
45
49
|
|
|
46
|
-
const response = await this.httpClient.request<WhatsOnChainBlockHeader>(
|
|
50
|
+
const response = await this.httpClient.request<WhatsOnChainBlockHeader>(
|
|
51
|
+
`${this.URL}/block/${height}/header`,
|
|
52
|
+
requestOptions
|
|
53
|
+
)
|
|
47
54
|
if (response.ok) {
|
|
48
55
|
const { merkleroot } = response.data
|
|
49
56
|
return merkleroot === root
|
|
50
57
|
} else if (response.status === 404) {
|
|
51
58
|
return false
|
|
52
59
|
} else {
|
|
53
|
-
throw new Error(
|
|
60
|
+
throw new Error(
|
|
61
|
+
`Failed to verify merkleroot for height ${height} because of an error: ${JSON.stringify(response.data)} `
|
|
62
|
+
)
|
|
54
63
|
}
|
|
55
64
|
}
|
|
56
65
|
|
|
57
|
-
async currentHeight
|
|
66
|
+
async currentHeight(): Promise<number> {
|
|
58
67
|
try {
|
|
59
68
|
const requestOptions = {
|
|
60
69
|
method: 'GET',
|
|
61
70
|
headers: this.getHttpHeaders()
|
|
62
71
|
}
|
|
63
72
|
|
|
64
|
-
const response = await this.httpClient.request<{ height: number }>(
|
|
73
|
+
const response = await this.httpClient.request<{ height: number }>(
|
|
74
|
+
`${this.URL}/block/headers`,
|
|
75
|
+
requestOptions
|
|
76
|
+
)
|
|
65
77
|
if (response.ok) {
|
|
66
78
|
return response.data[0].height
|
|
67
79
|
} else {
|
|
68
|
-
throw new Error(
|
|
80
|
+
throw new Error(
|
|
81
|
+
`Failed to get current height because of an error: ${JSON.stringify(response.data)} `
|
|
82
|
+
)
|
|
69
83
|
}
|
|
70
84
|
} catch (error) {
|
|
71
|
-
throw new Error(
|
|
85
|
+
throw new Error(
|
|
86
|
+
`Failed to get current height because of an error: ${error instanceof Error ? error.message : String(error)}`
|
|
87
|
+
)
|
|
72
88
|
}
|
|
73
89
|
}
|
|
74
90
|
|
|
75
|
-
private getHttpHeaders
|
|
91
|
+
private getHttpHeaders(): Record<string, string> {
|
|
76
92
|
const headers: Record<string, string> = {
|
|
77
93
|
Accept: 'application/json'
|
|
78
94
|
}
|
|
79
95
|
|
|
80
|
-
if (this.apiKey) {
|
|
96
|
+
if (typeof this.apiKey === 'string' && this.apiKey.trim() !== '') {
|
|
81
97
|
headers.Authorization = this.apiKey
|
|
82
98
|
}
|
|
83
99
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { NodejsHttpClient } from '
|
|
2
|
-
import WhatsOnChain from '
|
|
3
|
-
import { FetchHttpClient } from '
|
|
1
|
+
import { NodejsHttpClient } from '../../../transaction/http/NodejsHttpClient'
|
|
2
|
+
import WhatsOnChain from '../../../transaction/chaintrackers/WhatsOnChain'
|
|
3
|
+
import { FetchHttpClient } from '../../../transaction/http/FetchHttpClient'
|
|
4
4
|
|
|
5
5
|
describe('WhatsOnChain ChainTracker', () => {
|
|
6
6
|
const network = 'main'
|
|
@@ -20,7 +20,10 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
20
20
|
global.window = { fetch: mockFetch } as any
|
|
21
21
|
|
|
22
22
|
const chainTracker = new WhatsOnChain(network)
|
|
23
|
-
const response = await chainTracker.isValidRootForHeight(
|
|
23
|
+
const response = await chainTracker.isValidRootForHeight(
|
|
24
|
+
merkleroot,
|
|
25
|
+
height
|
|
26
|
+
)
|
|
24
27
|
|
|
25
28
|
expect(mockFetch).toHaveBeenCalled()
|
|
26
29
|
expect(response).toEqual(true)
|
|
@@ -29,10 +32,13 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
29
32
|
it('should verify merkleroot successfully using Node.js https', async () => {
|
|
30
33
|
// Mocking Node.js https module
|
|
31
34
|
mockedHttps(successResponse)
|
|
32
|
-
if (global.window) global.window = {} as any
|
|
35
|
+
if (typeof global.window !== 'undefined') global.window = {} as any
|
|
33
36
|
|
|
34
37
|
const chainTracker = new WhatsOnChain(network)
|
|
35
|
-
const response = await chainTracker.isValidRootForHeight(
|
|
38
|
+
const response = await chainTracker.isValidRootForHeight(
|
|
39
|
+
merkleroot,
|
|
40
|
+
height
|
|
41
|
+
)
|
|
36
42
|
|
|
37
43
|
expect(response).toEqual(true)
|
|
38
44
|
})
|
|
@@ -40,8 +46,13 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
40
46
|
it('should verify merkleroot successfully using provided window.fetch', async () => {
|
|
41
47
|
const mockFetch = mockedFetch(successResponse)
|
|
42
48
|
|
|
43
|
-
const chainTracker = new WhatsOnChain(network, {
|
|
44
|
-
|
|
49
|
+
const chainTracker = new WhatsOnChain(network, {
|
|
50
|
+
httpClient: new FetchHttpClient(mockFetch)
|
|
51
|
+
})
|
|
52
|
+
const response = await chainTracker.isValidRootForHeight(
|
|
53
|
+
merkleroot,
|
|
54
|
+
height
|
|
55
|
+
)
|
|
45
56
|
|
|
46
57
|
expect(mockFetch).toHaveBeenCalled()
|
|
47
58
|
expect(response).toEqual(true)
|
|
@@ -50,8 +61,13 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
50
61
|
it('should verify merkleroot successfully using provided Node.js https', async () => {
|
|
51
62
|
const mockHttps = mockedHttps(successResponse)
|
|
52
63
|
|
|
53
|
-
const chainTracker = new WhatsOnChain(network, {
|
|
54
|
-
|
|
64
|
+
const chainTracker = new WhatsOnChain(network, {
|
|
65
|
+
httpClient: new NodejsHttpClient(mockHttps)
|
|
66
|
+
})
|
|
67
|
+
const response = await chainTracker.isValidRootForHeight(
|
|
68
|
+
merkleroot,
|
|
69
|
+
height
|
|
70
|
+
)
|
|
55
71
|
|
|
56
72
|
expect(response).toEqual(true)
|
|
57
73
|
})
|
|
@@ -62,8 +78,13 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
62
78
|
data: 'not found'
|
|
63
79
|
})
|
|
64
80
|
|
|
65
|
-
const chainTracker = new WhatsOnChain(network, {
|
|
66
|
-
|
|
81
|
+
const chainTracker = new WhatsOnChain(network, {
|
|
82
|
+
httpClient: new FetchHttpClient(mockFetch)
|
|
83
|
+
})
|
|
84
|
+
const response = await chainTracker.isValidRootForHeight(
|
|
85
|
+
merkleroot,
|
|
86
|
+
height
|
|
87
|
+
)
|
|
67
88
|
|
|
68
89
|
expect(response).toEqual(false)
|
|
69
90
|
})
|
|
@@ -71,9 +92,13 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
71
92
|
it('should handle network errors', async () => {
|
|
72
93
|
const mockFetch = jest.fn().mockRejectedValue(new Error('Network error'))
|
|
73
94
|
|
|
74
|
-
const chainTracker = new WhatsOnChain(network, {
|
|
95
|
+
const chainTracker = new WhatsOnChain(network, {
|
|
96
|
+
httpClient: new FetchHttpClient(mockFetch)
|
|
97
|
+
})
|
|
75
98
|
|
|
76
|
-
await expect(
|
|
99
|
+
await expect(
|
|
100
|
+
chainTracker.isValidRootForHeight(merkleroot, height)
|
|
101
|
+
).rejects.toThrow('Network error')
|
|
77
102
|
})
|
|
78
103
|
|
|
79
104
|
it('should throw error when received error response', async () => {
|
|
@@ -82,9 +107,15 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
82
107
|
data: { error: 'Unauthorized' }
|
|
83
108
|
})
|
|
84
109
|
|
|
85
|
-
const chainTracker = new WhatsOnChain(network, {
|
|
110
|
+
const chainTracker = new WhatsOnChain(network, {
|
|
111
|
+
httpClient: new FetchHttpClient(mockFetch)
|
|
112
|
+
})
|
|
86
113
|
|
|
87
|
-
await expect(
|
|
114
|
+
await expect(
|
|
115
|
+
chainTracker.isValidRootForHeight(merkleroot, height)
|
|
116
|
+
).rejects.toThrow(
|
|
117
|
+
/Failed to verify merkleroot for height \d+ because of an error: .*/
|
|
118
|
+
)
|
|
88
119
|
})
|
|
89
120
|
|
|
90
121
|
it('should return the current height', async () => {
|
|
@@ -98,14 +129,17 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
98
129
|
height: 875904,
|
|
99
130
|
version: 704643072,
|
|
100
131
|
versionHex: '2a000000',
|
|
101
|
-
merkleroot:
|
|
132
|
+
merkleroot:
|
|
133
|
+
'8af5a2d4325ec30e30103b1f365c303d4b49d11e42d26b0d7e9b6866724392e9',
|
|
102
134
|
time: 1734667612,
|
|
103
135
|
mediantime: 1734663717,
|
|
104
136
|
nonce: 157007350,
|
|
105
137
|
bits: '180f2b74',
|
|
106
138
|
difficulty: 72479484799.59058,
|
|
107
|
-
chainwork:
|
|
108
|
-
|
|
139
|
+
chainwork:
|
|
140
|
+
'00000000000000000000000000000000000000000160c2f41c8793b90f4500dd',
|
|
141
|
+
previousblockhash:
|
|
142
|
+
'00000000000000000128f312a7c62ef5f9a91a3f845a4464d10cfbaaecd233a0',
|
|
109
143
|
nextblockhash: '',
|
|
110
144
|
nTx: 0,
|
|
111
145
|
num_tx: 167567
|
|
@@ -113,12 +147,14 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
113
147
|
]
|
|
114
148
|
})
|
|
115
149
|
|
|
116
|
-
const chainTracker = new WhatsOnChain(network, {
|
|
150
|
+
const chainTracker = new WhatsOnChain(network, {
|
|
151
|
+
httpClient: new FetchHttpClient(mockFetch)
|
|
152
|
+
})
|
|
117
153
|
|
|
118
154
|
await expect(await chainTracker.currentHeight()).toBe(875904)
|
|
119
155
|
})
|
|
120
156
|
|
|
121
|
-
function mockedFetch (response) {
|
|
157
|
+
function mockedFetch (response: { status: number, data: any }): jest.Mock<any, any, any> {
|
|
122
158
|
return jest.fn().mockResolvedValue({
|
|
123
159
|
ok: response.status === 200,
|
|
124
160
|
status: response.status,
|
|
@@ -134,13 +170,13 @@ describe('WhatsOnChain ChainTracker', () => {
|
|
|
134
170
|
})
|
|
135
171
|
}
|
|
136
172
|
|
|
137
|
-
function mockedHttps (response) {
|
|
173
|
+
function mockedHttps (response: { status: number, data: any }): { request: (url: string, options: any, callback: (res: any) => void) => any } {
|
|
138
174
|
const https = {
|
|
139
175
|
request: (url, options, callback) => {
|
|
140
176
|
// eslint-disable-next-line
|
|
141
177
|
callback({
|
|
142
178
|
statusCode: response.status,
|
|
143
|
-
statusMessage: response.status
|
|
179
|
+
statusMessage: response.status === 200 ? 'OK' : 'Bad request',
|
|
144
180
|
headers: {
|
|
145
181
|
'content-type': 'application/json'
|
|
146
182
|
},
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import FeeModel from '../FeeModel.js'
|
|
2
2
|
import Transaction from '../Transaction.js'
|
|
3
|
-
import BigNumber from '../../primitives/BigNumber.js'
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* Represents the "satoshis per kilobyte" transaction fee model.
|
|
@@ -17,7 +16,7 @@ export default class SatoshisPerKilobyte implements FeeModel {
|
|
|
17
16
|
*
|
|
18
17
|
* @param {number} value - The number of satoshis per kilobyte to charge as a fee.
|
|
19
18
|
*/
|
|
20
|
-
constructor
|
|
19
|
+
constructor(value: number) {
|
|
21
20
|
this.value = value
|
|
22
21
|
}
|
|
23
22
|
|
|
@@ -27,7 +26,7 @@ export default class SatoshisPerKilobyte implements FeeModel {
|
|
|
27
26
|
* @param tx The transaction for which a fee is to be computed.
|
|
28
27
|
* @returns The fee in satoshis for the transaction, as a BigNumber.
|
|
29
28
|
*/
|
|
30
|
-
async computeFee
|
|
29
|
+
async computeFee(tx: Transaction): Promise<number> {
|
|
31
30
|
const getVarIntSize = (i: number): number => {
|
|
32
31
|
if (i > 2 ** 32) {
|
|
33
32
|
return 9
|
|
@@ -49,9 +48,14 @@ export default class SatoshisPerKilobyte implements FeeModel {
|
|
|
49
48
|
if (typeof input.unlockingScript === 'object') {
|
|
50
49
|
scriptLength = input.unlockingScript.toBinary().length
|
|
51
50
|
} else if (typeof input.unlockingScriptTemplate === 'object') {
|
|
52
|
-
scriptLength = await input.unlockingScriptTemplate.estimateLength(
|
|
51
|
+
scriptLength = await input.unlockingScriptTemplate.estimateLength(
|
|
52
|
+
tx,
|
|
53
|
+
i
|
|
54
|
+
)
|
|
53
55
|
} else {
|
|
54
|
-
throw new Error(
|
|
56
|
+
throw new Error(
|
|
57
|
+
'All inputs must have an unlocking script or an unlocking script template for sat/kb fee computation.'
|
|
58
|
+
)
|
|
55
59
|
}
|
|
56
60
|
size += getVarIntSize(scriptLength) // unlocking script length
|
|
57
61
|
size += scriptLength // unlocking script
|
|
@@ -5,11 +5,11 @@ import { FetchHttpClient } from './FetchHttpClient.js'
|
|
|
5
5
|
/**
|
|
6
6
|
* Returns a default HttpClient implementation based on the environment that it is run on.
|
|
7
7
|
* This method will attempt to use `window.fetch` if available (in browser environments).
|
|
8
|
-
* If running in a Node
|
|
8
|
+
* If running in a Node environment, it falls back to using the Node `https` module
|
|
9
9
|
*/
|
|
10
|
-
export function defaultHttpClient
|
|
10
|
+
export function defaultHttpClient(): HttpClient {
|
|
11
11
|
const noHttpClient: HttpClient = {
|
|
12
|
-
async request
|
|
12
|
+
async request(..._): Promise<HttpClientResponse> {
|
|
13
13
|
throw new Error('No method available to perform HTTP request')
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -18,9 +18,10 @@ export function defaultHttpClient (): HttpClient {
|
|
|
18
18
|
// Use fetch in a browser environment
|
|
19
19
|
return new FetchHttpClient(window.fetch.bind(window))
|
|
20
20
|
} else if (typeof require !== 'undefined') {
|
|
21
|
-
// Use Node
|
|
21
|
+
// Use Node https module
|
|
22
22
|
// eslint-disable-next-line
|
|
23
23
|
try {
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
24
25
|
const https = require('https')
|
|
25
26
|
return new NodejsHttpClient(https)
|
|
26
27
|
} catch (e) {
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
HttpClient,
|
|
3
|
+
HttpClientRequestOptions,
|
|
4
|
+
HttpClientResponse
|
|
5
|
+
} from './HttpClient.js'
|
|
2
6
|
|
|
3
7
|
/** fetch function interface limited to options needed by ts-sdk */
|
|
4
8
|
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
* Makes a request to the server.
|
|
10
|
+
* @param url The URL to make the request to.
|
|
11
|
+
* @param options The request configuration.
|
|
12
|
+
*/
|
|
9
13
|
export type Fetch = (url: string, options: FetchOptions) => Promise<Response>
|
|
10
14
|
|
|
11
15
|
/**
|
|
@@ -22,12 +26,15 @@ export interface FetchOptions {
|
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
/**
|
|
25
|
-
* Adapter for Node
|
|
29
|
+
* Adapter for Node Https module to be used as HttpClient
|
|
26
30
|
*/
|
|
27
31
|
export class FetchHttpClient implements HttpClient {
|
|
28
|
-
constructor
|
|
32
|
+
constructor(private readonly fetch: Fetch) { }
|
|
29
33
|
|
|
30
|
-
async request<D>(
|
|
34
|
+
async request<D>(
|
|
35
|
+
url: string,
|
|
36
|
+
options: HttpClientRequestOptions
|
|
37
|
+
): Promise<HttpClientResponse<D>> {
|
|
31
38
|
const fetchOptions: FetchOptions = {
|
|
32
39
|
method: options.method,
|
|
33
40
|
headers: options.headers,
|
|
@@ -36,7 +43,9 @@ export class FetchHttpClient implements HttpClient {
|
|
|
36
43
|
|
|
37
44
|
const res = await this.fetch(url, fetchOptions)
|
|
38
45
|
const mediaType = res.headers.get('Content-Type')
|
|
39
|
-
const data = mediaType
|
|
46
|
+
const data = mediaType?.startsWith('application/json') ?? false
|
|
47
|
+
? await res.json()
|
|
48
|
+
: await res.text()
|
|
40
49
|
|
|
41
50
|
return {
|
|
42
51
|
ok: res.ok,
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export interface HttpClient {
|
|
5
5
|
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
request: <T = any, D = any>(
|
|
6
|
+
* Makes a request to the server.
|
|
7
|
+
* @param url The URL to make the request to.
|
|
8
|
+
* @param options The request configuration.
|
|
9
|
+
*/
|
|
10
|
+
request: <T = any, D = any>(
|
|
11
|
+
url: string,
|
|
12
|
+
options: HttpClientRequestOptions<D>
|
|
13
|
+
) => Promise<HttpClientResponse<T>>
|
|
11
14
|
}
|
|
12
15
|
|
|
13
16
|
/**
|
|
@@ -25,20 +28,22 @@ export interface HttpClientRequestOptions<Data = any> {
|
|
|
25
28
|
/**
|
|
26
29
|
* An interface for the response returned by the request method.
|
|
27
30
|
*/
|
|
28
|
-
export type HttpClientResponse<T = any> =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
export type HttpClientResponse<T = any> =
|
|
32
|
+
| {
|
|
33
|
+
data: T
|
|
34
|
+
/** The status code of the response. */
|
|
35
|
+
status: number
|
|
36
|
+
/** The status text of the response. */
|
|
37
|
+
statusText: string
|
|
38
|
+
/** A flag indicating whether the request ends with success status or not. */
|
|
39
|
+
ok: true
|
|
40
|
+
}
|
|
41
|
+
| {
|
|
42
|
+
data: any
|
|
43
|
+
/** The status code of the response. */
|
|
44
|
+
status: number
|
|
45
|
+
/** The status text of the response. */
|
|
46
|
+
statusText: string
|
|
47
|
+
/** A flag indicating whether the request ends with success status or not. */
|
|
48
|
+
ok: false
|
|
49
|
+
}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
HttpClient,
|
|
3
|
+
HttpClientRequestOptions,
|
|
4
|
+
HttpClientResponse
|
|
5
|
+
} from './HttpClient.js'
|
|
2
6
|
|
|
3
|
-
/** Node
|
|
7
|
+
/** Node Https module interface limited to options needed by ts-sdk */
|
|
4
8
|
export interface HttpsNodejs {
|
|
5
|
-
request: (
|
|
9
|
+
request: (
|
|
10
|
+
url: string,
|
|
11
|
+
options: HttpClientRequestOptions,
|
|
12
|
+
callback: (res: any) => void
|
|
13
|
+
) => NodejsHttpClientRequest
|
|
6
14
|
}
|
|
7
15
|
|
|
8
|
-
/** Nodejs result of the Node
|
|
16
|
+
/** Nodejs result of the Node https.request call limited to options needed by ts-sdk */
|
|
9
17
|
export interface NodejsHttpClientRequest {
|
|
10
18
|
write: (chunk: string) => void
|
|
11
19
|
|
|
@@ -15,12 +23,15 @@ export interface NodejsHttpClientRequest {
|
|
|
15
23
|
}
|
|
16
24
|
|
|
17
25
|
/**
|
|
18
|
-
* Adapter for Node
|
|
26
|
+
* Adapter for Node Https module to be used as HttpClient
|
|
19
27
|
*/
|
|
20
28
|
export class NodejsHttpClient implements HttpClient {
|
|
21
|
-
constructor
|
|
29
|
+
constructor(private readonly https: HttpsNodejs) { }
|
|
22
30
|
|
|
23
|
-
async request
|
|
31
|
+
async request(
|
|
32
|
+
url: string,
|
|
33
|
+
requestOptions: HttpClientRequestOptions
|
|
34
|
+
): Promise<HttpClientResponse> {
|
|
24
35
|
return await new Promise((resolve, reject) => {
|
|
25
36
|
const req = this.https.request(url, requestOptions, (res) => {
|
|
26
37
|
let body = ''
|
|
@@ -30,7 +41,10 @@ export class NodejsHttpClient implements HttpClient {
|
|
|
30
41
|
res.on('end', () => {
|
|
31
42
|
const ok = res.statusCode >= 200 && res.statusCode <= 299
|
|
32
43
|
const mediaType = res.headers['content-type']
|
|
33
|
-
const data =
|
|
44
|
+
const data =
|
|
45
|
+
body !== '' && typeof mediaType === 'string' && mediaType.startsWith('application/json')
|
|
46
|
+
? JSON.parse(body)
|
|
47
|
+
: body
|
|
34
48
|
resolve({
|
|
35
49
|
status: res.statusCode,
|
|
36
50
|
statusText: res.statusMessage,
|
|
@@ -44,7 +58,7 @@ export class NodejsHttpClient implements HttpClient {
|
|
|
44
58
|
reject(error)
|
|
45
59
|
})
|
|
46
60
|
|
|
47
|
-
if (requestOptions.data) {
|
|
61
|
+
if (requestOptions.data !== null && requestOptions.data !== undefined) {
|
|
48
62
|
req.write(JSON.stringify(requestOptions.data))
|
|
49
63
|
}
|
|
50
64
|
req.end()
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export type {
|
|
1
|
+
export type {
|
|
2
|
+
HttpClient,
|
|
3
|
+
HttpClientResponse,
|
|
4
|
+
HttpClientRequestOptions
|
|
5
|
+
} from './HttpClient.js'
|
|
2
6
|
export { defaultHttpClient } from './DefaultHttpClient.js'
|
|
3
7
|
export { NodejsHttpClient } from './NodejsHttpClient.js'
|
|
4
8
|
export { FetchHttpClient } from './FetchHttpClient.js'
|
package/src/transaction/index.ts
CHANGED
|
@@ -2,7 +2,11 @@ export { default as Transaction } from './Transaction.js'
|
|
|
2
2
|
export { default as MerklePath } from './MerklePath.js'
|
|
3
3
|
export type { default as TransactionInput } from './TransactionInput.js'
|
|
4
4
|
export type { default as TransactionOutput } from './TransactionOutput.js'
|
|
5
|
-
export type {
|
|
5
|
+
export type {
|
|
6
|
+
Broadcaster,
|
|
7
|
+
BroadcastFailure,
|
|
8
|
+
BroadcastResponse
|
|
9
|
+
} from './Broadcaster.js'
|
|
6
10
|
export { isBroadcastResponse, isBroadcastFailure } from './Broadcaster.js'
|
|
7
11
|
export type { default as ChainTracker } from './ChainTracker.js'
|
|
8
12
|
export { default as BeefTx } from './BeefTx.js'
|