@bsv/sdk 1.6.9 → 1.6.11
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/README.md +9 -4
- package/dist/cjs/package.json +4 -2
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/concepts/beef.md +84 -0
- package/docs/concepts/chain-tracking.md +122 -0
- package/docs/concepts/decentralized-identity.md +184 -0
- package/docs/concepts/fees.md +217 -0
- package/docs/concepts/identity-certificates.md +255 -0
- package/docs/concepts/index.md +62 -0
- package/docs/concepts/key-management.md +176 -0
- package/docs/concepts/script-templates.md +163 -0
- package/docs/concepts/sdk-philosophy.md +72 -0
- package/docs/concepts/signatures.md +179 -0
- package/docs/concepts/spv-verification.md +106 -0
- package/docs/concepts/transaction-encoding.md +148 -0
- package/docs/concepts/transaction-structure.md +63 -0
- package/docs/concepts/trust-model.md +123 -0
- package/docs/concepts/verification.md +219 -0
- package/docs/concepts/wallet-integration.md +95 -0
- package/docs/guides/direct-transaction-creation.md +137 -0
- package/docs/guides/http-client-configuration.md +414 -0
- package/docs/guides/index.md +30 -0
- package/docs/guides/transaction-signing-methods.md +268 -0
- package/docs/index.md +74 -0
- package/docs/reference/arc-config.md +698 -0
- package/docs/reference/brc-100.md +33 -0
- package/docs/reference/configuration.md +829 -0
- package/docs/reference/debugging.md +700 -0
- package/docs/reference/errors.md +547 -0
- package/docs/reference/index.md +98 -0
- package/docs/reference/network-config.md +914 -0
- package/docs/reference/op-codes.md +306 -0
- package/docs/reference/transaction-signatures.md +94 -0
- package/docs/requirements.txt +3 -0
- package/docs/tutorials/advanced-transaction.md +575 -0
- package/docs/tutorials/aes-encryption.md +947 -0
- package/docs/tutorials/authfetch-tutorial.md +957 -0
- package/docs/tutorials/ecdh-key-exchange.md +547 -0
- package/docs/tutorials/elliptic-curve-fundamentals.md +603 -0
- package/docs/tutorials/error-handling.md +1215 -0
- package/docs/tutorials/first-transaction-low-level.md +204 -0
- package/docs/tutorials/first-transaction.md +278 -0
- package/docs/tutorials/hashes-and-hmacs.md +814 -0
- package/docs/tutorials/identity-management.md +702 -0
- package/docs/tutorials/index.md +182 -0
- package/docs/tutorials/key-management.md +536 -0
- package/docs/tutorials/protowallet-development.md +716 -0
- package/docs/tutorials/script-construction.md +690 -0
- package/docs/tutorials/spv-merkle-proofs.md +682 -0
- package/docs/tutorials/testnet-transactions-low-level.md +352 -0
- package/docs/tutorials/transaction-broadcasting.md +535 -0
- package/docs/tutorials/transaction-types.md +419 -0
- package/docs/tutorials/type-42.md +582 -0
- package/docs/tutorials/uhrp-storage.md +579 -0
- package/package.json +4 -2
- package/src/wallet/substrates/HTTPWalletJSON.ts +6 -1
- package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
- package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
- package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
- package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
- package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
- package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
- package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
- package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
- package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
- package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
- package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
- package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
- package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/certificateHelpers.js +0 -51
- package/dist/cjs/src/auth/utils/certificateHelpers.js.map +0 -1
- package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
- package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
- package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
- package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
- package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
- package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
- package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
- package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
- package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
- package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
- package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
- package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
- package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
- package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
- package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
- package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
- package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
- package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
- package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
- package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
- package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
- package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
- package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
- package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
- package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
- package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
- package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
- package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
- package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
- package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
- package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
- package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
- package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
- package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
- package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
- package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
- package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
- package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
- package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
- package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
- package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
- package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
- package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
- package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
- package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
- package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
- package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/Script.test.js +0 -347
- package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
- package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
- package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
- package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
- package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
- package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
- package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
- package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
- package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
- package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
- package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
- package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
- package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
- package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
- package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
- package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
- package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
- package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
- package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
- package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
- package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
- package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
- package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
- package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
- package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
- package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
- package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +0 -39
- package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
- package/dist/cjs/src/wallet/WalletSigner.js +0 -260
- package/dist/cjs/src/wallet/WalletSigner.js.map +0 -1
- package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
- package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
- package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
- package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
- package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
- package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
- package/dist/cjs/src/wallet/createActionSdk.js +0 -230
- package/dist/cjs/src/wallet/createActionSdk.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +0 -174
- package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/CertOps.js +0 -181
- package/dist/cjs/src/wallet/sdk/CertOps.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/Certificate.js +0 -162
- package/dist/cjs/src/wallet/sdk/Certificate.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/KeyDeriver.js +0 -176
- package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/ProtoWallet.js +0 -75
- package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +0 -3
- package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WERR_errors.js +0 -107
- package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletCrypto.js +0 -171
- package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletError.js +0 -103
- package/dist/cjs/src/wallet/sdk/WalletError.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/index.js +0 -31
- package/dist/cjs/src/wallet/sdk/index.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/types.js +0 -11
- package/dist/cjs/src/wallet/sdk/types.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/validationHelpers.js +0 -601
- package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +0 -1
- package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
- package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
- package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
- package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
- package/dist/cjs/src/wallet/utilityHelpers.js +0 -305
- package/dist/cjs/src/wallet/utilityHelpers.js.map +0 -1
- package/dist/cjs/src/wallet/validationHelpers.js +0 -601
- package/dist/cjs/src/wallet/validationHelpers.js.map +0 -1
- package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
- package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
- package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
- package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
- package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
- package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
- package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
- package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
- package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
- package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
- package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
- package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
- package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
- package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
- package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
- package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
- package/dist/esm/src/auth/utils/certificateHelpers.js +0 -47
- package/dist/esm/src/auth/utils/certificateHelpers.js.map +0 -1
- package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
- package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
- package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/HD.test.js +0 -336
- package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
- package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
- package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
- package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
- package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
- package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
- package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
- package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
- package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
- package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
- package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
- package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
- package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
- package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
- package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
- package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
- package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
- package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
- package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
- package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
- package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
- package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
- package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
- package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
- package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
- package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
- package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
- package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
- package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
- package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
- package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
- package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
- package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
- package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
- package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
- package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
- package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
- package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
- package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
- package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
- package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
- package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
- package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
- package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
- package/dist/esm/src/script/__tests/Script.test.js +0 -347
- package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
- package/dist/esm/src/script/__tests/Spend.test.js +0 -282
- package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
- package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
- package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
- package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
- package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
- package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
- package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
- package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
- package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
- package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
- package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
- package/dist/esm/src/totp/__tests/totp.test.js +0 -67
- package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
- package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
- package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
- package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
- package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
- package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
- package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
- package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
- package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
- package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
- package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
- package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
- package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
- package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
- package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
- package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +0 -37
- package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
- package/dist/esm/src/wallet/WalletSigner.js +0 -263
- package/dist/esm/src/wallet/WalletSigner.js.map +0 -1
- package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
- package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
- package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
- package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
- package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
- package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
- package/dist/esm/src/wallet/createActionSdk.js +0 -223
- package/dist/esm/src/wallet/createActionSdk.js.map +0 -1
- package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +0 -174
- package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
- package/dist/esm/src/wallet/sdk/CertOps.js +0 -181
- package/dist/esm/src/wallet/sdk/CertOps.js.map +0 -1
- package/dist/esm/src/wallet/sdk/Certificate.js +0 -186
- package/dist/esm/src/wallet/sdk/Certificate.js.map +0 -1
- package/dist/esm/src/wallet/sdk/KeyDeriver.js +0 -174
- package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +0 -1
- package/dist/esm/src/wallet/sdk/ProtoWallet.js +0 -71
- package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +0 -1
- package/dist/esm/src/wallet/sdk/StorageSyncReader.js +0 -2
- package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WERR_errors.js +0 -99
- package/dist/esm/src/wallet/sdk/WERR_errors.js.map +0 -1
- package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletCrypto.js +0 -168
- package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletError.js +0 -100
- package/dist/esm/src/wallet/sdk/WalletError.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/index.js +0 -15
- package/dist/esm/src/wallet/sdk/index.js.map +0 -1
- package/dist/esm/src/wallet/sdk/types.js +0 -8
- package/dist/esm/src/wallet/sdk/types.js.map +0 -1
- package/dist/esm/src/wallet/sdk/validationHelpers.js +0 -566
- package/dist/esm/src/wallet/sdk/validationHelpers.js.map +0 -1
- package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
- package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
- package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
- package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
- package/dist/esm/src/wallet/utilityHelpers.js +0 -275
- package/dist/esm/src/wallet/utilityHelpers.js.map +0 -1
- package/dist/esm/src/wallet/validationHelpers.js +0 -566
- package/dist/esm/src/wallet/validationHelpers.js.map +0 -1
- package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
- package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
- package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
- package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
- package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
- package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
- package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
- package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
- package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
- package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
- package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
- package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
- package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/certificateHelpers.d.ts +0 -26
- package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
- package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
- package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
- package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
- package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
- package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
- package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
- package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
- package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
- package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
- package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
- package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
- package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
- package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
- package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
- package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
- package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
- package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
- package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
- package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
- package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
- package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
- package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
- package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
- package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
- package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
- package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
- package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
- package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
- package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
- package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
- package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
- package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
- package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
- package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
- package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
- package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
- package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
- package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
- package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +0 -25
- package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +0 -1
- package/dist/types/src/wallet/WalletSigner.d.ts +0 -110
- package/dist/types/src/wallet/WalletSigner.d.ts.map +0 -1
- package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
- package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
- package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
- package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
- package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
- package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
- package/dist/types/src/wallet/createActionSdk.d.ts +0 -8
- package/dist/types/src/wallet/createActionSdk.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +0 -94
- package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/CertOps.d.ts +0 -63
- package/dist/types/src/wallet/sdk/CertOps.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/Certificate.d.ts +0 -77
- package/dist/types/src/wallet/sdk/Certificate.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +0 -128
- package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +0 -30
- package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +0 -102
- package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WERR_errors.d.ts +0 -84
- package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +0 -1036
- package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +0 -31
- package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletError.d.ts +0 -46
- package/dist/types/src/wallet/sdk/WalletError.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +0 -293
- package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +0 -48
- package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +0 -296
- package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/index.d.ts +0 -15
- package/dist/types/src/wallet/sdk/index.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/types.d.ts +0 -56
- package/dist/types/src/wallet/sdk/types.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/validationHelpers.d.ts +0 -301
- package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +0 -1
- package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
- package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
- package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
- package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
- package/dist/types/src/wallet/utilityHelpers.d.ts +0 -142
- package/dist/types/src/wallet/utilityHelpers.d.ts.map +0 -1
- package/dist/types/src/wallet/validationHelpers.d.ts +0 -301
- package/dist/types/src/wallet/validationHelpers.d.ts.map +0 -1
- package/docs/README.md +0 -21
- /package/docs/{auth.md → reference/auth.md} +0 -0
- /package/docs/{compat.md → reference/compat.md} +0 -0
- /package/docs/{identity.md → reference/identity.md} +0 -0
- /package/docs/{kvstore.md → reference/kvstore.md} +0 -0
- /package/docs/{messages.md → reference/messages.md} +0 -0
- /package/docs/{overlay-tools.md → reference/overlay-tools.md} +0 -0
- /package/docs/{primitives.md → reference/primitives.md} +0 -0
- /package/docs/{registry.md → reference/registry.md} +0 -0
- /package/docs/{script.md → reference/script.md} +0 -0
- /package/docs/{storage.md → reference/storage.md} +0 -0
- /package/docs/{totp.md → reference/totp.md} +0 -0
- /package/docs/{transaction.md → reference/transaction.md} +0 -0
- /package/docs/{wallet.md → reference/wallet.md} +0 -0
|
@@ -1,1471 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
const LookupResolver_1 = __importStar(require("../LookupResolver"));
|
|
40
|
-
const OverlayAdminTokenTemplate_1 = __importDefault(require("../../overlay-tools/OverlayAdminTokenTemplate"));
|
|
41
|
-
const CompletedProtoWallet_1 = require("../../auth/certificates/__tests/CompletedProtoWallet");
|
|
42
|
-
const index_1 = require("../../primitives/index");
|
|
43
|
-
const index_2 = require("../../transaction/index");
|
|
44
|
-
const index_3 = require("../../script/index");
|
|
45
|
-
const mockFacilitator = {
|
|
46
|
-
lookup: jest.fn()
|
|
47
|
-
};
|
|
48
|
-
const sampleBeef1 = new index_2.Transaction(1, [], [{ lockingScript: index_3.LockingScript.fromHex('88'), satoshis: 1 }], 0).toBEEF();
|
|
49
|
-
const sampleBeef2 = new index_2.Transaction(1, [], [{ lockingScript: index_3.LockingScript.fromHex('88'), satoshis: 2 }], 0).toBEEF();
|
|
50
|
-
const sampleBeef3 = new index_2.Transaction(1, [], [{ lockingScript: index_3.LockingScript.fromHex('88'), satoshis: 3 }], 0).toBEEF();
|
|
51
|
-
const sampleBeef4 = new index_2.Transaction(1, [], [{ lockingScript: index_3.LockingScript.fromHex('88'), satoshis: 4 }], 0).toBEEF();
|
|
52
|
-
describe('LookupResolver', () => {
|
|
53
|
-
beforeEach(() => {
|
|
54
|
-
mockFacilitator.lookup.mockReset();
|
|
55
|
-
});
|
|
56
|
-
it('should query the host and return the response when a single host is found via SLAP', async () => {
|
|
57
|
-
const slapHostKey = new index_1.PrivateKey(42);
|
|
58
|
-
const slapWallet = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey);
|
|
59
|
-
const slapLib = new OverlayAdminTokenTemplate_1.default(slapWallet);
|
|
60
|
-
const slapScript = await slapLib.lock('SLAP', 'https://slaphost.com', 'ls_foo');
|
|
61
|
-
const slapTx = new index_2.Transaction(1, [], [
|
|
62
|
-
{
|
|
63
|
-
lockingScript: slapScript,
|
|
64
|
-
satoshis: 1
|
|
65
|
-
}
|
|
66
|
-
], 0);
|
|
67
|
-
mockFacilitator.lookup
|
|
68
|
-
.mockReturnValueOnce({
|
|
69
|
-
type: 'output-list',
|
|
70
|
-
outputs: [
|
|
71
|
-
{
|
|
72
|
-
outputIndex: 0,
|
|
73
|
-
beef: slapTx.toBEEF()
|
|
74
|
-
}
|
|
75
|
-
]
|
|
76
|
-
})
|
|
77
|
-
.mockReturnValueOnce({
|
|
78
|
-
type: 'output-list',
|
|
79
|
-
outputs: [
|
|
80
|
-
{
|
|
81
|
-
beef: sampleBeef1,
|
|
82
|
-
outputIndex: 0
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
});
|
|
86
|
-
const r = new LookupResolver_1.default({
|
|
87
|
-
facilitator: mockFacilitator,
|
|
88
|
-
slapTrackers: ['https://mock.slap']
|
|
89
|
-
});
|
|
90
|
-
const res = await r.query({
|
|
91
|
-
service: 'ls_foo',
|
|
92
|
-
query: { test: 1 }
|
|
93
|
-
});
|
|
94
|
-
expect(res).toEqual({
|
|
95
|
-
type: 'output-list',
|
|
96
|
-
outputs: [
|
|
97
|
-
{
|
|
98
|
-
beef: sampleBeef1,
|
|
99
|
-
outputIndex: 0
|
|
100
|
-
}
|
|
101
|
-
]
|
|
102
|
-
});
|
|
103
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
104
|
-
[
|
|
105
|
-
'https://mock.slap',
|
|
106
|
-
{
|
|
107
|
-
service: 'ls_slap',
|
|
108
|
-
query: {
|
|
109
|
-
service: 'ls_foo'
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
1000
|
|
113
|
-
],
|
|
114
|
-
[
|
|
115
|
-
'https://slaphost.com',
|
|
116
|
-
{
|
|
117
|
-
service: 'ls_foo',
|
|
118
|
-
query: {
|
|
119
|
-
test: 1
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
|
-
undefined
|
|
123
|
-
]
|
|
124
|
-
]);
|
|
125
|
-
});
|
|
126
|
-
it('should query from provided additional hosts while still making use of SLAP', async () => {
|
|
127
|
-
const slapHostKey = new index_1.PrivateKey(42);
|
|
128
|
-
const slapWallet = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey);
|
|
129
|
-
const slapLib = new OverlayAdminTokenTemplate_1.default(slapWallet);
|
|
130
|
-
const slapScript = await slapLib.lock('SLAP', 'https://slaphost.com', 'ls_foo');
|
|
131
|
-
const slapTx = new index_2.Transaction(1, [], [
|
|
132
|
-
{
|
|
133
|
-
lockingScript: slapScript,
|
|
134
|
-
satoshis: 1
|
|
135
|
-
}
|
|
136
|
-
], 0);
|
|
137
|
-
mockFacilitator.lookup
|
|
138
|
-
.mockReturnValueOnce({
|
|
139
|
-
type: 'output-list',
|
|
140
|
-
outputs: [
|
|
141
|
-
{
|
|
142
|
-
outputIndex: 0,
|
|
143
|
-
beef: slapTx.toBEEF()
|
|
144
|
-
}
|
|
145
|
-
]
|
|
146
|
-
})
|
|
147
|
-
.mockReturnValueOnce({
|
|
148
|
-
type: 'output-list',
|
|
149
|
-
outputs: [
|
|
150
|
-
{
|
|
151
|
-
beef: sampleBeef1,
|
|
152
|
-
outputIndex: 0
|
|
153
|
-
}
|
|
154
|
-
]
|
|
155
|
-
})
|
|
156
|
-
.mockReturnValueOnce({
|
|
157
|
-
type: 'output-list',
|
|
158
|
-
outputs: [
|
|
159
|
-
{
|
|
160
|
-
// duplicate the output the other host knows about
|
|
161
|
-
beef: sampleBeef1,
|
|
162
|
-
outputIndex: 0
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
// the additional host also knows about a second output
|
|
166
|
-
beef: sampleBeef2,
|
|
167
|
-
outputIndex: 1033
|
|
168
|
-
}
|
|
169
|
-
]
|
|
170
|
-
});
|
|
171
|
-
const r = new LookupResolver_1.default({
|
|
172
|
-
facilitator: mockFacilitator,
|
|
173
|
-
slapTrackers: ['https://mock.slap'],
|
|
174
|
-
additionalHosts: {
|
|
175
|
-
ls_foo: ['https://additional.host']
|
|
176
|
-
}
|
|
177
|
-
});
|
|
178
|
-
const res = await r.query({
|
|
179
|
-
service: 'ls_foo',
|
|
180
|
-
query: { test: 1 }
|
|
181
|
-
});
|
|
182
|
-
expect(res).toEqual({
|
|
183
|
-
type: 'output-list',
|
|
184
|
-
outputs: [
|
|
185
|
-
{
|
|
186
|
-
// expect the first output to appear only once, and be de-duplicated
|
|
187
|
-
beef: sampleBeef1,
|
|
188
|
-
outputIndex: 0
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
// also expect the second output from the additional host
|
|
192
|
-
beef: sampleBeef2,
|
|
193
|
-
outputIndex: 1033
|
|
194
|
-
}
|
|
195
|
-
]
|
|
196
|
-
});
|
|
197
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
198
|
-
[
|
|
199
|
-
'https://mock.slap',
|
|
200
|
-
{
|
|
201
|
-
service: 'ls_slap',
|
|
202
|
-
query: {
|
|
203
|
-
service: 'ls_foo'
|
|
204
|
-
}
|
|
205
|
-
},
|
|
206
|
-
1000
|
|
207
|
-
],
|
|
208
|
-
[
|
|
209
|
-
'https://slaphost.com',
|
|
210
|
-
{
|
|
211
|
-
service: 'ls_foo',
|
|
212
|
-
query: {
|
|
213
|
-
test: 1
|
|
214
|
-
}
|
|
215
|
-
},
|
|
216
|
-
undefined
|
|
217
|
-
],
|
|
218
|
-
[
|
|
219
|
-
// additional host should also have been queried
|
|
220
|
-
'https://additional.host',
|
|
221
|
-
{
|
|
222
|
-
service: 'ls_foo',
|
|
223
|
-
query: {
|
|
224
|
-
test: 1
|
|
225
|
-
}
|
|
226
|
-
},
|
|
227
|
-
undefined
|
|
228
|
-
]
|
|
229
|
-
]);
|
|
230
|
-
});
|
|
231
|
-
it('should utilize host overrides instead of SLAP', async () => {
|
|
232
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
233
|
-
type: 'output-list',
|
|
234
|
-
outputs: [
|
|
235
|
-
{
|
|
236
|
-
beef: sampleBeef1,
|
|
237
|
-
outputIndex: 0
|
|
238
|
-
}
|
|
239
|
-
]
|
|
240
|
-
});
|
|
241
|
-
const r = new LookupResolver_1.default({
|
|
242
|
-
facilitator: mockFacilitator,
|
|
243
|
-
slapTrackers: ['https://mock.slap'],
|
|
244
|
-
hostOverrides: {
|
|
245
|
-
ls_foo: ['https://override.host']
|
|
246
|
-
}
|
|
247
|
-
});
|
|
248
|
-
const res = await r.query({
|
|
249
|
-
service: 'ls_foo',
|
|
250
|
-
query: { test: 1 }
|
|
251
|
-
});
|
|
252
|
-
expect(res).toEqual({
|
|
253
|
-
type: 'output-list',
|
|
254
|
-
outputs: [
|
|
255
|
-
{
|
|
256
|
-
beef: sampleBeef1,
|
|
257
|
-
outputIndex: 0
|
|
258
|
-
}
|
|
259
|
-
]
|
|
260
|
-
});
|
|
261
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
262
|
-
[
|
|
263
|
-
'https://override.host',
|
|
264
|
-
{
|
|
265
|
-
service: 'ls_foo',
|
|
266
|
-
query: {
|
|
267
|
-
test: 1
|
|
268
|
-
}
|
|
269
|
-
},
|
|
270
|
-
undefined
|
|
271
|
-
]
|
|
272
|
-
]);
|
|
273
|
-
});
|
|
274
|
-
it('should allow using host overrides with additional hosts at the same time', async () => {
|
|
275
|
-
mockFacilitator.lookup
|
|
276
|
-
.mockReturnValueOnce({
|
|
277
|
-
type: 'output-list', // from the override host
|
|
278
|
-
outputs: [
|
|
279
|
-
{
|
|
280
|
-
beef: sampleBeef1,
|
|
281
|
-
outputIndex: 0
|
|
282
|
-
}
|
|
283
|
-
]
|
|
284
|
-
})
|
|
285
|
-
.mockReturnValueOnce({
|
|
286
|
-
type: 'output-list', // from the additional host
|
|
287
|
-
outputs: [
|
|
288
|
-
{
|
|
289
|
-
beef: sampleBeef1,
|
|
290
|
-
outputIndex: 0
|
|
291
|
-
},
|
|
292
|
-
{
|
|
293
|
-
beef: sampleBeef2,
|
|
294
|
-
outputIndex: 1033
|
|
295
|
-
}
|
|
296
|
-
]
|
|
297
|
-
});
|
|
298
|
-
const r = new LookupResolver_1.default({
|
|
299
|
-
facilitator: mockFacilitator,
|
|
300
|
-
slapTrackers: ['https://mock.slap'],
|
|
301
|
-
additionalHosts: {
|
|
302
|
-
ls_foo: ['https://additional.host']
|
|
303
|
-
},
|
|
304
|
-
hostOverrides: {
|
|
305
|
-
ls_foo: ['https://override.host']
|
|
306
|
-
}
|
|
307
|
-
});
|
|
308
|
-
const res = await r.query({
|
|
309
|
-
service: 'ls_foo',
|
|
310
|
-
query: { test: 1 }
|
|
311
|
-
});
|
|
312
|
-
expect(res).toEqual({
|
|
313
|
-
type: 'output-list',
|
|
314
|
-
outputs: [
|
|
315
|
-
{
|
|
316
|
-
// expect the first output to appear only once, and be de-duplicated
|
|
317
|
-
beef: sampleBeef1,
|
|
318
|
-
outputIndex: 0
|
|
319
|
-
},
|
|
320
|
-
{
|
|
321
|
-
// also expect the second output from the additional host
|
|
322
|
-
beef: sampleBeef2,
|
|
323
|
-
outputIndex: 1033
|
|
324
|
-
}
|
|
325
|
-
]
|
|
326
|
-
});
|
|
327
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
328
|
-
[
|
|
329
|
-
'https://override.host',
|
|
330
|
-
{
|
|
331
|
-
service: 'ls_foo',
|
|
332
|
-
query: {
|
|
333
|
-
test: 1
|
|
334
|
-
}
|
|
335
|
-
},
|
|
336
|
-
undefined
|
|
337
|
-
],
|
|
338
|
-
[
|
|
339
|
-
// additional host should also have been queried
|
|
340
|
-
'https://additional.host',
|
|
341
|
-
{
|
|
342
|
-
service: 'ls_foo',
|
|
343
|
-
query: {
|
|
344
|
-
test: 1
|
|
345
|
-
}
|
|
346
|
-
},
|
|
347
|
-
undefined
|
|
348
|
-
]
|
|
349
|
-
]);
|
|
350
|
-
});
|
|
351
|
-
it('should handle multiple SLAP trackers and aggregate results from multiple hosts', async () => {
|
|
352
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
353
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
354
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
355
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
356
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
357
|
-
{
|
|
358
|
-
lockingScript: slapScript1,
|
|
359
|
-
satoshis: 1
|
|
360
|
-
}
|
|
361
|
-
], 0);
|
|
362
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
363
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
364
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
365
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
366
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
367
|
-
{
|
|
368
|
-
lockingScript: slapScript2,
|
|
369
|
-
satoshis: 1
|
|
370
|
-
}
|
|
371
|
-
], 0);
|
|
372
|
-
// SLAP trackers return hosts
|
|
373
|
-
mockFacilitator.lookup
|
|
374
|
-
.mockReturnValueOnce({
|
|
375
|
-
type: 'output-list',
|
|
376
|
-
outputs: [
|
|
377
|
-
{
|
|
378
|
-
outputIndex: 0,
|
|
379
|
-
beef: slapTx1.toBEEF()
|
|
380
|
-
}
|
|
381
|
-
]
|
|
382
|
-
})
|
|
383
|
-
.mockReturnValueOnce({
|
|
384
|
-
type: 'output-list',
|
|
385
|
-
outputs: [
|
|
386
|
-
{
|
|
387
|
-
outputIndex: 0,
|
|
388
|
-
beef: slapTx2.toBEEF()
|
|
389
|
-
}
|
|
390
|
-
]
|
|
391
|
-
});
|
|
392
|
-
// Hosts respond to the query
|
|
393
|
-
mockFacilitator.lookup
|
|
394
|
-
.mockReturnValueOnce({
|
|
395
|
-
type: 'output-list',
|
|
396
|
-
outputs: [
|
|
397
|
-
{
|
|
398
|
-
beef: sampleBeef3,
|
|
399
|
-
outputIndex: 0
|
|
400
|
-
}
|
|
401
|
-
]
|
|
402
|
-
})
|
|
403
|
-
.mockReturnValueOnce({
|
|
404
|
-
type: 'output-list',
|
|
405
|
-
outputs: [
|
|
406
|
-
{
|
|
407
|
-
beef: sampleBeef4,
|
|
408
|
-
outputIndex: 1
|
|
409
|
-
}
|
|
410
|
-
]
|
|
411
|
-
});
|
|
412
|
-
const r = new LookupResolver_1.default({
|
|
413
|
-
facilitator: mockFacilitator,
|
|
414
|
-
slapTrackers: ['https://mock.slap1', 'https://mock.slap2']
|
|
415
|
-
});
|
|
416
|
-
const res = await r.query({
|
|
417
|
-
service: 'ls_foo',
|
|
418
|
-
query: { test: 1 }
|
|
419
|
-
});
|
|
420
|
-
expect(res).toEqual({
|
|
421
|
-
type: 'output-list',
|
|
422
|
-
outputs: [
|
|
423
|
-
{ beef: sampleBeef3, outputIndex: 0 },
|
|
424
|
-
{ beef: sampleBeef4, outputIndex: 1 }
|
|
425
|
-
]
|
|
426
|
-
});
|
|
427
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
428
|
-
[
|
|
429
|
-
'https://mock.slap1',
|
|
430
|
-
{
|
|
431
|
-
service: 'ls_slap',
|
|
432
|
-
query: {
|
|
433
|
-
service: 'ls_foo'
|
|
434
|
-
}
|
|
435
|
-
},
|
|
436
|
-
1000
|
|
437
|
-
],
|
|
438
|
-
[
|
|
439
|
-
'https://mock.slap2',
|
|
440
|
-
{
|
|
441
|
-
service: 'ls_slap',
|
|
442
|
-
query: {
|
|
443
|
-
service: 'ls_foo'
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
1000
|
|
447
|
-
],
|
|
448
|
-
[
|
|
449
|
-
'https://slaphost1.com',
|
|
450
|
-
{
|
|
451
|
-
service: 'ls_foo',
|
|
452
|
-
query: {
|
|
453
|
-
test: 1
|
|
454
|
-
}
|
|
455
|
-
},
|
|
456
|
-
undefined
|
|
457
|
-
],
|
|
458
|
-
[
|
|
459
|
-
'https://slaphost2.com',
|
|
460
|
-
{
|
|
461
|
-
service: 'ls_foo',
|
|
462
|
-
query: {
|
|
463
|
-
test: 1
|
|
464
|
-
}
|
|
465
|
-
},
|
|
466
|
-
undefined
|
|
467
|
-
]
|
|
468
|
-
]);
|
|
469
|
-
});
|
|
470
|
-
it('should de-duplicate outputs from multiple hosts', async () => {
|
|
471
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
472
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
473
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
474
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
475
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
476
|
-
{
|
|
477
|
-
lockingScript: slapScript1,
|
|
478
|
-
satoshis: 1
|
|
479
|
-
}
|
|
480
|
-
], 0);
|
|
481
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
482
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
483
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
484
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
485
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
486
|
-
{
|
|
487
|
-
lockingScript: slapScript2,
|
|
488
|
-
satoshis: 1
|
|
489
|
-
}
|
|
490
|
-
], 0);
|
|
491
|
-
// SLAP tracker returns two hosts
|
|
492
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
493
|
-
type: 'output-list',
|
|
494
|
-
outputs: [
|
|
495
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
496
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() }
|
|
497
|
-
]
|
|
498
|
-
});
|
|
499
|
-
// Both hosts return the same output
|
|
500
|
-
const duplicateOutput = { beef: sampleBeef3, outputIndex: 0 };
|
|
501
|
-
mockFacilitator.lookup
|
|
502
|
-
.mockReturnValueOnce({
|
|
503
|
-
type: 'output-list',
|
|
504
|
-
outputs: [duplicateOutput]
|
|
505
|
-
})
|
|
506
|
-
.mockReturnValueOnce({
|
|
507
|
-
type: 'output-list',
|
|
508
|
-
outputs: [duplicateOutput]
|
|
509
|
-
});
|
|
510
|
-
const r = new LookupResolver_1.default({
|
|
511
|
-
facilitator: mockFacilitator,
|
|
512
|
-
slapTrackers: ['https://mock.slap']
|
|
513
|
-
});
|
|
514
|
-
const res = await r.query({
|
|
515
|
-
service: 'ls_foo',
|
|
516
|
-
query: { test: 1 }
|
|
517
|
-
});
|
|
518
|
-
expect(res).toEqual({
|
|
519
|
-
type: 'output-list',
|
|
520
|
-
outputs: [duplicateOutput]
|
|
521
|
-
});
|
|
522
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
523
|
-
[
|
|
524
|
-
'https://mock.slap',
|
|
525
|
-
{
|
|
526
|
-
service: 'ls_slap',
|
|
527
|
-
query: {
|
|
528
|
-
service: 'ls_foo'
|
|
529
|
-
}
|
|
530
|
-
},
|
|
531
|
-
1000
|
|
532
|
-
],
|
|
533
|
-
[
|
|
534
|
-
'https://slaphost1.com',
|
|
535
|
-
{
|
|
536
|
-
service: 'ls_foo',
|
|
537
|
-
query: {
|
|
538
|
-
test: 1
|
|
539
|
-
}
|
|
540
|
-
},
|
|
541
|
-
undefined
|
|
542
|
-
],
|
|
543
|
-
[
|
|
544
|
-
'https://slaphost2.com',
|
|
545
|
-
{
|
|
546
|
-
service: 'ls_foo',
|
|
547
|
-
query: {
|
|
548
|
-
test: 1
|
|
549
|
-
}
|
|
550
|
-
},
|
|
551
|
-
undefined
|
|
552
|
-
]
|
|
553
|
-
]);
|
|
554
|
-
});
|
|
555
|
-
it('should handle hosts returning different response types', async () => {
|
|
556
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
557
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
558
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
559
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
560
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
561
|
-
{
|
|
562
|
-
lockingScript: slapScript1,
|
|
563
|
-
satoshis: 1
|
|
564
|
-
}
|
|
565
|
-
], 0);
|
|
566
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
567
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
568
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
569
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
570
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
571
|
-
{
|
|
572
|
-
lockingScript: slapScript2,
|
|
573
|
-
satoshis: 1
|
|
574
|
-
}
|
|
575
|
-
], 0);
|
|
576
|
-
// SLAP tracker returns two hosts
|
|
577
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
578
|
-
type: 'output-list',
|
|
579
|
-
outputs: [
|
|
580
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
581
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() }
|
|
582
|
-
]
|
|
583
|
-
});
|
|
584
|
-
// First host returns 'freeform' response
|
|
585
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
586
|
-
type: 'freeform',
|
|
587
|
-
result: { message: 'Freeform response from host1' }
|
|
588
|
-
});
|
|
589
|
-
// Second host returns 'output-list' response
|
|
590
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
591
|
-
type: 'output-list',
|
|
592
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
593
|
-
});
|
|
594
|
-
const r = new LookupResolver_1.default({
|
|
595
|
-
facilitator: mockFacilitator,
|
|
596
|
-
slapTrackers: ['https://mock.slap']
|
|
597
|
-
});
|
|
598
|
-
const res = await r.query({
|
|
599
|
-
service: 'ls_foo',
|
|
600
|
-
query: { test: 1 }
|
|
601
|
-
});
|
|
602
|
-
// Since the first response is 'freeform', it should return that response
|
|
603
|
-
expect(res).toEqual({
|
|
604
|
-
type: 'freeform',
|
|
605
|
-
result: { message: 'Freeform response from host1' }
|
|
606
|
-
});
|
|
607
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
608
|
-
[
|
|
609
|
-
'https://mock.slap',
|
|
610
|
-
{
|
|
611
|
-
service: 'ls_slap',
|
|
612
|
-
query: {
|
|
613
|
-
service: 'ls_foo'
|
|
614
|
-
}
|
|
615
|
-
},
|
|
616
|
-
1000
|
|
617
|
-
],
|
|
618
|
-
[
|
|
619
|
-
'https://slaphost1.com',
|
|
620
|
-
{
|
|
621
|
-
service: 'ls_foo',
|
|
622
|
-
query: {
|
|
623
|
-
test: 1
|
|
624
|
-
}
|
|
625
|
-
},
|
|
626
|
-
undefined
|
|
627
|
-
],
|
|
628
|
-
[
|
|
629
|
-
'https://slaphost2.com',
|
|
630
|
-
{
|
|
631
|
-
service: 'ls_foo',
|
|
632
|
-
query: {
|
|
633
|
-
test: 1
|
|
634
|
-
}
|
|
635
|
-
},
|
|
636
|
-
undefined
|
|
637
|
-
]
|
|
638
|
-
]);
|
|
639
|
-
});
|
|
640
|
-
it('should ignore freeform responses when first response is output-list', async () => {
|
|
641
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
642
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
643
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
644
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
645
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
646
|
-
{
|
|
647
|
-
lockingScript: slapScript1,
|
|
648
|
-
satoshis: 1
|
|
649
|
-
}
|
|
650
|
-
], 0);
|
|
651
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
652
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
653
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
654
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
655
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
656
|
-
{
|
|
657
|
-
lockingScript: slapScript2,
|
|
658
|
-
satoshis: 1
|
|
659
|
-
}
|
|
660
|
-
], 0);
|
|
661
|
-
// SLAP tracker returns two hosts
|
|
662
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
663
|
-
type: 'output-list',
|
|
664
|
-
outputs: [
|
|
665
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
666
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() }
|
|
667
|
-
]
|
|
668
|
-
});
|
|
669
|
-
// First host returns 'output-list' response
|
|
670
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
671
|
-
type: 'output-list',
|
|
672
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
673
|
-
});
|
|
674
|
-
// Second host returns 'freeform' response
|
|
675
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
676
|
-
type: 'freeform',
|
|
677
|
-
result: { message: 'Freeform response from host2' }
|
|
678
|
-
});
|
|
679
|
-
const r = new LookupResolver_1.default({
|
|
680
|
-
facilitator: mockFacilitator,
|
|
681
|
-
slapTrackers: ['https://mock.slap']
|
|
682
|
-
});
|
|
683
|
-
const res = await r.query({
|
|
684
|
-
service: 'ls_foo',
|
|
685
|
-
query: { test: 1 }
|
|
686
|
-
});
|
|
687
|
-
expect(res).toEqual({
|
|
688
|
-
type: 'output-list',
|
|
689
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
690
|
-
});
|
|
691
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
692
|
-
[
|
|
693
|
-
'https://mock.slap',
|
|
694
|
-
{
|
|
695
|
-
service: 'ls_slap',
|
|
696
|
-
query: {
|
|
697
|
-
service: 'ls_foo'
|
|
698
|
-
}
|
|
699
|
-
},
|
|
700
|
-
1000
|
|
701
|
-
],
|
|
702
|
-
[
|
|
703
|
-
'https://slaphost1.com',
|
|
704
|
-
{
|
|
705
|
-
service: 'ls_foo',
|
|
706
|
-
query: {
|
|
707
|
-
test: 1
|
|
708
|
-
}
|
|
709
|
-
},
|
|
710
|
-
undefined
|
|
711
|
-
],
|
|
712
|
-
[
|
|
713
|
-
'https://slaphost2.com',
|
|
714
|
-
{
|
|
715
|
-
service: 'ls_foo',
|
|
716
|
-
query: {
|
|
717
|
-
test: 1
|
|
718
|
-
}
|
|
719
|
-
},
|
|
720
|
-
undefined
|
|
721
|
-
]
|
|
722
|
-
]);
|
|
723
|
-
});
|
|
724
|
-
it('should throw an error when no competent hosts are found', async () => {
|
|
725
|
-
// SLAP tracker returns empty output-list
|
|
726
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
727
|
-
type: 'output-list',
|
|
728
|
-
outputs: []
|
|
729
|
-
});
|
|
730
|
-
const r = new LookupResolver_1.default({
|
|
731
|
-
facilitator: mockFacilitator,
|
|
732
|
-
slapTrackers: ['https://mock.slap']
|
|
733
|
-
});
|
|
734
|
-
await expect(r.query({
|
|
735
|
-
service: 'ls_foo',
|
|
736
|
-
query: { test: 1 }
|
|
737
|
-
})).rejects.toThrow('No competent hosts found by the SLAP trackers for lookup service: ls_foo');
|
|
738
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
739
|
-
[
|
|
740
|
-
'https://mock.slap',
|
|
741
|
-
{
|
|
742
|
-
service: 'ls_slap',
|
|
743
|
-
query: {
|
|
744
|
-
service: 'ls_foo'
|
|
745
|
-
}
|
|
746
|
-
},
|
|
747
|
-
1000
|
|
748
|
-
]
|
|
749
|
-
]);
|
|
750
|
-
});
|
|
751
|
-
it('should not throw an error when one host fails to respond', async () => {
|
|
752
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
753
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
754
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
755
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
756
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
757
|
-
{
|
|
758
|
-
lockingScript: slapScript1,
|
|
759
|
-
satoshis: 1
|
|
760
|
-
}
|
|
761
|
-
], 0);
|
|
762
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
763
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
764
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
765
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
766
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
767
|
-
{
|
|
768
|
-
lockingScript: slapScript2,
|
|
769
|
-
satoshis: 1
|
|
770
|
-
}
|
|
771
|
-
], 0);
|
|
772
|
-
// SLAP tracker returns two hosts
|
|
773
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
774
|
-
type: 'output-list',
|
|
775
|
-
outputs: [
|
|
776
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
777
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() }
|
|
778
|
-
]
|
|
779
|
-
});
|
|
780
|
-
// First host responds successfully
|
|
781
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
782
|
-
type: 'output-list',
|
|
783
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
784
|
-
});
|
|
785
|
-
// Second host fails to respond
|
|
786
|
-
mockFacilitator.lookup.mockImplementationOnce(async () => {
|
|
787
|
-
throw new Error('Host2 failed to respond');
|
|
788
|
-
});
|
|
789
|
-
const r = new LookupResolver_1.default({
|
|
790
|
-
facilitator: mockFacilitator,
|
|
791
|
-
slapTrackers: ['https://mock.slap']
|
|
792
|
-
});
|
|
793
|
-
const res = await r.query({
|
|
794
|
-
service: 'ls_foo',
|
|
795
|
-
query: { test: 1 }
|
|
796
|
-
});
|
|
797
|
-
expect(res).toEqual({
|
|
798
|
-
type: 'output-list',
|
|
799
|
-
outputs: [
|
|
800
|
-
{
|
|
801
|
-
beef: sampleBeef3,
|
|
802
|
-
outputIndex: 0
|
|
803
|
-
}
|
|
804
|
-
]
|
|
805
|
-
});
|
|
806
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
807
|
-
[
|
|
808
|
-
'https://mock.slap',
|
|
809
|
-
{
|
|
810
|
-
service: 'ls_slap',
|
|
811
|
-
query: {
|
|
812
|
-
service: 'ls_foo'
|
|
813
|
-
}
|
|
814
|
-
},
|
|
815
|
-
1000
|
|
816
|
-
],
|
|
817
|
-
[
|
|
818
|
-
'https://slaphost1.com',
|
|
819
|
-
{
|
|
820
|
-
service: 'ls_foo',
|
|
821
|
-
query: {
|
|
822
|
-
test: 1
|
|
823
|
-
}
|
|
824
|
-
},
|
|
825
|
-
undefined
|
|
826
|
-
],
|
|
827
|
-
[
|
|
828
|
-
'https://slaphost2.com',
|
|
829
|
-
{
|
|
830
|
-
service: 'ls_foo',
|
|
831
|
-
query: {
|
|
832
|
-
test: 1
|
|
833
|
-
}
|
|
834
|
-
},
|
|
835
|
-
undefined
|
|
836
|
-
]
|
|
837
|
-
]);
|
|
838
|
-
});
|
|
839
|
-
it('Directly uses SLAP resolvers to facilitate SLAP queries', async () => {
|
|
840
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
841
|
-
type: 'output-list',
|
|
842
|
-
outputs: [
|
|
843
|
-
{
|
|
844
|
-
beef: sampleBeef1,
|
|
845
|
-
outputIndex: 0
|
|
846
|
-
}
|
|
847
|
-
]
|
|
848
|
-
});
|
|
849
|
-
const r = new LookupResolver_1.default({
|
|
850
|
-
facilitator: mockFacilitator,
|
|
851
|
-
slapTrackers: ['https://mock.slap']
|
|
852
|
-
});
|
|
853
|
-
const res = await r.query({
|
|
854
|
-
service: 'ls_slap',
|
|
855
|
-
query: { test: 1 }
|
|
856
|
-
});
|
|
857
|
-
expect(res).toEqual({
|
|
858
|
-
type: 'output-list',
|
|
859
|
-
outputs: [
|
|
860
|
-
{
|
|
861
|
-
beef: sampleBeef1,
|
|
862
|
-
outputIndex: 0
|
|
863
|
-
}
|
|
864
|
-
]
|
|
865
|
-
});
|
|
866
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
867
|
-
[
|
|
868
|
-
'https://mock.slap',
|
|
869
|
-
{
|
|
870
|
-
service: 'ls_slap',
|
|
871
|
-
query: {
|
|
872
|
-
test: 1
|
|
873
|
-
}
|
|
874
|
-
},
|
|
875
|
-
undefined
|
|
876
|
-
]
|
|
877
|
-
]);
|
|
878
|
-
});
|
|
879
|
-
it('should throw an error when SLAP tracker returns invalid response', async () => {
|
|
880
|
-
// SLAP tracker returns 'freeform' response
|
|
881
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
882
|
-
type: 'freeform',
|
|
883
|
-
result: { message: 'Invalid response' }
|
|
884
|
-
});
|
|
885
|
-
const r = new LookupResolver_1.default({
|
|
886
|
-
facilitator: mockFacilitator,
|
|
887
|
-
slapTrackers: ['https://mock.slap']
|
|
888
|
-
});
|
|
889
|
-
// Because a freeform response is not valid, the SLAP trackers have not found any competent hosts.
|
|
890
|
-
await expect(r.query({
|
|
891
|
-
service: 'ls_foo',
|
|
892
|
-
query: { test: 1 }
|
|
893
|
-
})).rejects.toThrow('No competent hosts found by the SLAP trackers for lookup service: ls_foo');
|
|
894
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
895
|
-
[
|
|
896
|
-
'https://mock.slap',
|
|
897
|
-
{
|
|
898
|
-
service: 'ls_slap',
|
|
899
|
-
query: {
|
|
900
|
-
service: 'ls_foo'
|
|
901
|
-
}
|
|
902
|
-
},
|
|
903
|
-
1000
|
|
904
|
-
]
|
|
905
|
-
]);
|
|
906
|
-
});
|
|
907
|
-
it('should throw an error when HTTPSOverlayLookupFacilitator is used with non-HTTPS URL', async () => {
|
|
908
|
-
const facilitator = new LookupResolver_1.HTTPSOverlayLookupFacilitator();
|
|
909
|
-
await expect(facilitator.lookup('http://insecure.url', { service: 'test', query: {} })).rejects.toThrow('HTTPS facilitator can only use URLs that start with "https:"');
|
|
910
|
-
});
|
|
911
|
-
describe('LookupResolver Resiliency', () => {
|
|
912
|
-
beforeEach(() => {
|
|
913
|
-
mockFacilitator.lookup.mockReset();
|
|
914
|
-
});
|
|
915
|
-
it('should continue to function when one SLAP tracker fails', async () => {
|
|
916
|
-
const slapHostKey = new index_1.PrivateKey(42);
|
|
917
|
-
const slapWallet = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey);
|
|
918
|
-
const slapLib = new OverlayAdminTokenTemplate_1.default(slapWallet);
|
|
919
|
-
const slapScript = await slapLib.lock('SLAP', 'https://slaphost.com', 'ls_foo');
|
|
920
|
-
const slapTx = new index_2.Transaction(1, [], [
|
|
921
|
-
{
|
|
922
|
-
lockingScript: slapScript,
|
|
923
|
-
satoshis: 1
|
|
924
|
-
}
|
|
925
|
-
], 0);
|
|
926
|
-
// First SLAP tracker fails
|
|
927
|
-
mockFacilitator.lookup.mockImplementationOnce(async () => {
|
|
928
|
-
throw new Error('SLAP tracker failed');
|
|
929
|
-
});
|
|
930
|
-
// Second SLAP tracker succeeds
|
|
931
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
932
|
-
type: 'output-list',
|
|
933
|
-
outputs: [
|
|
934
|
-
{
|
|
935
|
-
outputIndex: 0,
|
|
936
|
-
beef: slapTx.toBEEF()
|
|
937
|
-
}
|
|
938
|
-
]
|
|
939
|
-
});
|
|
940
|
-
// Host responds successfully
|
|
941
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
942
|
-
type: 'output-list',
|
|
943
|
-
outputs: [
|
|
944
|
-
{
|
|
945
|
-
beef: sampleBeef3,
|
|
946
|
-
outputIndex: 0
|
|
947
|
-
}
|
|
948
|
-
]
|
|
949
|
-
});
|
|
950
|
-
const r = new LookupResolver_1.default({
|
|
951
|
-
facilitator: mockFacilitator,
|
|
952
|
-
slapTrackers: ['https://mock.slap1', 'https://mock.slap2']
|
|
953
|
-
});
|
|
954
|
-
const res = await r.query({
|
|
955
|
-
service: 'ls_foo',
|
|
956
|
-
query: { test: 1 }
|
|
957
|
-
});
|
|
958
|
-
expect(res).toEqual({
|
|
959
|
-
type: 'output-list',
|
|
960
|
-
outputs: [
|
|
961
|
-
{
|
|
962
|
-
beef: sampleBeef3,
|
|
963
|
-
outputIndex: 0
|
|
964
|
-
}
|
|
965
|
-
]
|
|
966
|
-
});
|
|
967
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
968
|
-
[
|
|
969
|
-
'https://mock.slap1',
|
|
970
|
-
{
|
|
971
|
-
service: 'ls_slap',
|
|
972
|
-
query: {
|
|
973
|
-
service: 'ls_foo'
|
|
974
|
-
}
|
|
975
|
-
},
|
|
976
|
-
1000
|
|
977
|
-
],
|
|
978
|
-
[
|
|
979
|
-
'https://mock.slap2',
|
|
980
|
-
{
|
|
981
|
-
service: 'ls_slap',
|
|
982
|
-
query: {
|
|
983
|
-
service: 'ls_foo'
|
|
984
|
-
}
|
|
985
|
-
},
|
|
986
|
-
1000
|
|
987
|
-
],
|
|
988
|
-
[
|
|
989
|
-
'https://slaphost.com',
|
|
990
|
-
{
|
|
991
|
-
service: 'ls_foo',
|
|
992
|
-
query: {
|
|
993
|
-
test: 1
|
|
994
|
-
}
|
|
995
|
-
},
|
|
996
|
-
undefined
|
|
997
|
-
]
|
|
998
|
-
]);
|
|
999
|
-
});
|
|
1000
|
-
it('should aggregate outputs from hosts that respond, even if some SLAP trackers lie to our face', async () => {
|
|
1001
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
1002
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
1003
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
1004
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
1005
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
1006
|
-
{
|
|
1007
|
-
lockingScript: slapScript1,
|
|
1008
|
-
satoshis: 1
|
|
1009
|
-
}
|
|
1010
|
-
], 0);
|
|
1011
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
1012
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
1013
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
1014
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
1015
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
1016
|
-
{
|
|
1017
|
-
lockingScript: slapScript2,
|
|
1018
|
-
satoshis: 1
|
|
1019
|
-
}
|
|
1020
|
-
], 0);
|
|
1021
|
-
const slapHostKey3 = new index_1.PrivateKey(44);
|
|
1022
|
-
const slapWallet3 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey3);
|
|
1023
|
-
const slapLib3 = new OverlayAdminTokenTemplate_1.default(slapWallet3);
|
|
1024
|
-
const slapScript3 = await slapLib3.lock('SLAP', 'https://slaphost3.pantsonfire.com', 'ls_not_what_i_asked_you_for');
|
|
1025
|
-
const slapTx3 = new index_2.Transaction(1, [], [
|
|
1026
|
-
{
|
|
1027
|
-
lockingScript: slapScript3,
|
|
1028
|
-
satoshis: 1
|
|
1029
|
-
}
|
|
1030
|
-
], 0);
|
|
1031
|
-
// SLAP trackers return hosts
|
|
1032
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1033
|
-
type: 'output-list',
|
|
1034
|
-
outputs: [
|
|
1035
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
1036
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() },
|
|
1037
|
-
{ outputIndex: 0, beef: slapTx3.toBEEF() }
|
|
1038
|
-
]
|
|
1039
|
-
});
|
|
1040
|
-
// First host responds successfully
|
|
1041
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1042
|
-
type: 'output-list',
|
|
1043
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1044
|
-
});
|
|
1045
|
-
// Second host fails
|
|
1046
|
-
mockFacilitator.lookup.mockImplementationOnce(async () => {
|
|
1047
|
-
throw new Error('Host2 failed');
|
|
1048
|
-
});
|
|
1049
|
-
const r = new LookupResolver_1.default({
|
|
1050
|
-
facilitator: mockFacilitator,
|
|
1051
|
-
slapTrackers: ['https://mock.slap']
|
|
1052
|
-
});
|
|
1053
|
-
const res = await r.query({
|
|
1054
|
-
service: 'ls_foo',
|
|
1055
|
-
query: { test: 1 }
|
|
1056
|
-
});
|
|
1057
|
-
expect(res).toEqual({
|
|
1058
|
-
type: 'output-list',
|
|
1059
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1060
|
-
});
|
|
1061
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
1062
|
-
[
|
|
1063
|
-
'https://mock.slap',
|
|
1064
|
-
{
|
|
1065
|
-
service: 'ls_slap',
|
|
1066
|
-
query: {
|
|
1067
|
-
service: 'ls_foo'
|
|
1068
|
-
}
|
|
1069
|
-
},
|
|
1070
|
-
1000
|
|
1071
|
-
],
|
|
1072
|
-
[
|
|
1073
|
-
'https://slaphost1.com',
|
|
1074
|
-
{
|
|
1075
|
-
service: 'ls_foo',
|
|
1076
|
-
query: {
|
|
1077
|
-
test: 1
|
|
1078
|
-
}
|
|
1079
|
-
},
|
|
1080
|
-
undefined
|
|
1081
|
-
],
|
|
1082
|
-
[
|
|
1083
|
-
'https://slaphost2.com',
|
|
1084
|
-
{
|
|
1085
|
-
service: 'ls_foo',
|
|
1086
|
-
query: {
|
|
1087
|
-
test: 1
|
|
1088
|
-
}
|
|
1089
|
-
},
|
|
1090
|
-
undefined
|
|
1091
|
-
]
|
|
1092
|
-
]);
|
|
1093
|
-
});
|
|
1094
|
-
it('should aggregate outputs from hosts that respond, even if some SLAP trackers give us rotten BEEF', async () => {
|
|
1095
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
1096
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
1097
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
1098
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
1099
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
1100
|
-
{
|
|
1101
|
-
lockingScript: slapScript1,
|
|
1102
|
-
satoshis: 1
|
|
1103
|
-
}
|
|
1104
|
-
], 0);
|
|
1105
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
1106
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
1107
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
1108
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
1109
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
1110
|
-
{
|
|
1111
|
-
lockingScript: slapScript2,
|
|
1112
|
-
satoshis: 1
|
|
1113
|
-
}
|
|
1114
|
-
], 0);
|
|
1115
|
-
// SLAP trackers return hosts
|
|
1116
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1117
|
-
type: 'output-list',
|
|
1118
|
-
outputs: [
|
|
1119
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
1120
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() },
|
|
1121
|
-
{ outputIndex: 0, beef: [0] } // "rotten" (corrupted) BEEF
|
|
1122
|
-
]
|
|
1123
|
-
});
|
|
1124
|
-
// First host responds successfully
|
|
1125
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1126
|
-
type: 'output-list',
|
|
1127
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1128
|
-
});
|
|
1129
|
-
// Second host fails
|
|
1130
|
-
mockFacilitator.lookup.mockImplementationOnce(async () => {
|
|
1131
|
-
throw new Error('Host2 failed');
|
|
1132
|
-
});
|
|
1133
|
-
const r = new LookupResolver_1.default({
|
|
1134
|
-
facilitator: mockFacilitator,
|
|
1135
|
-
slapTrackers: ['https://mock.slap']
|
|
1136
|
-
});
|
|
1137
|
-
const res = await r.query({
|
|
1138
|
-
service: 'ls_foo',
|
|
1139
|
-
query: { test: 1 }
|
|
1140
|
-
});
|
|
1141
|
-
expect(res).toEqual({
|
|
1142
|
-
type: 'output-list',
|
|
1143
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1144
|
-
});
|
|
1145
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
1146
|
-
[
|
|
1147
|
-
'https://mock.slap',
|
|
1148
|
-
{
|
|
1149
|
-
service: 'ls_slap',
|
|
1150
|
-
query: {
|
|
1151
|
-
service: 'ls_foo'
|
|
1152
|
-
}
|
|
1153
|
-
},
|
|
1154
|
-
1000
|
|
1155
|
-
],
|
|
1156
|
-
[
|
|
1157
|
-
'https://slaphost1.com',
|
|
1158
|
-
{
|
|
1159
|
-
service: 'ls_foo',
|
|
1160
|
-
query: {
|
|
1161
|
-
test: 1
|
|
1162
|
-
}
|
|
1163
|
-
},
|
|
1164
|
-
undefined
|
|
1165
|
-
],
|
|
1166
|
-
[
|
|
1167
|
-
'https://slaphost2.com',
|
|
1168
|
-
{
|
|
1169
|
-
service: 'ls_foo',
|
|
1170
|
-
query: {
|
|
1171
|
-
test: 1
|
|
1172
|
-
}
|
|
1173
|
-
},
|
|
1174
|
-
undefined
|
|
1175
|
-
]
|
|
1176
|
-
]);
|
|
1177
|
-
});
|
|
1178
|
-
it('should aggregate outputs from hosts that respond, even if some fail', async () => {
|
|
1179
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
1180
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
1181
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
1182
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
1183
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
1184
|
-
{
|
|
1185
|
-
lockingScript: slapScript1,
|
|
1186
|
-
satoshis: 1
|
|
1187
|
-
}
|
|
1188
|
-
], 0);
|
|
1189
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
1190
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
1191
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
1192
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
1193
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
1194
|
-
{
|
|
1195
|
-
lockingScript: slapScript2,
|
|
1196
|
-
satoshis: 1
|
|
1197
|
-
}
|
|
1198
|
-
], 0);
|
|
1199
|
-
// SLAP trackers return hosts
|
|
1200
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1201
|
-
type: 'output-list',
|
|
1202
|
-
outputs: [
|
|
1203
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
1204
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() }
|
|
1205
|
-
]
|
|
1206
|
-
});
|
|
1207
|
-
// First host responds successfully
|
|
1208
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1209
|
-
type: 'output-list',
|
|
1210
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1211
|
-
});
|
|
1212
|
-
// Second host fails
|
|
1213
|
-
mockFacilitator.lookup.mockImplementationOnce(async () => {
|
|
1214
|
-
throw new Error('Host2 failed');
|
|
1215
|
-
});
|
|
1216
|
-
const r = new LookupResolver_1.default({
|
|
1217
|
-
facilitator: mockFacilitator,
|
|
1218
|
-
slapTrackers: ['https://mock.slap']
|
|
1219
|
-
});
|
|
1220
|
-
const res = await r.query({
|
|
1221
|
-
service: 'ls_foo',
|
|
1222
|
-
query: { test: 1 }
|
|
1223
|
-
});
|
|
1224
|
-
expect(res).toEqual({
|
|
1225
|
-
type: 'output-list',
|
|
1226
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1227
|
-
});
|
|
1228
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
1229
|
-
[
|
|
1230
|
-
'https://mock.slap',
|
|
1231
|
-
{
|
|
1232
|
-
service: 'ls_slap',
|
|
1233
|
-
query: {
|
|
1234
|
-
service: 'ls_foo'
|
|
1235
|
-
}
|
|
1236
|
-
},
|
|
1237
|
-
1000
|
|
1238
|
-
],
|
|
1239
|
-
[
|
|
1240
|
-
'https://slaphost1.com',
|
|
1241
|
-
{
|
|
1242
|
-
service: 'ls_foo',
|
|
1243
|
-
query: {
|
|
1244
|
-
test: 1
|
|
1245
|
-
}
|
|
1246
|
-
},
|
|
1247
|
-
undefined
|
|
1248
|
-
],
|
|
1249
|
-
[
|
|
1250
|
-
'https://slaphost2.com',
|
|
1251
|
-
{
|
|
1252
|
-
service: 'ls_foo',
|
|
1253
|
-
query: {
|
|
1254
|
-
test: 1
|
|
1255
|
-
}
|
|
1256
|
-
},
|
|
1257
|
-
undefined
|
|
1258
|
-
]
|
|
1259
|
-
]);
|
|
1260
|
-
});
|
|
1261
|
-
it('should handle invalid responses from some hosts and continue with valid ones', async () => {
|
|
1262
|
-
const slapHostKey = new index_1.PrivateKey(42);
|
|
1263
|
-
const slapWallet = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey);
|
|
1264
|
-
const slapLib = new OverlayAdminTokenTemplate_1.default(slapWallet);
|
|
1265
|
-
const slapScript = await slapLib.lock('SLAP', 'https://slaphost.com', 'ls_foo');
|
|
1266
|
-
const slapTx = new index_2.Transaction(1, [], [
|
|
1267
|
-
{
|
|
1268
|
-
lockingScript: slapScript,
|
|
1269
|
-
satoshis: 1
|
|
1270
|
-
}
|
|
1271
|
-
], 0);
|
|
1272
|
-
// SLAP tracker returns host
|
|
1273
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1274
|
-
type: 'output-list',
|
|
1275
|
-
outputs: [{ outputIndex: 0, beef: slapTx.toBEEF() }]
|
|
1276
|
-
});
|
|
1277
|
-
// Host returns invalid response
|
|
1278
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1279
|
-
type: 'invalid-type',
|
|
1280
|
-
data: {}
|
|
1281
|
-
});
|
|
1282
|
-
const r = new LookupResolver_1.default({
|
|
1283
|
-
facilitator: mockFacilitator,
|
|
1284
|
-
slapTrackers: ['https://mock.slap']
|
|
1285
|
-
});
|
|
1286
|
-
const res = await r.query({
|
|
1287
|
-
service: 'ls_foo',
|
|
1288
|
-
query: { test: 1 }
|
|
1289
|
-
});
|
|
1290
|
-
// Since there are no valid outputs, expect an error
|
|
1291
|
-
expect(res).toEqual({
|
|
1292
|
-
type: 'output-list',
|
|
1293
|
-
outputs: []
|
|
1294
|
-
});
|
|
1295
|
-
expect(mockFacilitator.lookup.mock.calls).toEqual([
|
|
1296
|
-
[
|
|
1297
|
-
'https://mock.slap',
|
|
1298
|
-
{
|
|
1299
|
-
service: 'ls_slap',
|
|
1300
|
-
query: {
|
|
1301
|
-
service: 'ls_foo'
|
|
1302
|
-
}
|
|
1303
|
-
},
|
|
1304
|
-
1000
|
|
1305
|
-
],
|
|
1306
|
-
[
|
|
1307
|
-
'https://slaphost.com',
|
|
1308
|
-
{
|
|
1309
|
-
service: 'ls_foo',
|
|
1310
|
-
query: {
|
|
1311
|
-
test: 1
|
|
1312
|
-
}
|
|
1313
|
-
},
|
|
1314
|
-
undefined
|
|
1315
|
-
]
|
|
1316
|
-
]);
|
|
1317
|
-
});
|
|
1318
|
-
it('should handle all SLAP trackers failing and throw an error', async () => {
|
|
1319
|
-
// Both SLAP trackers fail
|
|
1320
|
-
mockFacilitator.lookup.mockImplementation(async () => {
|
|
1321
|
-
throw new Error('SLAP tracker failed');
|
|
1322
|
-
});
|
|
1323
|
-
const r = new LookupResolver_1.default({
|
|
1324
|
-
facilitator: mockFacilitator,
|
|
1325
|
-
slapTrackers: ['https://mock.slap1', 'https://mock.slap2']
|
|
1326
|
-
});
|
|
1327
|
-
await expect(r.query({
|
|
1328
|
-
service: 'ls_foo',
|
|
1329
|
-
query: { test: 1 }
|
|
1330
|
-
})).rejects.toThrow('No competent hosts found by the SLAP trackers for lookup service: ls_foo');
|
|
1331
|
-
expect(mockFacilitator.lookup.mock.calls.length).toBe(2);
|
|
1332
|
-
});
|
|
1333
|
-
it('should handle all hosts failing and throw an error', async () => {
|
|
1334
|
-
const slapHostKey = new index_1.PrivateKey(42);
|
|
1335
|
-
const slapWallet = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey);
|
|
1336
|
-
const slapLib = new OverlayAdminTokenTemplate_1.default(slapWallet);
|
|
1337
|
-
const slapScript = await slapLib.lock('SLAP', 'https://slaphost.com', 'ls_foo');
|
|
1338
|
-
const slapTx = new index_2.Transaction(1, [], [
|
|
1339
|
-
{
|
|
1340
|
-
lockingScript: slapScript,
|
|
1341
|
-
satoshis: 1
|
|
1342
|
-
}
|
|
1343
|
-
], 0);
|
|
1344
|
-
// SLAP tracker returns host
|
|
1345
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1346
|
-
type: 'output-list',
|
|
1347
|
-
outputs: [{ outputIndex: 0, beef: slapTx.toBEEF() }]
|
|
1348
|
-
});
|
|
1349
|
-
// Host fails
|
|
1350
|
-
mockFacilitator.lookup.mockImplementationOnce(async () => {
|
|
1351
|
-
throw new Error('Host failed');
|
|
1352
|
-
});
|
|
1353
|
-
const r = new LookupResolver_1.default({
|
|
1354
|
-
facilitator: mockFacilitator,
|
|
1355
|
-
slapTrackers: ['https://mock.slap']
|
|
1356
|
-
});
|
|
1357
|
-
await expect(r.query({
|
|
1358
|
-
service: 'ls_foo',
|
|
1359
|
-
query: { test: 1 }
|
|
1360
|
-
})).rejects.toThrow('No successful responses from any hosts');
|
|
1361
|
-
expect(mockFacilitator.lookup.mock.calls.length).toBe(2);
|
|
1362
|
-
});
|
|
1363
|
-
it('should continue to aggregate outputs when some hosts return invalid outputs', async () => {
|
|
1364
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
1365
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
1366
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
1367
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
1368
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
1369
|
-
{
|
|
1370
|
-
lockingScript: slapScript1,
|
|
1371
|
-
satoshis: 1
|
|
1372
|
-
}
|
|
1373
|
-
], 0);
|
|
1374
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
1375
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
1376
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
1377
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
1378
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
1379
|
-
{
|
|
1380
|
-
lockingScript: slapScript2,
|
|
1381
|
-
satoshis: 1
|
|
1382
|
-
}
|
|
1383
|
-
], 0);
|
|
1384
|
-
// SLAP tracker returns two hosts
|
|
1385
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1386
|
-
type: 'output-list',
|
|
1387
|
-
outputs: [
|
|
1388
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
1389
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() }
|
|
1390
|
-
]
|
|
1391
|
-
});
|
|
1392
|
-
// First host returns valid output
|
|
1393
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1394
|
-
type: 'output-list',
|
|
1395
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1396
|
-
});
|
|
1397
|
-
// Second host returns invalid output
|
|
1398
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1399
|
-
type: 'output-list',
|
|
1400
|
-
outputs: [{ invalid: true }]
|
|
1401
|
-
});
|
|
1402
|
-
const r = new LookupResolver_1.default({
|
|
1403
|
-
facilitator: mockFacilitator,
|
|
1404
|
-
slapTrackers: ['https://mock.slap']
|
|
1405
|
-
});
|
|
1406
|
-
const res = await r.query({
|
|
1407
|
-
service: 'ls_foo',
|
|
1408
|
-
query: { test: 1 }
|
|
1409
|
-
});
|
|
1410
|
-
expect(res).toEqual({
|
|
1411
|
-
type: 'output-list',
|
|
1412
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1413
|
-
});
|
|
1414
|
-
expect(mockFacilitator.lookup.mock.calls.length).toBe(3);
|
|
1415
|
-
});
|
|
1416
|
-
it('should continue to aggregate outputs when some hosts return malformed malarkie', async () => {
|
|
1417
|
-
const slapHostKey1 = new index_1.PrivateKey(42);
|
|
1418
|
-
const slapWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey1);
|
|
1419
|
-
const slapLib1 = new OverlayAdminTokenTemplate_1.default(slapWallet1);
|
|
1420
|
-
const slapScript1 = await slapLib1.lock('SLAP', 'https://slaphost1.com', 'ls_foo');
|
|
1421
|
-
const slapTx1 = new index_2.Transaction(1, [], [
|
|
1422
|
-
{
|
|
1423
|
-
lockingScript: slapScript1,
|
|
1424
|
-
satoshis: 1
|
|
1425
|
-
}
|
|
1426
|
-
], 0);
|
|
1427
|
-
const slapHostKey2 = new index_1.PrivateKey(43);
|
|
1428
|
-
const slapWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(slapHostKey2);
|
|
1429
|
-
const slapLib2 = new OverlayAdminTokenTemplate_1.default(slapWallet2);
|
|
1430
|
-
const slapScript2 = await slapLib2.lock('SLAP', 'https://slaphost2.com', 'ls_foo');
|
|
1431
|
-
const slapTx2 = new index_2.Transaction(1, [], [
|
|
1432
|
-
{
|
|
1433
|
-
lockingScript: slapScript2,
|
|
1434
|
-
satoshis: 1
|
|
1435
|
-
}
|
|
1436
|
-
], 0);
|
|
1437
|
-
// SLAP tracker returns two hosts
|
|
1438
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1439
|
-
type: 'output-list',
|
|
1440
|
-
outputs: [
|
|
1441
|
-
{ outputIndex: 0, beef: slapTx1.toBEEF() },
|
|
1442
|
-
{ outputIndex: 0, beef: slapTx2.toBEEF() }
|
|
1443
|
-
]
|
|
1444
|
-
});
|
|
1445
|
-
// First host returns valid output
|
|
1446
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1447
|
-
type: 'output-list',
|
|
1448
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1449
|
-
});
|
|
1450
|
-
// Second host returns invalid output
|
|
1451
|
-
mockFacilitator.lookup.mockReturnValueOnce({
|
|
1452
|
-
type: 'output-list',
|
|
1453
|
-
output: 'document.createElement('
|
|
1454
|
-
});
|
|
1455
|
-
const r = new LookupResolver_1.default({
|
|
1456
|
-
facilitator: mockFacilitator,
|
|
1457
|
-
slapTrackers: ['https://mock.slap']
|
|
1458
|
-
});
|
|
1459
|
-
const res = await r.query({
|
|
1460
|
-
service: 'ls_foo',
|
|
1461
|
-
query: { test: 1 }
|
|
1462
|
-
});
|
|
1463
|
-
expect(res).toEqual({
|
|
1464
|
-
type: 'output-list',
|
|
1465
|
-
outputs: [{ beef: sampleBeef3, outputIndex: 0 }]
|
|
1466
|
-
});
|
|
1467
|
-
expect(mockFacilitator.lookup.mock.calls.length).toBe(3);
|
|
1468
|
-
});
|
|
1469
|
-
});
|
|
1470
|
-
});
|
|
1471
|
-
//# sourceMappingURL=LookupResolver.test.js.map
|