@velora-dex/widget 0.1.2 → 0.1.3
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/components/web3/providers.d.ts +3 -0
- package/dist/components/web3/providers.d.ts.map +1 -1
- package/dist/components/web3/providers.js +18 -3
- package/dist/components/web3/providers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/Drawers.js +33 -29
- package/dist/components/widget/AppHeader/Activities/Drawers.js.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/Activities/hooks.js +193 -106
- package/dist/components/widget/AppHeader/Activities/hooks.js.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.d.ts.map +1 -1
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js +67 -42
- package/dist/components/widget/AppHeader/TradeModeSwitcher.js.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.d.ts.map +1 -1
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js +207 -191
- package/dist/components/widget/Dialog/SelectTokenDialog/SelectTokenDialog.js.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.d.ts.map +1 -1
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js +10 -3
- package/dist/components/widget/ReceiverAddress/state/subscriptions.js.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.d.ts.map +1 -1
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js +37 -39
- package/dist/components/widget/ReviewAndConfirm/FillOtcReviewAndConfirm/FillOtcReviewAndConfirm.js.map +1 -1
- package/dist/components/widget/TokenInput/EmptyInput.d.ts +1 -1
- package/dist/components/widget/TokenInput/EmptyInput.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/EmptyInput.js +16 -14
- package/dist/components/widget/TokenInput/EmptyInput.js.map +1 -1
- package/dist/components/widget/TokenInput/index.d.ts.map +1 -1
- package/dist/components/widget/TokenInput/index.js +92 -91
- package/dist/components/widget/TokenInput/index.js.map +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.d.ts.map +1 -1
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js +34 -31
- package/dist/components/widget/TokenSwitcher/TokenSwitcher.js.map +1 -1
- package/dist/configurator/Configurator.d.ts.map +1 -1
- package/dist/core/Updaters.d.ts.map +1 -1
- package/dist/core/Updaters.js +9 -5
- package/dist/core/Updaters.js.map +1 -1
- package/dist/core/across/utils.d.ts.map +1 -1
- package/dist/core/across/utils.js +4 -4
- package/dist/core/across/utils.js.map +1 -1
- package/dist/core/constants.d.ts +5 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +11 -1
- package/dist/core/constants.js.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +191 -120
- package/dist/core/index.js.map +1 -1
- package/dist/core/inputs/hooks/types.d.ts +1 -1
- package/dist/core/inputs/hooks/types.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenFromInputProps.js +36 -43
- package/dist/core/inputs/hooks/useTokenFromInputProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenSwitcherProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenSwitcherProps.js +17 -7
- package/dist/core/inputs/hooks/useTokenSwitcherProps.js.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.d.ts.map +1 -1
- package/dist/core/inputs/hooks/useTokenToInputProps.js +64 -77
- package/dist/core/inputs/hooks/useTokenToInputProps.js.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/selectedTokenActionsAtom.js +58 -28
- package/dist/core/inputs/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.d.ts.map +1 -1
- package/dist/core/inputs/state/setTokenByAddressAtom.js +10 -9
- package/dist/core/inputs/state/setTokenByAddressAtom.js.map +1 -1
- package/dist/core/inputs/state/subscriptions.d.ts.map +1 -1
- package/dist/core/inputs/state/subscriptions.js +2 -1
- package/dist/core/inputs/state/subscriptions.js.map +1 -1
- package/dist/core/limit/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/limit/state/selectedTokenActionsAtom.js +3 -3
- package/dist/core/limit/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenFromInputProps.js +35 -42
- package/dist/core/limit/useLimitTokenFromInputProps.js.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.d.ts.map +1 -1
- package/dist/core/limit/useLimitTokenToInputProps.js +9 -20
- package/dist/core/limit/useLimitTokenToInputProps.js.map +1 -1
- package/dist/core/otc/state/selectedTokenActionsAtom.d.ts.map +1 -1
- package/dist/core/otc/state/selectedTokenActionsAtom.js +3 -3
- package/dist/core/otc/state/selectedTokenActionsAtom.js.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.d.ts.map +1 -1
- package/dist/core/otc/useOtcTokenFromInputProps.js +35 -42
- package/dist/core/otc/useOtcTokenFromInputProps.js.map +1 -1
- package/dist/core/otc/useOtcTokenToInputProps.d.ts.map +1 -1
- package/dist/core/otc/useOtcTokenToInputProps.js +9 -20
- package/dist/core/otc/useOtcTokenToInputProps.js.map +1 -1
- package/dist/core/state/configActionsAtom.d.ts +5 -2
- package/dist/core/state/configActionsAtom.d.ts.map +1 -1
- package/dist/core/state/configActionsAtom.js +24 -12
- package/dist/core/state/configActionsAtom.js.map +1 -1
- package/dist/core/state/configAtom.d.ts +33 -11
- package/dist/core/state/configAtom.d.ts.map +1 -1
- package/dist/core/state/configAtom.js +15 -1
- package/dist/core/state/configAtom.js.map +1 -1
- package/dist/core/state/configEffectAtom.d.ts +5 -0
- package/dist/core/state/configEffectAtom.d.ts.map +1 -0
- package/dist/core/state/configEffectAtom.js +56 -0
- package/dist/core/state/configEffectAtom.js.map +1 -0
- package/dist/core/state/enabledChainsAtom.d.ts +10 -0
- package/dist/core/state/enabledChainsAtom.d.ts.map +1 -0
- package/dist/core/state/enabledChainsAtom.js +101 -0
- package/dist/core/state/enabledChainsAtom.js.map +1 -0
- package/dist/core/state/enabledTradeModesAtom.d.ts +3 -0
- package/dist/core/state/enabledTradeModesAtom.d.ts.map +1 -0
- package/dist/core/state/enabledTradeModesAtom.js +31 -0
- package/dist/core/state/enabledTradeModesAtom.js.map +1 -0
- package/dist/core/state/tradeModeAtom.d.ts +2 -1
- package/dist/core/state/tradeModeAtom.d.ts.map +1 -1
- package/dist/core/state/tradeModeAtom.js +9 -2
- package/dist/core/state/tradeModeAtom.js.map +1 -1
- package/dist/core/subscriptions.d.ts.map +1 -1
- package/dist/core/subscriptions.js +0 -2
- package/dist/core/subscriptions.js.map +1 -1
- package/dist/core/types.d.ts +12 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/hooks/otc/mutations/useFillOrder.js +4 -1
- package/dist/hooks/otc/mutations/useFillOrder.js.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.d.ts +5 -2
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.d.ts.map +1 -1
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js +19 -2
- package/dist/hooks/swap/prices/delta/queries/useBridgeInfo.js.map +1 -1
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.d.ts.map +1 -1
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.js +41 -39
- package/dist/hooks/tokens/data/useCombineTokensWithFetched.js.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.d.ts.map +1 -1
- package/dist/hooks/txs/queries/useAwaitTx.js +11 -7
- package/dist/hooks/txs/queries/useAwaitTx.js.map +1 -1
- package/dist/hooks/useAvailableCrosses.d.ts +3 -2
- package/dist/hooks/useAvailableCrosses.d.ts.map +1 -1
- package/dist/hooks/useAvailableCrosses.js +23 -20
- package/dist/hooks/useAvailableCrosses.js.map +1 -1
- package/dist/hooks/useGlobalDeltaEnabled.d.ts +1 -0
- package/dist/hooks/useGlobalDeltaEnabled.d.ts.map +1 -1
- package/dist/hooks/useGlobalDeltaEnabled.js +22 -17
- package/dist/hooks/useGlobalDeltaEnabled.js.map +1 -1
- package/dist/hooks/useSelectableDestChains.d.ts +14 -0
- package/dist/hooks/useSelectableDestChains.d.ts.map +1 -0
- package/dist/hooks/useSelectableDestChains.js +91 -0
- package/dist/hooks/useSelectableDestChains.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/constants/delta.js +1 -1
- package/dist/lib/constants/delta.js.map +1 -1
- package/dist/lib/constants/index.js +1 -1
- package/dist/lib/constants/index.js.map +1 -1
- package/dist/lib/tradeMode.d.ts +4 -0
- package/dist/lib/tradeMode.d.ts.map +1 -0
- package/dist/lib/tradeMode.js +8 -0
- package/dist/lib/tradeMode.js.map +1 -0
- package/dist/lib/utils/atomWithCompare.d.ts +2 -0
- package/dist/lib/utils/atomWithCompare.d.ts.map +1 -0
- package/dist/lib/utils/atomWithCompare.js +13 -0
- package/dist/lib/utils/atomWithCompare.js.map +1 -0
- package/dist/lib/utils/index.d.ts +2 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +17 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/web3/wagmi/config.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/config.js +2 -1
- package/dist/lib/web3/wagmi/config.js.map +1 -1
- package/dist/lib/web3/wagmi/constants.d.ts +2 -1
- package/dist/lib/web3/wagmi/constants.d.ts.map +1 -1
- package/dist/lib/web3/wagmi/constants.js.map +1 -1
- package/dist/lib/web3/wagmi/switchChain.d.ts +1169 -0
- package/dist/lib/web3/wagmi/switchChain.d.ts.map +1 -0
- package/dist/lib/web3/wagmi/switchChain.js +23 -0
- package/dist/lib/web3/wagmi/switchChain.js.map +1 -0
- package/dist/lib/web3/wagmi/types.d.ts +2 -2
- package/dist/lib/web3/wagmi/types.d.ts.map +1 -1
- package/dist/styles.css +3 -0
- package/dist/tokens/lists/constants.d.ts +1 -0
- package/dist/tokens/lists/constants.d.ts.map +1 -1
- package/dist/tokens/lists/constants.js +6 -2
- package/dist/tokens/lists/constants.js.map +1 -1
- package/dist/tokens/lists/lists.json.d.ts +23 -44
- package/dist/tokens/lists/lists.json.js +354 -1
- package/dist/tokens/lists/lists.json.js.map +1 -1
- package/dist/tokens/lists/state/effects.d.ts +2 -0
- package/dist/tokens/lists/state/effects.d.ts.map +1 -0
- package/dist/tokens/lists/state/effects.js +25 -0
- package/dist/tokens/lists/state/effects.js.map +1 -0
- package/dist/tokens/lists/state/tokenListsActionsAtom.js +3 -3
- package/dist/tokens/lists/state/tokenListsActionsAtom.js.map +1 -1
- package/dist/tokens/lists/state/tokenListsStateAtom.d.ts +16 -7
- package/dist/tokens/lists/state/tokenListsStateAtom.d.ts.map +1 -1
- package/dist/tokens/lists/state/tokenListsStateAtom.js +50 -5
- package/dist/tokens/lists/state/tokenListsStateAtom.js.map +1 -1
- package/dist/tokens/lists/types.d.ts.map +1 -1
- package/dist/tokens/lists/utils.js +1 -1
- package/dist/tokens/queries.d.ts +4 -2
- package/dist/tokens/queries.d.ts.map +1 -1
- package/dist/tokens/queries.js +25 -15
- package/dist/tokens/queries.js.map +1 -1
- package/dist/tokens/state/fromListsAtom.js +4 -4
- package/dist/tokens/state/fromListsAtom.js.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.d.ts +3 -2
- package/dist/transactions/queries/ensureTxReceipt.d.ts.map +1 -1
- package/dist/transactions/queries/ensureTxReceipt.js +26 -6
- package/dist/transactions/queries/ensureTxReceipt.js.map +1 -1
- package/dist/transactions/state/hooks/useTransactions.d.ts +2 -0
- package/dist/transactions/state/hooks/useTransactions.d.ts.map +1 -1
- package/dist/transactions/state/hooks/useTransactions.js +59 -1
- package/dist/transactions/state/hooks/useTransactions.js.map +1 -1
- package/package.json +5 -4
- package/dist/tokens/lists/hooks.d.ts +0 -2
- package/dist/tokens/lists/hooks.d.ts.map +0 -1
- package/dist/tokens/lists/hooks.js +0 -26
- package/dist/tokens/lists/hooks.js.map +0 -1
- package/dist/tokens/lists/state/observer.d.ts +0 -2
- package/dist/tokens/lists/state/observer.d.ts.map +0 -1
- package/dist/tokens/lists/state/observer.js +0 -18
- package/dist/tokens/lists/state/observer.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jotaiStore } from '../../../core/inputs/state/store.js';
|
|
2
|
+
import { queryClient } from '../../../lib/queryClient.js';
|
|
3
|
+
import { produceSingleQueryOptionMin } from '../../queries.js';
|
|
4
|
+
import { atomEffect } from 'jotai-effect';
|
|
5
|
+
import { addTokenListsAtom } from './tokenListsActionsAtom.js';
|
|
6
|
+
import { tokenListUrlsAtom } from './tokenListsStateAtom.js';
|
|
7
|
+
import { useAtomValue } from 'jotai';
|
|
8
|
+
|
|
9
|
+
const addedUrlsSet = /* @__PURE__ */ new Set();
|
|
10
|
+
async function addTokenList(url) {
|
|
11
|
+
if (addedUrlsSet.has(url)) return;
|
|
12
|
+
const queryOptions = produceSingleQueryOptionMin(url);
|
|
13
|
+
const tokenList = await queryClient.ensureQueryData(queryOptions);
|
|
14
|
+
addedUrlsSet.add(url);
|
|
15
|
+
if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);
|
|
16
|
+
}
|
|
17
|
+
const addTokenListEffect = atomEffect((get) => {
|
|
18
|
+
get(tokenListUrlsAtom).forEach(addTokenList);
|
|
19
|
+
});
|
|
20
|
+
function useActivateEffects() {
|
|
21
|
+
useAtomValue(addTokenListEffect);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { useActivateEffects };
|
|
25
|
+
//# sourceMappingURL=effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effects.js","sources":["../../../../src/tokens/lists/state/effects.ts"],"sourcesContent":["import { jotaiStore } from \"@/core/inputs/state/store\";\nimport { queryClient } from \"@/lib/queryClient\";\nimport { produceSingleQueryOptionMin } from \"@/tokens/queries\";\nimport { atomEffect } from \"jotai-effect\";\nimport { addTokenListsAtom } from \"./tokenListsActionsAtom\";\nimport { tokenListUrlsAtom } from \"./tokenListsStateAtom\";\nimport { useAtomValue } from \"jotai\";\n\nconst addedUrlsSet = new Set<string>();\n\nasync function addTokenList(url: string) {\n // list already in store\n if (addedUrlsSet.has(url)) return;\n\n // fetch token list or get from cache\n const queryOptions = produceSingleQueryOptionMin(url);\n const tokenList = await queryClient.ensureQueryData(queryOptions);\n\n // add url to set\n addedUrlsSet.add(url);\n\n // add to state once per fetched list\n if (tokenList?.available) jotaiStore.set(addTokenListsAtom, [tokenList]);\n}\n\nconst addTokenListEffect = atomEffect((get) => {\n get(tokenListUrlsAtom).forEach(addTokenList);\n});\n\nexport function useActivateEffects() {\n useAtomValue(addTokenListEffect);\n}\n"],"names":["addedUrlsSet","Set","addTokenList","url","has","queryOptions","produceSingleQueryOptionMin","tokenList","queryClient","ensureQueryData","add","available","jotaiStore","set","addTokenListsAtom","addTokenListEffect","atomEffect","get","tokenListUrlsAtom","forEach","useActivateEffects","useAtomValue"],"mappings":";;;;;;;;AAQA,MAAMA,YAAAA,uBAAmBC,GAAAA,EAAY;AAErC,eAAeC,aAAaC,GAAAA,EAAa;AAEvC,EAAA,IAAIH,YAAAA,CAAaI,GAAAA,CAAID,GAAG,CAAA,EAAG;AAG3B,EAAA,MAAME,YAAAA,GAAeC,4BAA4BH,GAAG,CAAA;AACpD,EAAA,MAAMI,SAAAA,GAAY,MAAMC,WAAAA,CAAYC,eAAAA,CAAgBJ,YAAY,CAAA;AAGhEL,EAAAA,YAAAA,CAAaU,IAAIP,GAAG,CAAA;AAGpB,EAAA,IAAII,WAAWI,SAAAA,EAAWC,UAAAA,CAAWC,IAAIC,iBAAAA,EAAmB,CAACP,SAAS,CAAC,CAAA;AACzE;AAEA,MAAMQ,kBAAAA,GAAqBC,WAAYC,CAAAA,GAAAA,KAAQ;AAC7CA,EAAAA,GAAAA,CAAIC,iBAAiB,CAAA,CAAEC,OAAAA,CAAQjB,YAAY,CAAA;AAC7C,CAAC,CAAA;AAEM,SAAAkB,kBAAAA,GAAA;AACLC,EAAAA,YAAAA,CAAAN,kBAA+B,CAAA;AAAC;;;;"}
|
|
@@ -2,11 +2,11 @@ import { filterInvalidTokenAddress } from '../../../lib/utils/index.js';
|
|
|
2
2
|
import { constructTokenFromTokenInfoFactory } from '../../constructor.js';
|
|
3
3
|
import { versionComparator } from '@uniswap/token-lists';
|
|
4
4
|
import { atom } from 'jotai';
|
|
5
|
-
import {
|
|
5
|
+
import { allConstructedTokensByURLAtom } from './tokenListsStateAtom.js';
|
|
6
6
|
import { isSupportedChainId } from '../../../lib/web3/wagmi/utils.js';
|
|
7
7
|
|
|
8
8
|
const addTokenListsAtom = atom(null, (get, set, fetchedLists) => {
|
|
9
|
-
const constructedTokensByURL = get(
|
|
9
|
+
const constructedTokensByURL = get(allConstructedTokensByURLAtom);
|
|
10
10
|
const updatedLists = {};
|
|
11
11
|
fetchedLists.forEach((fetchedList) => {
|
|
12
12
|
const {
|
|
@@ -26,7 +26,7 @@ const addTokenListsAtom = atom(null, (get, set, fetchedLists) => {
|
|
|
26
26
|
list: constructedTokens
|
|
27
27
|
};
|
|
28
28
|
});
|
|
29
|
-
set(
|
|
29
|
+
set(allConstructedTokensByURLAtom, (prevState) => ({
|
|
30
30
|
...prevState,
|
|
31
31
|
...updatedLists
|
|
32
32
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenListsActionsAtom.js","sources":["../../../../src/tokens/lists/state/tokenListsActionsAtom.ts"],"sourcesContent":["import { filterInvalidTokenAddress } from \"@/lib/utils\";\nimport { constructTokenFromTokenInfoFactory } from \"@/tokens/constructor\";\nimport type {\n TokenInfoWithSupportedChainId,\n TokenListCompiled,\n} from \"@/tokens/types\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport { atom } from \"jotai\";\nimport {
|
|
1
|
+
{"version":3,"file":"tokenListsActionsAtom.js","sources":["../../../../src/tokens/lists/state/tokenListsActionsAtom.ts"],"sourcesContent":["import { filterInvalidTokenAddress } from \"@/lib/utils\";\nimport { constructTokenFromTokenInfoFactory } from \"@/tokens/constructor\";\nimport type {\n TokenInfoWithSupportedChainId,\n TokenListCompiled,\n} from \"@/tokens/types\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport { atom } from \"jotai\";\nimport { allConstructedTokensByURLAtom } from \"./tokenListsStateAtom\";\nimport type { ConstructedListsByURL } from \"./types\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\n\n// set(addTokenListsAtom) = fetchedLists => set(constructedTokensByURLAtom, from fetchedLists)\nexport const addTokenListsAtom = atom(\n null,\n (get, set, fetchedLists: TokenListCompiled[]) => {\n const constructedTokensByURL = get(allConstructedTokensByURLAtom);\n\n const updatedLists: ConstructedListsByURL = {};\n\n fetchedLists.forEach((fetchedList) => {\n const {\n url,\n data: { version },\n } = fetchedList;\n\n const prevList = constructedTokensByURL[url];\n\n // if current version in state >= incoming version, skip\n if (prevList && versionComparator(prevList.version, version) >= 0) return;\n\n const tokenConstructor = constructTokenFromTokenInfoFactory(fetchedList);\n\n const constructedTokens = fetchedList.data.tokens\n .filter(\n (token): token is TokenInfoWithSupportedChainId =>\n filterInvalidTokenAddress({ address: token.address }) &&\n isSupportedChainId(token.chainId)\n )\n .map(tokenConstructor);\n\n updatedLists[url] = {\n version,\n list: constructedTokens,\n };\n });\n\n set(allConstructedTokensByURLAtom, (prevState) => ({\n ...prevState,\n ...updatedLists,\n }));\n }\n);\n"],"names":["addTokenListsAtom","atom","get","set","fetchedLists","constructedTokensByURL","allConstructedTokensByURLAtom","updatedLists","forEach","fetchedList","url","data","version","prevList","versionComparator","tokenConstructor","constructTokenFromTokenInfoFactory","constructedTokens","tokens","filter","token","filterInvalidTokenAddress","address","isSupportedChainId","chainId","map","list","prevState"],"mappings":";;;;;;;AAaO,MAAMA,oBAAoBC,IAAAA,CAC/B,IAAA,EACA,CAACC,GAAAA,EAAKC,KAAKC,YAAAA,KAAsC;AAC/C,EAAA,MAAMC,sBAAAA,GAAyBH,IAAII,6BAA6B,CAAA;AAEhE,EAAA,MAAMC,eAAsC,EAAC;AAE7CH,EAAAA,YAAAA,CAAaI,QAASC,CAAAA,WAAAA,KAAgB;AACpC,IAAA,MAAM;AAAA,MACJC,GAAAA;AAAAA,MACAC,IAAAA,EAAM;AAAA,QAAEC;AAAAA;AAAQ,KAClB,GAAIH,WAAAA;AAEJ,IAAA,MAAMI,QAAAA,GAAWR,uBAAuBK,GAAG,CAAA;AAG3C,IAAA,IAAIG,YAAYC,iBAAAA,CAAkBD,QAAAA,CAASD,OAAAA,EAASA,OAAO,KAAK,CAAA,EAAG;AAEnE,IAAA,MAAMG,gBAAAA,GAAmBC,mCAAmCP,WAAW,CAAA;AAEvE,IAAA,MAAMQ,oBAAoBR,WAAAA,CAAYE,IAAAA,CAAKO,OACxCC,MAAAA,CACC,CAACC,UACCC,yBAAAA,CAA0B;AAAA,MAAEC,SAASF,KAAAA,CAAME;AAAAA,KAAS,KACpDC,kBAAAA,CAAmBH,KAAAA,CAAMI,OAAO,CACpC,CAAA,CACCC,IAAIV,gBAAgB,CAAA;AAEvBR,IAAAA,YAAAA,CAAaG,GAAG,CAAA,GAAI;AAAA,MAClBE,OAAAA;AAAAA,MACAc,IAAAA,EAAMT;AAAAA,KACR;AAAA,EACF,CAAC,CAAA;AAEDd,EAAAA,GAAAA,CAAIG,+BAAgCqB,CAAAA,SAAAA,MAAe;AAAA,IACjD,GAAGA,SAAAA;AAAAA,IACH,GAAGpB;AAAAA,GACL,CAAE,CAAA;AACJ,CACF;;;;"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import { ConstructedListsByURL
|
|
2
|
-
export declare const
|
|
1
|
+
import { ConstructedListsByURL } from './types';
|
|
2
|
+
export declare const tokenListUrlsAtom: import('jotai').Atom<string[]>;
|
|
3
|
+
/**
|
|
4
|
+
Enabled and default token list URLs by chain ID,
|
|
5
|
+
taking into account any configured lists in the widget config.
|
|
6
|
+
**/
|
|
7
|
+
export declare const enabledAndDefaultTokenURLSAtom: import('jotai').Atom<{
|
|
3
8
|
1: {
|
|
4
9
|
all: string[];
|
|
5
10
|
enabled: string[];
|
|
@@ -40,11 +45,15 @@ export declare const EnabledAndDefaultTokenURLS: {
|
|
|
40
45
|
all: string[];
|
|
41
46
|
enabled: string[];
|
|
42
47
|
};
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
export declare const
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
All constructed tokens from all fetched lists during the widget lifecycle.
|
|
51
|
+
**/
|
|
52
|
+
export declare const allConstructedTokensByURLAtom: import('jotai').PrimitiveAtom<ConstructedListsByURL> & {
|
|
48
53
|
init: ConstructedListsByURL;
|
|
49
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
Constructed tokens from currently enabled lists only (from config or defaults).
|
|
57
|
+
**/
|
|
58
|
+
export declare const constructedTokensByURLAtom: import('jotai').Atom<ConstructedListsByURL>;
|
|
50
59
|
//# sourceMappingURL=tokenListsStateAtom.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenListsStateAtom.d.ts","sourceRoot":"","sources":["../../../../src/tokens/lists/state/tokenListsStateAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"tokenListsStateAtom.d.ts","sourceRoot":"","sources":["../../../../src/tokens/lists/state/tokenListsStateAtom.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAyBrD,eAAO,MAAM,iBAAiB,gCAQ5B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBzC,CAAC;AAEH;;IAEI;AACJ,eAAO,MAAM,6BAA6B;;CAAkC,CAAC;AAE7E;;GAEG;AACH,eAAO,MAAM,0BAA0B,6CASrC,CAAC"}
|
|
@@ -1,10 +1,55 @@
|
|
|
1
1
|
import { atom } from 'jotai';
|
|
2
|
+
import { tokenListsAtom } from '../../../core/state/configAtom.js';
|
|
3
|
+
import { isValidUrl } from '../../../lib/utils/index.js';
|
|
4
|
+
import { isSupportedChainId } from '../../../lib/web3/wagmi/utils.js';
|
|
5
|
+
import { allEnabledChainsAtom } from '../../../core/state/enabledChainsAtom.js';
|
|
2
6
|
import { gatherEnabledAndDefaultUrlsMappingByChainId } from '../utils.js';
|
|
3
|
-
import { supportedChainIds } from '../../../lib/web3/wagmi/constants.js';
|
|
4
7
|
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
+
const enabledAndDefaultUrlsMappingAtom = atom((get) => {
|
|
9
|
+
const allEnabledChains = get(allEnabledChainsAtom);
|
|
10
|
+
return gatherEnabledAndDefaultUrlsMappingByChainId(allEnabledChains);
|
|
11
|
+
});
|
|
12
|
+
const defaultListsAtom = atom((get) => {
|
|
13
|
+
const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);
|
|
14
|
+
return Object.values(enabledAndDefaultTokenURLS).flatMap((lists) => lists.all).filter(isValidUrl);
|
|
15
|
+
});
|
|
16
|
+
const getUniqueValidUrls = (urls) => Array.from(new Set(urls)).filter(isValidUrl);
|
|
17
|
+
const tokenListUrlsAtom = atom((get) => {
|
|
18
|
+
const configuredLists = get(tokenListsAtom);
|
|
19
|
+
if (configuredLists.length === 0) {
|
|
20
|
+
const defaultLists = get(defaultListsAtom);
|
|
21
|
+
return getUniqueValidUrls(defaultLists);
|
|
22
|
+
}
|
|
23
|
+
return getUniqueValidUrls(configuredLists);
|
|
24
|
+
});
|
|
25
|
+
const enabledAndDefaultTokenURLSAtom = atom((get) => {
|
|
26
|
+
const configuredLists = get(tokenListsAtom);
|
|
27
|
+
const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);
|
|
28
|
+
if (configuredLists.length === 0) return enabledAndDefaultTokenURLS;
|
|
29
|
+
const enabledAndDefault = {
|
|
30
|
+
...enabledAndDefaultTokenURLS
|
|
31
|
+
};
|
|
32
|
+
configuredLists.forEach((url) => {
|
|
33
|
+
Object.keys(enabledAndDefault).forEach((_chainId) => {
|
|
34
|
+
const chainId = Number(_chainId);
|
|
35
|
+
if (!isSupportedChainId(chainId)) return;
|
|
36
|
+
if (!isValidUrl(url)) return;
|
|
37
|
+
if (!enabledAndDefault[chainId].all.includes(url)) enabledAndDefault[chainId].all.push(url);
|
|
38
|
+
if (!enabledAndDefault[chainId].enabled.includes(url)) enabledAndDefault[chainId].enabled.push(url);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
return enabledAndDefault;
|
|
42
|
+
});
|
|
43
|
+
const allConstructedTokensByURLAtom = atom({});
|
|
44
|
+
const constructedTokensByURLAtom = atom((get) => {
|
|
45
|
+
const constructedLists = get(allConstructedTokensByURLAtom);
|
|
46
|
+
const tokenListUrls = get(tokenListUrlsAtom);
|
|
47
|
+
return tokenListUrls.reduce((acc, url) => {
|
|
48
|
+
const tokens = constructedLists[url];
|
|
49
|
+
if (tokens) acc[url] = tokens;
|
|
50
|
+
return acc;
|
|
51
|
+
}, {});
|
|
52
|
+
});
|
|
8
53
|
|
|
9
|
-
export {
|
|
54
|
+
export { allConstructedTokensByURLAtom, constructedTokensByURLAtom, enabledAndDefaultTokenURLSAtom, tokenListUrlsAtom };
|
|
10
55
|
//# sourceMappingURL=tokenListsStateAtom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenListsStateAtom.js","sources":["../../../../src/tokens/lists/state/tokenListsStateAtom.ts"],"sourcesContent":["import type { ConstructedListsByURL
|
|
1
|
+
{"version":3,"file":"tokenListsStateAtom.js","sources":["../../../../src/tokens/lists/state/tokenListsStateAtom.ts"],"sourcesContent":["import type { ConstructedListsByURL } from \"./types\";\nimport { atom } from \"jotai\";\nimport { tokenListsAtom } from \"@/core/state/configAtom\";\nimport { isValidUrl } from \"@/lib/utils\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport { allEnabledChainsAtom } from \"@/core/state/enabledChainsAtom\";\nimport { gatherEnabledAndDefaultUrlsMappingByChainId } from \"../utils\";\n\nconst enabledAndDefaultUrlsMappingAtom = atom((get) => {\n const allEnabledChains = get(allEnabledChainsAtom);\n return gatherEnabledAndDefaultUrlsMappingByChainId(allEnabledChains);\n});\n\n/**\n * Returns default token list URLs available for enabled chains.\n */\nconst defaultListsAtom = atom<string[]>((get) => {\n const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);\n return Object.values(enabledAndDefaultTokenURLS)\n .flatMap((lists) => lists.all)\n .filter(isValidUrl);\n});\n\nconst getUniqueValidUrls = (urls: string[]) =>\n Array.from(new Set(urls)).filter(isValidUrl);\nexport const tokenListUrlsAtom = atom<string[]>((get) => {\n const configuredLists = get(tokenListsAtom);\n if (configuredLists.length === 0) {\n const defaultLists = get(defaultListsAtom);\n return getUniqueValidUrls(defaultLists);\n }\n\n return getUniqueValidUrls(configuredLists);\n});\n\n/** \n Enabled and default token list URLs by chain ID,\n taking into account any configured lists in the widget config. \n**/\nexport const enabledAndDefaultTokenURLSAtom = atom((get) => {\n const configuredLists = get(tokenListsAtom);\n\n const enabledAndDefaultTokenURLS = get(enabledAndDefaultUrlsMappingAtom);\n if (configuredLists.length === 0) return enabledAndDefaultTokenURLS;\n\n const enabledAndDefault = { ...enabledAndDefaultTokenURLS };\n configuredLists.forEach((url) => {\n Object.keys(enabledAndDefault).forEach((_chainId) => {\n const chainId = Number(_chainId);\n if (!isSupportedChainId(chainId)) return; // Object.keys destroys types\n if (!isValidUrl(url)) return; // skip if provided URL is not valid\n\n // put URL from config into both enabled and all lists\n if (!enabledAndDefault[chainId].all.includes(url))\n enabledAndDefault[chainId].all.push(url);\n if (!enabledAndDefault[chainId].enabled.includes(url))\n enabledAndDefault[chainId].enabled.push(url);\n });\n });\n\n return enabledAndDefault;\n});\n\n/**\n All constructed tokens from all fetched lists during the widget lifecycle.\n **/\nexport const allConstructedTokensByURLAtom = atom<ConstructedListsByURL>({});\n\n/**\n Constructed tokens from currently enabled lists only (from config or defaults).\n**/\nexport const constructedTokensByURLAtom = atom<ConstructedListsByURL>((get) => {\n const constructedLists = get(allConstructedTokensByURLAtom);\n const tokenListUrls = get(tokenListUrlsAtom);\n\n return tokenListUrls.reduce<ConstructedListsByURL>((acc, url) => {\n const tokens = constructedLists[url];\n if (tokens) acc[url] = tokens;\n return acc;\n }, {});\n});\n"],"names":["enabledAndDefaultUrlsMappingAtom","atom","get","allEnabledChains","allEnabledChainsAtom","gatherEnabledAndDefaultUrlsMappingByChainId","defaultListsAtom","enabledAndDefaultTokenURLS","Object","values","flatMap","lists","all","filter","isValidUrl","getUniqueValidUrls","urls","Array","from","Set","tokenListUrlsAtom","configuredLists","tokenListsAtom","length","defaultLists","enabledAndDefaultTokenURLSAtom","enabledAndDefault","forEach","url","keys","_chainId","chainId","Number","isSupportedChainId","includes","push","enabled","allConstructedTokensByURLAtom","constructedTokensByURLAtom","constructedLists","tokenListUrls","reduce","acc","tokens"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tokens/lists/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tokens/lists/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAE1B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IAGH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { gatherObjectsByProp } from '../../lib/utils/index.js';
|
|
2
|
-
import {
|
|
2
|
+
import { chainId2TokenListURLs, urlChain2TokenList } from './constants.js';
|
|
3
3
|
|
|
4
4
|
const getTokenListPlaceholderName = (listUrl, chainId) => urlChain2TokenList[`${listUrl}@${chainId}`]?.listName;
|
|
5
5
|
const constructPlaceholderData = (listURL) => {
|
package/dist/tokens/queries.d.ts
CHANGED
|
@@ -5,9 +5,11 @@ type UseFetchListsResult<T extends string> = {
|
|
|
5
5
|
dataOrPlaceholder: TokenListFetched<T>;
|
|
6
6
|
result: UseQueryResult<TokenListFetched<T>, AxiosError>;
|
|
7
7
|
};
|
|
8
|
-
export declare function
|
|
8
|
+
export declare function produceQueriesOptions<T extends string | never = never>(listURLs: string[], tag?: T): UseQueryOptions<TokenListFetched<T>, AxiosError<unknown, any>, TokenListFetched<T>, readonly unknown[]>[];
|
|
9
|
+
export declare function produceSingleQueryOptionMin<T extends string | never = never>(listURL: string, tag?: T): UseQueryOptions<TokenListFetched<T>, AxiosError>;
|
|
10
|
+
export declare function produceSingleQueryOption<T extends string | never = never>(listURL: string, tag?: T): UseQueryOptions<TokenListFetched<T>, AxiosError>;
|
|
9
11
|
export declare const useFetchListsWithQueryResult: <T extends string | never = never>(listURLs: string[], tag?: T) => UseFetchListsResult<T>[];
|
|
10
12
|
export declare function useFetchLists<T extends string | never = never>(listURLs: string[], tag?: T): TokenListFetched<T>[];
|
|
11
|
-
export declare function
|
|
13
|
+
export declare function useFetchTokenLists(): TokenListFetched[];
|
|
12
14
|
export {};
|
|
13
15
|
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/tokens/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/tokens/queries.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAShD,KAAK,mBAAmB,CAAC,CAAC,SAAS,MAAM,IAAI;IAC3C,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;CACzD,CAAC;AAiBF,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,KAAK,EACpE,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,CAAC,EAAE,CAAC,6GAaR;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,KAAK,EAC1E,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,CAAC,GACN,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CA6BlD;AAGD,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,KAAK,EACvE,OAAO,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,CAAC,GACN,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAOlD;AAED,eAAO,MAAM,4BAA4B,GAAI,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,KAAK,EAC3E,UAAU,MAAM,EAAE,EAClB,MAAM,CAAC,KACN,mBAAmB,CAAC,CAAC,CAAC,EAgBxB,CAAC;AAEF,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK,GAAG,KAAK,EAC5D,QAAQ,EAAE,MAAM,EAAE,EAClB,GAAG,CAAC,EAAE,CAAC,GACN,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAOvB;AAED,wBAAgB,kBAAkB,IAAI,gBAAgB,EAAE,CASvD"}
|
package/dist/tokens/queries.js
CHANGED
|
@@ -7,8 +7,9 @@ import { QUERY_KEY_FETCH_TOKEN_LISTS } from './constants.js';
|
|
|
7
7
|
import { constructPlaceholderData } from './lists/utils.js';
|
|
8
8
|
import { isTruthy } from '../lib/utils/index.js';
|
|
9
9
|
import { overrideTokenList } from './overrides.js';
|
|
10
|
-
import { useAllTokenLists } from './lists/hooks.js';
|
|
11
10
|
import { stableCoinsTokenLists } from './stabeCoins/index.js';
|
|
11
|
+
import { useAtomValue } from 'jotai';
|
|
12
|
+
import { tokenListUrlsAtom } from './lists/state/tokenListsStateAtom.js';
|
|
12
13
|
|
|
13
14
|
function isDataEqual(currentData, incomingData) {
|
|
14
15
|
if (!currentData) return false;
|
|
@@ -16,9 +17,12 @@ function isDataEqual(currentData, incomingData) {
|
|
|
16
17
|
const isOlderOrEqual = versionComparator(incomingData.data.version, currentData.data.version) <= 0;
|
|
17
18
|
return isOlderOrEqual;
|
|
18
19
|
}
|
|
19
|
-
function
|
|
20
|
+
function produceQueriesOptions(listURLs, tag) {
|
|
20
21
|
const uniqueListURLs = Array.from(new Set(listURLs));
|
|
21
|
-
return uniqueListURLs.filter(isTruthy).map((listURL) => (
|
|
22
|
+
return uniqueListURLs.filter(isTruthy).map((listURL) => produceSingleQueryOption(listURL, tag));
|
|
23
|
+
}
|
|
24
|
+
function produceSingleQueryOptionMin(listURL, tag) {
|
|
25
|
+
return {
|
|
22
26
|
queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],
|
|
23
27
|
queryFn: async ({
|
|
24
28
|
signal
|
|
@@ -34,20 +38,26 @@ function produceQueryOptions(listURLs, tag) {
|
|
|
34
38
|
available: Array.isArray(data.tokens)
|
|
35
39
|
};
|
|
36
40
|
},
|
|
37
|
-
notifyOnChangeProps: ["data"],
|
|
38
|
-
placeholderData: constructPlaceholderData(listURL),
|
|
39
|
-
// start with unavailable but still with url
|
|
40
|
-
refetchOnMount: false,
|
|
41
41
|
staleTime: Infinity,
|
|
42
|
+
gcTime: Infinity,
|
|
42
43
|
// custom comparison to optimize big token list comparison
|
|
43
44
|
structuralSharing: (oldData, newData) => isDataEqual(oldData, newData) ? oldData : replaceEqualDeep(oldData, newData)
|
|
44
|
-
}
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function produceSingleQueryOption(listURL, tag) {
|
|
48
|
+
return {
|
|
49
|
+
...produceSingleQueryOptionMin(listURL, tag),
|
|
50
|
+
notifyOnChangeProps: ["data"],
|
|
51
|
+
placeholderData: constructPlaceholderData(listURL),
|
|
52
|
+
// start with unavailable but still with url
|
|
53
|
+
refetchOnMount: false
|
|
54
|
+
};
|
|
45
55
|
}
|
|
46
56
|
const useFetchListsWithQueryResult = (listURLs, tag) => {
|
|
47
57
|
const $ = distExports.c(7);
|
|
48
58
|
let t0;
|
|
49
59
|
if ($[0] !== listURLs || $[1] !== tag) {
|
|
50
|
-
t0 =
|
|
60
|
+
t0 = produceQueriesOptions(listURLs, tag);
|
|
51
61
|
$[0] = listURLs;
|
|
52
62
|
$[1] = tag;
|
|
53
63
|
$[2] = t0;
|
|
@@ -98,13 +108,13 @@ function _temp2(t0) {
|
|
|
98
108
|
} = t0;
|
|
99
109
|
return dataOrPlaceholder;
|
|
100
110
|
}
|
|
101
|
-
function
|
|
111
|
+
function useFetchTokenLists() {
|
|
102
112
|
const $ = distExports.c(2);
|
|
103
|
-
const
|
|
113
|
+
const currentlyEnabledLists = useAtomValue(tokenListUrlsAtom);
|
|
104
114
|
let t0;
|
|
105
|
-
if ($[0] !==
|
|
106
|
-
t0 = stableCoinsTokenLists.concat(
|
|
107
|
-
$[0] =
|
|
115
|
+
if ($[0] !== currentlyEnabledLists) {
|
|
116
|
+
t0 = stableCoinsTokenLists.concat(currentlyEnabledLists);
|
|
117
|
+
$[0] = currentlyEnabledLists;
|
|
108
118
|
$[1] = t0;
|
|
109
119
|
} else {
|
|
110
120
|
t0 = $[1];
|
|
@@ -119,5 +129,5 @@ function _temp(result) {
|
|
|
119
129
|
};
|
|
120
130
|
}
|
|
121
131
|
|
|
122
|
-
export {
|
|
132
|
+
export { produceQueriesOptions, produceSingleQueryOption, produceSingleQueryOptionMin, useFetchLists, useFetchListsWithQueryResult, useFetchTokenLists };
|
|
123
133
|
//# sourceMappingURL=queries.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport {
|
|
1
|
+
{"version":3,"file":"queries.js","sources":["../../src/tokens/queries.ts"],"sourcesContent":["import {\n replaceEqualDeep,\n useQueries,\n type UseQueryOptions,\n type UseQueryResult,\n} from \"@tanstack/react-query\";\nimport { versionComparator } from \"@uniswap/token-lists\";\nimport type { AxiosError } from \"axios\";\nimport { /* useRef, useLayoutEffect, */ useMemo } from \"react\";\nimport { downloadTokenListDataWithFallback } from \"./lists/download\";\nimport type { TokenListFetched } from \"./types\";\nimport { QUERY_KEY_FETCH_TOKEN_LISTS } from \"./constants\";\nimport { constructPlaceholderData } from \"./lists/utils\";\nimport { isTruthy } from \"@/lib/utils\";\nimport { overrideTokenList } from \"./overrides\";\nimport { stableCoinsTokenLists } from \"./stabeCoins\";\nimport { useAtomValue } from \"jotai\";\nimport { tokenListUrlsAtom } from \"./lists/state/tokenListsStateAtom\";\n\ntype UseFetchListsResult<T extends string> = {\n dataOrPlaceholder: TokenListFetched<T>;\n result: UseQueryResult<TokenListFetched<T>, AxiosError>;\n};\n\nfunction isDataEqual<T extends string | never = never>(\n currentData: TokenListFetched<T> | undefined,\n incomingData: TokenListFetched<T>\n): currentData is typeof incomingData {\n // there was no oldData --> data not equal\n if (!currentData) return false;\n // data was a placeholder (available = false) and data.available changed --> data not equal\n if (!currentData.available || !incomingData.available)\n return currentData.available !== incomingData.available;\n // incoming list.version <= current list.version --> consider data equal (don't replace with incoming older version)\n const isOlderOrEqual =\n versionComparator(incomingData.data.version, currentData.data.version) <= 0;\n return isOlderOrEqual;\n}\n\nexport function produceQueriesOptions<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n) {\n // there are duplicate listURLs because in lists.json same list can be present for multiple chains\n const uniqueListURLs = Array.from(new Set(listURLs));\n\n return (\n uniqueListURLs\n // to prevent occasional `token_list_download_error:\"\"` event tag\n .filter(isTruthy)\n .map<UseQueryOptions<TokenListFetched<T>, AxiosError>>((listURL) =>\n produceSingleQueryOption<T>(listURL, tag)\n )\n );\n}\n\nexport function produceSingleQueryOptionMin<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n queryKey: [QUERY_KEY_FETCH_TOKEN_LISTS, listURL],\n queryFn: async ({ signal }) => {\n const _data = await downloadTokenListDataWithFallback(listURL, signal);\n\n const data = overrideTokenList(_data, listURL);\n\n return {\n url: listURL,\n name: data.name,\n data,\n tag,\n // possibly mitigates https://sentry.io/organizations/paraswap/discover/ui:3fa26b87e3594d1998ff9fb4770a26d9\n available: Array.isArray(data.tokens),\n };\n },\n staleTime: Infinity,\n gcTime: Infinity,\n\n // custom comparison to optimize big token list comparison\n structuralSharing: (oldData, newData) =>\n isDataEqual(\n oldData as TokenListFetched<T> | undefined,\n newData as TokenListFetched<T>\n )\n ? oldData\n : replaceEqualDeep(oldData, newData),\n };\n}\n\n// adds useQuery options\nexport function produceSingleQueryOption<T extends string | never = never>(\n listURL: string,\n tag?: T\n): UseQueryOptions<TokenListFetched<T>, AxiosError> {\n return {\n ...produceSingleQueryOptionMin<T>(listURL, tag),\n notifyOnChangeProps: [\"data\"],\n placeholderData: constructPlaceholderData(listURL), // start with unavailable but still with url\n refetchOnMount: false,\n };\n}\n\nexport const useFetchListsWithQueryResult = <T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): UseFetchListsResult<T>[] => {\n const queryResults = useQueries<\n UseQueryOptions<TokenListFetched<T>, AxiosError>[]\n >({ queries: produceQueriesOptions(listURLs, tag) });\n\n return useMemo<UseFetchListsResult<T>[]>(\n () =>\n queryResults.map((result) => ({\n // provide {url, name} even on error\n dataOrPlaceholder:\n result.data ||\n constructPlaceholderData(result.error?.config?.url || \"\"),\n result,\n })),\n [queryResults]\n );\n};\n\nexport function useFetchLists<T extends string | never = never>(\n listURLs: string[],\n tag?: T\n): TokenListFetched<T>[] {\n const queryResults = useFetchListsWithQueryResult(listURLs, tag);\n\n return useMemo(\n () => queryResults.map(({ dataOrPlaceholder }) => dataOrPlaceholder),\n [queryResults]\n );\n}\n\nexport function useFetchTokenLists(): TokenListFetched[] {\n const currentlyEnabledLists = useAtomValue(tokenListUrlsAtom);\n\n // stablecoins list is auxiliary list, always in use\n const includingStablecoins = stableCoinsTokenLists.concat(\n currentlyEnabledLists\n );\n\n return useFetchLists(includingStablecoins);\n}\n"],"names":["isDataEqual","currentData","incomingData","available","isOlderOrEqual","versionComparator","data","version","produceQueriesOptions","listURLs","tag","uniqueListURLs","Array","from","Set","filter","isTruthy","map","listURL","produceSingleQueryOption","produceSingleQueryOptionMin","queryKey","QUERY_KEY_FETCH_TOKEN_LISTS","queryFn","signal","_data","downloadTokenListDataWithFallback","overrideTokenList","url","name","isArray","tokens","staleTime","Infinity","gcTime","structuralSharing","oldData","newData","replaceEqualDeep","notifyOnChangeProps","placeholderData","constructPlaceholderData","refetchOnMount","useFetchListsWithQueryResult","$","_c","t0","t1","queries","queryResults","useQueries","t2","t3","_temp","useFetchLists","_temp2","dataOrPlaceholder","useFetchTokenLists","currentlyEnabledLists","useAtomValue","tokenListUrlsAtom","stableCoinsTokenLists","concat","includingStablecoins","result","error","config"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { constructedTokensByURLAtom, enabledAndDefaultTokenURLSAtom } from '../lists/state/tokenListsStateAtom.js';
|
|
2
2
|
import { atom } from 'jotai';
|
|
3
3
|
import { constructTokensFromLists } from './constructTokens.js';
|
|
4
4
|
import { gatherObjectsByProp } from '../../lib/utils/index.js';
|
|
5
5
|
import { isSupportedChainId } from '../../lib/web3/wagmi/utils.js';
|
|
6
6
|
|
|
7
7
|
const fromListsAtom = atom((get) => {
|
|
8
|
-
const tokenListsState = get(tokenListsAtom);
|
|
9
8
|
const constructedTokensByURLState = get(constructedTokensByURLAtom);
|
|
10
|
-
const
|
|
9
|
+
const enabledAndDefaultTokenURLS = get(enabledAndDefaultTokenURLSAtom);
|
|
10
|
+
const chainsFromLists = Object.keys(enabledAndDefaultTokenURLS).map(Number).filter(isSupportedChainId);
|
|
11
11
|
const fromLists = chainsFromLists.reduce((acc, chainId) => {
|
|
12
|
-
const tokenListForChain =
|
|
12
|
+
const tokenListForChain = enabledAndDefaultTokenURLS[chainId];
|
|
13
13
|
if (!tokenListForChain) return acc;
|
|
14
14
|
const constructedLists = constructTokensFromLists({
|
|
15
15
|
enabledListURLs: tokenListForChain.enabled || [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromListsAtom.js","sources":["../../../src/tokens/state/fromListsAtom.ts"],"sourcesContent":["import type { Token, TokenFromList } from \"./types\";\nimport {\n constructedTokensByURLAtom,\n
|
|
1
|
+
{"version":3,"file":"fromListsAtom.js","sources":["../../../src/tokens/state/fromListsAtom.ts"],"sourcesContent":["import type { Token, TokenFromList } from \"./types\";\nimport {\n constructedTokensByURLAtom,\n enabledAndDefaultTokenURLSAtom,\n} from \"../lists/state/tokenListsStateAtom\";\nimport { atom } from \"jotai\";\nimport { constructTokensFromLists } from \"./constructTokens\";\nimport { gatherObjectsByProp } from \"@/lib/utils\";\nimport { isSupportedChainId } from \"@/lib/web3/wagmi/utils\";\nimport type { MarkOptional } from \"ts-essentials\";\n\nexport type TokensFromLists<TToken extends Token = TokenFromList> = {\n tokens: TToken[];\n addressMap: Record<string, TToken>;\n};\n\ntype TokensFromListsByChain<TToken extends Token = TokenFromList> = {\n listByChainId: Record<number, TokensFromLists<TToken>>;\n // unlike listByChainId, this contains tokens from disabled lists only, no imported tokens\n disabledListByChainId: Record<number, TokensFromLists<TToken>>;\n};\n\nexport type TokensFromListsState<TToken extends Token = TokenFromList> =\n TokensFromListsByChain<TToken> & {\n tokensFromAllChains: MarkOptional<TokenFromList, \"fromListURL\">[]; // without disabled\n };\n\nexport const fromListsAtom = atom<TokensFromListsState>((get) => {\n // get the current list atoms\n const constructedTokensByURLState = get(constructedTokensByURLAtom);\n const enabledAndDefaultTokenURLS = get(enabledAndDefaultTokenURLSAtom);\n\n const chainsFromLists = Object.keys(enabledAndDefaultTokenURLS)\n .map(Number)\n .filter(isSupportedChainId);\n\n // atom with the lists of constructed SDK tokens\n const fromLists = chainsFromLists.reduce<TokensFromListsByChain>(\n (acc, chainId) => {\n const tokenListForChain = enabledAndDefaultTokenURLS[chainId];\n if (!tokenListForChain) return acc;\n\n const constructedLists = constructTokensFromLists({\n enabledListURLs: tokenListForChain.enabled || [],\n tokensFromListByURL: constructedTokensByURLState,\n allListURLs: tokenListForChain.all || [],\n chainId,\n });\n if (!constructedLists) return acc;\n\n acc.listByChainId[chainId] = {\n tokens: constructedLists.list,\n addressMap: gatherObjectsByProp(constructedLists.list, (token) =>\n token.address.toLowerCase()\n ),\n };\n acc.disabledListByChainId[chainId] = {\n tokens: constructedLists.disabledList,\n addressMap: gatherObjectsByProp(\n constructedLists.disabledList,\n (token) => token.address.toLowerCase()\n ),\n };\n\n return acc;\n },\n {\n listByChainId: {},\n disabledListByChainId: {},\n }\n );\n\n const tokensFromAllChains = Object.values(fromLists.listByChainId).flatMap(\n ({ tokens }) => tokens\n );\n\n return { ...fromLists, tokensFromAllChains };\n});\n"],"names":["fromListsAtom","atom","get","constructedTokensByURLState","constructedTokensByURLAtom","enabledAndDefaultTokenURLS","enabledAndDefaultTokenURLSAtom","chainsFromLists","Object","keys","map","Number","filter","isSupportedChainId","fromLists","reduce","acc","chainId","tokenListForChain","constructedLists","constructTokensFromLists","enabledListURLs","enabled","tokensFromListByURL","allListURLs","all","listByChainId","tokens","list","addressMap","gatherObjectsByProp","token","address","toLowerCase","disabledListByChainId","disabledList","tokensFromAllChains","values","flatMap"],"mappings":";;;;;;AA2BO,MAAMA,aAAAA,GAAgBC,KAA4BC,CAAAA,GAAAA,KAAQ;AAE/D,EAAA,MAAMC,2BAAAA,GAA8BD,IAAIE,0BAA0B,CAAA;AAClE,EAAA,MAAMC,0BAAAA,GAA6BH,IAAII,8BAA8B,CAAA;AAErE,EAAA,MAAMC,eAAAA,GAAkBC,OAAOC,IAAAA,CAAKJ,0BAA0B,EAC3DK,GAAAA,CAAIC,MAAM,CAAA,CACVC,MAAAA,CAAOC,kBAAkB,CAAA;AAG5B,EAAA,MAAMC,SAAAA,GAAYP,eAAAA,CAAgBQ,MAAAA,CAChC,CAACC,KAAKC,OAAAA,KAAY;AAChB,IAAA,MAAMC,iBAAAA,GAAoBb,2BAA2BY,OAAO,CAAA;AAC5D,IAAA,IAAI,CAACC,mBAAmB,OAAOF,GAAAA;AAE/B,IAAA,MAAMG,mBAAmBC,wBAAAA,CAAyB;AAAA,MAChDC,eAAAA,EAAiBH,iBAAAA,CAAkBI,OAAAA,IAAW,EAAA;AAAA,MAC9CC,mBAAAA,EAAqBpB,2BAAAA;AAAAA,MACrBqB,WAAAA,EAAaN,iBAAAA,CAAkBO,GAAAA,IAAO,EAAA;AAAA,MACtCR;AAAAA,KACD,CAAA;AACD,IAAA,IAAI,CAACE,kBAAkB,OAAOH,GAAAA;AAE9BA,IAAAA,GAAAA,CAAIU,aAAAA,CAAcT,OAAO,CAAA,GAAI;AAAA,MAC3BU,QAAQR,gBAAAA,CAAiBS,IAAAA;AAAAA,MACzBC,UAAAA,EAAYC,oBAAoBX,gBAAAA,CAAiBS,IAAAA,EAAOG,WACtDA,KAAAA,CAAMC,OAAAA,CAAQC,aAChB;AAAA,KACF;AACAjB,IAAAA,GAAAA,CAAIkB,qBAAAA,CAAsBjB,OAAO,CAAA,GAAI;AAAA,MACnCU,QAAQR,gBAAAA,CAAiBgB,YAAAA;AAAAA,MACzBN,UAAAA,EAAYC,oBACVX,gBAAAA,CAAiBgB,YAAAA,EAChBJ,WAAUA,KAAAA,CAAMC,OAAAA,CAAQC,aAC3B;AAAA,KACF;AAEA,IAAA,OAAOjB,GAAAA;AAAAA,EACT,CAAA,EACA;AAAA,IACEU,eAAe,EAAC;AAAA,IAChBQ,uBAAuB;AAAC,GAE5B,CAAA;AAEA,EAAA,MAAME,sBAAsB5B,MAAAA,CAAO6B,MAAAA,CAAOvB,UAAUY,aAAa,CAAA,CAAEY,QACjE,CAAC;AAAA,IAAEX;AAAAA,QAAaA,MAClB,CAAA;AAEA,EAAA,OAAO;AAAA,IAAE,GAAGb,SAAAA;AAAAA,IAAWsB;AAAAA,GAAoB;AAC7C,CAAC;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UseAwaitTxParameters } from '../../hooks/txs/queries/useAwaitTx';
|
|
2
|
+
import { wagmiConfig as _wagmiConfig } from '../../lib/web3/wagmi/config';
|
|
2
3
|
import { QueryClient } from '@tanstack/react-query';
|
|
3
|
-
import { Config } from '@wagmi/core';
|
|
4
4
|
import { MarkRequired } from 'ts-essentials';
|
|
5
5
|
import { ReplacementReturnType, TransactionReceipt } from 'viem';
|
|
6
6
|
type OnReplacedCb = (data: ReplacementReturnType) => void;
|
|
@@ -9,7 +9,8 @@ export type EnsureTxReceiptFn = (options: MarkRequired<Pick<UseAwaitTxParameters
|
|
|
9
9
|
}) => Promise<TransactionReceipt>;
|
|
10
10
|
type EnsureTxReceiptFactory = (params?: {
|
|
11
11
|
queryClient?: QueryClient;
|
|
12
|
-
wagmiConfig?:
|
|
12
|
+
wagmiConfig?: typeof _wagmiConfig;
|
|
13
|
+
isSafe?: boolean;
|
|
13
14
|
}) => EnsureTxReceiptFn;
|
|
14
15
|
export declare const ensureTxReceiptFactory: EnsureTxReceiptFactory;
|
|
15
16
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureTxReceipt.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ensureTxReceipt.d.ts","sourceRoot":"","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,KAAK,EAAU,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAK9E,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAE1D,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,YAAY,CACnB,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,CAAC,EAChE,MAAM,GAAG,SAAS,CACnB,GAAG;IACF,UAAU,CAAC,EAAE,YAAY,CAAC;CAC3B,KACE,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAEjC,KAAK,sBAAsB,GAAG,CAAC,MAAM,CAAC,EAAE;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,YAAY,CAAC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,KAAK,iBAAiB,CAAC;AAExB,eAAO,MAAM,sBAAsB,EAAE,sBAmClC,CAAC"}
|
|
@@ -1,30 +1,50 @@
|
|
|
1
|
+
import { isSafeConnector } from '../../hooks/connectors/useIsGnosisSafeConnector.js';
|
|
1
2
|
import { queryClient } from '../../lib/queryClient.js';
|
|
2
3
|
import { wagmiConfig } from '../../lib/web3/wagmi/config.js';
|
|
3
|
-
import {
|
|
4
|
+
import { getAccount, getConnectorClient } from '@wagmi/core';
|
|
5
|
+
import { waitForTransactionReceipt } from 'viem/actions';
|
|
4
6
|
import { waitForTransactionReceiptQueryKey } from 'wagmi/query';
|
|
7
|
+
import { SAFE_CALLS_WAIT_TIMEOUT } from '../../lib/constants/index.js';
|
|
5
8
|
|
|
6
9
|
const ensureTxReceiptFactory = ({
|
|
7
10
|
queryClient: queryClient$1 = queryClient,
|
|
8
|
-
wagmiConfig: wagmiConfig$1 = wagmiConfig
|
|
11
|
+
wagmiConfig: wagmiConfig$1 = wagmiConfig,
|
|
12
|
+
isSafe
|
|
9
13
|
} = {}) => async ({
|
|
10
14
|
hash,
|
|
11
15
|
chainId,
|
|
12
16
|
confirmations,
|
|
13
17
|
onReplaced
|
|
14
18
|
}) => {
|
|
19
|
+
const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : void 0;
|
|
15
20
|
const queryKey = waitForTransactionReceiptQueryKey({
|
|
16
21
|
hash,
|
|
17
22
|
chainId,
|
|
18
|
-
confirmations
|
|
23
|
+
confirmations,
|
|
24
|
+
timeout
|
|
19
25
|
});
|
|
26
|
+
let client;
|
|
27
|
+
const {
|
|
28
|
+
connector
|
|
29
|
+
} = getAccount(wagmiConfig$1);
|
|
30
|
+
if (connector && isSafeConnector(connector)) {
|
|
31
|
+
client = await getConnectorClient(wagmiConfig$1, {
|
|
32
|
+
chainId,
|
|
33
|
+
connector
|
|
34
|
+
});
|
|
35
|
+
} else {
|
|
36
|
+
client = wagmiConfig$1.getClient({
|
|
37
|
+
chainId
|
|
38
|
+
});
|
|
39
|
+
}
|
|
20
40
|
const receipt = await queryClient$1.ensureQueryData({
|
|
21
41
|
queryKey,
|
|
22
42
|
queryFn: () => {
|
|
23
|
-
return waitForTransactionReceipt(
|
|
43
|
+
return waitForTransactionReceipt(client, {
|
|
24
44
|
hash,
|
|
25
|
-
chainId,
|
|
26
45
|
confirmations,
|
|
27
|
-
onReplaced
|
|
46
|
+
onReplaced,
|
|
47
|
+
timeout
|
|
28
48
|
});
|
|
29
49
|
}
|
|
30
50
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureTxReceipt.js","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"sourcesContent":["import type { UseAwaitTxParameters } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport {
|
|
1
|
+
{"version":3,"file":"ensureTxReceipt.js","sources":["../../../src/transactions/queries/ensureTxReceipt.ts"],"sourcesContent":["import { isSafeConnector } from \"@/hooks/connectors/useIsGnosisSafeConnector\";\nimport type { UseAwaitTxParameters } from \"@/hooks/txs/queries/useAwaitTx\";\nimport { queryClient as _queryClient } from \"@/lib/queryClient\";\nimport { wagmiConfig as _wagmiConfig } from \"@/lib/web3/wagmi/config\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { getAccount, getConnectorClient } from \"@wagmi/core\";\nimport { waitForTransactionReceipt } from \"viem/actions\";\nimport type { MarkRequired } from \"ts-essentials\";\nimport type { Client, ReplacementReturnType, TransactionReceipt } from \"viem\";\n\nimport { waitForTransactionReceiptQueryKey } from \"wagmi/query\";\nimport { SAFE_CALLS_WAIT_TIMEOUT } from \"@/lib/constants\";\n\ntype OnReplacedCb = (data: ReplacementReturnType) => void;\n\nexport type EnsureTxReceiptFn = (\n options: MarkRequired<\n Pick<UseAwaitTxParameters, \"hash\" | \"chainId\" | \"confirmations\">,\n \"hash\" | \"chainId\"\n > & {\n onReplaced?: OnReplacedCb;\n }\n) => Promise<TransactionReceipt>;\n\ntype EnsureTxReceiptFactory = (params?: {\n queryClient?: QueryClient;\n wagmiConfig?: typeof _wagmiConfig;\n isSafe?: boolean;\n}) => EnsureTxReceiptFn;\n\nexport const ensureTxReceiptFactory: EnsureTxReceiptFactory =\n ({ queryClient = _queryClient, wagmiConfig = _wagmiConfig, isSafe } = {}) =>\n async ({ hash, chainId, confirmations, onReplaced }) => {\n const timeout = isSafe ? SAFE_CALLS_WAIT_TIMEOUT : undefined;\n const queryKey = waitForTransactionReceiptQueryKey({\n hash,\n chainId,\n confirmations,\n timeout,\n });\n\n let client: Client;\n const { connector } = getAccount(wagmiConfig);\n // always use connector client if connected through native safe connector.\n // safe provider returns a safeTxHash that is different from a real tx hash.\n // if connected to safe through WalletConnect - publicClient returns a real tx hash.\n if (connector && isSafeConnector(connector)) {\n client = await getConnectorClient(wagmiConfig, { chainId, connector });\n } else {\n client = wagmiConfig.getClient({ chainId });\n }\n\n const receipt = await queryClient.ensureQueryData({\n queryKey,\n queryFn: () => {\n return waitForTransactionReceipt(client, {\n hash,\n confirmations,\n onReplaced,\n timeout,\n });\n },\n });\n\n return receipt;\n };\n"],"names":["ensureTxReceiptFactory","queryClient","_queryClient","wagmiConfig","_wagmiConfig","isSafe","hash","chainId","confirmations","onReplaced","timeout","SAFE_CALLS_WAIT_TIMEOUT","undefined","queryKey","waitForTransactionReceiptQueryKey","client","connector","getAccount","isSafeConnector","getConnectorClient","getClient","receipt","ensureQueryData","queryFn","waitForTransactionReceipt"],"mappings":";;;;;;;;AA8BO,MAAMA,yBACXA,CAAC;AAAA,eAAEC,aAAAA,GAAcC,WAAAA;AAAAA,eAAcC,aAAAA,GAAcC,WAAAA;AAAAA,EAAcC;AAAO,CAAA,GAAI,OACtE,OAAO;AAAA,EAAEC,IAAAA;AAAAA,EAAMC,OAAAA;AAAAA,EAASC,aAAAA;AAAAA,EAAeC;AAAW,CAAA,KAAM;AACtD,EAAA,MAAMC,OAAAA,GAAUL,SAASM,uBAAAA,GAA0BC,MAAAA;AACnD,EAAA,MAAMC,WAAWC,iCAAAA,CAAkC;AAAA,IACjDR,IAAAA;AAAAA,IACAC,OAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAE;AAAAA,GACD,CAAA;AAED,EAAA,IAAIK,MAAAA;AACJ,EAAA,MAAM;AAAA,IAAEC;AAAAA,GAAU,GAAIC,WAAWd,aAAW,CAAA;AAI5C,EAAA,IAAIa,SAAAA,IAAaE,eAAAA,CAAgBF,SAAS,CAAA,EAAG;AAC3CD,IAAAA,MAAAA,GAAS,MAAMI,mBAAmBhB,aAAAA,EAAa;AAAA,MAAEI,OAAAA;AAAAA,MAASS;AAAAA,KAAW,CAAA;AAAA,EACvE,CAAA,MAAO;AACLD,IAAAA,MAAAA,GAASZ,cAAYiB,SAAAA,CAAU;AAAA,MAAEb;AAAAA,KAAS,CAAA;AAAA,EAC5C;AAEA,EAAA,MAAMc,OAAAA,GAAU,MAAMpB,aAAAA,CAAYqB,eAAAA,CAAgB;AAAA,IAChDT,QAAAA;AAAAA,IACAU,SAASA,MAAM;AACb,MAAA,OAAOC,0BAA0BT,MAAAA,EAAQ;AAAA,QACvCT,IAAAA;AAAAA,QACAE,aAAAA;AAAAA,QACAC,UAAAA;AAAAA,QACAC;AAAAA,OACD,CAAA;AAAA,IACH;AAAA,GACD,CAAA;AAED,EAAA,OAAOW,OAAAA;AACT;;;;"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export declare const useUserPendingTransactions: () => import('../../types').TransactionItem[];
|
|
2
2
|
export declare const useUserSwapTransactions: () => import('../../types').TransactionItemSwap[];
|
|
3
|
+
export declare const useUserSwapTransactionsOnEnabledChains: () => import('../../types').TransactionItemSwap[];
|
|
4
|
+
export declare const useUserPendingTransactionsOnEnabledChains: () => import('../../types').TransactionItem[];
|
|
3
5
|
//# sourceMappingURL=useTransactions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTransactions.d.ts","sourceRoot":"","sources":["../../../../src/transactions/state/hooks/useTransactions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTransactions.d.ts","sourceRoot":"","sources":["../../../../src/transactions/state/hooks/useTransactions.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,0BAA0B,+CACI,CAAC;AAC5C,eAAO,MAAM,uBAAuB,mDACI,CAAC;AAEzC,eAAO,MAAM,sCAAsC,mDAMlD,CAAC;AACF,eAAO,MAAM,yCAAyC,+CAMrD,CAAC"}
|