@bigmi/core 0.1.1 → 0.2.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/cjs/actions/getBalance.d.ts +6 -3
- package/dist/cjs/actions/getBalance.js.map +1 -1
- package/dist/cjs/actions/getBlock.d.ts +4 -1
- package/dist/cjs/actions/getBlock.js +3 -3
- package/dist/cjs/actions/getBlock.js.map +1 -1
- package/dist/cjs/actions/getBlockCount.d.ts +4 -1
- package/dist/cjs/actions/getBlockCount.js.map +1 -1
- package/dist/cjs/actions/getBlockStats.d.ts +4 -1
- package/dist/cjs/actions/getBlockStats.js +3 -3
- package/dist/cjs/actions/getBlockStats.js.map +1 -1
- package/dist/cjs/actions/getUTXOTransaction.d.ts +4 -1
- package/dist/cjs/actions/getUTXOTransaction.js +2 -2
- package/dist/cjs/actions/getUTXOTransaction.js.map +1 -1
- package/dist/cjs/actions/sendUTXOTransaction.d.ts +4 -1
- package/dist/cjs/actions/sendUTXOTransaction.js.map +1 -1
- package/dist/cjs/actions/signPsbt.d.ts +5 -2
- package/dist/cjs/actions/signPsbt.js.map +1 -1
- package/dist/cjs/actions/waitForTransaction.d.ts +3 -1
- package/dist/cjs/actions/waitForTransaction.js +16 -14
- package/dist/cjs/actions/waitForTransaction.js.map +1 -1
- package/dist/cjs/actions/watchBlockNumber.d.ts +3 -1
- package/dist/cjs/actions/watchBlockNumber.js +4 -4
- package/dist/cjs/actions/watchBlockNumber.js.map +1 -1
- package/dist/cjs/chains/bitcoin.d.ts +5 -17
- package/dist/cjs/chains/bitcoin.js +2 -2
- package/dist/cjs/chains/bitcoin.js.map +1 -1
- package/dist/cjs/chains/defineChain.d.ts +3 -0
- package/dist/cjs/chains/defineChain.js +12 -0
- package/dist/cjs/chains/defineChain.js.map +1 -0
- package/dist/cjs/clients/decorators/public.d.ts +18 -0
- package/dist/cjs/clients/decorators/public.js +18 -0
- package/dist/cjs/clients/decorators/public.js.map +1 -0
- package/dist/cjs/clients/decorators/wallet.d.ts +11 -0
- package/dist/cjs/clients/decorators/wallet.js +12 -0
- package/dist/cjs/clients/decorators/wallet.js.map +1 -0
- package/dist/cjs/errors/address.d.ts +9 -0
- package/dist/cjs/errors/address.js +17 -0
- package/dist/cjs/errors/address.js.map +1 -0
- package/dist/cjs/errors/base.d.ts +27 -0
- package/dist/cjs/errors/base.js +55 -0
- package/dist/cjs/errors/base.js.map +1 -0
- package/dist/cjs/errors/block.d.ts +11 -0
- package/dist/cjs/errors/block.js +18 -0
- package/dist/cjs/errors/block.js.map +1 -0
- package/dist/cjs/errors/config.d.ts +61 -0
- package/dist/cjs/errors/config.js +65 -0
- package/dist/cjs/errors/config.js.map +1 -0
- package/dist/cjs/errors/provider.d.ts +4 -0
- package/dist/cjs/errors/provider.js +15 -0
- package/dist/cjs/errors/provider.js.map +1 -0
- package/dist/cjs/errors/request.d.ts +80 -0
- package/dist/cjs/errors/request.js +72 -0
- package/dist/cjs/errors/request.js.map +1 -0
- package/dist/cjs/errors/rpc.d.ts +23 -0
- package/dist/cjs/errors/rpc.js +49 -0
- package/dist/cjs/errors/rpc.js.map +1 -0
- package/dist/cjs/errors/transaction.d.ts +31 -0
- package/dist/cjs/errors/transaction.js +40 -0
- package/dist/cjs/errors/transaction.js.map +1 -0
- package/dist/cjs/errors/transport.d.ts +7 -0
- package/dist/cjs/errors/transport.js +13 -0
- package/dist/cjs/errors/transport.js.map +1 -0
- package/dist/cjs/errors/utils.d.ts +6 -0
- package/dist/cjs/errors/utils.js +8 -0
- package/dist/cjs/errors/utils.js.map +1 -0
- package/dist/cjs/factories/createClient.d.ts +50 -0
- package/dist/cjs/factories/createClient.js +45 -0
- package/dist/cjs/factories/createClient.js.map +1 -0
- package/dist/cjs/factories/createTransport.d.ts +31 -0
- package/dist/cjs/factories/createTransport.js +23 -0
- package/dist/cjs/factories/createTransport.js.map +1 -0
- package/dist/cjs/index.d.ts +37 -4
- package/dist/cjs/index.js +63 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/transports/custom.d.ts +16 -0
- package/dist/cjs/transports/custom.js +17 -0
- package/dist/cjs/transports/custom.js.map +1 -0
- package/dist/cjs/transports/fallback.d.ts +56 -0
- package/dist/cjs/transports/fallback.js +165 -0
- package/dist/cjs/transports/fallback.js.map +1 -0
- package/dist/cjs/transports/getHttpRpcClient.d.ts +11 -1
- package/dist/cjs/transports/getHttpRpcClient.js +12 -10
- package/dist/cjs/transports/getHttpRpcClient.js.map +1 -1
- package/dist/cjs/transports/http.d.ts +28 -0
- package/dist/cjs/transports/http.js +72 -0
- package/dist/cjs/transports/http.js.map +1 -0
- package/dist/cjs/transports/types.d.ts +20 -5
- package/dist/cjs/transports/utxo.d.ts +1 -1
- package/dist/cjs/transports/utxo.js +6 -4
- package/dist/cjs/transports/utxo.js.map +1 -1
- package/dist/cjs/types/account.d.ts +9 -0
- package/dist/cjs/types/account.js +3 -0
- package/dist/cjs/types/account.js.map +1 -0
- package/dist/cjs/types/actions.d.ts +17 -0
- package/dist/cjs/types/actions.js +3 -0
- package/dist/cjs/types/actions.js.map +1 -0
- package/dist/cjs/types/address.d.ts +1 -0
- package/dist/cjs/types/address.js +3 -0
- package/dist/cjs/types/address.js.map +1 -0
- package/dist/cjs/types/base.d.ts +0 -0
- package/dist/cjs/types/base.js +2 -0
- package/dist/cjs/types/base.js.map +1 -0
- package/dist/cjs/types/block.d.ts +1 -0
- package/dist/cjs/{clients/types.js → types/block.js} +1 -1
- package/dist/cjs/types/block.js.map +1 -0
- package/dist/cjs/types/chain.d.ts +37 -0
- package/dist/cjs/types/chain.js +3 -0
- package/dist/cjs/types/chain.js.map +1 -0
- package/dist/cjs/types/client.d.ts +41 -0
- package/dist/cjs/types/client.js +3 -0
- package/dist/cjs/types/client.js.map +1 -0
- package/dist/cjs/types/hash.d.ts +1 -0
- package/dist/cjs/types/hash.js +3 -0
- package/dist/cjs/types/hash.js.map +1 -0
- package/dist/cjs/types/request.d.ts +43 -0
- package/dist/cjs/types/request.js +3 -0
- package/dist/cjs/types/request.js.map +1 -0
- package/dist/cjs/types/rpc.d.ts +34 -0
- package/dist/cjs/types/rpc.js +3 -0
- package/dist/cjs/types/rpc.js.map +1 -0
- package/dist/cjs/types/storage.d.ts +22 -0
- package/dist/cjs/types/storage.js +3 -0
- package/dist/cjs/types/storage.js.map +1 -0
- package/dist/cjs/types/transport.d.ts +29 -0
- package/dist/cjs/types/transport.js +3 -0
- package/dist/cjs/types/transport.js.map +1 -0
- package/dist/cjs/types/utils.d.ts +36 -0
- package/dist/cjs/types/utils.js +3 -0
- package/dist/cjs/types/utils.js.map +1 -0
- package/dist/cjs/utils/buildRequest.d.ts +5 -0
- package/dist/cjs/utils/buildRequest.js +102 -0
- package/dist/cjs/utils/buildRequest.js.map +1 -0
- package/dist/cjs/utils/converter.d.ts +3 -0
- package/dist/cjs/utils/converter.js +28 -0
- package/dist/cjs/utils/converter.js.map +1 -0
- package/dist/cjs/utils/createBatchScheduler.d.ts +20 -0
- package/dist/cjs/utils/createBatchScheduler.js +54 -0
- package/dist/cjs/utils/createBatchScheduler.js.map +1 -0
- package/dist/cjs/utils/deepEqual.d.ts +1 -0
- package/dist/cjs/utils/deepEqual.js +52 -0
- package/dist/cjs/utils/deepEqual.js.map +1 -0
- package/dist/cjs/utils/getAction.d.ts +10 -0
- package/dist/cjs/utils/getAction.js +15 -0
- package/dist/cjs/utils/getAction.js.map +1 -0
- package/dist/cjs/utils/getUTXOAddress.d.ts +3 -2
- package/dist/cjs/utils/getUTXOAddress.js.map +1 -1
- package/dist/cjs/utils/isUTXOAddress.js.map +1 -1
- package/dist/cjs/utils/lru.d.ts +6 -0
- package/dist/cjs/utils/lru.js +29 -0
- package/dist/cjs/utils/lru.js.map +1 -0
- package/dist/cjs/utils/observe.d.ts +1 -1
- package/dist/cjs/utils/parseAccount.d.ts +5 -0
- package/dist/cjs/utils/parseAccount.js +10 -0
- package/dist/cjs/utils/parseAccount.js.map +1 -0
- package/dist/cjs/utils/stringify.d.ts +3 -0
- package/dist/cjs/utils/stringify.js +9 -0
- package/dist/cjs/utils/stringify.js.map +1 -0
- package/dist/cjs/utils/uid.d.ts +1 -0
- package/dist/cjs/utils/uid.js +17 -0
- package/dist/cjs/utils/uid.js.map +1 -0
- package/dist/cjs/utils/wait.d.ts +1 -0
- package/dist/cjs/utils/wait.js +7 -0
- package/dist/cjs/utils/wait.js.map +1 -0
- package/dist/cjs/utils/withDedupe.d.ts +8 -0
- package/dist/cjs/utils/withDedupe.js +18 -0
- package/dist/cjs/utils/withDedupe.js.map +1 -0
- package/dist/cjs/utils/withResolvers.d.ts +6 -0
- package/dist/cjs/utils/withResolvers.js +13 -0
- package/dist/cjs/utils/withResolvers.js.map +1 -0
- package/dist/cjs/utils/withRetry.d.ts +14 -0
- package/dist/cjs/utils/withRetry.js +30 -0
- package/dist/cjs/utils/withRetry.js.map +1 -0
- package/dist/cjs/utils/withTimeout.d.ts +9 -0
- package/dist/cjs/utils/withTimeout.js +35 -0
- package/dist/cjs/utils/withTimeout.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -0
- package/dist/cjs/version.js +5 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/actions/getBalance.d.ts +6 -3
- package/dist/esm/actions/getBalance.js.map +1 -1
- package/dist/esm/actions/getBlock.d.ts +4 -1
- package/dist/esm/actions/getBlock.js +1 -1
- package/dist/esm/actions/getBlock.js.map +1 -1
- package/dist/esm/actions/getBlockCount.d.ts +4 -1
- package/dist/esm/actions/getBlockCount.js.map +1 -1
- package/dist/esm/actions/getBlockStats.d.ts +4 -1
- package/dist/esm/actions/getBlockStats.js +1 -1
- package/dist/esm/actions/getBlockStats.js.map +1 -1
- package/dist/esm/actions/getUTXOTransaction.d.ts +4 -1
- package/dist/esm/actions/getUTXOTransaction.js +1 -1
- package/dist/esm/actions/getUTXOTransaction.js.map +1 -1
- package/dist/esm/actions/sendUTXOTransaction.d.ts +4 -1
- package/dist/esm/actions/sendUTXOTransaction.js.map +1 -1
- package/dist/esm/actions/signPsbt.d.ts +5 -2
- package/dist/esm/actions/signPsbt.js.map +1 -1
- package/dist/esm/actions/waitForTransaction.d.ts +3 -1
- package/dist/esm/actions/waitForTransaction.js +4 -2
- package/dist/esm/actions/waitForTransaction.js.map +1 -1
- package/dist/esm/actions/watchBlockNumber.d.ts +3 -1
- package/dist/esm/actions/watchBlockNumber.js +2 -2
- package/dist/esm/actions/watchBlockNumber.js.map +1 -1
- package/dist/esm/chains/bitcoin.d.ts +5 -17
- package/dist/esm/chains/bitcoin.js +1 -1
- package/dist/esm/chains/bitcoin.js.map +1 -1
- package/dist/esm/chains/defineChain.d.ts +3 -0
- package/dist/esm/chains/defineChain.js +9 -0
- package/dist/esm/chains/defineChain.js.map +1 -0
- package/dist/esm/clients/decorators/public.d.ts +18 -0
- package/dist/esm/clients/decorators/public.js +15 -0
- package/dist/esm/clients/decorators/public.js.map +1 -0
- package/dist/esm/clients/decorators/wallet.d.ts +14 -0
- package/dist/esm/clients/decorators/wallet.js +9 -0
- package/dist/esm/clients/decorators/wallet.js.map +1 -0
- package/dist/esm/errors/address.d.ts +9 -0
- package/dist/esm/errors/address.js +13 -0
- package/dist/esm/errors/address.js.map +1 -0
- package/dist/esm/errors/base.d.ts +27 -0
- package/dist/esm/errors/base.js +50 -0
- package/dist/esm/errors/base.js.map +1 -0
- package/dist/esm/errors/block.d.ts +11 -0
- package/dist/esm/errors/block.js +14 -0
- package/dist/esm/errors/block.js.map +1 -0
- package/dist/esm/errors/config.d.ts +61 -0
- package/dist/esm/errors/config.js +55 -0
- package/dist/esm/errors/config.js.map +1 -0
- package/dist/esm/errors/provider.d.ts +4 -0
- package/dist/esm/errors/provider.js +11 -0
- package/dist/esm/errors/provider.js.map +1 -0
- package/dist/esm/errors/request.d.ts +80 -0
- package/dist/esm/errors/request.js +64 -0
- package/dist/esm/errors/request.js.map +1 -0
- package/dist/esm/errors/rpc.d.ts +53 -0
- package/dist/esm/errors/rpc.js +73 -0
- package/dist/esm/errors/rpc.js.map +1 -0
- package/dist/esm/errors/transaction.d.ts +31 -0
- package/dist/esm/errors/transaction.js +34 -0
- package/dist/esm/errors/transaction.js.map +1 -0
- package/dist/esm/errors/transport.d.ts +7 -0
- package/dist/esm/errors/transport.js +9 -0
- package/dist/esm/errors/transport.js.map +1 -0
- package/dist/esm/errors/utils.d.ts +6 -0
- package/dist/esm/errors/utils.js +3 -0
- package/dist/esm/errors/utils.js.map +1 -0
- package/dist/esm/factories/createClient.d.ts +85 -0
- package/dist/esm/factories/createClient.js +45 -0
- package/dist/esm/factories/createClient.js.map +1 -0
- package/dist/esm/factories/createTransport.d.ts +42 -0
- package/dist/esm/factories/createTransport.js +23 -0
- package/dist/esm/factories/createTransport.js.map +1 -0
- package/dist/esm/index.d.ts +37 -4
- package/dist/esm/index.js +26 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/transports/custom.d.ts +24 -0
- package/dist/esm/transports/custom.js +17 -0
- package/dist/esm/transports/custom.js.map +1 -0
- package/dist/esm/transports/fallback.d.ts +89 -0
- package/dist/esm/transports/fallback.js +172 -0
- package/dist/esm/transports/fallback.js.map +1 -0
- package/dist/esm/transports/getHttpRpcClient.d.ts +15 -1
- package/dist/esm/transports/getHttpRpcClient.js +4 -2
- package/dist/esm/transports/getHttpRpcClient.js.map +1 -1
- package/dist/esm/transports/http.d.ts +53 -0
- package/dist/esm/transports/http.js +74 -0
- package/dist/esm/transports/http.js.map +1 -0
- package/dist/esm/transports/types.d.ts +36 -5
- package/dist/esm/transports/utxo.d.ts +1 -1
- package/dist/esm/transports/utxo.js +3 -1
- package/dist/esm/transports/utxo.js.map +1 -1
- package/dist/esm/types/account.d.ts +9 -0
- package/dist/esm/types/account.js +2 -0
- package/dist/esm/types/account.js.map +1 -0
- package/dist/esm/types/actions.d.ts +20 -0
- package/dist/esm/types/actions.js +2 -0
- package/dist/esm/types/actions.js.map +1 -0
- package/dist/esm/types/address.d.ts +1 -0
- package/dist/esm/types/address.js +2 -0
- package/dist/esm/types/address.js.map +1 -0
- package/dist/esm/types/base.d.ts +0 -0
- package/dist/esm/types/base.js +2 -0
- package/dist/esm/types/base.js.map +1 -0
- package/dist/esm/types/block.d.ts +19 -0
- package/dist/esm/types/block.js +2 -0
- package/dist/esm/types/block.js.map +1 -0
- package/dist/esm/types/chain.d.ts +48 -0
- package/dist/esm/types/chain.js +2 -0
- package/dist/esm/types/chain.js.map +1 -0
- package/dist/esm/types/client.d.ts +68 -0
- package/dist/esm/types/client.js +2 -0
- package/dist/esm/types/client.js.map +1 -0
- package/dist/esm/types/hash.d.ts +1 -0
- package/dist/esm/types/hash.js +2 -0
- package/dist/esm/types/hash.js.map +1 -0
- package/dist/esm/types/request.d.ts +48 -0
- package/dist/esm/types/request.js +2 -0
- package/dist/esm/types/request.js.map +1 -0
- package/dist/esm/types/rpc.d.ts +34 -0
- package/dist/esm/types/rpc.js +2 -0
- package/dist/esm/types/rpc.js.map +1 -0
- package/dist/esm/types/storage.d.ts +22 -0
- package/dist/esm/types/storage.js +2 -0
- package/dist/esm/types/storage.js.map +1 -0
- package/dist/esm/types/transport.d.ts +37 -0
- package/dist/esm/types/transport.js +2 -0
- package/dist/esm/types/transport.js.map +1 -0
- package/dist/esm/types/utils.d.ts +72 -0
- package/dist/esm/types/utils.js +2 -0
- package/dist/esm/types/utils.js.map +1 -0
- package/dist/esm/utils/buildRequest.d.ts +6 -0
- package/dist/esm/utils/buildRequest.js +111 -0
- package/dist/esm/utils/buildRequest.js.map +1 -0
- package/dist/esm/utils/converter.d.ts +3 -0
- package/dist/esm/utils/converter.js +23 -0
- package/dist/esm/utils/converter.js.map +1 -0
- package/dist/esm/utils/createBatchScheduler.d.ts +21 -0
- package/dist/esm/utils/createBatchScheduler.js +52 -0
- package/dist/esm/utils/createBatchScheduler.js.map +1 -0
- package/dist/esm/utils/deepEqual.d.ts +2 -0
- package/dist/esm/utils/deepEqual.js +52 -0
- package/dist/esm/utils/deepEqual.js.map +1 -0
- package/dist/esm/utils/getAction.d.ts +17 -0
- package/dist/esm/utils/getAction.js +23 -0
- package/dist/esm/utils/getAction.js.map +1 -0
- package/dist/esm/utils/getUTXOAddress.d.ts +3 -2
- package/dist/esm/utils/getUTXOAddress.js.map +1 -1
- package/dist/esm/utils/isUTXOAddress.js.map +1 -1
- package/dist/esm/utils/lru.d.ts +11 -0
- package/dist/esm/utils/lru.js +30 -0
- package/dist/esm/utils/lru.js.map +1 -0
- package/dist/esm/utils/observe.d.ts +1 -1
- package/dist/esm/utils/parseAccount.d.ts +5 -0
- package/dist/esm/utils/parseAccount.js +7 -0
- package/dist/esm/utils/parseAccount.js.map +1 -0
- package/dist/esm/utils/stringify.d.ts +3 -0
- package/dist/esm/utils/stringify.js +5 -0
- package/dist/esm/utils/stringify.js.map +1 -0
- package/dist/esm/utils/uid.d.ts +1 -0
- package/dist/esm/utils/uid.js +14 -0
- package/dist/esm/utils/uid.js.map +1 -0
- package/dist/esm/utils/wait.d.ts +1 -0
- package/dist/esm/utils/wait.js +4 -0
- package/dist/esm/utils/wait.js.map +1 -0
- package/dist/esm/utils/withDedupe.d.ts +10 -0
- package/dist/esm/utils/withDedupe.js +16 -0
- package/dist/esm/utils/withDedupe.js.map +1 -0
- package/dist/esm/utils/withResolvers.d.ts +8 -0
- package/dist/esm/utils/withResolvers.js +11 -0
- package/dist/esm/utils/withResolvers.js.map +1 -0
- package/dist/esm/utils/withRetry.d.ts +14 -0
- package/dist/esm/utils/withRetry.js +27 -0
- package/dist/esm/utils/withRetry.js.map +1 -0
- package/dist/esm/utils/withTimeout.d.ts +9 -0
- package/dist/esm/utils/withTimeout.js +32 -0
- package/dist/esm/utils/withTimeout.js.map +1 -0
- package/dist/esm/version.d.ts +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/types/actions/getBalance.d.ts +6 -3
- package/dist/types/actions/getBalance.d.ts.map +1 -1
- package/dist/types/actions/getBlock.d.ts +4 -1
- package/dist/types/actions/getBlock.d.ts.map +1 -1
- package/dist/types/actions/getBlockCount.d.ts +4 -1
- package/dist/types/actions/getBlockCount.d.ts.map +1 -1
- package/dist/types/actions/getBlockStats.d.ts +4 -1
- package/dist/types/actions/getBlockStats.d.ts.map +1 -1
- package/dist/types/actions/getUTXOTransaction.d.ts +4 -1
- package/dist/types/actions/getUTXOTransaction.d.ts.map +1 -1
- package/dist/types/actions/sendUTXOTransaction.d.ts +4 -1
- package/dist/types/actions/sendUTXOTransaction.d.ts.map +1 -1
- package/dist/types/actions/signPsbt.d.ts +5 -2
- package/dist/types/actions/signPsbt.d.ts.map +1 -1
- package/dist/types/actions/waitForTransaction.d.ts +3 -1
- package/dist/types/actions/waitForTransaction.d.ts.map +1 -1
- package/dist/types/actions/watchBlockNumber.d.ts +3 -1
- package/dist/types/actions/watchBlockNumber.d.ts.map +1 -1
- package/dist/types/chains/bitcoin.d.ts +5 -17
- package/dist/types/chains/bitcoin.d.ts.map +1 -1
- package/dist/types/chains/defineChain.d.ts +4 -0
- package/dist/types/chains/defineChain.d.ts.map +1 -0
- package/dist/types/clients/decorators/public.d.ts +19 -0
- package/dist/types/clients/decorators/public.d.ts.map +1 -0
- package/dist/types/clients/decorators/wallet.d.ts +15 -0
- package/dist/types/clients/decorators/wallet.d.ts.map +1 -0
- package/dist/types/errors/address.d.ts +10 -0
- package/dist/types/errors/address.d.ts.map +1 -0
- package/dist/types/errors/base.d.ts +28 -0
- package/dist/types/errors/base.d.ts.map +1 -0
- package/dist/types/errors/block.d.ts +12 -0
- package/dist/types/errors/block.d.ts.map +1 -0
- package/dist/types/errors/config.d.ts +62 -0
- package/dist/types/errors/config.d.ts.map +1 -0
- package/dist/types/errors/provider.d.ts +5 -0
- package/dist/types/errors/provider.d.ts.map +1 -0
- package/dist/types/errors/request.d.ts +81 -0
- package/dist/types/errors/request.d.ts.map +1 -0
- package/dist/types/errors/rpc.d.ts +54 -0
- package/dist/types/errors/rpc.d.ts.map +1 -0
- package/dist/types/errors/transaction.d.ts +32 -0
- package/dist/types/errors/transaction.d.ts.map +1 -0
- package/dist/types/errors/transport.d.ts +8 -0
- package/dist/types/errors/transport.d.ts.map +1 -0
- package/dist/types/errors/utils.d.ts +7 -0
- package/dist/types/errors/utils.d.ts.map +1 -0
- package/dist/types/factories/createClient.d.ts +86 -0
- package/dist/types/factories/createClient.d.ts.map +1 -0
- package/dist/types/factories/createTransport.d.ts +43 -0
- package/dist/types/factories/createTransport.d.ts.map +1 -0
- package/dist/types/index.d.ts +37 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/transports/custom.d.ts +25 -0
- package/dist/types/transports/custom.d.ts.map +1 -0
- package/dist/types/transports/fallback.d.ts +90 -0
- package/dist/types/transports/fallback.d.ts.map +1 -0
- package/dist/types/transports/getHttpRpcClient.d.ts +15 -1
- package/dist/types/transports/getHttpRpcClient.d.ts.map +1 -1
- package/dist/types/transports/http.d.ts +54 -0
- package/dist/types/transports/http.d.ts.map +1 -0
- package/dist/types/transports/types.d.ts +36 -5
- package/dist/types/transports/types.d.ts.map +1 -1
- package/dist/types/transports/utxo.d.ts +1 -1
- package/dist/types/transports/utxo.d.ts.map +1 -1
- package/dist/types/types/account.d.ts +10 -0
- package/dist/types/types/account.d.ts.map +1 -0
- package/dist/types/types/actions.d.ts +21 -0
- package/dist/types/types/actions.d.ts.map +1 -0
- package/dist/types/types/address.d.ts +2 -0
- package/dist/types/types/address.d.ts.map +1 -0
- package/dist/types/types/base.d.ts +1 -0
- package/dist/types/types/base.d.ts.map +1 -0
- package/dist/types/types/block.d.ts +20 -0
- package/dist/types/types/block.d.ts.map +1 -0
- package/dist/types/types/chain.d.ts +49 -0
- package/dist/types/types/chain.d.ts.map +1 -0
- package/dist/types/types/client.d.ts +69 -0
- package/dist/types/types/client.d.ts.map +1 -0
- package/dist/types/types/hash.d.ts +2 -0
- package/dist/types/types/hash.d.ts.map +1 -0
- package/dist/types/types/request.d.ts +49 -0
- package/dist/types/types/request.d.ts.map +1 -0
- package/dist/types/types/rpc.d.ts +35 -0
- package/dist/types/types/rpc.d.ts.map +1 -0
- package/dist/types/types/storage.d.ts +23 -0
- package/dist/types/types/storage.d.ts.map +1 -0
- package/dist/types/types/transport.d.ts +38 -0
- package/dist/types/types/transport.d.ts.map +1 -0
- package/dist/types/types/utils.d.ts +73 -0
- package/dist/types/types/utils.d.ts.map +1 -0
- package/dist/types/utils/buildRequest.d.ts +7 -0
- package/dist/types/utils/buildRequest.d.ts.map +1 -0
- package/dist/types/utils/converter.d.ts +4 -0
- package/dist/types/utils/converter.d.ts.map +1 -0
- package/dist/types/utils/createBatchScheduler.d.ts +22 -0
- package/dist/types/utils/createBatchScheduler.d.ts.map +1 -0
- package/dist/types/utils/deepEqual.d.ts +3 -0
- package/dist/types/utils/deepEqual.d.ts.map +1 -0
- package/dist/types/utils/getAction.d.ts +18 -0
- package/dist/types/utils/getAction.d.ts.map +1 -0
- package/dist/types/utils/getUTXOAddress.d.ts +3 -2
- package/dist/types/utils/getUTXOAddress.d.ts.map +1 -1
- package/dist/types/utils/isUTXOAddress.d.ts.map +1 -1
- package/dist/types/utils/lru.d.ts +12 -0
- package/dist/types/utils/lru.d.ts.map +1 -0
- package/dist/types/utils/observe.d.ts +1 -1
- package/dist/types/utils/observe.d.ts.map +1 -1
- package/dist/types/utils/parseAccount.d.ts +6 -0
- package/dist/types/utils/parseAccount.d.ts.map +1 -0
- package/dist/types/utils/stringify.d.ts +4 -0
- package/dist/types/utils/stringify.d.ts.map +1 -0
- package/dist/types/utils/uid.d.ts +2 -0
- package/dist/types/utils/uid.d.ts.map +1 -0
- package/dist/types/utils/wait.d.ts +2 -0
- package/dist/types/utils/wait.d.ts.map +1 -0
- package/dist/types/utils/withDedupe.d.ts +11 -0
- package/dist/types/utils/withDedupe.d.ts.map +1 -0
- package/dist/types/utils/withResolvers.d.ts +9 -0
- package/dist/types/utils/withResolvers.d.ts.map +1 -0
- package/dist/types/utils/withRetry.d.ts +15 -0
- package/dist/types/utils/withRetry.d.ts.map +1 -0
- package/dist/types/utils/withTimeout.d.ts +10 -0
- package/dist/types/utils/withTimeout.d.ts.map +1 -0
- package/dist/types/version.d.ts +2 -0
- package/dist/types/version.d.ts.map +1 -0
- package/package.json +4 -3
- package/package.json.tmp +4 -3
- package/src/actions/getBalance.ts +6 -3
- package/src/actions/getBlock.ts +7 -7
- package/src/actions/getBlockCount.ts +4 -1
- package/src/actions/getBlockStats.ts +5 -7
- package/src/actions/getUTXOTransaction.ts +5 -7
- package/src/actions/sendUTXOTransaction.ts +4 -1
- package/src/actions/signPsbt.ts +5 -2
- package/src/actions/waitForTransaction.ts +9 -7
- package/src/actions/watchBlockNumber.ts +5 -2
- package/src/chains/bitcoin.ts +1 -1
- package/src/chains/defineChain.ts +14 -0
- package/src/clients/decorators/public.ts +62 -0
- package/src/clients/decorators/wallet.ts +37 -0
- package/src/errors/address.ts +16 -0
- package/src/errors/base.ts +85 -0
- package/src/errors/block.ts +24 -0
- package/src/errors/config.ts +102 -0
- package/src/errors/provider.ts +11 -0
- package/src/errors/request.ts +134 -0
- package/src/errors/rpc.ts +77 -0
- package/src/errors/transaction.ts +67 -0
- package/src/errors/transport.ts +15 -0
- package/src/errors/utils.ts +6 -0
- package/src/factories/createClient.ts +199 -0
- package/src/factories/createTransport.ts +93 -0
- package/src/index.ts +114 -13
- package/src/transports/custom.ts +56 -0
- package/src/transports/fallback.ts +332 -0
- package/src/transports/getHttpRpcClient.ts +28 -4
- package/src/transports/http.ts +176 -0
- package/src/transports/types.ts +38 -5
- package/src/transports/utxo.ts +6 -9
- package/src/types/account.ts +10 -0
- package/src/types/actions.ts +38 -0
- package/src/types/address.ts +1 -0
- package/src/types/base.ts +0 -0
- package/src/types/block.ts +19 -0
- package/src/types/chain.ts +72 -0
- package/src/types/client.ts +108 -0
- package/src/types/hash.ts +1 -0
- package/src/types/request.ts +87 -0
- package/src/types/rpc.ts +37 -0
- package/src/types/storage.ts +44 -0
- package/src/types/transport.ts +54 -0
- package/src/types/utils.ts +131 -0
- package/src/utils/buildRequest.ts +145 -0
- package/src/utils/converter.ts +25 -0
- package/src/utils/createBatchScheduler.ts +116 -0
- package/src/utils/deepEqual.ts +62 -0
- package/src/utils/getAction.ts +45 -0
- package/src/utils/getUTXOAddress.ts +4 -3
- package/src/utils/isUTXOAddress.ts +2 -1
- package/src/utils/lru.ts +35 -0
- package/src/utils/observe.ts +1 -1
- package/src/utils/parseAccount.ts +14 -0
- package/src/utils/stringify.ts +13 -0
- package/src/utils/uid.ts +14 -0
- package/src/utils/wait.ts +3 -0
- package/src/utils/withDedupe.ts +25 -0
- package/src/utils/withResolvers.ts +19 -0
- package/src/utils/withRetry.ts +60 -0
- package/src/utils/withTimeout.ts +47 -0
- package/src/version.ts +1 -0
- package/tsconfig.json +2 -1
- package/dist/cjs/clients/types.d.ts +0 -27
- package/dist/cjs/clients/types.js.map +0 -1
- package/dist/cjs/decorators/UTXOAPIActions.d.ts +0 -6
- package/dist/cjs/decorators/UTXOAPIActions.js +0 -10
- package/dist/cjs/decorators/UTXOAPIActions.js.map +0 -1
- package/dist/cjs/decorators/UTXOActions.d.ts +0 -10
- package/dist/cjs/decorators/UTXOActions.js +0 -14
- package/dist/cjs/decorators/UTXOActions.js.map +0 -1
- package/dist/esm/clients/types.d.ts +0 -43
- package/dist/esm/clients/types.js +0 -2
- package/dist/esm/clients/types.js.map +0 -1
- package/dist/esm/decorators/UTXOAPIActions.d.ts +0 -6
- package/dist/esm/decorators/UTXOAPIActions.js +0 -7
- package/dist/esm/decorators/UTXOAPIActions.js.map +0 -1
- package/dist/esm/decorators/UTXOActions.d.ts +0 -10
- package/dist/esm/decorators/UTXOActions.js +0 -11
- package/dist/esm/decorators/UTXOActions.js.map +0 -1
- package/dist/types/clients/types.d.ts +0 -44
- package/dist/types/clients/types.d.ts.map +0 -1
- package/dist/types/decorators/UTXOAPIActions.d.ts +0 -7
- package/dist/types/decorators/UTXOAPIActions.d.ts.map +0 -1
- package/dist/types/decorators/UTXOActions.d.ts +0 -11
- package/dist/types/decorators/UTXOActions.d.ts.map +0 -1
- package/src/clients/types.ts +0 -48
- package/src/decorators/UTXOAPIActions.ts +0 -20
- package/src/decorators/UTXOActions.ts +0 -37
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { Address } from '../types/address.js';
|
|
2
|
+
import type { ErrorType } from '../errors/utils.js';
|
|
3
|
+
import type { Transport } from '../factories/createTransport.js';
|
|
4
|
+
import type { Account } from '../types/account.js';
|
|
5
|
+
import type { Chain } from '../types/chain.js';
|
|
6
|
+
import type { BtcRpcRequestFn, RpcSchema } from '../types/request.js';
|
|
7
|
+
import type { BitcoinRpcMethods } from '../types/rpc.js';
|
|
8
|
+
import type { Prettify } from '../types/utils.js';
|
|
9
|
+
export type ClientConfig<transport extends Transport = Transport, chain extends Chain | undefined = Chain | undefined, accountOrAddress extends Account | Address | undefined = Account | Address | undefined, rpcSchema extends RpcSchema | undefined = undefined> = {
|
|
10
|
+
/** The Account to use for the Client. This will be used for Actions that require an account as an argument. */
|
|
11
|
+
account?: accountOrAddress | Account | Address | undefined;
|
|
12
|
+
/** Flags for batch settings. */
|
|
13
|
+
batch?: {
|
|
14
|
+
/** Toggle to enable `eth_call` multicall aggregation. */
|
|
15
|
+
multicall?: boolean | Prettify<MulticallBatchOptions> | undefined;
|
|
16
|
+
} | undefined;
|
|
17
|
+
/**
|
|
18
|
+
* Time (in ms) that cached data will remain in memory.
|
|
19
|
+
* @default 4_000
|
|
20
|
+
*/
|
|
21
|
+
cacheTime?: number | undefined;
|
|
22
|
+
/** Chain for the client. */
|
|
23
|
+
chain?: Chain | undefined | chain;
|
|
24
|
+
/** A key for the client. */
|
|
25
|
+
key?: string | undefined;
|
|
26
|
+
/** A name for the client. */
|
|
27
|
+
name?: string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Frequency (in ms) for polling enabled actions & events.
|
|
30
|
+
* @default 4_000
|
|
31
|
+
*/
|
|
32
|
+
pollingInterval?: number | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Typed JSON-RPC schema for the client.
|
|
35
|
+
*/
|
|
36
|
+
rpcSchema?: rpcSchema | undefined;
|
|
37
|
+
/** The RPC transport */
|
|
38
|
+
transport: transport;
|
|
39
|
+
/** The type of client. */
|
|
40
|
+
type?: string | undefined;
|
|
41
|
+
};
|
|
42
|
+
export type Client<transport extends Transport = Transport, chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined, rpcSchema extends RpcSchema | undefined = undefined, extended extends Extended | undefined = Extended | undefined> = Client_Base<transport, chain, account, rpcSchema> & (extended extends Extended ? extended : unknown) & {
|
|
43
|
+
extend: <const client extends Extended>(fn: (client: Client<transport, chain, account, rpcSchema, extended>) => client) => Client<transport, chain, account, rpcSchema, Prettify<client> & (extended extends Extended ? extended : unknown)>;
|
|
44
|
+
};
|
|
45
|
+
type Client_Base<transport extends Transport = Transport, chain extends Chain | undefined = Chain | undefined, account extends Account | undefined = Account | undefined, rpcSchema extends RpcSchema | undefined = undefined> = {
|
|
46
|
+
/** The Account of the Client. */
|
|
47
|
+
account: account;
|
|
48
|
+
/** Time (in ms) that cached data will remain in memory. */
|
|
49
|
+
cacheTime: number;
|
|
50
|
+
/** Chain for the client. */
|
|
51
|
+
chain: chain;
|
|
52
|
+
/** A key for the client. */
|
|
53
|
+
key: string;
|
|
54
|
+
/** A name for the client. */
|
|
55
|
+
name: string;
|
|
56
|
+
/** Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. */
|
|
57
|
+
pollingInterval: number;
|
|
58
|
+
/** Request function wrapped with friendly error handling */
|
|
59
|
+
request: BtcRpcRequestFn<rpcSchema extends undefined ? BitcoinRpcMethods : rpcSchema>;
|
|
60
|
+
/** The RPC transport */
|
|
61
|
+
transport: ReturnType<transport>['config'] & ReturnType<transport>['value'];
|
|
62
|
+
/** The type of client. */
|
|
63
|
+
type: string;
|
|
64
|
+
/** A unique ID for the client. */
|
|
65
|
+
uid: string;
|
|
66
|
+
};
|
|
67
|
+
type Extended = Prettify<{
|
|
68
|
+
[_ in keyof Client_Base]?: undefined;
|
|
69
|
+
} & {
|
|
70
|
+
[key: string]: unknown;
|
|
71
|
+
}>;
|
|
72
|
+
export type MulticallBatchOptions = {
|
|
73
|
+
/** The maximum size (in bytes) for each calldata chunk. @default 1_024 */
|
|
74
|
+
batchSize?: number | undefined;
|
|
75
|
+
/** The maximum number of milliseconds to wait before sending a batch. @default 0 */
|
|
76
|
+
wait?: number | undefined;
|
|
77
|
+
};
|
|
78
|
+
export type CreateClientErrorType = ErrorType;
|
|
79
|
+
export declare function createClient<transport extends Transport, chain extends Chain | undefined = undefined, accountOrAddress extends Account | Address | undefined = undefined, rpcSchema extends RpcSchema | undefined = undefined>(parameters: ClientConfig<transport, chain, accountOrAddress, rpcSchema>): Prettify<Client<transport, chain, accountOrAddress extends Address ? Prettify<Account> : accountOrAddress, rpcSchema>>;
|
|
80
|
+
/**
|
|
81
|
+
* Defines a typed JSON-RPC schema for the client.
|
|
82
|
+
* Note: This is a runtime noop function.
|
|
83
|
+
*/
|
|
84
|
+
export declare function rpcSchema<rpcSchema extends RpcSchema>(): rpcSchema;
|
|
85
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { parseAccount } from '../utils/parseAccount.js';
|
|
2
|
+
import { uid } from '../utils/uid.js';
|
|
3
|
+
export function createClient(parameters) {
|
|
4
|
+
const { cacheTime = parameters.pollingInterval ?? 4000, key = 'base', name = 'Base Client', pollingInterval = 4000, type = 'base', } = parameters;
|
|
5
|
+
const chain = parameters.chain;
|
|
6
|
+
const account = parameters.account
|
|
7
|
+
? parseAccount(parameters.account)
|
|
8
|
+
: undefined;
|
|
9
|
+
const { config, request, value } = parameters.transport({
|
|
10
|
+
chain,
|
|
11
|
+
pollingInterval,
|
|
12
|
+
});
|
|
13
|
+
const transport = { ...config, ...value };
|
|
14
|
+
const client = {
|
|
15
|
+
account,
|
|
16
|
+
cacheTime,
|
|
17
|
+
chain,
|
|
18
|
+
key,
|
|
19
|
+
name,
|
|
20
|
+
pollingInterval,
|
|
21
|
+
request,
|
|
22
|
+
transport,
|
|
23
|
+
type,
|
|
24
|
+
uid: uid(),
|
|
25
|
+
};
|
|
26
|
+
function extend(base) {
|
|
27
|
+
return (extendFn) => {
|
|
28
|
+
const extended = extendFn(base);
|
|
29
|
+
for (const key in client) {
|
|
30
|
+
delete extended[key];
|
|
31
|
+
}
|
|
32
|
+
const combined = { ...base, ...extended };
|
|
33
|
+
return Object.assign(combined, { extend: extend(combined) });
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return Object.assign(client, { extend: extend(client) });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Defines a typed JSON-RPC schema for the client.
|
|
40
|
+
* Note: This is a runtime noop function.
|
|
41
|
+
*/
|
|
42
|
+
export function rpcSchema() {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=createClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createClient.js","sourceRoot":"","sources":["../../../src/factories/createClient.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAmIrC,MAAM,UAAU,YAAY,CAAC,UAAwB;IACnD,MAAM,EACJ,SAAS,GAAG,UAAU,CAAC,eAAe,IAAI,IAAK,EAE/C,GAAG,GAAG,MAAM,EACZ,IAAI,GAAG,aAAa,EACpB,eAAe,GAAG,IAAK,EACvB,IAAI,GAAG,MAAM,GACd,GAAG,UAAU,CAAA;IAEd,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAA;IAC9B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO;QAChC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;QAClC,CAAC,CAAC,SAAS,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC;QACtD,KAAK;QACL,eAAe;KAChB,CAAC,CAAA;IACF,MAAM,SAAS,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAEzC,MAAM,MAAM,GAAG;QACb,OAAO;QACP,SAAS;QAET,KAAK;QACL,GAAG;QACH,IAAI;QACJ,eAAe;QACf,OAAO;QACP,SAAS;QACT,IAAI;QACJ,GAAG,EAAE,GAAG,EAAE;KACX,CAAA;IAED,SAAS,MAAM,CAAC,IAAmB;QAEjC,OAAO,CAAC,QAAkB,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAa,CAAA;YAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;YACtB,CAAC;YACD,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAA;YACzC,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,QAAe,CAAC,EAAE,CAAC,CAAA;QACrE,CAAC,CAAA;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAQ,EAAE,CAAC,CAAA;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,IAAW,CAAA;AACpB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ErrorType } from '../errors/utils.js';
|
|
2
|
+
import type { Chain } from '../types/chain.js';
|
|
3
|
+
import type { ClientConfig } from '../types/client.js';
|
|
4
|
+
import type { BtcRpcRequestFn } from '../types/request.js';
|
|
5
|
+
import type { OneOf } from '../types/utils.js';
|
|
6
|
+
export type TransportConfig<type extends string = string, rpcRequestFn extends BtcRpcRequestFn = BtcRpcRequestFn> = {
|
|
7
|
+
/** The name of the transport. */
|
|
8
|
+
name: string;
|
|
9
|
+
/** The key of the transport. */
|
|
10
|
+
key: string;
|
|
11
|
+
/** Methods to include or exclude from executing RPC requests. */
|
|
12
|
+
methods?: OneOf<{
|
|
13
|
+
include?: string[] | undefined;
|
|
14
|
+
} | {
|
|
15
|
+
exclude?: string[] | undefined;
|
|
16
|
+
}> | undefined;
|
|
17
|
+
/** The JSON-RPC request function that matches the EIP-1193 request spec. */
|
|
18
|
+
request: rpcRequestFn;
|
|
19
|
+
/** The base delay (in ms) between retries. */
|
|
20
|
+
retryDelay?: number | undefined;
|
|
21
|
+
/** The max number of times to retry. */
|
|
22
|
+
retryCount?: number | undefined;
|
|
23
|
+
/** The timeout (in ms) for requests. */
|
|
24
|
+
timeout?: number | undefined;
|
|
25
|
+
/** The type of the transport. */
|
|
26
|
+
type: type;
|
|
27
|
+
};
|
|
28
|
+
export type Transport<type extends string = string, rpcAttributes = Record<string, any>, rpcRequestFn extends BtcRpcRequestFn = BtcRpcRequestFn> = <chain extends Chain | undefined = Chain>({ chain, }: {
|
|
29
|
+
chain?: chain | undefined;
|
|
30
|
+
pollingInterval?: ClientConfig['pollingInterval'] | undefined;
|
|
31
|
+
retryCount?: TransportConfig['retryCount'] | undefined;
|
|
32
|
+
timeout?: TransportConfig['timeout'] | undefined;
|
|
33
|
+
}) => {
|
|
34
|
+
config: TransportConfig<type>;
|
|
35
|
+
request: rpcRequestFn;
|
|
36
|
+
value?: rpcAttributes | undefined;
|
|
37
|
+
};
|
|
38
|
+
export type CreateTransportErrorType = ErrorType;
|
|
39
|
+
/**
|
|
40
|
+
* @description Creates an transport intended to be used with a client.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createTransport<type extends string, rpcAttributes extends Record<string, any>>({ key, methods, name, request, retryCount, retryDelay, timeout, type, }: TransportConfig<type>, value?: rpcAttributes | undefined): ReturnType<Transport<type, rpcAttributes>>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { buildRequest } from '../utils/buildRequest.js';
|
|
2
|
+
import { uid as uid_ } from '../utils/uid.js';
|
|
3
|
+
/**
|
|
4
|
+
* @description Creates an transport intended to be used with a client.
|
|
5
|
+
*/
|
|
6
|
+
export function createTransport({ key, methods, name, request, retryCount = 3, retryDelay = 150, timeout, type, }, value) {
|
|
7
|
+
const uid = uid_();
|
|
8
|
+
return {
|
|
9
|
+
config: {
|
|
10
|
+
key,
|
|
11
|
+
methods,
|
|
12
|
+
name,
|
|
13
|
+
request,
|
|
14
|
+
retryCount,
|
|
15
|
+
retryDelay,
|
|
16
|
+
timeout,
|
|
17
|
+
type,
|
|
18
|
+
},
|
|
19
|
+
request: buildRequest(request, { methods, retryCount, retryDelay, uid }),
|
|
20
|
+
value,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=createTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTransport.js","sourceRoot":"","sources":["../../../src/factories/createTransport.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAoD7C;;GAEG;AACH,MAAM,UAAU,eAAe,CAI7B,EACE,GAAG,EACH,OAAO,EACP,IAAI,EACJ,OAAO,EACP,UAAU,GAAG,CAAC,EACd,UAAU,GAAG,GAAG,EAChB,OAAO,EACP,IAAI,GACkB,EACxB,KAAiC;IAEjC,MAAM,GAAG,GAAG,IAAI,EAAE,CAAA;IAClB,OAAO;QACL,MAAM,EAAE;YACN,GAAG;YACH,OAAO;YACP,IAAI;YACJ,OAAO;YACP,UAAU;YACV,UAAU;YACV,OAAO;YACP,IAAI;SACL;QACD,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;QACxE,KAAK;KACN,CAAA;AACH,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -14,9 +14,8 @@ export { waitForTransaction } from './actions/waitForTransaction.js';
|
|
|
14
14
|
export type { ReplacementReason, ReplacementReturnType, WaitForTransactionReceiptParameters, WaitForTransactionReceiptReturnType, WithRetryParameters, } from './actions/waitForTransaction.js';
|
|
15
15
|
export { watchBlockNumber } from './actions/watchBlockNumber.js';
|
|
16
16
|
export type { OnBlockNumberFn, OnBlockNumberParameter, WatchBlockNumberParameters, WatchBlockNumberReturnType, } from './actions/watchBlockNumber.js';
|
|
17
|
-
export
|
|
18
|
-
export {
|
|
19
|
-
export { UTXOAPIActions } from './decorators/UTXOAPIActions.js';
|
|
17
|
+
export { type PublicActions, publicActions, } from './clients/decorators/public.js';
|
|
18
|
+
export { type WalletActions, walletActions, } from './clients/decorators/wallet.js';
|
|
20
19
|
export { ankrMethods } from './transports/ankr.js';
|
|
21
20
|
export { blockchairMethods } from './transports/blockchair.js';
|
|
22
21
|
export { blockcypherMethods } from './transports/blockcypher.js';
|
|
@@ -24,10 +23,21 @@ export { getHttpRpcClient } from './transports/getHttpRpcClient.js';
|
|
|
24
23
|
export type { HttpRequestParameters, HttpRpcClient, RpcRequest, } from './transports/getHttpRpcClient.js';
|
|
25
24
|
export { getRpcProviderMethods } from './transports/getRpcProviderMethods.js';
|
|
26
25
|
export { mempoolMethods } from './transports/mempool.js';
|
|
27
|
-
export type { ErrorResult, RpcMethodHandler, RpcMethods, RpcResponse, SuccessResult,
|
|
26
|
+
export type { ErrorResult, RpcMethodHandler, RpcMethods, RpcResponse, SuccessResult, UTXOSchema, UTXOWalletSchema, SignPsbtParameters, SignPsbtReturnType, } from './transports/types.js';
|
|
28
27
|
export { utxo } from './transports/utxo.js';
|
|
28
|
+
export { custom } from './transports/custom.js';
|
|
29
|
+
export type { Account } from './types/account.js';
|
|
30
|
+
export type { Address } from './types/address.js';
|
|
31
|
+
export type { BlockTag } from './types/block.js';
|
|
29
32
|
export type { BlockStats, BlockStatsKeys } from './types/blockStats.js';
|
|
33
|
+
export type { Chain, ChainConfig, ChainFormatter, ChainFormatters, } from './types/chain.js';
|
|
34
|
+
export type { Client, ClientConfig, CreateClientErrorType, } from './types/client.js';
|
|
35
|
+
export type { Hash } from './types/hash.js';
|
|
36
|
+
export type { BtcRpcRequestFn, BtcRpcRequestOptions, RpcParameters, RpcSchema, RpcSchemaOverride, } from './types/request.js';
|
|
37
|
+
export type { BitcoinRpcMethods, WalletRpcSchema, } from './types/rpc.js';
|
|
30
38
|
export type { UTXOTransaction } from './types/transaction.js';
|
|
39
|
+
export type { Assign, Compute, ExactPartial, IsNarrowable, IsNever, IsUnknown, LooseOmit, UnionStrictOmit, } from './types/utils.js';
|
|
40
|
+
export type { BtcAccount } from './types/account.js';
|
|
31
41
|
export { cancelTransaction } from './utils/cancelTransaction.js';
|
|
32
42
|
export { UTXOAddressType, UTXONetwork, getUTXOAddress, } from './utils/getUTXOAddress.js';
|
|
33
43
|
export type { UTXOAddress } from './utils/getUTXOAddress.js';
|
|
@@ -35,4 +45,27 @@ export { isUTXOAddress } from './utils/isUTXOAddress.js';
|
|
|
35
45
|
export { modifyFee } from './utils/modifyFee.js';
|
|
36
46
|
export { cleanupCache, listenersCache, observe } from './utils/observe.js';
|
|
37
47
|
export { poll } from './utils/poll.js';
|
|
48
|
+
export { base64ToHex, hexToBase64 } from './utils/converter.js';
|
|
49
|
+
export { withRetry } from './utils/withRetry.js';
|
|
50
|
+
export { parseAccount } from './utils/parseAccount.js';
|
|
51
|
+
export { deepEqual } from './utils/deepEqual.js';
|
|
52
|
+
export { withTimeout } from './utils/withTimeout.js';
|
|
53
|
+
export { createClient, rpcSchema } from './factories/createClient.js';
|
|
38
54
|
export { bitcoin } from './chains/bitcoin.js';
|
|
55
|
+
export { defineChain } from './chains/defineChain.js';
|
|
56
|
+
export { InvalidAddressError, type InvalidAddressErrorType, } from './errors/address.js';
|
|
57
|
+
export { BaseError, type BaseErrorType } from './errors/base.js';
|
|
58
|
+
export { BlockNotFoundError } from './errors/block.js';
|
|
59
|
+
export { ChainNotConfiguredError, ConnectorAccountNotFoundError, ConnectorAlreadyConnectedError, ConnectorChainMismatchError, ConnectorNotConnectedError, ConnectorNotFoundError, } from './errors/config.js';
|
|
60
|
+
export { ProviderNotFoundError } from './errors/provider.js';
|
|
61
|
+
export { HttpRequestError, RpcRequestError, SocketClosedError, TimeoutError, } from './errors/request.js';
|
|
62
|
+
export { MethodNotSupportedRpcError, ParseError, RpcErrorCode, UserRejectedRequestError, } from './errors/rpc.js';
|
|
63
|
+
export { TransactionNotFoundError, TransactionReceiptNotFoundError, WaitForTransactionReceiptTimeoutError, } from './errors/transaction.js';
|
|
64
|
+
export { UrlRequiredError } from './errors/transport.js';
|
|
65
|
+
export type { ErrorType } from './errors/utils.js';
|
|
66
|
+
export { http, type HttpTransport, type HttpTransportConfig, type HttpTransportErrorType, } from './transports/http.js';
|
|
67
|
+
export { fallback, type FallbackTransport, type FallbackTransportConfig, type FallbackTransportErrorType, } from './transports/fallback.js';
|
|
68
|
+
export type { Transport } from './types/transport.js';
|
|
69
|
+
export type { OneOf, RemoveUndefined } from './types/utils.js';
|
|
70
|
+
export { uid } from './utils/uid.js';
|
|
71
|
+
export { version } from './version.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -8,9 +8,9 @@ export { sendUTXOTransaction } from './actions/sendUTXOTransaction.js';
|
|
|
8
8
|
export { signPsbt } from './actions/signPsbt.js';
|
|
9
9
|
export { waitForTransaction } from './actions/waitForTransaction.js';
|
|
10
10
|
export { watchBlockNumber } from './actions/watchBlockNumber.js';
|
|
11
|
-
// Exporting
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
11
|
+
// Exporting clients
|
|
12
|
+
export { publicActions, } from './clients/decorators/public.js';
|
|
13
|
+
export { walletActions, } from './clients/decorators/wallet.js';
|
|
14
14
|
// Exporting transports
|
|
15
15
|
export { ankrMethods } from './transports/ankr.js';
|
|
16
16
|
export { blockchairMethods } from './transports/blockchair.js';
|
|
@@ -19,6 +19,7 @@ export { getHttpRpcClient } from './transports/getHttpRpcClient.js';
|
|
|
19
19
|
export { getRpcProviderMethods } from './transports/getRpcProviderMethods.js';
|
|
20
20
|
export { mempoolMethods } from './transports/mempool.js';
|
|
21
21
|
export { utxo } from './transports/utxo.js';
|
|
22
|
+
export { custom } from './transports/custom.js';
|
|
22
23
|
// Exporting utils
|
|
23
24
|
export { cancelTransaction } from './utils/cancelTransaction.js';
|
|
24
25
|
export { UTXOAddressType, UTXONetwork, getUTXOAddress, } from './utils/getUTXOAddress.js';
|
|
@@ -26,6 +27,28 @@ export { isUTXOAddress } from './utils/isUTXOAddress.js';
|
|
|
26
27
|
export { modifyFee } from './utils/modifyFee.js';
|
|
27
28
|
export { cleanupCache, listenersCache, observe } from './utils/observe.js';
|
|
28
29
|
export { poll } from './utils/poll.js';
|
|
30
|
+
export { base64ToHex, hexToBase64 } from './utils/converter.js';
|
|
31
|
+
export { withRetry } from './utils/withRetry.js';
|
|
32
|
+
export { parseAccount } from './utils/parseAccount.js';
|
|
33
|
+
export { deepEqual } from './utils/deepEqual.js';
|
|
34
|
+
export { withTimeout } from './utils/withTimeout.js';
|
|
35
|
+
// Exporting factories
|
|
36
|
+
export { createClient, rpcSchema } from './factories/createClient.js';
|
|
29
37
|
// Exporting chains
|
|
30
38
|
export { bitcoin } from './chains/bitcoin.js';
|
|
39
|
+
export { defineChain } from './chains/defineChain.js';
|
|
40
|
+
// Exporting errors
|
|
41
|
+
export { InvalidAddressError, } from './errors/address.js';
|
|
42
|
+
export { BaseError } from './errors/base.js';
|
|
43
|
+
export { BlockNotFoundError } from './errors/block.js';
|
|
44
|
+
export { ChainNotConfiguredError, ConnectorAccountNotFoundError, ConnectorAlreadyConnectedError, ConnectorChainMismatchError, ConnectorNotConnectedError, ConnectorNotFoundError, } from './errors/config.js';
|
|
45
|
+
export { ProviderNotFoundError } from './errors/provider.js';
|
|
46
|
+
export { HttpRequestError, RpcRequestError, SocketClosedError, TimeoutError, } from './errors/request.js';
|
|
47
|
+
export { MethodNotSupportedRpcError, ParseError, RpcErrorCode, UserRejectedRequestError, } from './errors/rpc.js';
|
|
48
|
+
export { TransactionNotFoundError, TransactionReceiptNotFoundError, WaitForTransactionReceiptTimeoutError, } from './errors/transaction.js';
|
|
49
|
+
export { UrlRequiredError } from './errors/transport.js';
|
|
50
|
+
export { http, } from './transports/http.js';
|
|
51
|
+
export { fallback, } from './transports/fallback.js';
|
|
52
|
+
export { uid } from './utils/uid.js';
|
|
53
|
+
export { version } from './version.js';
|
|
31
54
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAKhD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAK1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAKpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAKtE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAQpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAKhD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAK1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAKpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAKtE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAQpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAQhE,oBAAoB;AACpB,OAAO,EAEL,aAAa,GACd,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAEL,aAAa,GACd,MAAM,gCAAgC,CAAA;AAEvC,uBAAuB;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAMnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAYxD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AA2C/C,kBAAkB;AAClB,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,GACf,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,sBAAsB;AACtB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAErE,mBAAmB;AACnB,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,mBAAmB;AACnB,OAAO,EACL,mBAAmB,GAEpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAsB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,8BAA8B,EAC9B,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,YAAY,GACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,0BAA0B,EAC1B,UAAU,EACV,YAAY,EACZ,wBAAwB,GACzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,qCAAqC,GACtC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAGxD,OAAO,EACL,IAAI,GAIL,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,QAAQ,GAIT,MAAM,0BAA0B,CAAA;AAKjC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ErrorType } from '../errors/utils.js';
|
|
2
|
+
import { type CreateTransportErrorType, type Transport, type TransportConfig } from '../factories/createTransport.js';
|
|
3
|
+
type BitcoinProvider = {
|
|
4
|
+
request(...args: any): Promise<any>;
|
|
5
|
+
};
|
|
6
|
+
export type CustomTransportConfig = {
|
|
7
|
+
/** The key of the transport. */
|
|
8
|
+
key?: TransportConfig['key'] | undefined;
|
|
9
|
+
/** Methods to include or exclude from executing RPC requests. */
|
|
10
|
+
methods?: TransportConfig['methods'] | undefined;
|
|
11
|
+
/** The name of the transport. */
|
|
12
|
+
name?: TransportConfig['name'] | undefined;
|
|
13
|
+
/** The max number of times to retry. */
|
|
14
|
+
retryCount?: TransportConfig['retryCount'] | undefined;
|
|
15
|
+
/** The base delay (in ms) between retries. */
|
|
16
|
+
retryDelay?: TransportConfig['retryDelay'] | undefined;
|
|
17
|
+
};
|
|
18
|
+
export type CustomTransport = Transport<'custom', {}, BitcoinProvider['request']>;
|
|
19
|
+
export type CustomTransportErrorType = CreateTransportErrorType | ErrorType;
|
|
20
|
+
/**
|
|
21
|
+
* @description Creates a custom transport given an EIP-1193 compliant `request` attribute.
|
|
22
|
+
*/
|
|
23
|
+
export declare function custom<provider extends BitcoinProvider>(provider: provider, config?: CustomTransportConfig): CustomTransport;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createTransport, } from '../factories/createTransport.js';
|
|
2
|
+
/**
|
|
3
|
+
* @description Creates a custom transport given an EIP-1193 compliant `request` attribute.
|
|
4
|
+
*/
|
|
5
|
+
export function custom(provider, config = {}) {
|
|
6
|
+
const { key = 'custom', methods, name = 'Custom Provider', retryDelay, } = config;
|
|
7
|
+
return ({ retryCount: defaultRetryCount }) => createTransport({
|
|
8
|
+
key,
|
|
9
|
+
methods,
|
|
10
|
+
name,
|
|
11
|
+
request: provider.request.bind(provider),
|
|
12
|
+
retryCount: config.retryCount ?? defaultRetryCount,
|
|
13
|
+
retryDelay,
|
|
14
|
+
type: 'custom',
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=custom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom.js","sourceRoot":"","sources":["../../../src/transports/custom.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,eAAe,GAChB,MAAM,iCAAiC,CAAA;AA0BxC;;GAEG;AACH,MAAM,UAAU,MAAM,CACpB,QAAkB,EAClB,SAAgC,EAAE;IAElC,MAAM,EACJ,GAAG,GAAG,QAAQ,EACd,OAAO,EACP,IAAI,GAAG,iBAAiB,EACxB,UAAU,GACX,GAAG,MAAM,CAAA;IACV,OAAO,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAC3C,eAAe,CAAC;QACd,GAAG;QACH,OAAO;QACP,IAAI;QACJ,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,iBAAiB;QAClD,UAAU;QACV,IAAI,EAAE,QAAQ;KACf,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { ErrorType } from '../errors/utils.js';
|
|
2
|
+
import type { Chain } from '../types/chain.js';
|
|
3
|
+
import type { CreateTransportErrorType, Transport, TransportConfig } from '../types/transport.js';
|
|
4
|
+
export type OnResponseFn = (args: {
|
|
5
|
+
method: string;
|
|
6
|
+
params: unknown[];
|
|
7
|
+
transport: ReturnType<Transport>;
|
|
8
|
+
} & ({
|
|
9
|
+
error?: undefined;
|
|
10
|
+
response: unknown;
|
|
11
|
+
status: 'success';
|
|
12
|
+
} | {
|
|
13
|
+
error: Error;
|
|
14
|
+
response?: undefined;
|
|
15
|
+
status: 'error';
|
|
16
|
+
})) => void;
|
|
17
|
+
type RankOptions = {
|
|
18
|
+
/**
|
|
19
|
+
* The polling interval (in ms) at which the ranker should ping the RPC URL.
|
|
20
|
+
* @default client.pollingInterval
|
|
21
|
+
*/
|
|
22
|
+
interval?: number | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Ping method to determine latency.
|
|
25
|
+
*/
|
|
26
|
+
ping?: (parameters: {
|
|
27
|
+
transport: ReturnType<Transport>;
|
|
28
|
+
}) => Promise<unknown> | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* The number of previous samples to perform ranking on.
|
|
31
|
+
* @default 10
|
|
32
|
+
*/
|
|
33
|
+
sampleCount?: number | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Timeout when sampling transports.
|
|
36
|
+
* @default 1_000
|
|
37
|
+
*/
|
|
38
|
+
timeout?: number | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Weights to apply to the scores. Weight values are proportional.
|
|
41
|
+
*/
|
|
42
|
+
weights?: {
|
|
43
|
+
/**
|
|
44
|
+
* The weight to apply to the latency score.
|
|
45
|
+
* @default 0.3
|
|
46
|
+
*/
|
|
47
|
+
latency?: number | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* The weight to apply to the stability score.
|
|
50
|
+
* @default 0.7
|
|
51
|
+
*/
|
|
52
|
+
stability?: number | undefined;
|
|
53
|
+
} | undefined;
|
|
54
|
+
};
|
|
55
|
+
export type FallbackTransportConfig = {
|
|
56
|
+
/** The key of the Fallback transport. */
|
|
57
|
+
key?: TransportConfig['key'] | undefined;
|
|
58
|
+
/** The name of the Fallback transport. */
|
|
59
|
+
name?: TransportConfig['name'] | undefined;
|
|
60
|
+
/** Toggle to enable ranking, or rank options. */
|
|
61
|
+
rank?: boolean | RankOptions | undefined;
|
|
62
|
+
/** The max number of times to retry. */
|
|
63
|
+
retryCount?: TransportConfig['retryCount'] | undefined;
|
|
64
|
+
/** The base delay (in ms) between retries. */
|
|
65
|
+
retryDelay?: TransportConfig['retryDelay'] | undefined;
|
|
66
|
+
/** Callback on whether an error should throw or try the next transport in the fallback. */
|
|
67
|
+
shouldThrow?: (error: Error) => boolean | undefined;
|
|
68
|
+
};
|
|
69
|
+
export type FallbackTransport<transports extends readonly Transport[] = readonly Transport[]> = Transport<'fallback', {
|
|
70
|
+
onResponse: (fn: OnResponseFn) => void;
|
|
71
|
+
transports: {
|
|
72
|
+
[key in keyof transports]: ReturnType<transports[key]>;
|
|
73
|
+
};
|
|
74
|
+
}>;
|
|
75
|
+
export type FallbackTransportErrorType = CreateTransportErrorType | ErrorType;
|
|
76
|
+
export declare function fallback<const transports extends readonly Transport[]>(transports_: transports, config?: FallbackTransportConfig): FallbackTransport<transports>;
|
|
77
|
+
export declare function shouldThrow(error: Error): boolean;
|
|
78
|
+
/** @internal */
|
|
79
|
+
export declare function rankTransports({ chain, interval, onTransports, ping, sampleCount, timeout, transports, weights, }: {
|
|
80
|
+
chain?: Chain | undefined;
|
|
81
|
+
interval: RankOptions['interval'];
|
|
82
|
+
onTransports: (transports: readonly Transport[]) => void;
|
|
83
|
+
ping?: RankOptions['ping'] | undefined;
|
|
84
|
+
sampleCount?: RankOptions['sampleCount'] | undefined;
|
|
85
|
+
timeout?: RankOptions['timeout'] | undefined;
|
|
86
|
+
transports: readonly Transport[];
|
|
87
|
+
weights?: RankOptions['weights'] | undefined;
|
|
88
|
+
}): void;
|
|
89
|
+
export {};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { RpcErrorCode } from '../errors/rpc.js';
|
|
2
|
+
import { createTransport } from '../factories/createTransport.js';
|
|
3
|
+
import { wait } from '../utils/wait.js';
|
|
4
|
+
export function fallback(transports_, config = {}) {
|
|
5
|
+
const { key = 'fallback', name = 'Fallback', rank = false, shouldThrow: shouldThrow_ = shouldThrow, retryCount, retryDelay, } = config;
|
|
6
|
+
return (({ chain, pollingInterval = 4000, timeout, ...rest }) => {
|
|
7
|
+
let transports = transports_;
|
|
8
|
+
let onResponse = () => { };
|
|
9
|
+
const transport = createTransport({
|
|
10
|
+
key,
|
|
11
|
+
name,
|
|
12
|
+
async request({ method, params }) {
|
|
13
|
+
let includes;
|
|
14
|
+
const fetch = async (i = 0) => {
|
|
15
|
+
const transport = transports[i]({
|
|
16
|
+
...rest,
|
|
17
|
+
chain,
|
|
18
|
+
retryCount: 0,
|
|
19
|
+
timeout,
|
|
20
|
+
});
|
|
21
|
+
try {
|
|
22
|
+
const response = await transport.request({
|
|
23
|
+
method,
|
|
24
|
+
params,
|
|
25
|
+
});
|
|
26
|
+
onResponse({
|
|
27
|
+
method,
|
|
28
|
+
params: params,
|
|
29
|
+
response,
|
|
30
|
+
transport,
|
|
31
|
+
status: 'success',
|
|
32
|
+
});
|
|
33
|
+
return response;
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
onResponse({
|
|
37
|
+
error: err,
|
|
38
|
+
method,
|
|
39
|
+
params: params,
|
|
40
|
+
transport,
|
|
41
|
+
status: 'error',
|
|
42
|
+
});
|
|
43
|
+
if (shouldThrow_(err)) {
|
|
44
|
+
throw err;
|
|
45
|
+
}
|
|
46
|
+
// If we've reached the end of the fallbacks, throw the error.
|
|
47
|
+
if (i === transports.length - 1) {
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
// Check if at least one other transport includes the method
|
|
51
|
+
includes ?? (includes = transports.slice(i + 1).some((transport) => {
|
|
52
|
+
const { include, exclude } = transport({ chain }).config.methods || {};
|
|
53
|
+
if (include) {
|
|
54
|
+
return include.includes(method);
|
|
55
|
+
}
|
|
56
|
+
if (exclude) {
|
|
57
|
+
return !exclude.includes(method);
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}));
|
|
61
|
+
if (!includes) {
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
// Otherwise, try the next fallback.
|
|
65
|
+
return fetch(i + 1);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
return fetch();
|
|
69
|
+
},
|
|
70
|
+
retryCount,
|
|
71
|
+
retryDelay,
|
|
72
|
+
type: 'fallback',
|
|
73
|
+
}, {
|
|
74
|
+
onResponse: (fn) => {
|
|
75
|
+
onResponse = fn;
|
|
76
|
+
},
|
|
77
|
+
transports: transports.map((fn) => fn({ chain, retryCount: 0 })),
|
|
78
|
+
});
|
|
79
|
+
if (rank) {
|
|
80
|
+
const rankOptions = (typeof rank === 'object' ? rank : {});
|
|
81
|
+
rankTransports({
|
|
82
|
+
chain,
|
|
83
|
+
interval: rankOptions.interval ?? pollingInterval,
|
|
84
|
+
onTransports: (transports_) => {
|
|
85
|
+
transports = transports_;
|
|
86
|
+
},
|
|
87
|
+
ping: rankOptions.ping,
|
|
88
|
+
sampleCount: rankOptions.sampleCount,
|
|
89
|
+
timeout: rankOptions.timeout,
|
|
90
|
+
transports,
|
|
91
|
+
weights: rankOptions.weights,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return transport;
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
export function shouldThrow(error) {
|
|
98
|
+
if ('code' in error && typeof error.code === 'number') {
|
|
99
|
+
if (error.code === RpcErrorCode.INTERNAL_ERROR ||
|
|
100
|
+
error.code === RpcErrorCode.USER_REJECTION ||
|
|
101
|
+
error.code === 5000 // CAIP UserRejectedRequestError
|
|
102
|
+
) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
/** @internal */
|
|
109
|
+
export function rankTransports({ chain, interval = 4000, onTransports, ping, sampleCount = 10, timeout = 1000, transports, weights = {}, }) {
|
|
110
|
+
const { stability: stabilityWeight = 0.7, latency: latencyWeight = 0.3 } = weights;
|
|
111
|
+
const samples = [];
|
|
112
|
+
const rankTransports_ = async () => {
|
|
113
|
+
// 1. Take a sample from each Transport.
|
|
114
|
+
const sample = await Promise.all(transports.map(async (transport) => {
|
|
115
|
+
const transport_ = transport({ chain, retryCount: 0, timeout });
|
|
116
|
+
const start = Date.now();
|
|
117
|
+
let end;
|
|
118
|
+
let success;
|
|
119
|
+
try {
|
|
120
|
+
await (ping
|
|
121
|
+
? ping({ transport: transport_ })
|
|
122
|
+
: transport_.request({
|
|
123
|
+
method: 'net_listening',
|
|
124
|
+
params: undefined,
|
|
125
|
+
}));
|
|
126
|
+
success = 1;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
success = 0;
|
|
130
|
+
}
|
|
131
|
+
finally {
|
|
132
|
+
end = Date.now();
|
|
133
|
+
}
|
|
134
|
+
const latency = end - start;
|
|
135
|
+
return { latency, success };
|
|
136
|
+
}));
|
|
137
|
+
// 2. Store the sample. If we have more than `sampleCount` samples, remove
|
|
138
|
+
// the oldest sample.
|
|
139
|
+
samples.push(sample);
|
|
140
|
+
if (samples.length > sampleCount) {
|
|
141
|
+
samples.shift();
|
|
142
|
+
}
|
|
143
|
+
// 3. Calculate the max latency from samples.
|
|
144
|
+
const maxLatency = Math.max(...samples.map((sample) => Math.max(...sample.map(({ latency }) => latency))));
|
|
145
|
+
// 4. Calculate the score for each Transport.
|
|
146
|
+
const scores = transports
|
|
147
|
+
.map((_, i) => {
|
|
148
|
+
const latencies = samples.map((sample) => sample[i].latency);
|
|
149
|
+
const meanLatency = latencies.reduce((acc, latency) => acc + latency, 0) /
|
|
150
|
+
latencies.length;
|
|
151
|
+
const latencyScore = 1 - meanLatency / maxLatency;
|
|
152
|
+
const successes = samples.map((sample) => sample[i].success);
|
|
153
|
+
const stabilityScore = successes.reduce((acc, success) => acc + success, 0) /
|
|
154
|
+
successes.length;
|
|
155
|
+
if (stabilityScore === 0) {
|
|
156
|
+
return [0, i];
|
|
157
|
+
}
|
|
158
|
+
return [
|
|
159
|
+
latencyWeight * latencyScore + stabilityWeight * stabilityScore,
|
|
160
|
+
i,
|
|
161
|
+
];
|
|
162
|
+
})
|
|
163
|
+
.sort((a, b) => b[0] - a[0]);
|
|
164
|
+
// 5. Sort the Transports by score.
|
|
165
|
+
onTransports(scores.map(([, i]) => transports[i]));
|
|
166
|
+
// 6. Wait, and then rank again.
|
|
167
|
+
await wait(interval);
|
|
168
|
+
rankTransports_();
|
|
169
|
+
};
|
|
170
|
+
rankTransports_();
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=fallback.js.map
|