@atomiqlabs/sdk 8.8.3 → 8.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +1760 -1760
- package/dist/SmartChainAssets.d.ts +181 -181
- package/dist/SmartChainAssets.js +181 -181
- package/dist/bitcoin/coinselect2/accumulative.d.ts +7 -7
- package/dist/bitcoin/coinselect2/accumulative.js +52 -52
- package/dist/bitcoin/coinselect2/blackjack.d.ts +7 -7
- package/dist/bitcoin/coinselect2/blackjack.js +38 -38
- package/dist/bitcoin/coinselect2/index.d.ts +20 -20
- package/dist/bitcoin/coinselect2/index.js +69 -69
- package/dist/bitcoin/coinselect2/utils.d.ts +82 -82
- package/dist/bitcoin/coinselect2/utils.js +158 -158
- package/dist/bitcoin/wallet/BitcoinWallet.d.ts +113 -113
- package/dist/bitcoin/wallet/BitcoinWallet.js +335 -335
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +116 -116
- package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -21
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +106 -106
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +196 -196
- package/dist/enums/FeeType.d.ts +15 -15
- package/dist/enums/FeeType.js +19 -19
- package/dist/enums/SwapAmountType.d.ts +15 -15
- package/dist/enums/SwapAmountType.js +19 -19
- package/dist/enums/SwapDirection.d.ts +15 -15
- package/dist/enums/SwapDirection.js +19 -19
- package/dist/enums/SwapSide.d.ts +15 -15
- package/dist/enums/SwapSide.js +19 -19
- package/dist/enums/SwapType.d.ts +75 -75
- package/dist/enums/SwapType.js +79 -79
- package/dist/errors/IntermediaryError.d.ts +13 -13
- package/dist/errors/IntermediaryError.js +27 -27
- package/dist/errors/RequestError.d.ts +32 -32
- package/dist/errors/RequestError.js +54 -54
- package/dist/errors/UserError.d.ts +8 -8
- package/dist/errors/UserError.js +16 -16
- package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
- package/dist/events/UnifiedSwapEventListener.js +132 -132
- package/dist/http/HttpUtils.d.ts +27 -27
- package/dist/http/HttpUtils.js +91 -91
- package/dist/http/paramcoders/IParamReader.d.ts +8 -8
- package/dist/http/paramcoders/IParamReader.js +2 -2
- package/dist/http/paramcoders/ParamDecoder.d.ts +44 -44
- package/dist/http/paramcoders/ParamDecoder.js +137 -137
- package/dist/http/paramcoders/ParamEncoder.d.ts +20 -20
- package/dist/http/paramcoders/ParamEncoder.js +36 -36
- package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
- package/dist/http/paramcoders/SchemaVerifier.js +145 -145
- package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
- package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
- package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -13
- package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
- package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -174
- package/dist/index.d.ts +85 -85
- package/dist/index.js +158 -158
- package/dist/intermediaries/Intermediary.d.ts +178 -178
- package/dist/intermediaries/Intermediary.js +166 -166
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +211 -211
- package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +450 -450
- package/dist/intermediaries/apis/IntermediaryAPI.js +618 -618
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
- package/dist/lnurl/LNURL.d.ts +102 -102
- package/dist/lnurl/LNURL.js +321 -321
- package/dist/prices/RedundantSwapPrice.d.ts +110 -110
- package/dist/prices/RedundantSwapPrice.js +222 -222
- package/dist/prices/SingleSwapPrice.d.ts +34 -34
- package/dist/prices/SingleSwapPrice.js +44 -44
- package/dist/prices/SwapPriceWithChain.d.ts +107 -107
- package/dist/prices/SwapPriceWithChain.js +128 -128
- package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
- package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
- package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
- package/dist/prices/abstract/IPriceProvider.js +74 -74
- package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
- package/dist/prices/abstract/ISwapPrice.js +279 -279
- package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
- package/dist/prices/providers/BinancePriceProvider.js +30 -30
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
- package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
- package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
- package/dist/prices/providers/CustomPriceProvider.js +35 -35
- package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
- package/dist/prices/providers/KrakenPriceProvider.js +45 -45
- package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
- package/dist/prices/providers/OKXPriceProvider.js +29 -29
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
- package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
- package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
- package/dist/storage/IUnifiedStorage.d.ts +85 -85
- package/dist/storage/IUnifiedStorage.js +2 -2
- package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
- package/dist/storage/UnifiedSwapStorage.js +116 -116
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
- package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
- package/dist/storage-browser/LocalStorageManager.js +93 -93
- package/dist/swapper/Swapper.d.ts +732 -732
- package/dist/swapper/Swapper.js +1713 -1713
- package/dist/swapper/SwapperFactory.d.ts +135 -135
- package/dist/swapper/SwapperFactory.js +162 -162
- package/dist/swapper/SwapperUtils.d.ts +206 -206
- package/dist/swapper/SwapperUtils.js +481 -481
- package/dist/swapper/SwapperWithChain.d.ts +404 -404
- package/dist/swapper/SwapperWithChain.js +469 -469
- package/dist/swapper/SwapperWithSigner.d.ts +322 -322
- package/dist/swapper/SwapperWithSigner.js +318 -318
- package/dist/swaps/IAddressSwap.d.ts +22 -22
- package/dist/swaps/IAddressSwap.js +14 -14
- package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
- package/dist/swaps/IBTCWalletSwap.js +18 -18
- package/dist/swaps/IClaimableSwap.d.ts +49 -49
- package/dist/swaps/IClaimableSwap.js +15 -15
- package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
- package/dist/swaps/IClaimableSwapWrapper.js +2 -2
- package/dist/swaps/IRefundableSwap.d.ts +43 -43
- package/dist/swaps/IRefundableSwap.js +14 -14
- package/dist/swaps/ISwap.d.ts +392 -392
- package/dist/swaps/ISwap.js +349 -349
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +12 -12
- package/dist/swaps/ISwapWrapper.d.ts +285 -285
- package/dist/swaps/ISwapWrapper.js +353 -353
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +139 -139
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +170 -170
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +128 -128
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +105 -105
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +129 -129
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +64 -64
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +82 -82
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +531 -531
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +190 -190
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +583 -583
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +235 -235
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +202 -202
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +68 -68
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +117 -117
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -127
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +251 -251
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +536 -536
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +132 -132
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +637 -637
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1448 -1448
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +257 -257
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -947
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
- package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +83 -83
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +69 -69
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +93 -93
- package/dist/types/AmountData.d.ts +10 -10
- package/dist/types/AmountData.js +2 -2
- package/dist/types/CustomPriceFunction.d.ts +11 -11
- package/dist/types/CustomPriceFunction.js +2 -2
- package/dist/types/PriceInfoType.d.ts +28 -28
- package/dist/types/PriceInfoType.js +57 -57
- package/dist/types/SwapExecutionAction.d.ts +88 -88
- package/dist/types/SwapExecutionAction.js +2 -2
- package/dist/types/SwapStateInfo.d.ts +5 -5
- package/dist/types/SwapStateInfo.js +2 -2
- package/dist/types/SwapWithSigner.d.ts +17 -17
- package/dist/types/SwapWithSigner.js +43 -43
- package/dist/types/Token.d.ts +99 -99
- package/dist/types/Token.js +76 -76
- package/dist/types/TokenAmount.d.ts +69 -69
- package/dist/types/TokenAmount.js +60 -60
- package/dist/types/fees/Fee.d.ts +50 -50
- package/dist/types/fees/Fee.js +2 -2
- package/dist/types/fees/FeeBreakdown.d.ts +11 -11
- package/dist/types/fees/FeeBreakdown.js +2 -2
- package/dist/types/fees/PercentagePPM.d.ts +17 -17
- package/dist/types/fees/PercentagePPM.js +18 -18
- package/dist/types/lnurl/LNURLPay.d.ts +61 -61
- package/dist/types/lnurl/LNURLPay.js +31 -31
- package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
- package/dist/types/lnurl/LNURLWithdraw.js +27 -27
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -15
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
- package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
- package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
- package/dist/utils/AutomaticClockDriftCorrection.js +70 -70
- package/dist/utils/BitcoinUtils.d.ts +16 -16
- package/dist/utils/BitcoinUtils.js +141 -141
- package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
- package/dist/utils/BitcoinWalletUtils.js +14 -14
- package/dist/utils/Logger.d.ts +7 -7
- package/dist/utils/Logger.js +12 -12
- package/dist/utils/RetryUtils.d.ts +22 -22
- package/dist/utils/RetryUtils.js +67 -67
- package/dist/utils/SwapUtils.d.ts +88 -88
- package/dist/utils/SwapUtils.js +72 -72
- package/dist/utils/TimeoutUtils.d.ts +17 -17
- package/dist/utils/TimeoutUtils.js +55 -55
- package/dist/utils/TokenUtils.d.ts +19 -19
- package/dist/utils/TokenUtils.js +37 -37
- package/dist/utils/TypeUtils.d.ts +7 -7
- package/dist/utils/TypeUtils.js +2 -2
- package/dist/utils/Utils.d.ts +67 -67
- package/dist/utils/Utils.js +208 -208
- package/package.json +43 -43
- package/src/SmartChainAssets.ts +186 -186
- package/src/bitcoin/coinselect2/accumulative.ts +69 -69
- package/src/bitcoin/coinselect2/blackjack.ts +50 -50
- package/src/bitcoin/coinselect2/index.ts +93 -93
- package/src/bitcoin/coinselect2/utils.ts +236 -236
- package/src/bitcoin/wallet/BitcoinWallet.ts +439 -439
- package/src/bitcoin/wallet/IBitcoinWallet.ts +140 -140
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +225 -225
- package/src/enums/FeeType.ts +15 -15
- package/src/enums/SwapAmountType.ts +16 -16
- package/src/enums/SwapDirection.ts +15 -15
- package/src/enums/SwapSide.ts +16 -16
- package/src/enums/SwapType.ts +75 -75
- package/src/errors/IntermediaryError.ts +28 -28
- package/src/errors/RequestError.ts +64 -64
- package/src/errors/UserError.ts +15 -15
- package/src/events/UnifiedSwapEventListener.ts +173 -173
- package/src/http/HttpUtils.ts +91 -91
- package/src/http/paramcoders/IParamReader.ts +9 -9
- package/src/http/paramcoders/ParamDecoder.ts +145 -145
- package/src/http/paramcoders/ParamEncoder.ts +40 -40
- package/src/http/paramcoders/SchemaVerifier.ts +153 -153
- package/src/http/paramcoders/client/ResponseParamDecoder.ts +57 -57
- package/src/http/paramcoders/client/StreamParamEncoder.ts +28 -28
- package/src/http/paramcoders/client/StreamingFetchPromise.ts +192 -192
- package/src/index.ts +140 -140
- package/src/intermediaries/Intermediary.ts +280 -280
- package/src/intermediaries/IntermediaryDiscovery.ts +541 -541
- package/src/intermediaries/apis/IntermediaryAPI.ts +963 -963
- package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -257
- package/src/lnurl/LNURL.ts +402 -402
- package/src/prices/RedundantSwapPrice.ts +264 -264
- package/src/prices/SingleSwapPrice.ts +50 -50
- package/src/prices/SwapPriceWithChain.ts +194 -194
- package/src/prices/abstract/ICachedSwapPrice.ts +85 -85
- package/src/prices/abstract/IPriceProvider.ts +127 -127
- package/src/prices/abstract/ISwapPrice.ts +390 -390
- package/src/prices/providers/BinancePriceProvider.ts +48 -48
- package/src/prices/providers/CoinGeckoPriceProvider.ts +46 -46
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +49 -49
- package/src/prices/providers/CustomPriceProvider.ts +40 -40
- package/src/prices/providers/KrakenPriceProvider.ts +83 -83
- package/src/prices/providers/OKXPriceProvider.ts +59 -59
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +31 -31
- package/src/prices/providers/abstract/HttpPriceProvider.ts +14 -14
- package/src/storage/IUnifiedStorage.ts +95 -95
- package/src/storage/UnifiedSwapStorage.ts +141 -141
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
- package/src/storage-browser/LocalStorageManager.ts +106 -106
- package/src/swapper/Swapper.ts +2488 -2488
- package/src/swapper/SwapperFactory.ts +307 -307
- package/src/swapper/SwapperUtils.ts +570 -570
- package/src/swapper/SwapperWithChain.ts +707 -707
- package/src/swapper/SwapperWithSigner.ts +511 -511
- package/src/swaps/IAddressSwap.ts +30 -30
- package/src/swaps/IBTCWalletSwap.ts +92 -92
- package/src/swaps/IClaimableSwap.ts +65 -65
- package/src/swaps/IClaimableSwapWrapper.ts +17 -17
- package/src/swaps/IRefundableSwap.ts +58 -58
- package/src/swaps/ISwap.ts +703 -703
- package/src/swaps/ISwapWithGasDrop.ts +25 -25
- package/src/swaps/ISwapWrapper.ts +539 -539
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +269 -269
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +282 -282
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +169 -169
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +300 -300
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +107 -107
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1473 -1474
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +601 -601
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1582 -1582
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +750 -750
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1299 -1299
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +610 -610
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1096 -1096
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +138 -138
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +304 -304
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +786 -786
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +401 -401
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1812 -1812
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1236 -1236
- package/src/swaps/trusted/ln/LnForGasSwap.ts +589 -589
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +91 -91
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +862 -862
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +131 -131
- package/src/types/AmountData.ts +9 -9
- package/src/types/CustomPriceFunction.ts +11 -11
- package/src/types/PriceInfoType.ts +66 -66
- package/src/types/SwapExecutionAction.ts +99 -99
- package/src/types/SwapStateInfo.ts +6 -6
- package/src/types/SwapWithSigner.ts +61 -61
- package/src/types/Token.ts +163 -163
- package/src/types/TokenAmount.ts +132 -132
- package/src/types/fees/Fee.ts +56 -56
- package/src/types/fees/FeeBreakdown.ts +11 -11
- package/src/types/fees/PercentagePPM.ts +26 -26
- package/src/types/lnurl/LNURLPay.ts +79 -79
- package/src/types/lnurl/LNURLWithdraw.ts +61 -61
- package/src/types/wallets/LightningInvoiceCreateService.ts +30 -30
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +21 -21
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +9 -9
- package/src/utils/AutomaticClockDriftCorrection.ts +71 -71
- package/src/utils/BitcoinUtils.ts +132 -132
- package/src/utils/BitcoinWalletUtils.ts +15 -15
- package/src/utils/Logger.ts +14 -14
- package/src/utils/RetryUtils.ts +78 -78
- package/src/utils/SwapUtils.ts +99 -99
- package/src/utils/TimeoutUtils.ts +49 -49
- package/src/utils/TokenUtils.ts +33 -33
- package/src/utils/TypeUtils.ts +8 -8
- package/src/utils/Utils.ts +212 -212
|
@@ -1,193 +1,193 @@
|
|
|
1
|
-
import {isOptionalField, RequestSchema, RequestSchemaResultPromise, verifyField} from "../SchemaVerifier";
|
|
2
|
-
import {RequestError} from "../../../errors/RequestError";
|
|
3
|
-
import {extendAbortController, objectMap} from "../../../utils/Utils";
|
|
4
|
-
import {StreamParamEncoder} from "./StreamParamEncoder";
|
|
5
|
-
import {ResponseParamDecoder} from "./ResponseParamDecoder";
|
|
6
|
-
import {getLogger} from "../../../utils/Logger";
|
|
7
|
-
import {timeoutSignal} from "../../../utils/TimeoutUtils";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export type RequestBody = {
|
|
11
|
-
[key: string]: Promise<any> | any
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const logger = getLogger("StreamingFetch: ");
|
|
15
|
-
|
|
16
|
-
//https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests#feature_detection
|
|
17
|
-
const supportsRequestStreams: boolean = (() => {
|
|
18
|
-
try {
|
|
19
|
-
let duplexAccessed = false;
|
|
20
|
-
|
|
21
|
-
const request = new Request('https://example.com/', {
|
|
22
|
-
body: new ReadableStream(),
|
|
23
|
-
method: 'POST',
|
|
24
|
-
get duplex() {
|
|
25
|
-
duplexAccessed = true;
|
|
26
|
-
return 'half';
|
|
27
|
-
},
|
|
28
|
-
} as any);
|
|
29
|
-
const hasContentType = request.headers.has('Content-Type');
|
|
30
|
-
|
|
31
|
-
return duplexAccessed && !hasContentType;
|
|
32
|
-
} catch (e) {
|
|
33
|
-
logger.error("supportsRequestStreams: Error checking environment support for HTTP request stream", e);
|
|
34
|
-
return false;
|
|
35
|
-
}
|
|
36
|
-
})();
|
|
37
|
-
|
|
38
|
-
logger.info("Environment supports request stream: "+supportsRequestStreams);
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Sends a POST request to the specified URL in a streaming request/response mode
|
|
42
|
-
*
|
|
43
|
-
* @param url URL to send the request to
|
|
44
|
-
* @param body An object containing properties that should be sent to the server, can be Promise or any
|
|
45
|
-
* @param schema Schema of the response that should be received from the server
|
|
46
|
-
* @param timeout Timeout in millseconds for the request to succeed & all its response properties to resolve
|
|
47
|
-
* @param signal Abort signal
|
|
48
|
-
* @param streamRequest Whether the request should be streamed or not
|
|
49
|
-
* @throws {RequestError} When the response code is not 200
|
|
50
|
-
*/
|
|
51
|
-
export async function streamingFetchPromise<T extends RequestSchema>(
|
|
52
|
-
url: string,
|
|
53
|
-
body: RequestBody,
|
|
54
|
-
schema: T,
|
|
55
|
-
timeout?: number,
|
|
56
|
-
signal?: AbortSignal,
|
|
57
|
-
streamRequest?: boolean
|
|
58
|
-
): Promise<RequestSchemaResultPromise<T>> {
|
|
59
|
-
if(streamRequest==null) streamRequest = supportsRequestStreams;
|
|
60
|
-
if(timeout!=null) signal = timeoutSignal(timeout, new Error("Network request timed out"), signal);
|
|
61
|
-
|
|
62
|
-
const headers: Record<string, string> = {};
|
|
63
|
-
const init: RequestInit = {
|
|
64
|
-
method: "POST",
|
|
65
|
-
headers
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const startTime = Date.now();
|
|
69
|
-
|
|
70
|
-
const immediateValues: any = {};
|
|
71
|
-
const promises: Promise<any>[] = [];
|
|
72
|
-
|
|
73
|
-
if(!streamRequest) {
|
|
74
|
-
for(let key in body) {
|
|
75
|
-
if(body[key] instanceof Promise) {
|
|
76
|
-
promises.push(body[key].then((val: any) => {
|
|
77
|
-
immediateValues[key] = val;
|
|
78
|
-
}));
|
|
79
|
-
} else {
|
|
80
|
-
immediateValues[key] = body[key];
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
try {
|
|
85
|
-
await Promise.all(promises);
|
|
86
|
-
} catch (e: any) {
|
|
87
|
-
e._inputPromiseError = true;
|
|
88
|
-
throw e;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
if(signal!=null) signal.throwIfAborted();
|
|
92
|
-
|
|
93
|
-
logger.debug(url+": Sending request ("+(Date.now()-startTime)+"ms) (non-streaming): ", immediateValues);
|
|
94
|
-
init.body = JSON.stringify(immediateValues);
|
|
95
|
-
headers['content-type'] = "application/json";
|
|
96
|
-
} else {
|
|
97
|
-
const outputStream = new StreamParamEncoder();
|
|
98
|
-
|
|
99
|
-
let hasPromiseInBody = false;
|
|
100
|
-
for(let key in body) {
|
|
101
|
-
if(body[key] instanceof Promise) {
|
|
102
|
-
promises.push(body[key].then((val: any) => {
|
|
103
|
-
logger.debug(url+": Send param ("+(Date.now()-startTime)+"ms) (streaming): ", {[key]: val});
|
|
104
|
-
return outputStream.writeParams({
|
|
105
|
-
[key]: val
|
|
106
|
-
});
|
|
107
|
-
}));
|
|
108
|
-
hasPromiseInBody = true;
|
|
109
|
-
} else {
|
|
110
|
-
immediateValues[key] = body[key];
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if(hasPromiseInBody) {
|
|
115
|
-
init.body = outputStream.getReadableStream();
|
|
116
|
-
headers['content-type'] = "application/x-multiple-json";
|
|
117
|
-
(init as any).duplex = "half";
|
|
118
|
-
|
|
119
|
-
logger.debug(url+": Sending request ("+(Date.now()-startTime)+"ms) (streaming): ", immediateValues);
|
|
120
|
-
promises.push(outputStream.writeParams(immediateValues));
|
|
121
|
-
|
|
122
|
-
const abortController = extendAbortController(signal);
|
|
123
|
-
signal = abortController.signal;
|
|
124
|
-
|
|
125
|
-
Promise.all(promises).then(() => outputStream.end()).catch(e => {
|
|
126
|
-
e._inputPromiseError = true;
|
|
127
|
-
abortController.abort(e);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
signal.addEventListener("abort", () => outputStream.end());
|
|
131
|
-
} else {
|
|
132
|
-
logger.debug(url+": Sending request ("+(Date.now()-startTime)+"ms) (non-streaming): ", immediateValues);
|
|
133
|
-
init.body = JSON.stringify(immediateValues);
|
|
134
|
-
headers['content-type'] = "application/json";
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if(signal!=null) init.signal = signal;
|
|
139
|
-
headers['accept'] = "application/x-multiple-json";
|
|
140
|
-
|
|
141
|
-
const resp = await fetch(url, init).catch(e => {
|
|
142
|
-
if(init.signal!=null && e.name==="AbortError") {
|
|
143
|
-
throw init.signal.reason;
|
|
144
|
-
} else {
|
|
145
|
-
if(e.message!=null) e.message += streamRequest ? " (streaming req)" : " (non streaming req)"
|
|
146
|
-
throw e;
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
logger.debug(url+": Response status ("+(Date.now()-startTime)+"ms) "+(streamRequest ? "(streaming req)" : "(non streaming req)")+": ", resp.status);
|
|
151
|
-
|
|
152
|
-
if(resp.status!==200) {
|
|
153
|
-
let respTxt: string;
|
|
154
|
-
try {
|
|
155
|
-
respTxt = await resp.text();
|
|
156
|
-
} catch (e) {
|
|
157
|
-
throw new RequestError(resp.statusText, resp.status);
|
|
158
|
-
}
|
|
159
|
-
throw new RequestError(respTxt, resp.status);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if(resp.headers.get("content-type")!=="application/x-multiple-json") {
|
|
163
|
-
const respBody = await resp.json();
|
|
164
|
-
|
|
165
|
-
logger.debug(url+": Response read ("+(Date.now()-startTime)+"ms) (non streaming resp): ", respBody);
|
|
166
|
-
|
|
167
|
-
return objectMap(schema, (schemaValue, key) => {
|
|
168
|
-
const value = respBody[key];
|
|
169
|
-
|
|
170
|
-
const result = verifyField(schemaValue, value);
|
|
171
|
-
if(result===undefined) {
|
|
172
|
-
return Promise.reject(new Error("Invalid field value"));
|
|
173
|
-
} else {
|
|
174
|
-
return Promise.resolve(result);
|
|
175
|
-
}
|
|
176
|
-
}) as any;
|
|
177
|
-
} else {
|
|
178
|
-
const decoder = new ResponseParamDecoder(resp, init.signal ?? undefined);
|
|
179
|
-
|
|
180
|
-
return objectMap(schema, (schemaValue, key) => decoder.getParam(key).catch(e => {
|
|
181
|
-
if(isOptionalField(schemaValue)) return undefined;
|
|
182
|
-
throw e;
|
|
183
|
-
}).then(value => {
|
|
184
|
-
logger.debug(url+": Response frame read ("+(Date.now()-startTime)+"ms) (streaming resp): ", {[key]: value});
|
|
185
|
-
const result = verifyField(schemaValue, value);
|
|
186
|
-
if(result===undefined) {
|
|
187
|
-
return Promise.reject(new Error("Invalid field value"));
|
|
188
|
-
} else {
|
|
189
|
-
return result;
|
|
190
|
-
}
|
|
191
|
-
})) as any;
|
|
192
|
-
}
|
|
1
|
+
import {isOptionalField, RequestSchema, RequestSchemaResultPromise, verifyField} from "../SchemaVerifier";
|
|
2
|
+
import {RequestError} from "../../../errors/RequestError";
|
|
3
|
+
import {extendAbortController, objectMap} from "../../../utils/Utils";
|
|
4
|
+
import {StreamParamEncoder} from "./StreamParamEncoder";
|
|
5
|
+
import {ResponseParamDecoder} from "./ResponseParamDecoder";
|
|
6
|
+
import {getLogger} from "../../../utils/Logger";
|
|
7
|
+
import {timeoutSignal} from "../../../utils/TimeoutUtils";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export type RequestBody = {
|
|
11
|
+
[key: string]: Promise<any> | any
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const logger = getLogger("StreamingFetch: ");
|
|
15
|
+
|
|
16
|
+
//https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests#feature_detection
|
|
17
|
+
const supportsRequestStreams: boolean = (() => {
|
|
18
|
+
try {
|
|
19
|
+
let duplexAccessed = false;
|
|
20
|
+
|
|
21
|
+
const request = new Request('https://example.com/', {
|
|
22
|
+
body: new ReadableStream(),
|
|
23
|
+
method: 'POST',
|
|
24
|
+
get duplex() {
|
|
25
|
+
duplexAccessed = true;
|
|
26
|
+
return 'half';
|
|
27
|
+
},
|
|
28
|
+
} as any);
|
|
29
|
+
const hasContentType = request.headers.has('Content-Type');
|
|
30
|
+
|
|
31
|
+
return duplexAccessed && !hasContentType;
|
|
32
|
+
} catch (e) {
|
|
33
|
+
logger.error("supportsRequestStreams: Error checking environment support for HTTP request stream", e);
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
})();
|
|
37
|
+
|
|
38
|
+
logger.info("Environment supports request stream: "+supportsRequestStreams);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Sends a POST request to the specified URL in a streaming request/response mode
|
|
42
|
+
*
|
|
43
|
+
* @param url URL to send the request to
|
|
44
|
+
* @param body An object containing properties that should be sent to the server, can be Promise or any
|
|
45
|
+
* @param schema Schema of the response that should be received from the server
|
|
46
|
+
* @param timeout Timeout in millseconds for the request to succeed & all its response properties to resolve
|
|
47
|
+
* @param signal Abort signal
|
|
48
|
+
* @param streamRequest Whether the request should be streamed or not
|
|
49
|
+
* @throws {RequestError} When the response code is not 200
|
|
50
|
+
*/
|
|
51
|
+
export async function streamingFetchPromise<T extends RequestSchema>(
|
|
52
|
+
url: string,
|
|
53
|
+
body: RequestBody,
|
|
54
|
+
schema: T,
|
|
55
|
+
timeout?: number,
|
|
56
|
+
signal?: AbortSignal,
|
|
57
|
+
streamRequest?: boolean
|
|
58
|
+
): Promise<RequestSchemaResultPromise<T>> {
|
|
59
|
+
if(streamRequest==null) streamRequest = supportsRequestStreams;
|
|
60
|
+
if(timeout!=null) signal = timeoutSignal(timeout, new Error("Network request timed out"), signal);
|
|
61
|
+
|
|
62
|
+
const headers: Record<string, string> = {};
|
|
63
|
+
const init: RequestInit = {
|
|
64
|
+
method: "POST",
|
|
65
|
+
headers
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const startTime = Date.now();
|
|
69
|
+
|
|
70
|
+
const immediateValues: any = {};
|
|
71
|
+
const promises: Promise<any>[] = [];
|
|
72
|
+
|
|
73
|
+
if(!streamRequest) {
|
|
74
|
+
for(let key in body) {
|
|
75
|
+
if(body[key] instanceof Promise) {
|
|
76
|
+
promises.push(body[key].then((val: any) => {
|
|
77
|
+
immediateValues[key] = val;
|
|
78
|
+
}));
|
|
79
|
+
} else {
|
|
80
|
+
immediateValues[key] = body[key];
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
try {
|
|
85
|
+
await Promise.all(promises);
|
|
86
|
+
} catch (e: any) {
|
|
87
|
+
e._inputPromiseError = true;
|
|
88
|
+
throw e;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if(signal!=null) signal.throwIfAborted();
|
|
92
|
+
|
|
93
|
+
logger.debug(url+": Sending request ("+(Date.now()-startTime)+"ms) (non-streaming): ", immediateValues);
|
|
94
|
+
init.body = JSON.stringify(immediateValues);
|
|
95
|
+
headers['content-type'] = "application/json";
|
|
96
|
+
} else {
|
|
97
|
+
const outputStream = new StreamParamEncoder();
|
|
98
|
+
|
|
99
|
+
let hasPromiseInBody = false;
|
|
100
|
+
for(let key in body) {
|
|
101
|
+
if(body[key] instanceof Promise) {
|
|
102
|
+
promises.push(body[key].then((val: any) => {
|
|
103
|
+
logger.debug(url+": Send param ("+(Date.now()-startTime)+"ms) (streaming): ", {[key]: val});
|
|
104
|
+
return outputStream.writeParams({
|
|
105
|
+
[key]: val
|
|
106
|
+
});
|
|
107
|
+
}));
|
|
108
|
+
hasPromiseInBody = true;
|
|
109
|
+
} else {
|
|
110
|
+
immediateValues[key] = body[key];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if(hasPromiseInBody) {
|
|
115
|
+
init.body = outputStream.getReadableStream();
|
|
116
|
+
headers['content-type'] = "application/x-multiple-json";
|
|
117
|
+
(init as any).duplex = "half";
|
|
118
|
+
|
|
119
|
+
logger.debug(url+": Sending request ("+(Date.now()-startTime)+"ms) (streaming): ", immediateValues);
|
|
120
|
+
promises.push(outputStream.writeParams(immediateValues));
|
|
121
|
+
|
|
122
|
+
const abortController = extendAbortController(signal);
|
|
123
|
+
signal = abortController.signal;
|
|
124
|
+
|
|
125
|
+
Promise.all(promises).then(() => outputStream.end()).catch(e => {
|
|
126
|
+
e._inputPromiseError = true;
|
|
127
|
+
abortController.abort(e);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
signal.addEventListener("abort", () => outputStream.end());
|
|
131
|
+
} else {
|
|
132
|
+
logger.debug(url+": Sending request ("+(Date.now()-startTime)+"ms) (non-streaming): ", immediateValues);
|
|
133
|
+
init.body = JSON.stringify(immediateValues);
|
|
134
|
+
headers['content-type'] = "application/json";
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if(signal!=null) init.signal = signal;
|
|
139
|
+
headers['accept'] = "application/x-multiple-json";
|
|
140
|
+
|
|
141
|
+
const resp = await fetch(url, init).catch(e => {
|
|
142
|
+
if(init.signal!=null && e.name==="AbortError") {
|
|
143
|
+
throw init.signal.reason;
|
|
144
|
+
} else {
|
|
145
|
+
if(e.message!=null) e.message += streamRequest ? " (streaming req)" : " (non streaming req)"
|
|
146
|
+
throw e;
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
logger.debug(url+": Response status ("+(Date.now()-startTime)+"ms) "+(streamRequest ? "(streaming req)" : "(non streaming req)")+": ", resp.status);
|
|
151
|
+
|
|
152
|
+
if(resp.status!==200) {
|
|
153
|
+
let respTxt: string;
|
|
154
|
+
try {
|
|
155
|
+
respTxt = await resp.text();
|
|
156
|
+
} catch (e) {
|
|
157
|
+
throw new RequestError(resp.statusText, resp.status);
|
|
158
|
+
}
|
|
159
|
+
throw new RequestError(respTxt, resp.status);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if(resp.headers.get("content-type")!=="application/x-multiple-json") {
|
|
163
|
+
const respBody = await resp.json();
|
|
164
|
+
|
|
165
|
+
logger.debug(url+": Response read ("+(Date.now()-startTime)+"ms) (non streaming resp): ", respBody);
|
|
166
|
+
|
|
167
|
+
return objectMap(schema, (schemaValue, key) => {
|
|
168
|
+
const value = respBody[key];
|
|
169
|
+
|
|
170
|
+
const result = verifyField(schemaValue, value);
|
|
171
|
+
if(result===undefined) {
|
|
172
|
+
return Promise.reject(new Error("Invalid field value"));
|
|
173
|
+
} else {
|
|
174
|
+
return Promise.resolve(result);
|
|
175
|
+
}
|
|
176
|
+
}) as any;
|
|
177
|
+
} else {
|
|
178
|
+
const decoder = new ResponseParamDecoder(resp, init.signal ?? undefined);
|
|
179
|
+
|
|
180
|
+
return objectMap(schema, (schemaValue, key) => decoder.getParam(key).catch(e => {
|
|
181
|
+
if(isOptionalField(schemaValue)) return undefined;
|
|
182
|
+
throw e;
|
|
183
|
+
}).then(value => {
|
|
184
|
+
logger.debug(url+": Response frame read ("+(Date.now()-startTime)+"ms) (streaming resp): ", {[key]: value});
|
|
185
|
+
const result = verifyField(schemaValue, value);
|
|
186
|
+
if(result===undefined) {
|
|
187
|
+
return Promise.reject(new Error("Invalid field value"));
|
|
188
|
+
} else {
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
})) as any;
|
|
192
|
+
}
|
|
193
193
|
}
|