@bsv/sdk 2.1.0 → 2.1.2
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 +7 -7
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/auth/Peer.js +8 -13
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/auth/SessionManager.js +4 -7
- package/dist/cjs/src/auth/SessionManager.js.map +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/cjs/src/auth/clients/AuthFetch.js +32 -32
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +4 -4
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +29 -34
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +9 -4
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +12 -12
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/identity/ContactsManager.js +212 -234
- package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
- package/dist/cjs/src/identity/IdentityClient.js +199 -63
- package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
- package/dist/cjs/src/kvstore/GlobalKVStore.js +30 -31
- package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/LocalKVStore.js +9 -9
- package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js +2 -2
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/cjs/src/messages/SignedMessage.js +1 -1
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
- package/dist/cjs/src/overlay-tools/Historian.js +1 -1
- package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +213 -93
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +75 -146
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +2 -2
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +164 -148
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/Curve.js +17 -15
- package/dist/cjs/src/primitives/Curve.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +12 -7
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/Hash.js +312 -105
- package/dist/cjs/src/primitives/Hash.js.map +1 -1
- package/dist/cjs/src/primitives/JacobianPoint.js +8 -8
- package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/cjs/src/primitives/K256.js +3 -3
- package/dist/cjs/src/primitives/K256.js.map +1 -1
- package/dist/cjs/src/primitives/Point.js +36 -40
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +4 -4
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js +4 -4
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js +10 -14
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/ReaderUint8Array.js +6 -6
- package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -1
- package/dist/cjs/src/primitives/Schnorr.js +2 -2
- package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
- package/dist/cjs/src/primitives/Secp256r1.js +2 -1
- package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
- package/dist/cjs/src/primitives/Signature.js +8 -8
- package/dist/cjs/src/primitives/Signature.js.map +1 -1
- package/dist/cjs/src/primitives/SymmetricKey.js +123 -1
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +20 -21
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +39 -46
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/registry/RegistryClient.js +31 -23
- package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
- package/dist/cjs/src/remittance/RemittanceManager.js +19 -18
- package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -1
- package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -1
- package/dist/cjs/src/script/Script.js +93 -170
- package/dist/cjs/src/script/Script.js.map +1 -1
- package/dist/cjs/src/script/ScriptEvaluationError.js +2 -2
- package/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +14 -12
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +22 -18
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
- package/dist/cjs/src/script/templates/RPuzzle.js +2 -4
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/storage/StorageDownloader.js +42 -9
- package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
- package/dist/cjs/src/totp/totp.js +1 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +239 -192
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefConstants.js +19 -0
- package/dist/cjs/src/transaction/BeefConstants.js.map +1 -0
- package/dist/cjs/src/transaction/BeefTx.js +12 -12
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +4 -4
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +49 -52
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js +9 -9
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +9 -9
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
- package/dist/cjs/src/wallet/WalletError.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -4
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +9 -9
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +92 -92
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +387 -711
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/XDM.js +4 -4
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/window.CWI.js +2 -2
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/cjs/src/wallet/validationHelpers.js +9 -9
- package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/auth/Peer.js +25 -13
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/auth/SessionManager.js +4 -7
- package/dist/esm/src/auth/SessionManager.js.map +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/esm/src/auth/clients/AuthFetch.js +32 -32
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +4 -4
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/esm/src/compat/ECIES.js +29 -34
- package/dist/esm/src/compat/ECIES.js.map +1 -1
- package/dist/esm/src/compat/HD.js +9 -4
- package/dist/esm/src/compat/HD.js.map +1 -1
- package/dist/esm/src/compat/Mnemonic.js +12 -12
- package/dist/esm/src/compat/Mnemonic.js.map +1 -1
- package/dist/esm/src/identity/ContactsManager.js +212 -234
- package/dist/esm/src/identity/ContactsManager.js.map +1 -1
- package/dist/esm/src/identity/IdentityClient.js +199 -63
- package/dist/esm/src/identity/IdentityClient.js.map +1 -1
- package/dist/esm/src/kvstore/GlobalKVStore.js +30 -31
- package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/LocalKVStore.js +9 -9
- package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/kvStoreInterpreter.js +2 -2
- package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/esm/src/messages/SignedMessage.js +1 -1
- package/dist/esm/src/messages/SignedMessage.js.map +1 -1
- package/dist/esm/src/overlay-tools/Historian.js +1 -1
- package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
- package/dist/esm/src/overlay-tools/LookupResolver.js +213 -93
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +74 -146
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +2 -2
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +167 -154
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/Curve.js +17 -15
- package/dist/esm/src/primitives/Curve.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +12 -7
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/Hash.js +316 -105
- package/dist/esm/src/primitives/Hash.js.map +1 -1
- package/dist/esm/src/primitives/JacobianPoint.js +8 -8
- package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/esm/src/primitives/K256.js +3 -3
- package/dist/esm/src/primitives/K256.js.map +1 -1
- package/dist/esm/src/primitives/Point.js +36 -40
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +4 -4
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js +4 -4
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js +10 -14
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/ReaderUint8Array.js +6 -6
- package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -1
- package/dist/esm/src/primitives/Schnorr.js +1 -1
- package/dist/esm/src/primitives/Schnorr.js.map +1 -1
- package/dist/esm/src/primitives/Secp256r1.js +2 -1
- package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
- package/dist/esm/src/primitives/Signature.js +8 -8
- package/dist/esm/src/primitives/Signature.js.map +1 -1
- package/dist/esm/src/primitives/SymmetricKey.js +123 -1
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/esm/src/primitives/TransactionSignature.js +20 -21
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +39 -48
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/registry/RegistryClient.js +31 -23
- package/dist/esm/src/registry/RegistryClient.js.map +1 -1
- package/dist/esm/src/remittance/RemittanceManager.js +19 -18
- package/dist/esm/src/remittance/RemittanceManager.js.map +1 -1
- package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -1
- package/dist/esm/src/script/Script.js +93 -170
- package/dist/esm/src/script/Script.js.map +1 -1
- package/dist/esm/src/script/ScriptEvaluationError.js +2 -2
- package/dist/esm/src/script/ScriptEvaluationError.js.map +1 -1
- package/dist/esm/src/script/Spend.js +14 -12
- package/dist/esm/src/script/Spend.js.map +1 -1
- package/dist/esm/src/script/templates/PushDrop.js +4 -3
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
- package/dist/esm/src/script/templates/RPuzzle.js +2 -4
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/storage/StorageDownloader.js +1 -1
- package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
- package/dist/esm/src/totp/totp.js +1 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +229 -186
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefConstants.js +16 -0
- package/dist/esm/src/transaction/BeefConstants.js.map +1 -0
- package/dist/esm/src/transaction/BeefTx.js +3 -3
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/MerklePath.js +4 -4
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +49 -52
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/http/BinaryFetchClient.js +9 -9
- package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js +9 -9
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/WalletClient.js.map +1 -1
- package/dist/esm/src/wallet/WalletError.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -4
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/src/wallet/substrates/ReactNativeWebView.js +9 -9
- package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +92 -92
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +387 -711
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/src/wallet/substrates/XDM.js +4 -4
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/esm/src/wallet/substrates/window.CWI.js +2 -2
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/esm/src/wallet/validationHelpers.js +9 -9
- package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/auth/Peer.d.ts +13 -0
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
- package/dist/types/src/compat/ECIES.d.ts.map +1 -1
- package/dist/types/src/compat/HD.d.ts.map +1 -1
- package/dist/types/src/identity/ContactsManager.d.ts +31 -2
- package/dist/types/src/identity/ContactsManager.d.ts.map +1 -1
- package/dist/types/src/identity/IdentityClient.d.ts +75 -10
- package/dist/types/src/identity/IdentityClient.d.ts.map +1 -1
- package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/LookupResolver.d.ts +73 -2
- package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +18 -3
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts +13 -3
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/Curve.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/Hash.d.ts +22 -17
- package/dist/types/src/primitives/Hash.d.ts.map +1 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts +3 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/Random.d.ts +2 -2
- package/dist/types/src/primitives/Random.d.ts.map +1 -1
- package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -1
- package/dist/types/src/primitives/Schnorr.d.ts +2 -1
- package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
- package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
- package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
- package/dist/types/src/primitives/utils.d.ts +2 -4
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
- package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -1
- package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -1
- package/dist/types/src/script/Script.d.ts +15 -8
- package/dist/types/src/script/Script.d.ts.map +1 -1
- package/dist/types/src/script/Spend.d.ts.map +1 -1
- package/dist/types/src/script/templates/PushDrop.d.ts +3 -1
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
- package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +46 -8
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefConstants.d.ts +15 -0
- package/dist/types/src/transaction/BeefConstants.d.ts.map +1 -0
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/KeyDeriver.d.ts +1 -1
- package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +18 -3
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/src/wallet/WalletClient.d.ts +8 -8
- package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +7 -7
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +36 -7
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/window.CWI.d.ts +9 -9
- package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +3 -3
- package/package.json +1 -1
- package/src/auth/Peer.ts +26 -13
- package/src/auth/SessionManager.ts +4 -7
- package/src/auth/certificates/MasterCertificate.ts +1 -1
- package/src/auth/certificates/__tests/CompletedProtoWallet.ts +1 -1
- package/src/auth/clients/AuthFetch.ts +41 -41
- package/src/auth/transports/SimplifiedFetchTransport.ts +4 -4
- package/src/compat/ECIES.ts +29 -34
- package/src/compat/HD.ts +10 -5
- package/src/compat/Mnemonic.ts +11 -11
- package/src/compat/__tests/HD.test.ts +19 -0
- package/src/identity/ContactsManager.ts +236 -258
- package/src/identity/IdentityClient.ts +244 -71
- package/src/identity/__tests/IdentityClient.additional.test.ts +150 -1
- package/src/identity/__tests/IdentityClient.test.ts +27 -3
- package/src/kvstore/GlobalKVStore.ts +31 -32
- package/src/kvstore/LocalKVStore.ts +8 -8
- package/src/kvstore/kvStoreInterpreter.ts +2 -2
- package/src/messages/SignedMessage.ts +1 -1
- package/src/overlay-tools/Historian.ts +1 -1
- package/src/overlay-tools/LookupResolver.ts +264 -90
- package/src/overlay-tools/SHIPBroadcaster.ts +92 -168
- package/src/primitives/AESGCM.ts +2 -2
- package/src/primitives/BigNumber.ts +122 -113
- package/src/primitives/Curve.ts +16 -15
- package/src/primitives/ECDSA.ts +10 -8
- package/src/primitives/Hash.ts +381 -146
- package/src/primitives/JacobianPoint.ts +13 -11
- package/src/primitives/K256.ts +3 -3
- package/src/primitives/Point.ts +35 -38
- package/src/primitives/PrivateKey.ts +3 -3
- package/src/primitives/PublicKey.ts +3 -3
- package/src/primitives/Random.ts +11 -14
- package/src/primitives/ReaderUint8Array.ts +7 -7
- package/src/primitives/Schnorr.ts +2 -1
- package/src/primitives/Secp256r1.ts +2 -1
- package/src/primitives/Signature.ts +8 -8
- package/src/primitives/SymmetricKey.ts +145 -1
- package/src/primitives/TransactionSignature.ts +16 -16
- package/src/primitives/__tests/Hash.additional.test.ts +65 -0
- package/src/primitives/__tests/Hash.test.ts +6 -1
- package/src/primitives/utils.ts +37 -47
- package/src/registry/RegistryClient.ts +25 -25
- package/src/remittance/RemittanceManager.ts +17 -18
- package/src/remittance/modules/BasicBRC29.ts +2 -5
- package/src/script/Script.ts +114 -170
- package/src/script/ScriptEvaluationError.ts +2 -2
- package/src/script/Spend.ts +14 -15
- package/src/script/templates/PushDrop.ts +5 -3
- package/src/script/templates/RPuzzle.ts +2 -4
- package/src/storage/StorageDownloader.ts +1 -1
- package/src/totp/totp.ts +1 -1
- package/src/transaction/Beef.ts +241 -203
- package/src/transaction/BeefConstants.ts +16 -0
- package/src/transaction/BeefTx.ts +3 -3
- package/src/transaction/MerklePath.ts +4 -4
- package/src/transaction/Transaction.ts +48 -51
- package/src/transaction/fee-models/SatoshisPerKilobyte.ts +1 -1
- package/src/transaction/http/BinaryFetchClient.ts +8 -8
- package/src/transaction/http/DefaultHttpClient.ts +8 -8
- package/src/wallet/CachedKeyDeriver.ts +8 -6
- package/src/wallet/KeyDeriver.ts +1 -1
- package/src/wallet/Wallet.interfaces.ts +18 -5
- package/src/wallet/WalletClient.ts +9 -9
- package/src/wallet/WalletError.ts +1 -1
- package/src/wallet/__tests/WalletClient.substrate.test.ts +10 -6
- package/src/wallet/substrates/HTTPWalletJSON.ts +22 -21
- package/src/wallet/substrates/ReactNativeWebView.ts +9 -9
- package/src/wallet/substrates/WalletWireProcessor.ts +83 -83
- package/src/wallet/substrates/WalletWireTransceiver.ts +528 -938
- package/src/wallet/substrates/XDM.ts +4 -4
- package/src/wallet/substrates/__tests/HTTPWalletJSON.test.ts +38 -25
- package/src/wallet/substrates/__tests/ReactNativeWebView.test.ts +174 -0
- package/src/wallet/substrates/__tests/window.CWI.test.ts +256 -0
- package/src/wallet/substrates/window.CWI.ts +11 -11
- package/src/wallet/validationHelpers.ts +9 -9
|
@@ -50,6 +50,12 @@ export interface AdmittanceInstructions {
|
|
|
50
50
|
*/
|
|
51
51
|
export type STEAK = Record<string, AdmittanceInstructions>
|
|
52
52
|
|
|
53
|
+
/** The require mode for topic acknowledgment: all topics must be present, or any one suffices. */
|
|
54
|
+
export type RequireMode = 'all' | 'any'
|
|
55
|
+
|
|
56
|
+
/** Specifies which topics must be acknowledged: all, any, or a specific list. */
|
|
57
|
+
export type TopicAcknowledgmentRequirement = RequireMode | string[]
|
|
58
|
+
|
|
53
59
|
/** Configuration options for the SHIP broadcaster. */
|
|
54
60
|
export interface SHIPBroadcasterConfig {
|
|
55
61
|
/**
|
|
@@ -64,11 +70,11 @@ export interface SHIPBroadcasterConfig {
|
|
|
64
70
|
/** The resolver used to locate suitable hosts with SHIP */
|
|
65
71
|
resolver?: LookupResolver
|
|
66
72
|
/** Determines which topics (all, any, or a specific list) must be present within all STEAKs received from every host for the broadcast to be considered a success. By default, all hosts must acknowledge all topics. */
|
|
67
|
-
requireAcknowledgmentFromAllHostsForTopics?:
|
|
73
|
+
requireAcknowledgmentFromAllHostsForTopics?: TopicAcknowledgmentRequirement
|
|
68
74
|
/** Determines which topics (all, any, or a specific list) must be present within STEAK received from at least one host for the broadcast to be considered a success. */
|
|
69
|
-
requireAcknowledgmentFromAnyHostForTopics?:
|
|
75
|
+
requireAcknowledgmentFromAnyHostForTopics?: TopicAcknowledgmentRequirement
|
|
70
76
|
/** Determines a mapping whose keys are specific hosts and whose values are the topics (all, any, or a specific list) that must be present within the STEAK received by the given hosts, in order for the broadcast to be considered a success. */
|
|
71
|
-
requireAcknowledgmentFromSpecificHostsForTopics?: Record<string,
|
|
77
|
+
requireAcknowledgmentFromSpecificHostsForTopics?: Record<string, TopicAcknowledgmentRequirement>
|
|
72
78
|
}
|
|
73
79
|
|
|
74
80
|
/** Facilitates transaction broadcasts that return STEAK. */
|
|
@@ -128,9 +134,9 @@ export default class TopicBroadcaster implements Broadcaster {
|
|
|
128
134
|
private readonly topics: string[]
|
|
129
135
|
private readonly facilitator: OverlayBroadcastFacilitator
|
|
130
136
|
private readonly resolver: LookupResolver
|
|
131
|
-
private readonly requireAcknowledgmentFromAllHostsForTopics:
|
|
132
|
-
private readonly requireAcknowledgmentFromAnyHostForTopics:
|
|
133
|
-
private readonly requireAcknowledgmentFromSpecificHostsForTopics: Record<string,
|
|
137
|
+
private readonly requireAcknowledgmentFromAllHostsForTopics: TopicAcknowledgmentRequirement
|
|
138
|
+
private readonly requireAcknowledgmentFromAnyHostForTopics: TopicAcknowledgmentRequirement
|
|
139
|
+
private readonly requireAcknowledgmentFromSpecificHostsForTopics: Record<string, TopicAcknowledgmentRequirement>
|
|
134
140
|
private readonly networkPreset: 'mainnet' | 'testnet' | 'local'
|
|
135
141
|
|
|
136
142
|
// Cache for findInterestedHosts to avoid repeated SHIP tracker lookups
|
|
@@ -233,7 +239,7 @@ export default class TopicBroadcaster implements Broadcaster {
|
|
|
233
239
|
for (const [topic, instructions] of Object.entries(steak)) {
|
|
234
240
|
const outputsToAdmit = instructions.outputsToAdmit
|
|
235
241
|
const coinsToRetain = instructions.coinsToRetain
|
|
236
|
-
const coinsRemoved = instructions.coinsRemoved
|
|
242
|
+
const coinsRemoved = instructions.coinsRemoved
|
|
237
243
|
|
|
238
244
|
if (
|
|
239
245
|
outputsToAdmit?.length > 0 ||
|
|
@@ -248,162 +254,99 @@ export default class TopicBroadcaster implements Broadcaster {
|
|
|
248
254
|
}
|
|
249
255
|
|
|
250
256
|
// Now, perform the checks
|
|
257
|
+
const allHostsError = this.checkAllHostsRequirement(hostAcknowledgments)
|
|
258
|
+
if (allHostsError != null) return allHostsError
|
|
251
259
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
let requireAllHosts: 'all' | 'any'
|
|
255
|
-
|
|
256
|
-
if (this.requireAcknowledgmentFromAllHostsForTopics === 'all') {
|
|
257
|
-
requiredTopicsAllHosts = this.topics
|
|
258
|
-
requireAllHosts = 'all'
|
|
259
|
-
} else if (this.requireAcknowledgmentFromAllHostsForTopics === 'any') {
|
|
260
|
-
requiredTopicsAllHosts = this.topics
|
|
261
|
-
requireAllHosts = 'any'
|
|
262
|
-
} else if (Array.isArray(this.requireAcknowledgmentFromAllHostsForTopics)) {
|
|
263
|
-
requiredTopicsAllHosts = this.requireAcknowledgmentFromAllHostsForTopics
|
|
264
|
-
requireAllHosts = 'all'
|
|
265
|
-
} else {
|
|
266
|
-
// Default to 'all' and 'all'
|
|
267
|
-
requiredTopicsAllHosts = this.topics
|
|
268
|
-
requireAllHosts = 'all'
|
|
269
|
-
}
|
|
260
|
+
const anyHostError = this.checkAnyHostRequirement(hostAcknowledgments)
|
|
261
|
+
if (anyHostError != null) return anyHostError
|
|
270
262
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
status: 'error',
|
|
280
|
-
code: 'ERR_REQUIRE_ACK_FROM_ALL_HOSTS_FAILED',
|
|
281
|
-
description: 'Not all hosts acknowledged the required topics.'
|
|
282
|
-
}
|
|
283
|
-
}
|
|
263
|
+
const specificHostsError = this.checkSpecificHostsRequirement(hostAcknowledgments)
|
|
264
|
+
if (specificHostsError != null) return specificHostsError
|
|
265
|
+
|
|
266
|
+
// If all checks pass, return success
|
|
267
|
+
return {
|
|
268
|
+
status: 'success',
|
|
269
|
+
txid: tx.id('hex'),
|
|
270
|
+
message: `Sent to ${successfulHosts.length} Overlay Services ${successfulHosts.length === 1 ? 'host' : 'hosts'}.`
|
|
284
271
|
}
|
|
272
|
+
}
|
|
285
273
|
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
if (
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
// No requirement
|
|
301
|
-
requiredTopicsAnyHost = []
|
|
302
|
-
requireAnyHost = 'all'
|
|
274
|
+
/** Resolves the (requiredTopics, require) pair for requireAcknowledgmentFromAllHostsForTopics. */
|
|
275
|
+
private resolveAllHostsRequirement (): { requiredTopics: string[], require: RequireMode } {
|
|
276
|
+
const r = this.requireAcknowledgmentFromAllHostsForTopics
|
|
277
|
+
if (r === 'any') return { requiredTopics: this.topics, require: 'any' }
|
|
278
|
+
if (Array.isArray(r)) return { requiredTopics: r, require: 'all' }
|
|
279
|
+
// Default 'all' or unknown: all topics, all requirement
|
|
280
|
+
return { requiredTopics: this.topics, require: 'all' }
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
private checkAllHostsRequirement (hostAcknowledgments: Record<string, Set<string>>): BroadcastFailure | null {
|
|
284
|
+
const { requiredTopics, require } = this.resolveAllHostsRequirement()
|
|
285
|
+
if (requiredTopics.length === 0) return null
|
|
286
|
+
if (!this.checkAcknowledgmentFromAllHosts(hostAcknowledgments, requiredTopics, require)) {
|
|
287
|
+
return { status: 'error', code: 'ERR_REQUIRE_ACK_FROM_ALL_HOSTS_FAILED', description: 'Not all hosts acknowledged the required topics.' }
|
|
303
288
|
}
|
|
289
|
+
return null
|
|
290
|
+
}
|
|
304
291
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
292
|
+
/** Resolves the (requiredTopics, require) pair for requireAcknowledgmentFromAnyHostForTopics. */
|
|
293
|
+
private resolveAnyHostRequirement (): { requiredTopics: string[], require: RequireMode } {
|
|
294
|
+
const r = this.requireAcknowledgmentFromAnyHostForTopics
|
|
295
|
+
if (r === 'all') return { requiredTopics: this.topics, require: 'all' }
|
|
296
|
+
if (r === 'any') return { requiredTopics: this.topics, require: 'any' }
|
|
297
|
+
if (Array.isArray(r)) return { requiredTopics: r, require: 'all' }
|
|
298
|
+
return { requiredTopics: [], require: 'all' }
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
private checkAnyHostRequirement (hostAcknowledgments: Record<string, Set<string>>): BroadcastFailure | null {
|
|
302
|
+
const { requiredTopics, require } = this.resolveAnyHostRequirement()
|
|
303
|
+
if (requiredTopics.length === 0) return null
|
|
304
|
+
if (!this.checkAcknowledgmentFromAnyHost(hostAcknowledgments, requiredTopics, require)) {
|
|
305
|
+
return { status: 'error', code: 'ERR_REQUIRE_ACK_FROM_ANY_HOST_FAILED', description: 'No host acknowledged the required topics.' }
|
|
318
306
|
}
|
|
307
|
+
return null
|
|
308
|
+
}
|
|
319
309
|
|
|
320
|
-
|
|
321
|
-
if (
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
) {
|
|
325
|
-
const specificHostsAcknowledged =
|
|
326
|
-
this.checkAcknowledgmentFromSpecificHosts(
|
|
327
|
-
hostAcknowledgments,
|
|
328
|
-
this.requireAcknowledgmentFromSpecificHostsForTopics
|
|
329
|
-
)
|
|
330
|
-
if (!specificHostsAcknowledged) {
|
|
331
|
-
return {
|
|
332
|
-
status: 'error',
|
|
333
|
-
code: 'ERR_REQUIRE_ACK_FROM_SPECIFIC_HOSTS_FAILED',
|
|
334
|
-
description:
|
|
335
|
-
'Specific hosts did not acknowledge the required topics.'
|
|
336
|
-
}
|
|
337
|
-
}
|
|
310
|
+
private checkSpecificHostsRequirement (hostAcknowledgments: Record<string, Set<string>>): BroadcastFailure | null {
|
|
311
|
+
if (Object.keys(this.requireAcknowledgmentFromSpecificHostsForTopics).length === 0) return null
|
|
312
|
+
if (!this.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, this.requireAcknowledgmentFromSpecificHostsForTopics)) {
|
|
313
|
+
return { status: 'error', code: 'ERR_REQUIRE_ACK_FROM_SPECIFIC_HOSTS_FAILED', description: 'Specific hosts did not acknowledge the required topics.' }
|
|
338
314
|
}
|
|
315
|
+
return null
|
|
316
|
+
}
|
|
339
317
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
318
|
+
/**
|
|
319
|
+
* Returns true if `acknowledgedTopics` satisfies the given requirement against `requiredTopics`.
|
|
320
|
+
*/
|
|
321
|
+
private topicsMatchRequirement (
|
|
322
|
+
acknowledgedTopics: Set<string>,
|
|
323
|
+
requiredTopics: string[],
|
|
324
|
+
require: RequireMode
|
|
325
|
+
): boolean {
|
|
326
|
+
if (require === 'all') {
|
|
327
|
+
return requiredTopics.every(t => acknowledgedTopics.has(t))
|
|
345
328
|
}
|
|
329
|
+
return requiredTopics.some(t => acknowledgedTopics.has(t))
|
|
346
330
|
}
|
|
347
331
|
|
|
348
332
|
private checkAcknowledgmentFromAllHosts (
|
|
349
333
|
hostAcknowledgments: Record<string, Set<string>>,
|
|
350
334
|
requiredTopics: string[],
|
|
351
|
-
require:
|
|
335
|
+
require: RequireMode
|
|
352
336
|
): boolean {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
if (!acknowledgedTopics.has(topic)) {
|
|
357
|
-
return false
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
} else if (require === 'any') {
|
|
361
|
-
let anyAcknowledged = false
|
|
362
|
-
for (const topic of requiredTopics) {
|
|
363
|
-
if (acknowledgedTopics.has(topic)) {
|
|
364
|
-
anyAcknowledged = true
|
|
365
|
-
break
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
if (!anyAcknowledged) {
|
|
369
|
-
return false
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
return true
|
|
337
|
+
return Object.values(hostAcknowledgments).every(
|
|
338
|
+
acknowledged => this.topicsMatchRequirement(acknowledged, requiredTopics, require)
|
|
339
|
+
)
|
|
374
340
|
}
|
|
375
341
|
|
|
376
342
|
private checkAcknowledgmentFromAnyHost (
|
|
377
343
|
hostAcknowledgments: Record<string, Set<string>>,
|
|
378
344
|
requiredTopics: string[],
|
|
379
|
-
require:
|
|
345
|
+
require: RequireMode
|
|
380
346
|
): boolean {
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
let acknowledgesAllRequiredTopics = true
|
|
385
|
-
for (const topic of requiredTopics) {
|
|
386
|
-
if (!acknowledgedTopics.has(topic)) {
|
|
387
|
-
acknowledgesAllRequiredTopics = false
|
|
388
|
-
break
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
if (acknowledgesAllRequiredTopics) {
|
|
392
|
-
return true
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
return false
|
|
396
|
-
} else {
|
|
397
|
-
// At least one required topic must be acknowledged by at least one host
|
|
398
|
-
for (const acknowledgedTopics of Object.values(hostAcknowledgments)) {
|
|
399
|
-
for (const topic of requiredTopics) {
|
|
400
|
-
if (acknowledgedTopics.has(topic)) {
|
|
401
|
-
return true
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
return false
|
|
406
|
-
}
|
|
347
|
+
return Object.values(hostAcknowledgments).some(
|
|
348
|
+
acknowledged => this.topicsMatchRequirement(acknowledged, requiredTopics, require)
|
|
349
|
+
)
|
|
407
350
|
}
|
|
408
351
|
|
|
409
352
|
private checkAcknowledgmentFromSpecificHosts (
|
|
@@ -417,11 +360,8 @@ export default class TopicBroadcaster implements Broadcaster {
|
|
|
417
360
|
return false
|
|
418
361
|
}
|
|
419
362
|
let requiredTopics: string[]
|
|
420
|
-
let require:
|
|
421
|
-
if (
|
|
422
|
-
requiredTopicsOrAllAny === 'all' ||
|
|
423
|
-
requiredTopicsOrAllAny === 'any'
|
|
424
|
-
) {
|
|
363
|
+
let require: RequireMode
|
|
364
|
+
if (requiredTopicsOrAllAny === 'all' || requiredTopicsOrAllAny === 'any') {
|
|
425
365
|
require = requiredTopicsOrAllAny
|
|
426
366
|
requiredTopics = this.topics
|
|
427
367
|
} else if (Array.isArray(requiredTopicsOrAllAny)) {
|
|
@@ -431,23 +371,8 @@ export default class TopicBroadcaster implements Broadcaster {
|
|
|
431
371
|
// Invalid configuration
|
|
432
372
|
continue
|
|
433
373
|
}
|
|
434
|
-
if (
|
|
435
|
-
|
|
436
|
-
if (!acknowledgedTopics.has(topic)) {
|
|
437
|
-
return false
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
} else if (require === 'any') {
|
|
441
|
-
let anyAcknowledged = false
|
|
442
|
-
for (const topic of requiredTopics) {
|
|
443
|
-
if (acknowledgedTopics.has(topic)) {
|
|
444
|
-
anyAcknowledged = true
|
|
445
|
-
break
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
if (!anyAcknowledged) {
|
|
449
|
-
return false
|
|
450
|
-
}
|
|
374
|
+
if (!this.topicsMatchRequirement(acknowledgedTopics, requiredTopics, require)) {
|
|
375
|
+
return false
|
|
451
376
|
}
|
|
452
377
|
}
|
|
453
378
|
return true
|
|
@@ -462,8 +387,8 @@ export default class TopicBroadcaster implements Broadcaster {
|
|
|
462
387
|
// Handle the local network preset
|
|
463
388
|
if (this.networkPreset === 'local') {
|
|
464
389
|
const resultSet = new Set<string>()
|
|
465
|
-
for (
|
|
466
|
-
resultSet.add(
|
|
390
|
+
for (const topic of this.topics) {
|
|
391
|
+
resultSet.add(topic)
|
|
467
392
|
}
|
|
468
393
|
return { 'http://localhost:8080': resultSet }
|
|
469
394
|
}
|
|
@@ -519,11 +444,10 @@ export default class TopicBroadcaster implements Broadcaster {
|
|
|
519
444
|
) {
|
|
520
445
|
continue
|
|
521
446
|
}
|
|
522
|
-
|
|
523
|
-
results[parsed.domain] = new Set()
|
|
524
|
-
}
|
|
447
|
+
results[parsed.domain] ??= new Set()
|
|
525
448
|
results[parsed.domain].add(parsed.topicOrService)
|
|
526
|
-
} catch (
|
|
449
|
+
} catch (_notShipOutput) {
|
|
450
|
+
// Output could not be decoded as an overlay admin token — not a SHIP advertisement; skip
|
|
527
451
|
continue
|
|
528
452
|
}
|
|
529
453
|
}
|
package/src/primitives/AESGCM.ts
CHANGED
|
@@ -54,7 +54,7 @@ const Rcon = [
|
|
|
54
54
|
const mul2 = new Uint8Array(256)
|
|
55
55
|
const mul3 = new Uint8Array(256)
|
|
56
56
|
for (let i = 0; i < 256; i++) {
|
|
57
|
-
const m2 = ((i << 1) ^ ((i & 0x80)
|
|
57
|
+
const m2 = ((i << 1) ^ ((i & 0x80) === 0 ? 0 : 0x1b)) & 0xff
|
|
58
58
|
mul2[i] = m2
|
|
59
59
|
mul3[i] = m2 ^ i
|
|
60
60
|
}
|
|
@@ -217,7 +217,7 @@ export const checkBit = function (
|
|
|
217
217
|
byteIndex: number,
|
|
218
218
|
bitIndex: number
|
|
219
219
|
): 1 | 0 {
|
|
220
|
-
return (byteArray[byteIndex] & (0x01 << bitIndex))
|
|
220
|
+
return (byteArray[byteIndex] & (0x01 << bitIndex)) === 0 ? 0 : 1
|
|
221
221
|
}
|
|
222
222
|
|
|
223
223
|
export const getBytes = function (numericValue: number): number[] {
|