@atomiqlabs/sdk 8.1.7 → 8.3.1
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/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
- package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
- package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
- package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
- package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
- package/dist/enums/FeeType.d.ts +7 -0
- package/dist/enums/FeeType.js +7 -0
- package/dist/enums/SwapAmountType.d.ts +7 -0
- package/dist/enums/SwapAmountType.js +7 -0
- package/dist/enums/SwapDirection.d.ts +7 -0
- package/dist/enums/SwapDirection.js +7 -0
- package/dist/enums/SwapType.d.ts +62 -1
- package/dist/enums/SwapType.js +62 -1
- package/dist/errors/IntermediaryError.d.ts +4 -0
- package/dist/errors/IntermediaryError.js +1 -0
- package/dist/errors/RequestError.d.ts +15 -1
- package/dist/errors/RequestError.js +8 -0
- package/dist/errors/UserError.d.ts +1 -0
- package/dist/errors/UserError.js +1 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.js +3 -4
- package/dist/intermediaries/Intermediary.d.ts +57 -10
- package/dist/intermediaries/Intermediary.js +37 -10
- package/dist/intermediaries/IntermediaryDiscovery.d.ts +55 -22
- package/dist/intermediaries/IntermediaryDiscovery.js +35 -22
- package/dist/prices/RedundantSwapPrice.d.ts +24 -3
- package/dist/prices/RedundantSwapPrice.js +21 -1
- package/dist/prices/SingleSwapPrice.d.ts +9 -6
- package/dist/prices/SingleSwapPrice.js +10 -7
- package/dist/prices/SwapPriceWithChain.d.ts +54 -16
- package/dist/prices/SwapPriceWithChain.js +58 -20
- package/dist/prices/abstract/ISwapPrice.d.ts +94 -45
- package/dist/prices/abstract/ISwapPrice.js +103 -55
- package/dist/prices/providers/BinancePriceProvider.d.ts +7 -0
- package/dist/prices/providers/BinancePriceProvider.js +7 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinGeckoPriceProvider.js +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +6 -0
- package/dist/prices/providers/CoinPaprikaPriceProvider.js +6 -0
- package/dist/prices/providers/CustomPriceProvider.d.ts +11 -0
- package/dist/prices/providers/CustomPriceProvider.js +11 -0
- package/dist/prices/providers/KrakenPriceProvider.d.ts +9 -0
- package/dist/prices/providers/KrakenPriceProvider.js +9 -0
- package/dist/prices/providers/OKXPriceProvider.d.ts +6 -0
- package/dist/prices/providers/OKXPriceProvider.js +6 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
- package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
- package/dist/storage/IUnifiedStorage.d.ts +19 -7
- package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
- package/dist/storage/UnifiedSwapStorage.js +29 -1
- package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
- package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
- package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
- package/dist/storage-browser/LocalStorageManager.js +25 -1
- package/dist/swapper/Swapper.d.ts +303 -222
- package/dist/swapper/Swapper.js +376 -344
- package/dist/swapper/SwapperFactory.d.ts +41 -17
- package/dist/swapper/SwapperFactory.js +23 -2
- package/dist/swapper/SwapperUtils.d.ts +75 -28
- package/dist/swapper/SwapperUtils.js +107 -60
- package/dist/swapper/SwapperWithChain.d.ts +286 -91
- package/dist/swapper/SwapperWithChain.js +218 -64
- package/dist/swapper/SwapperWithSigner.d.ts +229 -80
- package/dist/swapper/SwapperWithSigner.js +190 -44
- package/dist/swaps/IAddressSwap.d.ts +10 -1
- package/dist/swaps/IAddressSwap.js +2 -1
- package/dist/swaps/IBTCWalletSwap.d.ts +24 -6
- package/dist/swaps/IBTCWalletSwap.js +2 -1
- package/dist/swaps/IClaimableSwap.d.ts +36 -4
- package/dist/swaps/IClaimableSwap.js +2 -1
- package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
- package/dist/swaps/IRefundableSwap.d.ts +29 -3
- package/dist/swaps/IRefundableSwap.js +2 -1
- package/dist/swaps/ISwap.d.ts +159 -21
- package/dist/swaps/ISwap.js +90 -33
- package/dist/swaps/ISwapWithGasDrop.d.ts +6 -0
- package/dist/swaps/ISwapWithGasDrop.js +1 -0
- package/dist/swaps/ISwapWrapper.d.ts +157 -48
- package/dist/swaps/ISwapWrapper.js +130 -72
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +49 -6
- package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
- package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
- package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +94 -29
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +90 -27
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
- package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +275 -58
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +516 -239
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +76 -25
- package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +131 -49
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +311 -51
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +542 -193
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
- package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +209 -53
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +449 -242
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
- package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +197 -56
- package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +326 -189
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
- package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +60 -19
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +74 -31
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
- package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +36 -13
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +65 -19
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
- package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +328 -92
- package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +460 -219
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
- package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +244 -124
- package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +146 -18
- package/dist/swaps/trusted/ln/LnForGasSwap.js +173 -43
- package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
- package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +200 -47
- package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +230 -78
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
- package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
- package/dist/types/AmountData.d.ts +2 -1
- package/dist/types/CustomPriceFunction.d.ts +7 -1
- package/dist/types/SwapExecutionAction.d.ts +74 -4
- package/dist/types/SwapWithSigner.d.ts +4 -1
- package/dist/types/SwapWithSigner.js +5 -2
- package/dist/types/Token.d.ts +11 -5
- package/dist/types/Token.js +6 -3
- package/dist/types/TokenAmount.d.ts +3 -0
- package/dist/types/TokenAmount.js +2 -0
- package/dist/types/fees/Fee.d.ts +2 -1
- package/dist/types/fees/FeeBreakdown.d.ts +2 -1
- package/dist/types/fees/PercentagePPM.d.ts +2 -0
- package/dist/types/fees/PercentagePPM.js +1 -0
- package/dist/types/lnurl/LNURLPay.d.ts +14 -6
- package/dist/types/lnurl/LNURLPay.js +6 -2
- package/dist/types/lnurl/LNURLWithdraw.d.ts +12 -5
- package/dist/types/lnurl/LNURLWithdraw.js +6 -2
- package/dist/types/wallets/LightningInvoiceCreateService.d.ts +20 -0
- package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
- package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
- package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +3 -1
- package/dist/utils/BitcoinUtils.d.ts +1 -0
- package/dist/utils/BitcoinUtils.js +5 -1
- package/dist/utils/SwapUtils.d.ts +56 -1
- package/dist/utils/SwapUtils.js +53 -1
- package/dist/utils/TokenUtils.d.ts +10 -2
- package/dist/utils/TokenUtils.js +12 -4
- package/package.json +3 -3
- package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
- package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
- package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
- package/src/enums/FeeType.ts +7 -0
- package/src/enums/SwapAmountType.ts +7 -0
- package/src/enums/SwapDirection.ts +7 -0
- package/src/enums/SwapType.ts +62 -2
- package/src/errors/IntermediaryError.ts +4 -0
- package/src/errors/RequestError.ts +15 -1
- package/src/errors/UserError.ts +1 -0
- package/src/index.ts +6 -5
- package/src/intermediaries/Intermediary.ts +57 -10
- package/src/intermediaries/IntermediaryDiscovery.ts +60 -27
- package/src/prices/RedundantSwapPrice.ts +24 -4
- package/src/prices/SingleSwapPrice.ts +10 -7
- package/src/prices/SwapPriceWithChain.ts +59 -21
- package/src/prices/abstract/ISwapPrice.ts +114 -65
- package/src/prices/providers/BinancePriceProvider.ts +7 -0
- package/src/prices/providers/CoinGeckoPriceProvider.ts +6 -0
- package/src/prices/providers/CoinPaprikaPriceProvider.ts +6 -0
- package/src/prices/providers/CustomPriceProvider.ts +11 -0
- package/src/prices/providers/KrakenPriceProvider.ts +9 -0
- package/src/prices/providers/OKXPriceProvider.ts +6 -0
- package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
- package/src/storage/IUnifiedStorage.ts +19 -7
- package/src/storage/UnifiedSwapStorage.ts +33 -3
- package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
- package/src/storage-browser/LocalStorageManager.ts +25 -1
- package/src/swapper/Swapper.ts +513 -379
- package/src/swapper/SwapperFactory.ts +44 -21
- package/src/swapper/SwapperUtils.ts +107 -60
- package/src/swapper/SwapperWithChain.ts +320 -81
- package/src/swapper/SwapperWithSigner.ts +263 -56
- package/src/swaps/IAddressSwap.ts +11 -1
- package/src/swaps/IBTCWalletSwap.ts +24 -8
- package/src/swaps/IClaimableSwap.ts +39 -4
- package/src/swaps/IClaimableSwapWrapper.ts +11 -2
- package/src/swaps/IRefundableSwap.ts +32 -3
- package/src/swaps/ISwap.ts +221 -82
- package/src/swaps/ISwapWithGasDrop.ts +6 -0
- package/src/swaps/ISwapWrapper.ts +212 -94
- package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +62 -18
- package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
- package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
- package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
- package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +120 -51
- package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +559 -256
- package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +155 -61
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +590 -226
- package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +470 -243
- package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
- package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +352 -193
- package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +86 -39
- package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +88 -33
- package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
- package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +534 -263
- package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +289 -148
- package/src/swaps/trusted/ln/LnForGasSwap.ts +184 -45
- package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
- package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +260 -86
- package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
- package/src/types/AmountData.ts +2 -1
- package/src/types/CustomPriceFunction.ts +7 -1
- package/src/types/SwapExecutionAction.ts +84 -5
- package/src/types/SwapWithSigner.ts +7 -3
- package/src/types/Token.ts +12 -5
- package/src/types/TokenAmount.ts +3 -0
- package/src/types/fees/Fee.ts +2 -1
- package/src/types/fees/FeeBreakdown.ts +2 -1
- package/src/types/fees/PercentagePPM.ts +2 -0
- package/src/types/lnurl/LNURLPay.ts +14 -6
- package/src/types/lnurl/LNURLWithdraw.ts +12 -5
- package/src/types/wallets/LightningInvoiceCreateService.ts +26 -0
- package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
- package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +3 -1
- package/src/utils/BitcoinUtils.ts +5 -0
- package/src/utils/SwapUtils.ts +61 -1
- package/src/utils/TokenUtils.ts +12 -4
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
- package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
- package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
- package/dist/bitcoin/LightningNetworkApi.js +0 -2
- package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
- package/dist/bitcoin/mempool/MempoolApi.js +0 -311
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
- package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
- package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
- package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
- package/dist/errors/PaymentAuthError.d.ts +0 -11
- package/dist/errors/PaymentAuthError.js +0 -23
- package/src/errors/PaymentAuthError.ts +0 -26
|
@@ -30,6 +30,9 @@ export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProv
|
|
|
30
30
|
super(coinsMap, url, httpRequestTimeout);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* @inheritDoc
|
|
35
|
+
*/
|
|
33
36
|
protected async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
34
37
|
const response = await httpGet<KrakenResponse>(
|
|
35
38
|
this.url+"/public/Ticker?pair="+pair,
|
|
@@ -40,6 +43,9 @@ export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProv
|
|
|
40
43
|
return parseFloat(response.result[pair].c[0]);
|
|
41
44
|
}
|
|
42
45
|
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
43
49
|
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
44
50
|
const response = await httpGet<KrakenResponse>(
|
|
45
51
|
this.url+"/public/Ticker?pair=XBTUSDC",
|
|
@@ -50,6 +56,9 @@ export class KrakenPriceProvider<T extends MultiChain> extends ExchangePriceProv
|
|
|
50
56
|
return parseFloat(response.result["XBTUSDC"].c[0])/100000000;
|
|
51
57
|
}
|
|
52
58
|
|
|
59
|
+
/**
|
|
60
|
+
* @inheritDoc
|
|
61
|
+
*/
|
|
53
62
|
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
54
63
|
const pairs: string[] = token.coinId.split(";");
|
|
55
64
|
|
|
@@ -30,6 +30,9 @@ export class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvide
|
|
|
30
30
|
super(coinsMap, url, httpRequestTimeout);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* @inheritDoc
|
|
35
|
+
*/
|
|
33
36
|
async fetchPair(pair: string, abortSignal?: AbortSignal) {
|
|
34
37
|
const response = await httpGet<OKXResponse>(
|
|
35
38
|
this.url+"/market/index-tickers?instId="+pair,
|
|
@@ -40,6 +43,9 @@ export class OKXPriceProvider<T extends MultiChain> extends ExchangePriceProvide
|
|
|
40
43
|
return parseFloat(response.data[0].idxPx);
|
|
41
44
|
}
|
|
42
45
|
|
|
46
|
+
/**
|
|
47
|
+
* @inheritDoc
|
|
48
|
+
*/
|
|
43
49
|
protected async fetchUsdPrice(abortSignal?: AbortSignal): Promise<number> {
|
|
44
50
|
const response = await httpGet<OKXResponse>(
|
|
45
51
|
this.url+"/market/index-tickers?instId=BTC-USD",
|
|
@@ -13,6 +13,9 @@ export abstract class ExchangePriceProvider<T extends MultiChain> extends HttpPr
|
|
|
13
13
|
*/
|
|
14
14
|
protected abstract fetchPair(pair: string, abortSignal?: AbortSignal): Promise<number>;
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
16
19
|
protected async fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint> {
|
|
17
20
|
const pairs: string[] = token.coinId.split(";");
|
|
18
21
|
const prices: number[] = await Promise.all(pairs.map(pair => {
|
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Params for querying the storage
|
|
4
|
+
*
|
|
4
5
|
* @category Storage
|
|
5
6
|
*/
|
|
6
7
|
export type QueryParams = {
|
|
8
|
+
/**
|
|
9
|
+
* Key that should be matched
|
|
10
|
+
*/
|
|
7
11
|
key: string,
|
|
12
|
+
/**
|
|
13
|
+
* A value that the key needs to have, if an array is passed, the conditions are `OR`-ed
|
|
14
|
+
*/
|
|
8
15
|
value: any | any[]
|
|
9
16
|
};
|
|
10
17
|
|
|
11
18
|
/**
|
|
12
|
-
* Base type for stored objects
|
|
19
|
+
* Base type for stored objects, every storage object MUST have an `id` field
|
|
20
|
+
*
|
|
13
21
|
* @category Storage
|
|
14
22
|
*/
|
|
15
23
|
export type UnifiedStoredObject = {id: string} & any;
|
|
16
24
|
|
|
17
25
|
/**
|
|
18
26
|
* Defines simple indexes (for queries that use a single key)
|
|
27
|
+
*
|
|
19
28
|
* @category Storage
|
|
20
29
|
*/
|
|
21
30
|
export type UnifiedStorageIndexes = readonly {
|
|
@@ -27,6 +36,7 @@ export type UnifiedStorageIndexes = readonly {
|
|
|
27
36
|
|
|
28
37
|
/**
|
|
29
38
|
* Defines composite indexes (for queries that use multiple keys)
|
|
39
|
+
*
|
|
30
40
|
* @category Storage
|
|
31
41
|
*/
|
|
32
42
|
export type UnifiedStorageCompositeIndexes = readonly {
|
|
@@ -35,13 +45,15 @@ export type UnifiedStorageCompositeIndexes = readonly {
|
|
|
35
45
|
}[];
|
|
36
46
|
|
|
37
47
|
/**
|
|
38
|
-
* Interface for unified storage implementations
|
|
48
|
+
* Interface for a generic unified storage implementations
|
|
49
|
+
*
|
|
39
50
|
* @category Storage
|
|
40
51
|
*/
|
|
41
52
|
export interface IUnifiedStorage<I extends UnifiedStorageIndexes, C extends UnifiedStorageCompositeIndexes> {
|
|
42
53
|
|
|
43
54
|
/**
|
|
44
55
|
* Initializes the storage with given indexes and composite indexes
|
|
56
|
+
*
|
|
45
57
|
* @param indexes
|
|
46
58
|
* @param compositeIndexes
|
|
47
59
|
*/
|
|
@@ -58,25 +70,25 @@ export interface IUnifiedStorage<I extends UnifiedStorageIndexes, C extends Unif
|
|
|
58
70
|
|
|
59
71
|
/**
|
|
60
72
|
* Saves an object to storage, updating indexes as needed
|
|
61
|
-
* @param value
|
|
73
|
+
* @param value Object to save (must have an id property)
|
|
62
74
|
*/
|
|
63
75
|
save(value: UnifiedStoredObject): Promise<void>;
|
|
64
76
|
|
|
65
77
|
/**
|
|
66
78
|
* Saves multiple objects to storage in a batch operation
|
|
67
|
-
* @param value
|
|
79
|
+
* @param value Array of objects to save
|
|
68
80
|
*/
|
|
69
81
|
saveAll(value: UnifiedStoredObject[]): Promise<void>;
|
|
70
82
|
|
|
71
83
|
/**
|
|
72
84
|
* Removes an object from storage
|
|
73
|
-
* @param value
|
|
85
|
+
* @param value Object to remove (must have an id property)
|
|
74
86
|
*/
|
|
75
87
|
remove(value: UnifiedStoredObject): Promise<void>;
|
|
76
88
|
|
|
77
89
|
/**
|
|
78
90
|
* Removes multiple objects from storage in a batch operation
|
|
79
|
-
* @param value
|
|
91
|
+
* @param value Array of objects to remove
|
|
80
92
|
*/
|
|
81
93
|
removeAll(value: UnifiedStoredObject[]): Promise<void>;
|
|
82
94
|
|
|
@@ -15,7 +15,8 @@ const indexes = [
|
|
|
15
15
|
{key: "paymentHash", type: "string", unique: false, nullable: true},
|
|
16
16
|
] as const;
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* Simple index types for SDK swap storage
|
|
19
|
+
*
|
|
19
20
|
* @category Storage
|
|
20
21
|
*/
|
|
21
22
|
export type UnifiedSwapStorageIndexes = typeof indexes;
|
|
@@ -27,13 +28,16 @@ const compositeIndexes = [
|
|
|
27
28
|
{keys: ["type", "initiator", "state"], unique: false}
|
|
28
29
|
] as const;
|
|
29
30
|
/**
|
|
30
|
-
* Composite index types for swap storage
|
|
31
|
+
* Composite index types for SDK swap storage
|
|
32
|
+
*
|
|
31
33
|
* @category Storage
|
|
32
34
|
*/
|
|
33
35
|
export type UnifiedSwapStorageCompositeIndexes = typeof compositeIndexes;
|
|
34
36
|
|
|
35
37
|
/**
|
|
36
|
-
* Unified swap persistence layer
|
|
38
|
+
* Unified swap persistence layer for the SDK utilizing an underlying {@link IUnifiedStorage} instance
|
|
39
|
+
* with optional in-memory caching via weak refs {@link WeakRef}
|
|
40
|
+
*
|
|
37
41
|
* @category Storage
|
|
38
42
|
*/
|
|
39
43
|
export class UnifiedSwapStorage<T extends ChainType> {
|
|
@@ -42,11 +46,20 @@ export class UnifiedSwapStorage<T extends ChainType> {
|
|
|
42
46
|
readonly weakRefCache: Map<string, WeakRef<ISwap<T>>> = new Map();
|
|
43
47
|
readonly noWeakRefMap?: boolean;
|
|
44
48
|
|
|
49
|
+
/**
|
|
50
|
+
* @param storage Underlying storage persistence layer
|
|
51
|
+
* @param noWeakRefMap Whether to disable caching of the swap objects in the weak ref map, this
|
|
52
|
+
* should be set when you need multiple different clients accessing the same swap database (such
|
|
53
|
+
* as when running the SDK in a serverless environment like AWS or Azure)
|
|
54
|
+
*/
|
|
45
55
|
constructor(storage: IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedSwapStorageCompositeIndexes>, noWeakRefMap?: boolean) {
|
|
46
56
|
this.storage = storage;
|
|
47
57
|
this.noWeakRefMap = noWeakRefMap;
|
|
48
58
|
}
|
|
49
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Initializes the underlying storage
|
|
62
|
+
*/
|
|
50
63
|
init(): Promise<void> {
|
|
51
64
|
return this.storage.init(indexes, compositeIndexes);
|
|
52
65
|
}
|
|
@@ -81,21 +94,38 @@ export class UnifiedSwapStorage<T extends ChainType> {
|
|
|
81
94
|
return result;
|
|
82
95
|
}
|
|
83
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Saves the swap to storage, updating indexes as needed
|
|
99
|
+
*
|
|
100
|
+
* @param value Swap to save
|
|
101
|
+
*/
|
|
84
102
|
save<S extends ISwap<T>>(value: S): Promise<void> {
|
|
85
103
|
if(!this.noWeakRefMap) this.weakRefCache.set(value.getId(), new WeakRef<ISwap<T>>(value));
|
|
86
104
|
return this.storage.save(value.serialize());
|
|
87
105
|
}
|
|
88
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Saves multiple swaps to storage in a batch operation
|
|
109
|
+
* @param values Array of swaps to save
|
|
110
|
+
*/
|
|
89
111
|
saveAll<S extends ISwap<T>>(values: S[]): Promise<void> {
|
|
90
112
|
if(!this.noWeakRefMap) values.forEach(value => this.weakRefCache.set(value.getId(), new WeakRef<ISwap<T>>(value)));
|
|
91
113
|
return this.storage.saveAll(values.map(obj => obj.serialize()));
|
|
92
114
|
}
|
|
93
115
|
|
|
116
|
+
/**
|
|
117
|
+
* Removes a swap from storage
|
|
118
|
+
* @param value Swap to remove
|
|
119
|
+
*/
|
|
94
120
|
remove<S extends ISwap<T>>(value: S): Promise<void> {
|
|
95
121
|
if(!this.noWeakRefMap) this.weakRefCache.delete(value.getId());
|
|
96
122
|
return this.storage.remove(value.serialize());
|
|
97
123
|
}
|
|
98
124
|
|
|
125
|
+
/**
|
|
126
|
+
* Removes multiple swaps from storage in a batch operation
|
|
127
|
+
* @param values Array of swaps to remove
|
|
128
|
+
*/
|
|
99
129
|
removeAll<S extends ISwap<T>>(values: S[]): Promise<void> {
|
|
100
130
|
if(!this.noWeakRefMap) values.forEach(value => this.weakRefCache.delete(value.getId()));
|
|
101
131
|
return this.storage.removeAll(values.map(obj => obj.serialize()));
|
|
@@ -60,13 +60,14 @@ const indexes: Record<string, {key: string | string[], unique: boolean}> = {
|
|
|
60
60
|
|
|
61
61
|
/**
|
|
62
62
|
* Browser IndexedDB storage implementation
|
|
63
|
+
*
|
|
63
64
|
* @category Storage
|
|
64
65
|
*/
|
|
65
66
|
export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStorageIndexes, UnifiedStorageCompositeIndexes> {
|
|
66
67
|
|
|
67
68
|
protected readonly logger: LoggerType;
|
|
68
69
|
|
|
69
|
-
storageKey: string;
|
|
70
|
+
readonly storageKey: string;
|
|
70
71
|
db?: IDBDatabase;
|
|
71
72
|
|
|
72
73
|
constructor(storageKey: string) {
|
|
@@ -166,7 +167,15 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
|
|
|
166
167
|
}
|
|
167
168
|
}
|
|
168
169
|
|
|
169
|
-
|
|
170
|
+
/**
|
|
171
|
+
* Attempts to migrate the swap database from old implementations (either using prior version of IndexedDB or
|
|
172
|
+
* Local Storage)
|
|
173
|
+
*
|
|
174
|
+
* NOTE: Reviver also needs to update the swap to the latest version
|
|
175
|
+
*
|
|
176
|
+
* @param storageKeys An array of tuples of storage keys used for the corresponding swap types
|
|
177
|
+
* @param reviver Swap data deserializer
|
|
178
|
+
*/
|
|
170
179
|
public async tryMigrate(storageKeys: [string, SwapType][], reviver: (obj: any) => ISwap): Promise<boolean> {
|
|
171
180
|
let someMigrated = false;
|
|
172
181
|
for(let storageKey of storageKeys) {
|
|
@@ -231,6 +240,9 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
|
|
|
231
240
|
return result.flat();
|
|
232
241
|
}
|
|
233
242
|
|
|
243
|
+
/**
|
|
244
|
+
* @inheritDoc
|
|
245
|
+
*/
|
|
234
246
|
async init(): Promise<void> {
|
|
235
247
|
if(this.db==null) {
|
|
236
248
|
this.db = await new Promise<IDBDatabase>((resolve, reject) => {
|
|
@@ -251,11 +263,7 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
|
|
|
251
263
|
}
|
|
252
264
|
|
|
253
265
|
/**
|
|
254
|
-
*
|
|
255
|
-
* - [[condition1, condition2]] - returns all rows where condition1 AND condition2 is met
|
|
256
|
-
* - [[condition1], [condition2]] - returns all rows where condition1 OR condition2 is met
|
|
257
|
-
* - [[condition1, condition2], [condition3]] - returns all rows where (condition1 AND condition2) OR condition3 is met
|
|
258
|
-
* @param params
|
|
266
|
+
* @inheritDoc
|
|
259
267
|
*/
|
|
260
268
|
async query(params: Array<Array<QueryParams>>): Promise<Array<UnifiedStoredObject>> {
|
|
261
269
|
if(params.length===0) return await this.querySingle([]);
|
|
@@ -264,7 +272,10 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
|
|
|
264
272
|
return Array.from(resultSet);
|
|
265
273
|
}
|
|
266
274
|
|
|
267
|
-
|
|
275
|
+
/**
|
|
276
|
+
* @internal
|
|
277
|
+
*/
|
|
278
|
+
protected async querySingle(params: Array<QueryParams>): Promise<Array<UnifiedStoredObject>> {
|
|
268
279
|
if(params.length===0) {
|
|
269
280
|
return await this.executeTransaction((objectStore) => objectStore.getAll(), true);
|
|
270
281
|
}
|
|
@@ -302,11 +313,17 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
|
|
|
302
313
|
}
|
|
303
314
|
}
|
|
304
315
|
|
|
316
|
+
/**
|
|
317
|
+
* @inheritDoc
|
|
318
|
+
*/
|
|
305
319
|
async remove(object: UnifiedStoredObject): Promise<void> {
|
|
306
320
|
await this.executeTransaction<undefined>(store => store.delete(object.id), false)
|
|
307
321
|
.catch(() => null);
|
|
308
322
|
}
|
|
309
323
|
|
|
324
|
+
/**
|
|
325
|
+
* @inheritDoc
|
|
326
|
+
*/
|
|
310
327
|
async removeAll(arr: UnifiedStoredObject[]): Promise<void> {
|
|
311
328
|
if(arr.length===0) return;
|
|
312
329
|
await this.executeTransactionArr<undefined>(store => arr.map(object => {
|
|
@@ -314,10 +331,16 @@ export class IndexedDBUnifiedStorage implements IUnifiedStorage<UnifiedSwapStora
|
|
|
314
331
|
}), false);
|
|
315
332
|
}
|
|
316
333
|
|
|
334
|
+
/**
|
|
335
|
+
* @inheritDoc
|
|
336
|
+
*/
|
|
317
337
|
async save(object: UnifiedStoredObject): Promise<void> {
|
|
318
338
|
await this.executeTransaction<IDBValidKey>(store => store.put(object), false);
|
|
319
339
|
}
|
|
320
340
|
|
|
341
|
+
/**
|
|
342
|
+
* @inheritDoc
|
|
343
|
+
*/
|
|
321
344
|
async saveAll(arr: UnifiedStoredObject[]): Promise<void> {
|
|
322
345
|
if(arr.length===0) return;
|
|
323
346
|
await this.executeTransactionArr<IDBValidKey>(store => arr.map(object => {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {IStorageManager, StorageObject} from "@atomiqlabs/base";
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* {@link IStorageManager} implementation using browser's local storage API, this is used as general purpose
|
|
5
|
+
* key-value storage, not used for storing swaps! See {@link IUnifiedStorage} for swap storage interface.
|
|
6
|
+
*
|
|
5
7
|
* @category Storage
|
|
6
8
|
*/
|
|
7
9
|
export class LocalStorageManager<T extends StorageObject> implements IStorageManager<T> {
|
|
@@ -15,10 +17,17 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
|
|
|
15
17
|
[hash: string]: T
|
|
16
18
|
} = {};
|
|
17
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @param storageKey The key-value store is stored as JSON serialized parameter of the Local Storage under
|
|
22
|
+
* the specified `storageKey`
|
|
23
|
+
*/
|
|
18
24
|
constructor(storageKey: string) {
|
|
19
25
|
this.storageKey = storageKey;
|
|
20
26
|
}
|
|
21
27
|
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
22
31
|
init(): Promise<void> {
|
|
23
32
|
const completedTxt = window.localStorage.getItem(this.storageKey);
|
|
24
33
|
if(completedTxt!=null) {
|
|
@@ -30,6 +39,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
|
|
|
30
39
|
return Promise.resolve();
|
|
31
40
|
}
|
|
32
41
|
|
|
42
|
+
/**
|
|
43
|
+
* @inheritDoc
|
|
44
|
+
*/
|
|
33
45
|
saveData(hash: string, object: T): Promise<void> {
|
|
34
46
|
this.data[hash] = object;
|
|
35
47
|
this.rawData[hash] = object.serialize();
|
|
@@ -37,6 +49,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
|
|
|
37
49
|
return this.save();
|
|
38
50
|
}
|
|
39
51
|
|
|
52
|
+
/**
|
|
53
|
+
* @inheritDoc
|
|
54
|
+
*/
|
|
40
55
|
saveDataArr(arr: {id: string, object: T}[]): Promise<void> {
|
|
41
56
|
arr.forEach(e => {
|
|
42
57
|
this.data[e.id] = e.object;
|
|
@@ -46,6 +61,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
|
|
|
46
61
|
return this.save();
|
|
47
62
|
}
|
|
48
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @inheritDoc
|
|
66
|
+
*/
|
|
49
67
|
removeData(hash: string): Promise<void> {
|
|
50
68
|
if(this.rawData[hash]!=null) {
|
|
51
69
|
if(this.data[hash]!=null) delete this.data[hash];
|
|
@@ -55,6 +73,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
|
|
|
55
73
|
return Promise.resolve();
|
|
56
74
|
}
|
|
57
75
|
|
|
76
|
+
/**
|
|
77
|
+
* @inheritDoc
|
|
78
|
+
*/
|
|
58
79
|
removeDataArr(hashArr: string[]): Promise<void> {
|
|
59
80
|
hashArr.forEach(hash => {
|
|
60
81
|
if(this.rawData[hash]!=null) {
|
|
@@ -65,6 +86,9 @@ export class LocalStorageManager<T extends StorageObject> implements IStorageMan
|
|
|
65
86
|
return this.save();
|
|
66
87
|
}
|
|
67
88
|
|
|
89
|
+
/**
|
|
90
|
+
* @inheritDoc
|
|
91
|
+
*/
|
|
68
92
|
loadData(type: new (data: any) => T): Promise<T[]> {
|
|
69
93
|
return Promise.resolve(
|
|
70
94
|
Object.keys(this.rawData).map(e => {
|