@atomiqlabs/sdk 8.9.1 → 8.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +1760 -1760
- package/api/index.d.ts +1 -1
- package/api/index.js +3 -3
- package/dist/ApiList.d.ts +37 -37
- package/dist/ApiList.js +30 -30
- package/dist/SmartChainAssets.d.ts +181 -181
- package/dist/SmartChainAssets.js +181 -181
- package/dist/api/ApiEndpoints.d.ts +393 -393
- package/dist/api/ApiEndpoints.js +2 -2
- package/dist/api/ApiParser.d.ts +10 -10
- package/dist/api/ApiParser.js +134 -134
- package/dist/api/ApiTypes.d.ts +157 -157
- package/dist/api/ApiTypes.js +75 -75
- package/dist/api/SerializedAction.d.ts +40 -40
- package/dist/api/SerializedAction.js +59 -59
- package/dist/api/SwapperApi.d.ts +50 -50
- package/dist/api/SwapperApi.js +431 -431
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.js +24 -24
- 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 +24 -24
- package/dist/events/UnifiedSwapEventListener.js +138 -138
- package/dist/http/HttpUtils.d.ts +29 -29
- package/dist/http/HttpUtils.js +97 -97
- 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 +17 -17
- package/dist/http/paramcoders/client/StreamingFetchPromise.js +175 -175
- package/dist/index.d.ts +86 -86
- package/dist/index.js +159 -159
- package/dist/intermediaries/Intermediary.d.ts +178 -178
- package/dist/intermediaries/Intermediary.js +166 -166
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +216 -216
- package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
- package/dist/intermediaries/apis/IntermediaryAPI.d.ts +607 -607
- package/dist/intermediaries/apis/IntermediaryAPI.js +764 -764
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
- package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
- package/dist/intermediaries/auth/SignedKeyBasedAuth.d.ts +14 -14
- package/dist/intermediaries/auth/SignedKeyBasedAuth.js +68 -68
- 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 +127 -127
- package/dist/storage/IUnifiedStorage.js +2 -2
- package/dist/storage/UnifiedSwapStorage.d.ts +120 -120
- package/dist/storage/UnifiedSwapStorage.js +154 -154
- 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 +765 -770
- package/dist/swapper/Swapper.js +1749 -1758
- package/dist/swapper/SwapperFactory.d.ts +135 -135
- package/dist/swapper/SwapperFactory.js +162 -162
- package/dist/swapper/SwapperUtils.d.ts +222 -222
- package/dist/swapper/SwapperUtils.js +519 -519
- 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 +453 -453
- package/dist/swaps/ISwap.js +371 -371
- package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
- package/dist/swaps/ISwapWithGasDrop.js +12 -12
- package/dist/swaps/ISwapWrapper.d.ts +295 -295
- package/dist/swaps/ISwapWrapper.js +373 -373
- 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 +172 -172
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +129 -129
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +107 -107
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
- 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 +547 -547
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1419 -1419
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +192 -192
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +650 -650
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1577 -1577
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +237 -237
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +491 -491
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1463 -1463
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +204 -204
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +446 -446
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +1097 -1097
- 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 +252 -252
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +535 -535
- 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 +134 -134
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +694 -694
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1687 -1687
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +259 -259
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -947
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +302 -302
- package/dist/swaps/trusted/ln/LnForGasSwap.js +625 -625
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +343 -343
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +698 -698
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +71 -71
- 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 +195 -195
- package/dist/types/SwapExecutionAction.js +106 -106
- package/dist/types/SwapExecutionStep.d.ts +144 -144
- package/dist/types/SwapExecutionStep.js +87 -87
- 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 +75 -75
- package/dist/types/TokenAmount.js +85 -85
- 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 +18 -18
- package/dist/utils/BitcoinUtils.js +174 -174
- 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 +69 -69
- package/dist/utils/Utils.js +214 -214
- package/package.json +46 -46
- package/src/SmartChainAssets.ts +186 -186
- package/src/api/ApiEndpoints.ts +427 -427
- package/src/api/ApiParser.ts +138 -138
- package/src/api/ApiTypes.ts +229 -229
- package/src/api/SerializedAction.ts +97 -97
- package/src/api/SwapperApi.ts +545 -545
- package/src/api/index.ts +5 -5
- 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 +181 -181
- package/src/http/HttpUtils.ts +97 -97
- 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 +194 -194
- package/src/index.ts +141 -141
- package/src/intermediaries/Intermediary.ts +280 -280
- package/src/intermediaries/IntermediaryDiscovery.ts +548 -548
- package/src/intermediaries/apis/IntermediaryAPI.ts +1247 -1247
- package/src/intermediaries/auth/SignedKeyBasedAuth.ts +69 -69
- 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 +136 -136
- package/src/storage/UnifiedSwapStorage.ts +175 -175
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
- package/src/storage-browser/LocalStorageManager.ts +106 -106
- package/src/swapper/Swapper.ts +2557 -2570
- package/src/swapper/SwapperFactory.ts +307 -307
- package/src/swapper/SwapperUtils.ts +610 -610
- 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 +775 -775
- package/src/swaps/ISwapWithGasDrop.ts +25 -25
- package/src/swaps/ISwapWrapper.ts +564 -564
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +271 -271
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +284 -284
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +172 -172
- 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 +1670 -1671
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +603 -603
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1883 -1883
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +752 -752
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1753 -1753
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +612 -612
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1327 -1327
- 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 +787 -787
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +403 -403
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +2148 -2148
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1238 -1238
- package/src/swaps/trusted/ln/LnForGasSwap.ts +753 -753
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +90 -90
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +843 -843
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +133 -133
- 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 +323 -323
- package/src/types/SwapExecutionStep.ts +224 -224
- 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 +167 -167
- 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 +164 -164
- 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 +221 -221
|
@@ -1,153 +1,153 @@
|
|
|
1
|
-
|
|
2
|
-
export function parseBigInt(str: string | number): bigint | null {
|
|
3
|
-
if(str==null) return null;
|
|
4
|
-
if(typeof(str)!=="string" && typeof(str)!=="number") return null;
|
|
5
|
-
try {
|
|
6
|
-
return BigInt(str);
|
|
7
|
-
} catch (e) {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export enum FieldTypeEnum {
|
|
13
|
-
String=0,
|
|
14
|
-
Boolean=1,
|
|
15
|
-
Number=2,
|
|
16
|
-
BigInt=3,
|
|
17
|
-
Any=4,
|
|
18
|
-
|
|
19
|
-
StringOptional=100,
|
|
20
|
-
BooleanOptional=101,
|
|
21
|
-
NumberOptional=102,
|
|
22
|
-
BigIntOptional=103,
|
|
23
|
-
AnyOptional=104,
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export type FieldType<T extends FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))> =
|
|
27
|
-
T extends FieldTypeEnum.String ? string :
|
|
28
|
-
T extends FieldTypeEnum.Boolean ? boolean :
|
|
29
|
-
T extends FieldTypeEnum.Number ? number :
|
|
30
|
-
T extends FieldTypeEnum.BigInt ? bigint :
|
|
31
|
-
T extends FieldTypeEnum.Any ? any :
|
|
32
|
-
T extends FieldTypeEnum.StringOptional ? (string | null) :
|
|
33
|
-
T extends FieldTypeEnum.BooleanOptional ? (boolean | null) :
|
|
34
|
-
T extends FieldTypeEnum.NumberOptional ? (number | null) :
|
|
35
|
-
T extends FieldTypeEnum.BigIntOptional ? (bigint | null) :
|
|
36
|
-
T extends FieldTypeEnum.AnyOptional ? (any | null) :
|
|
37
|
-
T extends RequestSchema ? RequestSchemaResult<T> :
|
|
38
|
-
T extends ((val: any) => string) ? string :
|
|
39
|
-
T extends ((val: any) => boolean) ? boolean :
|
|
40
|
-
T extends ((val: any) => number) ? number :
|
|
41
|
-
T extends ((val: any) => bigint) ? bigint :
|
|
42
|
-
T extends ((val: any) => any) ? any :
|
|
43
|
-
never;
|
|
44
|
-
|
|
45
|
-
export type RequestSchemaResult<T extends RequestSchema> = {
|
|
46
|
-
[key in keyof T]: FieldType<T[key]>
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export type RequestSchemaResultPromise<T extends RequestSchema> = {
|
|
50
|
-
[key in keyof T]: Promise<FieldType<T[key]>>
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export type RequestSchema = {
|
|
54
|
-
[fieldName: string]: FieldTypeEnum | RequestSchema | ((val: any) => any)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function isAllOptional(schema: RequestSchema) {
|
|
58
|
-
for(let key in schema) {
|
|
59
|
-
if(!isOptionalField(schema[key])) return false;
|
|
60
|
-
}
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export function isOptionalField(type: FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))) {
|
|
65
|
-
if(typeof(type)==="function") return type(undefined)!=null;
|
|
66
|
-
if(typeof(type)==="object") return isAllOptional(type);
|
|
67
|
-
return type>=100;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
export function verifyField<
|
|
71
|
-
T extends FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))
|
|
72
|
-
>(fieldType: T, val: any): FieldType<T> | undefined {
|
|
73
|
-
|
|
74
|
-
const type: FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any)) = fieldType;
|
|
75
|
-
if(typeof(type)==="function") {
|
|
76
|
-
const result = type(val);
|
|
77
|
-
if(result==null) return;
|
|
78
|
-
return result;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if(val==null && isOptionalField(type as FieldTypeEnum)) {
|
|
82
|
-
return null as FieldType<T>;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if(type===FieldTypeEnum.Any || type===FieldTypeEnum.AnyOptional) {
|
|
86
|
-
return val;
|
|
87
|
-
} else if(type===FieldTypeEnum.Boolean || type===FieldTypeEnum.BooleanOptional) {
|
|
88
|
-
if(typeof(val)!=="boolean") return;
|
|
89
|
-
return val as any;
|
|
90
|
-
} else if(type===FieldTypeEnum.Number || type===FieldTypeEnum.NumberOptional) {
|
|
91
|
-
if(typeof(val)!=="number") return;
|
|
92
|
-
if(isNaN(val as number)) return;
|
|
93
|
-
return val as any;
|
|
94
|
-
} else if(type===FieldTypeEnum.BigInt || type===FieldTypeEnum.BigIntOptional) {
|
|
95
|
-
const result = parseBigInt(val);
|
|
96
|
-
if(result==null) return;
|
|
97
|
-
return result as any;
|
|
98
|
-
} else if(type===FieldTypeEnum.String || type===FieldTypeEnum.StringOptional) {
|
|
99
|
-
if(typeof(val)!=="string") return;
|
|
100
|
-
return val as any;
|
|
101
|
-
} else {
|
|
102
|
-
//Probably another request schema
|
|
103
|
-
const result = verifySchema(val, type as RequestSchema);
|
|
104
|
-
if(result==null) return;
|
|
105
|
-
return result as any;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export function verifySchema<T extends RequestSchema>(req: any, schema: T): RequestSchemaResult<T> | null {
|
|
111
|
-
if(req==null) return null;
|
|
112
|
-
const resultSchema: any = {};
|
|
113
|
-
for(let fieldName in schema) {
|
|
114
|
-
const val: any = req[fieldName];
|
|
115
|
-
|
|
116
|
-
const type: FieldTypeEnum | RequestSchema | ((val: any) => boolean) = schema[fieldName];
|
|
117
|
-
if(typeof(type)==="function") {
|
|
118
|
-
const result = type(val);
|
|
119
|
-
if(result==null) return null;
|
|
120
|
-
resultSchema[fieldName] = result;
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if(val==null && isOptionalField(type as FieldTypeEnum)) {
|
|
125
|
-
resultSchema[fieldName] = null;
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if(type===FieldTypeEnum.Any || type===FieldTypeEnum.AnyOptional) {
|
|
130
|
-
resultSchema[fieldName] = val;
|
|
131
|
-
} else if(type===FieldTypeEnum.Boolean || type===FieldTypeEnum.BooleanOptional) {
|
|
132
|
-
if(typeof(val)!=="boolean") return null;
|
|
133
|
-
resultSchema[fieldName] = val;
|
|
134
|
-
} else if(type===FieldTypeEnum.Number || type===FieldTypeEnum.NumberOptional) {
|
|
135
|
-
if(typeof(val)!=="number") return null;
|
|
136
|
-
if(isNaN(val as number)) return null;
|
|
137
|
-
resultSchema[fieldName] = val;
|
|
138
|
-
} else if(type===FieldTypeEnum.BigInt || type===FieldTypeEnum.BigIntOptional) {
|
|
139
|
-
const result = parseBigInt(val);
|
|
140
|
-
if(result==null) return null;
|
|
141
|
-
resultSchema[fieldName] = result;
|
|
142
|
-
} else if(type===FieldTypeEnum.String || type===FieldTypeEnum.StringOptional) {
|
|
143
|
-
if(typeof(val)!=="string") return null;
|
|
144
|
-
resultSchema[fieldName] = val;
|
|
145
|
-
} else {
|
|
146
|
-
//Probably another request schema
|
|
147
|
-
const result = verifySchema(val, type as RequestSchema);
|
|
148
|
-
if(result==null) return null;
|
|
149
|
-
resultSchema[fieldName] = result;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
return resultSchema;
|
|
153
|
-
}
|
|
1
|
+
|
|
2
|
+
export function parseBigInt(str: string | number): bigint | null {
|
|
3
|
+
if(str==null) return null;
|
|
4
|
+
if(typeof(str)!=="string" && typeof(str)!=="number") return null;
|
|
5
|
+
try {
|
|
6
|
+
return BigInt(str);
|
|
7
|
+
} catch (e) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export enum FieldTypeEnum {
|
|
13
|
+
String=0,
|
|
14
|
+
Boolean=1,
|
|
15
|
+
Number=2,
|
|
16
|
+
BigInt=3,
|
|
17
|
+
Any=4,
|
|
18
|
+
|
|
19
|
+
StringOptional=100,
|
|
20
|
+
BooleanOptional=101,
|
|
21
|
+
NumberOptional=102,
|
|
22
|
+
BigIntOptional=103,
|
|
23
|
+
AnyOptional=104,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type FieldType<T extends FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))> =
|
|
27
|
+
T extends FieldTypeEnum.String ? string :
|
|
28
|
+
T extends FieldTypeEnum.Boolean ? boolean :
|
|
29
|
+
T extends FieldTypeEnum.Number ? number :
|
|
30
|
+
T extends FieldTypeEnum.BigInt ? bigint :
|
|
31
|
+
T extends FieldTypeEnum.Any ? any :
|
|
32
|
+
T extends FieldTypeEnum.StringOptional ? (string | null) :
|
|
33
|
+
T extends FieldTypeEnum.BooleanOptional ? (boolean | null) :
|
|
34
|
+
T extends FieldTypeEnum.NumberOptional ? (number | null) :
|
|
35
|
+
T extends FieldTypeEnum.BigIntOptional ? (bigint | null) :
|
|
36
|
+
T extends FieldTypeEnum.AnyOptional ? (any | null) :
|
|
37
|
+
T extends RequestSchema ? RequestSchemaResult<T> :
|
|
38
|
+
T extends ((val: any) => string) ? string :
|
|
39
|
+
T extends ((val: any) => boolean) ? boolean :
|
|
40
|
+
T extends ((val: any) => number) ? number :
|
|
41
|
+
T extends ((val: any) => bigint) ? bigint :
|
|
42
|
+
T extends ((val: any) => any) ? any :
|
|
43
|
+
never;
|
|
44
|
+
|
|
45
|
+
export type RequestSchemaResult<T extends RequestSchema> = {
|
|
46
|
+
[key in keyof T]: FieldType<T[key]>
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type RequestSchemaResultPromise<T extends RequestSchema> = {
|
|
50
|
+
[key in keyof T]: Promise<FieldType<T[key]>>
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export type RequestSchema = {
|
|
54
|
+
[fieldName: string]: FieldTypeEnum | RequestSchema | ((val: any) => any)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function isAllOptional(schema: RequestSchema) {
|
|
58
|
+
for(let key in schema) {
|
|
59
|
+
if(!isOptionalField(schema[key])) return false;
|
|
60
|
+
}
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function isOptionalField(type: FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))) {
|
|
65
|
+
if(typeof(type)==="function") return type(undefined)!=null;
|
|
66
|
+
if(typeof(type)==="object") return isAllOptional(type);
|
|
67
|
+
return type>=100;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export function verifyField<
|
|
71
|
+
T extends FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any))
|
|
72
|
+
>(fieldType: T, val: any): FieldType<T> | undefined {
|
|
73
|
+
|
|
74
|
+
const type: FieldTypeEnum | RequestSchema | ((val: any) => (string | boolean | number | bigint | any)) = fieldType;
|
|
75
|
+
if(typeof(type)==="function") {
|
|
76
|
+
const result = type(val);
|
|
77
|
+
if(result==null) return;
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if(val==null && isOptionalField(type as FieldTypeEnum)) {
|
|
82
|
+
return null as FieldType<T>;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if(type===FieldTypeEnum.Any || type===FieldTypeEnum.AnyOptional) {
|
|
86
|
+
return val;
|
|
87
|
+
} else if(type===FieldTypeEnum.Boolean || type===FieldTypeEnum.BooleanOptional) {
|
|
88
|
+
if(typeof(val)!=="boolean") return;
|
|
89
|
+
return val as any;
|
|
90
|
+
} else if(type===FieldTypeEnum.Number || type===FieldTypeEnum.NumberOptional) {
|
|
91
|
+
if(typeof(val)!=="number") return;
|
|
92
|
+
if(isNaN(val as number)) return;
|
|
93
|
+
return val as any;
|
|
94
|
+
} else if(type===FieldTypeEnum.BigInt || type===FieldTypeEnum.BigIntOptional) {
|
|
95
|
+
const result = parseBigInt(val);
|
|
96
|
+
if(result==null) return;
|
|
97
|
+
return result as any;
|
|
98
|
+
} else if(type===FieldTypeEnum.String || type===FieldTypeEnum.StringOptional) {
|
|
99
|
+
if(typeof(val)!=="string") return;
|
|
100
|
+
return val as any;
|
|
101
|
+
} else {
|
|
102
|
+
//Probably another request schema
|
|
103
|
+
const result = verifySchema(val, type as RequestSchema);
|
|
104
|
+
if(result==null) return;
|
|
105
|
+
return result as any;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export function verifySchema<T extends RequestSchema>(req: any, schema: T): RequestSchemaResult<T> | null {
|
|
111
|
+
if(req==null) return null;
|
|
112
|
+
const resultSchema: any = {};
|
|
113
|
+
for(let fieldName in schema) {
|
|
114
|
+
const val: any = req[fieldName];
|
|
115
|
+
|
|
116
|
+
const type: FieldTypeEnum | RequestSchema | ((val: any) => boolean) = schema[fieldName];
|
|
117
|
+
if(typeof(type)==="function") {
|
|
118
|
+
const result = type(val);
|
|
119
|
+
if(result==null) return null;
|
|
120
|
+
resultSchema[fieldName] = result;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if(val==null && isOptionalField(type as FieldTypeEnum)) {
|
|
125
|
+
resultSchema[fieldName] = null;
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if(type===FieldTypeEnum.Any || type===FieldTypeEnum.AnyOptional) {
|
|
130
|
+
resultSchema[fieldName] = val;
|
|
131
|
+
} else if(type===FieldTypeEnum.Boolean || type===FieldTypeEnum.BooleanOptional) {
|
|
132
|
+
if(typeof(val)!=="boolean") return null;
|
|
133
|
+
resultSchema[fieldName] = val;
|
|
134
|
+
} else if(type===FieldTypeEnum.Number || type===FieldTypeEnum.NumberOptional) {
|
|
135
|
+
if(typeof(val)!=="number") return null;
|
|
136
|
+
if(isNaN(val as number)) return null;
|
|
137
|
+
resultSchema[fieldName] = val;
|
|
138
|
+
} else if(type===FieldTypeEnum.BigInt || type===FieldTypeEnum.BigIntOptional) {
|
|
139
|
+
const result = parseBigInt(val);
|
|
140
|
+
if(result==null) return null;
|
|
141
|
+
resultSchema[fieldName] = result;
|
|
142
|
+
} else if(type===FieldTypeEnum.String || type===FieldTypeEnum.StringOptional) {
|
|
143
|
+
if(typeof(val)!=="string") return null;
|
|
144
|
+
resultSchema[fieldName] = val;
|
|
145
|
+
} else {
|
|
146
|
+
//Probably another request schema
|
|
147
|
+
const result = verifySchema(val, type as RequestSchema);
|
|
148
|
+
if(result==null) return null;
|
|
149
|
+
resultSchema[fieldName] = result;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return resultSchema;
|
|
153
|
+
}
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
import {ParamDecoder} from "../ParamDecoder";
|
|
2
|
-
import {Buffer} from "buffer";
|
|
3
|
-
|
|
4
|
-
import {getLogger} from "../../../utils/Logger";
|
|
5
|
-
|
|
6
|
-
const logger = getLogger("ResponseParamDecoder: ");
|
|
7
|
-
|
|
8
|
-
export class ResponseParamDecoder extends ParamDecoder {
|
|
9
|
-
|
|
10
|
-
private readonly reader?: ReadableStreamDefaultReader<Uint8Array>;
|
|
11
|
-
private readonly abortSignal?: AbortSignal;
|
|
12
|
-
|
|
13
|
-
constructor(resp: Response, abortSignal?: AbortSignal) {
|
|
14
|
-
super();
|
|
15
|
-
|
|
16
|
-
this.abortSignal = abortSignal;
|
|
17
|
-
|
|
18
|
-
try {
|
|
19
|
-
//Read from stream
|
|
20
|
-
if(resp.body==null) throw new Error("Response has no body field!");
|
|
21
|
-
this.reader = resp.body.getReader();
|
|
22
|
-
this.readResponse();
|
|
23
|
-
} catch (e) {
|
|
24
|
-
//Read in one piece
|
|
25
|
-
resp.arrayBuffer().then(respBuffer => {
|
|
26
|
-
super.onData(Buffer.from(respBuffer));
|
|
27
|
-
super.onEnd();
|
|
28
|
-
}).catch(e => {
|
|
29
|
-
super.onError(e);
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if(abortSignal!=null) abortSignal.addEventListener("abort", () => {
|
|
34
|
-
super.onError(abortSignal.reason);
|
|
35
|
-
if(this.reader!=null && !this.reader.closed) this.reader.cancel(abortSignal.reason);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Keeps reading the response until the reader closes
|
|
41
|
-
* @private
|
|
42
|
-
*/
|
|
43
|
-
private async readResponse() {
|
|
44
|
-
if(this.reader==null) return;
|
|
45
|
-
while(true) {
|
|
46
|
-
const readResp = await this.reader.read().catch(e => {
|
|
47
|
-
logger.error("readResponse(): Error reading response: ",e);
|
|
48
|
-
return null;
|
|
49
|
-
});
|
|
50
|
-
if(this.abortSignal!=null && this.abortSignal.aborted) return;
|
|
51
|
-
if(readResp==null || readResp.done) {
|
|
52
|
-
super.onEnd();
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
super.onData(Buffer.from(readResp.value));
|
|
56
|
-
}
|
|
57
|
-
}
|
|
1
|
+
import {ParamDecoder} from "../ParamDecoder";
|
|
2
|
+
import {Buffer} from "buffer";
|
|
3
|
+
|
|
4
|
+
import {getLogger} from "../../../utils/Logger";
|
|
5
|
+
|
|
6
|
+
const logger = getLogger("ResponseParamDecoder: ");
|
|
7
|
+
|
|
8
|
+
export class ResponseParamDecoder extends ParamDecoder {
|
|
9
|
+
|
|
10
|
+
private readonly reader?: ReadableStreamDefaultReader<Uint8Array>;
|
|
11
|
+
private readonly abortSignal?: AbortSignal;
|
|
12
|
+
|
|
13
|
+
constructor(resp: Response, abortSignal?: AbortSignal) {
|
|
14
|
+
super();
|
|
15
|
+
|
|
16
|
+
this.abortSignal = abortSignal;
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
//Read from stream
|
|
20
|
+
if(resp.body==null) throw new Error("Response has no body field!");
|
|
21
|
+
this.reader = resp.body.getReader();
|
|
22
|
+
this.readResponse();
|
|
23
|
+
} catch (e) {
|
|
24
|
+
//Read in one piece
|
|
25
|
+
resp.arrayBuffer().then(respBuffer => {
|
|
26
|
+
super.onData(Buffer.from(respBuffer));
|
|
27
|
+
super.onEnd();
|
|
28
|
+
}).catch(e => {
|
|
29
|
+
super.onError(e);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if(abortSignal!=null) abortSignal.addEventListener("abort", () => {
|
|
34
|
+
super.onError(abortSignal.reason);
|
|
35
|
+
if(this.reader!=null && !this.reader.closed) this.reader.cancel(abortSignal.reason);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Keeps reading the response until the reader closes
|
|
41
|
+
* @private
|
|
42
|
+
*/
|
|
43
|
+
private async readResponse() {
|
|
44
|
+
if(this.reader==null) return;
|
|
45
|
+
while(true) {
|
|
46
|
+
const readResp = await this.reader.read().catch(e => {
|
|
47
|
+
logger.error("readResponse(): Error reading response: ",e);
|
|
48
|
+
return null;
|
|
49
|
+
});
|
|
50
|
+
if(this.abortSignal!=null && this.abortSignal.aborted) return;
|
|
51
|
+
if(readResp==null || readResp.done) {
|
|
52
|
+
super.onEnd();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
super.onData(Buffer.from(readResp.value));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
58
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import {ParamEncoder} from "../ParamEncoder";
|
|
2
|
-
import {Buffer} from "buffer";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export class StreamParamEncoder extends ParamEncoder {
|
|
6
|
-
|
|
7
|
-
private readonly stream: TransformStream<Buffer>;
|
|
8
|
-
private closed: boolean = false;
|
|
9
|
-
|
|
10
|
-
constructor() {
|
|
11
|
-
let stream = new TransformStream<Buffer>();
|
|
12
|
-
let writeStream = stream.writable.getWriter();
|
|
13
|
-
writeStream.closed.then(() => this.closed = true);
|
|
14
|
-
super(writeStream.write.bind(writeStream), () => {
|
|
15
|
-
if(this.closed) return Promise.resolve();
|
|
16
|
-
this.closed = true;
|
|
17
|
-
return writeStream.close();
|
|
18
|
-
});
|
|
19
|
-
this.stream = stream;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Returns the readable stream to be passed to the fetch API
|
|
24
|
-
*/
|
|
25
|
-
getReadableStream(): ReadableStream<Buffer> {
|
|
26
|
-
return this.stream.readable;
|
|
27
|
-
}
|
|
28
|
-
|
|
1
|
+
import {ParamEncoder} from "../ParamEncoder";
|
|
2
|
+
import {Buffer} from "buffer";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export class StreamParamEncoder extends ParamEncoder {
|
|
6
|
+
|
|
7
|
+
private readonly stream: TransformStream<Buffer>;
|
|
8
|
+
private closed: boolean = false;
|
|
9
|
+
|
|
10
|
+
constructor() {
|
|
11
|
+
let stream = new TransformStream<Buffer>();
|
|
12
|
+
let writeStream = stream.writable.getWriter();
|
|
13
|
+
writeStream.closed.then(() => this.closed = true);
|
|
14
|
+
super(writeStream.write.bind(writeStream), () => {
|
|
15
|
+
if(this.closed) return Promise.resolve();
|
|
16
|
+
this.closed = true;
|
|
17
|
+
return writeStream.close();
|
|
18
|
+
});
|
|
19
|
+
this.stream = stream;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Returns the readable stream to be passed to the fetch API
|
|
24
|
+
*/
|
|
25
|
+
getReadableStream(): ReadableStream<Buffer> {
|
|
26
|
+
return this.stream.readable;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
29
|
}
|