Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
e7cc643b97 | ||
|
7edf32a01f | ||
|
9dc525bc56 | ||
|
09054530c8 | ||
|
1990d42ebd | ||
|
d8977fce36 | ||
|
b766385722 | ||
|
ac4ee875f9 | ||
|
f417dbebc0 |
.gitignoreCODEOWNERSyarn.lock
cypress/e2e/wallet-connection
package.jsonsrc
components
AccountDrawer/MiniPortfolio/Activity
Web3Provider
swap/PendingModalContent
constants
graphql/data
hooks
useAllCurrencyCombinations.tsuseAllV3Routes.tsuseBestTrade.test.tsuseClientSideV3Trade.tsuseContract.tsuseDebouncedTrade.test.tsuseDebouncedTrade.tsuseOrderedConnections.tsuseUniversalRouter.tsuseV3SwapPools.ts
lib/hooks
locales
af-ZA.poar-SA.poca-ES.pocs-CZ.poda-DK.pode-DE.poel-GR.poes-ES.pofi-FI.pofr-FR.pohe-IL.pohu-HU.poid-ID.poit-IT.poja-JP.poko-KR.ponl-NL.pono-NO.popl-PL.popt-BR.popt-PT.poro-RO.poru-RU.posl-SI.posr-SP.posv-SE.posw-TZ.poth-TH.potr-TR.pouk-UA.povi-VN.pozh-CN.pozh-TW.po
nft/hooks
state
utils
2
.gitignore
vendored
2
.gitignore
vendored
@ -52,3 +52,5 @@ cypress/videos
|
||||
cypress/screenshots
|
||||
|
||||
.vercel
|
||||
|
||||
.wrangler
|
1
CODEOWNERS
Normal file
1
CODEOWNERS
Normal file
@ -0,0 +1 @@
|
||||
@uniswap/web-admins
|
@ -22,7 +22,7 @@ describe('disconnect wallet', () => {
|
||||
cy.contains('Connect Wallet')
|
||||
|
||||
// Verify swap input is cleared
|
||||
cy.get('#swap-currency-input .token-amount-input').should('have.value', '1')
|
||||
cy.get('#swap-currency-input .token-amount-input').should('have.value', '')
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -141,7 +141,7 @@
|
||||
"typechain": "^5.0.0",
|
||||
"typescript": "^4.4.3",
|
||||
"webpack-retry-chunk-load-plugin": "^3.1.1",
|
||||
"wrangler": "https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/4925945367/npm-package-wrangler-3048",
|
||||
"wrangler": "^3.4.0",
|
||||
"yarn-deduplicate": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
|
@ -77,6 +77,7 @@ function Loader() {
|
||||
}
|
||||
|
||||
const Success = styled(AnimatedEntranceConfirmationIcon)`
|
||||
position: relative;
|
||||
margin-bottom: 10px;
|
||||
`
|
||||
|
||||
|
@ -19,7 +19,8 @@ function findCancelTx(localActivity: Activity, remoteMap: ActivityMap, account:
|
||||
if (
|
||||
remoteTx.nonce === localActivity.nonce &&
|
||||
remoteTx.from.toLowerCase() === account.toLowerCase() &&
|
||||
remoteTx.hash.toLowerCase() !== localActivity.hash.toLowerCase()
|
||||
remoteTx.hash.toLowerCase() !== localActivity.hash.toLowerCase() &&
|
||||
remoteTx.chainId === localActivity.chainId
|
||||
) {
|
||||
return remoteTx.hash
|
||||
}
|
||||
@ -37,6 +38,11 @@ function combineActivities(localMap: ActivityMap = {}, remoteMap: ActivityMap =
|
||||
const remoteActivity = (remoteMap?.[hash] ?? {}) as Activity
|
||||
|
||||
if (localActivity.cancelled) {
|
||||
// Hides misleading activities caused by cross-chain nonce collisions previously being incorrectly labelled as cancelled txs in redux
|
||||
if (localActivity.chainId !== remoteActivity.chainId) {
|
||||
acc.push(remoteActivity)
|
||||
return acc
|
||||
}
|
||||
// Remote data only contains data of the cancel tx, rather than the original tx, so we prefer local data here
|
||||
acc.push(localActivity)
|
||||
} else {
|
||||
@ -67,6 +73,7 @@ export function useAllActivities(account: string) {
|
||||
if (!localActivity) return
|
||||
|
||||
const cancelHash = findCancelTx(localActivity, remoteMap, account)
|
||||
|
||||
if (cancelHash) updateCancelledTx(localActivity.hash, localActivity.chainId, cancelHash)
|
||||
})
|
||||
}, [account, localMap, remoteMap, updateCancelledTx])
|
||||
|
@ -10,7 +10,7 @@ import { TraceJsonRpcVariant, useTraceJsonRpcFlag } from 'featureFlags/flags/tra
|
||||
import useEagerlyConnect from 'hooks/useEagerlyConnect'
|
||||
import useOrderedConnections from 'hooks/useOrderedConnections'
|
||||
import usePrevious from 'hooks/usePrevious'
|
||||
import { ReactNode, useEffect } from 'react'
|
||||
import { ReactNode, useEffect, useMemo, useState } from 'react'
|
||||
import { useLocation } from 'react-router-dom'
|
||||
import { useConnectedWallets } from 'state/wallets/hooks'
|
||||
import { getCurrentPageFromLocation } from 'utils/urlRoutes'
|
||||
@ -20,8 +20,16 @@ export default function Web3Provider({ children }: { children: ReactNode }) {
|
||||
const connections = useOrderedConnections()
|
||||
const connectors: [Connector, Web3ReactHooks][] = connections.map(({ hooks, connector }) => [connector, hooks])
|
||||
|
||||
// Force a re-render when our connection state changes.
|
||||
const [index, setIndex] = useState(0)
|
||||
useEffect(() => setIndex((index) => index + 1), [connections])
|
||||
const key = useMemo(
|
||||
() => connections.map((connection) => connection.getName()).join('-') + index,
|
||||
[connections, index]
|
||||
)
|
||||
|
||||
return (
|
||||
<Web3ReactProvider connectors={connectors}>
|
||||
<Web3ReactProvider connectors={connectors} key={key}>
|
||||
<Updater />
|
||||
{children}
|
||||
</Web3ReactProvider>
|
||||
|
@ -265,13 +265,10 @@ export function PendingModalContent({
|
||||
const { chainId } = useWeb3React()
|
||||
|
||||
const swapStatus = useSwapTransactionStatus(swapResult)
|
||||
const order = useOrder(swapResult?.type === TradeFillType.UniswapX ? swapResult.response.orderHash : '')
|
||||
|
||||
const classicSwapConfirmed = swapStatus === TransactionStatus.Confirmed
|
||||
const swapConfirmed = swapStatus === TransactionStatus.Confirmed || order?.status === UniswapXOrderStatus.FILLED
|
||||
const wrapConfirmed = useIsTransactionConfirmed(wrapTxHash)
|
||||
// TODO(UniswapX): Support UniswapX status here too
|
||||
const uniswapXSwapConfirmed = Boolean(swapResult)
|
||||
|
||||
const swapConfirmed = swapResult?.type === TradeFillType.Classic ? classicSwapConfirmed : uniswapXSwapConfirmed
|
||||
|
||||
const swapPending = swapResult !== undefined && !swapConfirmed
|
||||
const wrapPending = wrapTxHash != undefined && !wrapConfirmed
|
||||
@ -288,8 +285,6 @@ export function PendingModalContent({
|
||||
chainId,
|
||||
})
|
||||
|
||||
const order = useOrder(swapResult?.type === TradeFillType.UniswapX ? swapResult.response.orderHash : '')
|
||||
|
||||
const currentStepContainerRef = useRef<HTMLDivElement>(null)
|
||||
useUnmountingAnimation(currentStepContainerRef, () => AnimationType.EXITING)
|
||||
|
||||
|
@ -2,11 +2,9 @@
|
||||
import { ChainId, Currency, Token } from '@uniswap/sdk-core'
|
||||
|
||||
import {
|
||||
AMPL,
|
||||
ARB,
|
||||
BTC_BSC,
|
||||
BUSD_BSC,
|
||||
CAKE_BSC,
|
||||
CEUR_CELO,
|
||||
CEUR_CELO_ALFAJORES,
|
||||
CMC02_CELO,
|
||||
@ -19,21 +17,10 @@ import {
|
||||
DAI_OPTIMISM,
|
||||
DAI_POLYGON,
|
||||
ETH_BSC,
|
||||
ETH2X_FLI,
|
||||
FEI,
|
||||
FRAX,
|
||||
FRAX_BSC,
|
||||
FXS,
|
||||
MATIC_BSC,
|
||||
nativeOnChain,
|
||||
OP,
|
||||
PORTAL_ETH_CELO,
|
||||
PORTAL_USDC_CELO,
|
||||
renBTC,
|
||||
rETH2,
|
||||
sETH2,
|
||||
SWISE,
|
||||
TRIBE,
|
||||
USDC_ARBITRUM,
|
||||
USDC_ARBITRUM_GOERLI,
|
||||
USDC_AVALANCHE,
|
||||
@ -72,66 +59,6 @@ const WRAPPED_NATIVE_CURRENCIES_ONLY: ChainTokenList = Object.fromEntries(
|
||||
.filter(Boolean)
|
||||
)
|
||||
|
||||
// used to construct intermediary pairs for trading
|
||||
export const BASES_TO_CHECK_TRADES_AGAINST: ChainTokenList = {
|
||||
...WRAPPED_NATIVE_CURRENCIES_ONLY,
|
||||
[ChainId.MAINNET]: [...WRAPPED_NATIVE_CURRENCIES_ONLY[ChainId.MAINNET], DAI, USDC_MAINNET, USDT, WBTC],
|
||||
[ChainId.OPTIMISM]: [...WRAPPED_NATIVE_CURRENCIES_ONLY[ChainId.OPTIMISM], DAI_OPTIMISM, USDT_OPTIMISM, WBTC_OPTIMISM],
|
||||
[ChainId.ARBITRUM_ONE]: [
|
||||
...WRAPPED_NATIVE_CURRENCIES_ONLY[ChainId.ARBITRUM_ONE],
|
||||
DAI_ARBITRUM_ONE,
|
||||
USDT_ARBITRUM_ONE,
|
||||
WBTC_ARBITRUM_ONE,
|
||||
],
|
||||
[ChainId.POLYGON]: [
|
||||
...WRAPPED_NATIVE_CURRENCIES_ONLY[ChainId.POLYGON],
|
||||
DAI_POLYGON,
|
||||
USDC_POLYGON,
|
||||
USDT_POLYGON,
|
||||
WETH_POLYGON,
|
||||
],
|
||||
[ChainId.BNB]: [
|
||||
...WRAPPED_NATIVE_CURRENCIES_ONLY[ChainId.BNB],
|
||||
DAI_BSC,
|
||||
USDC_BSC,
|
||||
USDT_BSC,
|
||||
BUSD_BSC,
|
||||
FRAX_BSC,
|
||||
MATIC_BSC,
|
||||
CAKE_BSC,
|
||||
],
|
||||
[ChainId.AVALANCHE]: [
|
||||
...WRAPPED_NATIVE_CURRENCIES_ONLY[ChainId.AVALANCHE],
|
||||
DAI_AVALANCHE,
|
||||
USDC_AVALANCHE,
|
||||
USDT_AVALANCHE,
|
||||
WETH_AVALANCHE,
|
||||
],
|
||||
[ChainId.CELO]: [CUSD_CELO, CEUR_CELO, CMC02_CELO, PORTAL_USDC_CELO, PORTAL_ETH_CELO],
|
||||
}
|
||||
export const ADDITIONAL_BASES: { [chainId: number]: { [tokenAddress: string]: Token[] } } = {
|
||||
[ChainId.MAINNET]: {
|
||||
'0xF16E4d813f4DcfDe4c5b44f305c908742De84eF0': [ETH2X_FLI],
|
||||
[rETH2.address]: [sETH2],
|
||||
[SWISE.address]: [sETH2],
|
||||
[FEI.address]: [TRIBE],
|
||||
[TRIBE.address]: [FEI],
|
||||
[FRAX.address]: [FXS],
|
||||
[FXS.address]: [FRAX],
|
||||
[WBTC.address]: [renBTC],
|
||||
[renBTC.address]: [WBTC],
|
||||
},
|
||||
}
|
||||
/**
|
||||
* Some tokens can only be swapped via certain pairs, so we override the list of bases that are considered for these
|
||||
* tokens.
|
||||
*/
|
||||
export const CUSTOM_BASES: { [chainId: number]: { [tokenAddress: string]: Token[] } } = {
|
||||
[ChainId.MAINNET]: {
|
||||
[AMPL.address]: [DAI, WRAPPED_NATIVE_CURRENCY[ChainId.MAINNET] as Token],
|
||||
},
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows up in the currency select for swap and add liquidity
|
||||
*/
|
||||
|
@ -80,7 +80,7 @@ export const USDC_BASE = new Token(
|
||||
'USD Base Coin',
|
||||
'USDbC'
|
||||
)
|
||||
export const AMPL = new Token(ChainId.MAINNET, '0xD46bA6D942050d489DBd938a2C909A5d5039A161', 9, 'AMPL', 'Ampleforth')
|
||||
|
||||
export const DAI = new Token(ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18, 'DAI', 'Dai Stablecoin')
|
||||
export const DAI_ARBITRUM_ONE = new Token(
|
||||
ChainId.ARBITRUM_ONE,
|
||||
@ -147,33 +147,7 @@ export const WBTC_OPTIMISM = new Token(
|
||||
'WBTC',
|
||||
'Wrapped BTC'
|
||||
)
|
||||
export const FEI = new Token(ChainId.MAINNET, '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', 18, 'FEI', 'Fei USD')
|
||||
export const TRIBE = new Token(ChainId.MAINNET, '0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B', 18, 'TRIBE', 'Tribe')
|
||||
export const FRAX = new Token(ChainId.MAINNET, '0x853d955aCEf822Db058eb8505911ED77F175b99e', 18, 'FRAX', 'Frax')
|
||||
export const FXS = new Token(ChainId.MAINNET, '0x3432B6A60D23Ca0dFCa7761B7ab56459D9C964D0', 18, 'FXS', 'Frax Share')
|
||||
export const renBTC = new Token(ChainId.MAINNET, '0xEB4C2781e4ebA804CE9a9803C67d0893436bB27D', 8, 'renBTC', 'renBTC')
|
||||
export const ETH2X_FLI = new Token(
|
||||
ChainId.MAINNET,
|
||||
'0xAa6E8127831c9DE45ae56bB1b0d4D4Da6e5665BD',
|
||||
18,
|
||||
'ETH2x-FLI',
|
||||
'ETH 2x Flexible Leverage Index'
|
||||
)
|
||||
export const sETH2 = new Token(
|
||||
ChainId.MAINNET,
|
||||
'0xFe2e637202056d30016725477c5da089Ab0A043A',
|
||||
18,
|
||||
'sETH2',
|
||||
'StakeWise Staked ETH2'
|
||||
)
|
||||
export const rETH2 = new Token(
|
||||
ChainId.MAINNET,
|
||||
'0x20BC832ca081b91433ff6c17f85701B6e92486c5',
|
||||
18,
|
||||
'rETH2',
|
||||
'StakeWise Reward ETH2'
|
||||
)
|
||||
export const SWISE = new Token(ChainId.MAINNET, '0x48C3399719B582dD63eB5AADf12A40B4C3f52FA2', 18, 'SWISE', 'StakeWise')
|
||||
|
||||
export const WETH_POLYGON_MUMBAI = new Token(
|
||||
ChainId.POLYGON_MUMBAI,
|
||||
'0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa',
|
||||
@ -243,10 +217,7 @@ export const CEUR_CELO_ALFAJORES = new Token(
|
||||
export const USDC_BSC = new Token(ChainId.BNB, '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', 18, 'USDC', 'USDC')
|
||||
export const USDT_BSC = new Token(ChainId.BNB, '0x55d398326f99059fF775485246999027B3197955', 18, 'USDT', 'USDT')
|
||||
export const ETH_BSC = new Token(ChainId.BNB, '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', 18, 'ETH', 'Ethereum')
|
||||
export const MATIC_BSC = new Token(ChainId.BNB, '0xCC42724C6683B7E57334c4E856f4c9965ED682bD', 18, 'MATIC', 'Matic')
|
||||
export const FRAX_BSC = new Token(ChainId.BNB, '0x90C97F71E18723b0Cf0dfa30ee176Ab653E89F40', 18, 'FRAX', 'FRAX')
|
||||
export const BTC_BSC = new Token(ChainId.BNB, '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', 18, 'BTCB', 'BTCB')
|
||||
export const CAKE_BSC = new Token(ChainId.BNB, '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82', 18, 'CAKE', 'Cake')
|
||||
export const BUSD_BSC = new Token(ChainId.BNB, '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', 18, 'BUSD', 'BUSD')
|
||||
export const DAI_BSC = new Token(ChainId.BNB, '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', 18, 'DAI', 'DAI')
|
||||
|
||||
|
@ -4,7 +4,7 @@ import { useMemo } from 'react'
|
||||
import invariant from 'tiny-invariant'
|
||||
|
||||
import { Chain, SearchTokensQuery, useSearchTokensQuery } from './__generated__/types-and-hooks'
|
||||
import { chainIdToBackendName } from './util'
|
||||
import { BACKEND_SUPPORTED_CHAINS, chainIdToBackendName } from './util'
|
||||
|
||||
gql`
|
||||
query SearchTokens($searchQuery: String!) {
|
||||
@ -96,7 +96,10 @@ export function useSearchTokens(searchQuery: string, chainId: number) {
|
||||
const searchChain = chainIdToBackendName(chainId)
|
||||
// Stores results, allowing overwriting cross-chain tokens w/ more 'relevant token'
|
||||
const selectionMap: { [projectId: string]: SearchToken } = {}
|
||||
data?.searchTokens?.forEach((token) => {
|
||||
const filteredTokens = data?.searchTokens?.filter((token) =>
|
||||
(BACKEND_SUPPORTED_CHAINS as ReadonlyArray<Chain>).includes(token.chain)
|
||||
)
|
||||
filteredTokens?.forEach((token) => {
|
||||
if (token.project?.id) {
|
||||
const existing = selectionMap[token.project.id]
|
||||
selectionMap[token.project.id] = dedupeCrosschainTokens(token, existing, searchChain)
|
||||
|
@ -1,72 +0,0 @@
|
||||
import { Currency, Token } from '@uniswap/sdk-core'
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import { ADDITIONAL_BASES, BASES_TO_CHECK_TRADES_AGAINST, CUSTOM_BASES } from '../constants/routing'
|
||||
|
||||
export function useAllCurrencyCombinations(currencyA?: Currency, currencyB?: Currency): [Token, Token][] {
|
||||
const chainId = currencyA?.chainId
|
||||
|
||||
const [tokenA, tokenB] = chainId ? [currencyA?.wrapped, currencyB?.wrapped] : [undefined, undefined]
|
||||
|
||||
const bases: Token[] = useMemo(() => {
|
||||
if (!chainId || chainId !== tokenB?.chainId) return []
|
||||
|
||||
const common = BASES_TO_CHECK_TRADES_AGAINST[chainId] ?? []
|
||||
const additionalA = tokenA ? ADDITIONAL_BASES[chainId]?.[tokenA.address] ?? [] : []
|
||||
const additionalB = tokenB ? ADDITIONAL_BASES[chainId]?.[tokenB.address] ?? [] : []
|
||||
|
||||
return [...common, ...additionalA, ...additionalB]
|
||||
}, [chainId, tokenA, tokenB])
|
||||
|
||||
const basePairs: [Token, Token][] = useMemo(
|
||||
() =>
|
||||
bases
|
||||
.flatMap((base): [Token, Token][] => bases.map((otherBase) => [base, otherBase]))
|
||||
// though redundant with the first filter below, that expression runs more often, so this is probably worthwhile
|
||||
.filter(([t0, t1]) => !t0.equals(t1)),
|
||||
[bases]
|
||||
)
|
||||
|
||||
return useMemo(
|
||||
() =>
|
||||
tokenA && tokenB
|
||||
? [
|
||||
// the direct pair
|
||||
[tokenA, tokenB] as [Token, Token],
|
||||
// token A against all bases
|
||||
...bases.map((base): [Token, Token] => [tokenA, base]),
|
||||
// token B against all bases
|
||||
...bases.map((base): [Token, Token] => [tokenB, base]),
|
||||
// each base against all bases
|
||||
...basePairs,
|
||||
]
|
||||
// filter out invalid pairs comprised of the same asset (e.g. WETH<>WETH)
|
||||
.filter(([t0, t1]) => !t0.equals(t1))
|
||||
// filter out duplicate pairs
|
||||
.filter(([t0, t1], i, otherPairs) => {
|
||||
// find the first index in the array at which there are the same 2 tokens as the current
|
||||
const firstIndexInOtherPairs = otherPairs.findIndex(([t0Other, t1Other]) => {
|
||||
return (t0.equals(t0Other) && t1.equals(t1Other)) || (t0.equals(t1Other) && t1.equals(t0Other))
|
||||
})
|
||||
// only accept the first occurrence of the same 2 tokens
|
||||
return firstIndexInOtherPairs === i
|
||||
})
|
||||
// optionally filter out some pairs for tokens with custom bases defined
|
||||
.filter(([tokenA, tokenB]) => {
|
||||
if (!chainId) return true
|
||||
const customBases = CUSTOM_BASES[chainId]
|
||||
|
||||
const customBasesA: Token[] | undefined = customBases?.[tokenA.address]
|
||||
const customBasesB: Token[] | undefined = customBases?.[tokenB.address]
|
||||
|
||||
if (!customBasesA && !customBasesB) return true
|
||||
|
||||
if (customBasesA && !customBasesA.find((base) => tokenB.equals(base))) return false
|
||||
if (customBasesB && !customBasesB.find((base) => tokenA.equals(base))) return false
|
||||
|
||||
return true
|
||||
})
|
||||
: [],
|
||||
[tokenA, tokenB, bases, basePairs, chainId]
|
||||
)
|
||||
}
|
@ -1,75 +0,0 @@
|
||||
import { Currency } from '@uniswap/sdk-core'
|
||||
import { Pool, Route } from '@uniswap/v3-sdk'
|
||||
import { useWeb3React } from '@web3-react/core'
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import { useV3SwapPools } from './useV3SwapPools'
|
||||
|
||||
/**
|
||||
* Returns true if poolA is equivalent to poolB
|
||||
* @param poolA one of the two pools
|
||||
* @param poolB the other pool
|
||||
*/
|
||||
function poolEquals(poolA: Pool, poolB: Pool): boolean {
|
||||
return (
|
||||
poolA === poolB ||
|
||||
(poolA.token0.equals(poolB.token0) && poolA.token1.equals(poolB.token1) && poolA.fee === poolB.fee)
|
||||
)
|
||||
}
|
||||
|
||||
function computeAllRoutes(
|
||||
currencyIn: Currency,
|
||||
currencyOut: Currency,
|
||||
pools: Pool[],
|
||||
chainId: number,
|
||||
currentPath: Pool[] = [],
|
||||
allPaths: Route<Currency, Currency>[] = [],
|
||||
startCurrencyIn: Currency = currencyIn,
|
||||
maxHops = 2
|
||||
): Route<Currency, Currency>[] {
|
||||
const tokenIn = currencyIn?.wrapped
|
||||
const tokenOut = currencyOut?.wrapped
|
||||
if (!tokenIn || !tokenOut) throw new Error('Missing tokenIn/tokenOut')
|
||||
|
||||
for (const pool of pools) {
|
||||
if (!pool.involvesToken(tokenIn) || currentPath.find((pathPool) => poolEquals(pool, pathPool))) continue
|
||||
|
||||
const outputToken = pool.token0.equals(tokenIn) ? pool.token1 : pool.token0
|
||||
if (outputToken.equals(tokenOut)) {
|
||||
allPaths.push(new Route([...currentPath, pool], startCurrencyIn, currencyOut))
|
||||
} else if (maxHops > 1) {
|
||||
computeAllRoutes(
|
||||
outputToken,
|
||||
currencyOut,
|
||||
pools,
|
||||
chainId,
|
||||
[...currentPath, pool],
|
||||
allPaths,
|
||||
startCurrencyIn,
|
||||
maxHops - 1
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
return allPaths
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the routes from an input currency to an output currency
|
||||
* @param currencyIn the input currency
|
||||
* @param currencyOut the output currency
|
||||
*/
|
||||
export function useAllV3Routes(
|
||||
currencyIn?: Currency,
|
||||
currencyOut?: Currency
|
||||
): { loading: boolean; routes: Route<Currency, Currency>[] } {
|
||||
const { chainId } = useWeb3React()
|
||||
const { pools, loading: poolsLoading } = useV3SwapPools(currencyIn, currencyOut)
|
||||
|
||||
return useMemo(() => {
|
||||
if (poolsLoading || !chainId || !pools || !currencyIn || !currencyOut) return { loading: true, routes: [] }
|
||||
|
||||
const routes = computeAllRoutes(currencyIn, currencyOut, pools, chainId, [], [], currencyIn, 2)
|
||||
return { loading: false, routes }
|
||||
}, [chainId, currencyIn, currencyOut, pools, poolsLoading])
|
||||
}
|
@ -1,201 +0,0 @@
|
||||
import { renderHook } from '@testing-library/react'
|
||||
import { CurrencyAmount, TradeType } from '@uniswap/sdk-core'
|
||||
import { DAI, USDC_MAINNET } from 'constants/tokens'
|
||||
import { RouterPreference } from 'state/routing/types'
|
||||
import { TradeState } from 'state/routing/types'
|
||||
import { useRouterPreference } from 'state/user/hooks'
|
||||
import { mocked } from 'test-utils/mocked'
|
||||
|
||||
import { useRoutingAPITrade } from '../state/routing/useRoutingAPITrade'
|
||||
import useAutoRouterSupported from './useAutoRouterSupported'
|
||||
import { useBestTrade } from './useBestTrade'
|
||||
import { useClientSideV3Trade } from './useClientSideV3Trade'
|
||||
import useDebounce from './useDebounce'
|
||||
import useIsWindowVisible from './useIsWindowVisible'
|
||||
|
||||
const USDCAmount = CurrencyAmount.fromRawAmount(USDC_MAINNET, '10000')
|
||||
const DAIAmount = CurrencyAmount.fromRawAmount(DAI, '10000')
|
||||
|
||||
jest.mock('./useAutoRouterSupported')
|
||||
jest.mock('./useClientSideV3Trade')
|
||||
jest.mock('./useDebounce')
|
||||
jest.mock('./useIsWindowVisible')
|
||||
jest.mock('state/routing/useRoutingAPITrade')
|
||||
jest.mock('state/user/hooks')
|
||||
|
||||
// helpers to set mock expectations
|
||||
const expectRouterMock = (state: TradeState) => {
|
||||
mocked(useRoutingAPITrade).mockReturnValue({ state, trade: undefined })
|
||||
}
|
||||
|
||||
const expectClientSideMock = (state: TradeState) => {
|
||||
mocked(useClientSideV3Trade).mockReturnValue({ state, trade: undefined })
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
// ignore debounced value
|
||||
mocked(useDebounce).mockImplementation((value) => value)
|
||||
|
||||
mocked(useIsWindowVisible).mockReturnValue(true)
|
||||
mocked(useAutoRouterSupported).mockReturnValue(true)
|
||||
mocked(useRouterPreference).mockReturnValue([RouterPreference.CLIENT, () => undefined])
|
||||
})
|
||||
|
||||
describe('#useBestV3Trade ExactIn', () => {
|
||||
it('does not compute routing api trade when routing API is not supported', async () => {
|
||||
mocked(useAutoRouterSupported).mockReturnValue(false)
|
||||
expectRouterMock(TradeState.INVALID)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_INPUT, USDCAmount, DAI))
|
||||
|
||||
expect(useRoutingAPITrade).toHaveBeenCalledWith(
|
||||
TradeType.EXACT_INPUT,
|
||||
USDCAmount,
|
||||
DAI,
|
||||
RouterPreference.CLIENT,
|
||||
true, // skipFetch
|
||||
undefined
|
||||
)
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_INPUT, USDCAmount, DAI)
|
||||
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
|
||||
})
|
||||
|
||||
it('does not compute routing api trade when window is not focused', async () => {
|
||||
mocked(useIsWindowVisible).mockReturnValue(false)
|
||||
expectRouterMock(TradeState.NO_ROUTE_FOUND)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_INPUT, USDCAmount, DAI))
|
||||
|
||||
expect(useRoutingAPITrade).toHaveBeenCalledWith(
|
||||
TradeType.EXACT_INPUT,
|
||||
USDCAmount,
|
||||
DAI,
|
||||
RouterPreference.CLIENT,
|
||||
true, // skipFetch
|
||||
undefined
|
||||
)
|
||||
expect(result.current).toEqual({ state: TradeState.NO_ROUTE_FOUND, trade: undefined })
|
||||
})
|
||||
|
||||
describe('when routing api is in non-error state', () => {
|
||||
it('does not compute client side v3 trade if routing api is LOADING', () => {
|
||||
expectRouterMock(TradeState.LOADING)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_INPUT, USDCAmount, DAI))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_INPUT, undefined, undefined)
|
||||
expect(result.current).toEqual({ state: TradeState.LOADING, trade: undefined })
|
||||
})
|
||||
|
||||
it('does not compute client side v3 trade if routing api is VALID', () => {
|
||||
expectRouterMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_INPUT, USDCAmount, DAI))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_INPUT, undefined, undefined)
|
||||
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
|
||||
})
|
||||
})
|
||||
|
||||
describe('when routing api is in error state', () => {
|
||||
it('does not compute client side v3 trade if routing api is INVALID', () => {
|
||||
expectRouterMock(TradeState.INVALID)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
renderHook(() => useBestTrade(TradeType.EXACT_INPUT, USDCAmount, DAI))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_INPUT, undefined, undefined)
|
||||
})
|
||||
|
||||
it('computes client side v3 trade if routing api is NO_ROUTE_FOUND', () => {
|
||||
expectRouterMock(TradeState.NO_ROUTE_FOUND)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_INPUT, USDCAmount, DAI))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_INPUT, USDCAmount, DAI)
|
||||
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('#useBestV3Trade ExactOut', () => {
|
||||
it('does not compute routing api trade when routing API is not supported', () => {
|
||||
mocked(useAutoRouterSupported).mockReturnValue(false)
|
||||
expectRouterMock(TradeState.INVALID)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
|
||||
|
||||
expect(useRoutingAPITrade).toHaveBeenCalledWith(
|
||||
TradeType.EXACT_OUTPUT,
|
||||
DAIAmount,
|
||||
USDC_MAINNET,
|
||||
RouterPreference.CLIENT,
|
||||
true, // skipFetch
|
||||
undefined
|
||||
)
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET)
|
||||
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
|
||||
})
|
||||
|
||||
it('does not compute routing api trade when window is not focused', () => {
|
||||
mocked(useIsWindowVisible).mockReturnValue(false)
|
||||
expectRouterMock(TradeState.NO_ROUTE_FOUND)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
|
||||
|
||||
expect(useRoutingAPITrade).toHaveBeenCalledWith(
|
||||
TradeType.EXACT_OUTPUT,
|
||||
DAIAmount,
|
||||
USDC_MAINNET,
|
||||
RouterPreference.CLIENT,
|
||||
true, // skipFetch
|
||||
undefined
|
||||
)
|
||||
expect(result.current).toEqual({ state: TradeState.NO_ROUTE_FOUND, trade: undefined })
|
||||
})
|
||||
describe('when routing api is in non-error state', () => {
|
||||
it('does not compute client side v3 trade if routing api is LOADING', () => {
|
||||
expectRouterMock(TradeState.LOADING)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, undefined)
|
||||
expect(result.current).toEqual({ state: TradeState.LOADING, trade: undefined })
|
||||
})
|
||||
|
||||
it('does not compute client side v3 trade if routing api is VALID', () => {
|
||||
expectRouterMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, undefined)
|
||||
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
|
||||
})
|
||||
})
|
||||
|
||||
describe('when routing api is in error state', () => {
|
||||
it('computes client side v3 trade if routing api is INVALID', () => {
|
||||
expectRouterMock(TradeState.INVALID)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, undefined, undefined)
|
||||
})
|
||||
|
||||
it('computes client side v3 trade if routing api is NO_ROUTE_FOUND', () => {
|
||||
expectRouterMock(TradeState.NO_ROUTE_FOUND)
|
||||
expectClientSideMock(TradeState.VALID)
|
||||
|
||||
const { result } = renderHook(() => useBestTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
|
||||
|
||||
expect(useClientSideV3Trade).toHaveBeenCalledWith(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET)
|
||||
expect(result.current).toEqual({ state: TradeState.VALID, trade: undefined })
|
||||
})
|
||||
})
|
||||
})
|
@ -1,155 +0,0 @@
|
||||
import { ChainId, Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
|
||||
import { Route, SwapQuoter } from '@uniswap/v3-sdk'
|
||||
import { useWeb3React } from '@web3-react/core'
|
||||
import JSBI from 'jsbi'
|
||||
import { useSingleContractWithCallData } from 'lib/hooks/multicall'
|
||||
import { useMemo } from 'react'
|
||||
import { ClassicTrade, InterfaceTrade, QuoteMethod, TradeState } from 'state/routing/types'
|
||||
|
||||
import { isCelo } from '../constants/tokens'
|
||||
import { useAllV3Routes } from './useAllV3Routes'
|
||||
import { useQuoter } from './useContract'
|
||||
|
||||
const QUOTE_GAS_OVERRIDES: { [chainId: number]: number } = {
|
||||
[ChainId.ARBITRUM_ONE]: 25_000_000,
|
||||
[ChainId.ARBITRUM_GOERLI]: 25_000_000,
|
||||
[ChainId.CELO]: 50_000_000,
|
||||
[ChainId.CELO_ALFAJORES]: 50_000_000,
|
||||
[ChainId.POLYGON]: 40_000_000,
|
||||
[ChainId.POLYGON_MUMBAI]: 40_000_000,
|
||||
[ChainId.BNB]: 50_000_000,
|
||||
[ChainId.AVALANCHE]: 50_000_000,
|
||||
}
|
||||
|
||||
const DEFAULT_GAS_QUOTE = 2_000_000
|
||||
|
||||
// TODO (UniswapX or in general): Deprecate this?
|
||||
/**
|
||||
* Returns the best v3 trade for a desired swap
|
||||
* @param tradeType whether the swap is an exact in/out
|
||||
* @param amountSpecified the exact amount to swap in/out
|
||||
* @param otherCurrency the desired output/payment currency
|
||||
*/
|
||||
export function useClientSideV3Trade<TTradeType extends TradeType>(
|
||||
tradeType: TTradeType,
|
||||
amountSpecified?: CurrencyAmount<Currency>,
|
||||
otherCurrency?: Currency
|
||||
): { state: TradeState; trade?: InterfaceTrade } {
|
||||
const [currencyIn, currencyOut] =
|
||||
tradeType === TradeType.EXACT_INPUT
|
||||
? [amountSpecified?.currency, otherCurrency]
|
||||
: [otherCurrency, amountSpecified?.currency]
|
||||
const { routes, loading: routesLoading } = useAllV3Routes(currencyIn, currencyOut)
|
||||
|
||||
const { chainId } = useWeb3React()
|
||||
// Chains deployed using the deploy-v3 script only deploy QuoterV2.
|
||||
const useQuoterV2 = useMemo(() => Boolean(chainId && isCelo(chainId)), [chainId])
|
||||
const quoter = useQuoter(useQuoterV2)
|
||||
const callData = useMemo(
|
||||
() =>
|
||||
amountSpecified
|
||||
? routes.map(
|
||||
(route) => SwapQuoter.quoteCallParameters(route, amountSpecified, tradeType, { useQuoterV2 }).calldata
|
||||
)
|
||||
: [],
|
||||
[amountSpecified, routes, tradeType, useQuoterV2]
|
||||
)
|
||||
|
||||
const quotesResults = useSingleContractWithCallData(quoter, callData, {
|
||||
gasRequired: chainId ? QUOTE_GAS_OVERRIDES[chainId] ?? DEFAULT_GAS_QUOTE : undefined,
|
||||
})
|
||||
|
||||
const currenciesAreTheSame = useMemo(
|
||||
() => currencyIn && currencyOut && (currencyIn.equals(currencyOut) || currencyIn.wrapped.equals(currencyOut)),
|
||||
[currencyIn, currencyOut]
|
||||
)
|
||||
|
||||
return useMemo(() => {
|
||||
if (
|
||||
!amountSpecified ||
|
||||
!currencyIn ||
|
||||
!currencyOut ||
|
||||
quotesResults.some(({ valid }) => !valid) ||
|
||||
currenciesAreTheSame
|
||||
) {
|
||||
return {
|
||||
state: TradeState.INVALID,
|
||||
trade: undefined,
|
||||
}
|
||||
}
|
||||
|
||||
if (routesLoading || quotesResults.some(({ loading }) => loading)) {
|
||||
return {
|
||||
state: TradeState.LOADING,
|
||||
trade: undefined,
|
||||
}
|
||||
}
|
||||
|
||||
const { bestRoute, amountIn, amountOut } = quotesResults.reduce(
|
||||
(
|
||||
currentBest: {
|
||||
bestRoute: Route<Currency, Currency> | null
|
||||
amountIn: CurrencyAmount<Currency> | null
|
||||
amountOut: CurrencyAmount<Currency> | null
|
||||
},
|
||||
{ result },
|
||||
i
|
||||
) => {
|
||||
if (!result) return currentBest
|
||||
|
||||
// overwrite the current best if it's not defined or if this route is better
|
||||
if (tradeType === TradeType.EXACT_INPUT) {
|
||||
const amountOut = CurrencyAmount.fromRawAmount(currencyOut, result.amountOut.toString())
|
||||
if (currentBest.amountOut === null || JSBI.lessThan(currentBest.amountOut.quotient, amountOut.quotient)) {
|
||||
return {
|
||||
bestRoute: routes[i],
|
||||
amountIn: amountSpecified,
|
||||
amountOut,
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const amountIn = CurrencyAmount.fromRawAmount(currencyIn, result.amountIn.toString())
|
||||
if (currentBest.amountIn === null || JSBI.greaterThan(currentBest.amountIn.quotient, amountIn.quotient)) {
|
||||
return {
|
||||
bestRoute: routes[i],
|
||||
amountIn,
|
||||
amountOut: amountSpecified,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return currentBest
|
||||
},
|
||||
{
|
||||
bestRoute: null,
|
||||
amountIn: null,
|
||||
amountOut: null,
|
||||
}
|
||||
)
|
||||
|
||||
if (!bestRoute || !amountIn || !amountOut) {
|
||||
return {
|
||||
state: TradeState.NO_ROUTE_FOUND,
|
||||
trade: undefined,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
state: TradeState.VALID,
|
||||
trade: new ClassicTrade({
|
||||
v2Routes: [],
|
||||
v3Routes: [
|
||||
{
|
||||
routev3: bestRoute,
|
||||
inputAmount: amountIn,
|
||||
outputAmount: amountOut,
|
||||
},
|
||||
],
|
||||
tradeType,
|
||||
quoteMethod: QuoteMethod.CLIENT_SIDE,
|
||||
// When using SOR, we don't have gas values from routing-api, so we can't calculate approve gas info
|
||||
approveInfo: { needsApprove: false },
|
||||
}),
|
||||
}
|
||||
}, [amountSpecified, currenciesAreTheSame, currencyIn, currencyOut, quotesResults, routes, routesLoading, tradeType])
|
||||
}
|
@ -5,15 +5,12 @@ import {
|
||||
ENS_REGISTRAR_ADDRESSES,
|
||||
MULTICALL_ADDRESSES,
|
||||
NONFUNGIBLE_POSITION_MANAGER_ADDRESSES,
|
||||
QUOTER_ADDRESSES,
|
||||
TICK_LENS_ADDRESSES,
|
||||
V2_ROUTER_ADDRESS,
|
||||
V3_MIGRATOR_ADDRESSES,
|
||||
} from '@uniswap/sdk-core'
|
||||
import QuoterV2Json from '@uniswap/swap-router-contracts/artifacts/contracts/lens/QuoterV2.sol/QuoterV2.json'
|
||||
import IUniswapV2PairJson from '@uniswap/v2-core/build/IUniswapV2Pair.json'
|
||||
import IUniswapV2Router02Json from '@uniswap/v2-periphery/build/IUniswapV2Router02.json'
|
||||
import QuoterJson from '@uniswap/v3-periphery/artifacts/contracts/lens/Quoter.sol/Quoter.json'
|
||||
import TickLensJson from '@uniswap/v3-periphery/artifacts/contracts/lens/TickLens.sol/TickLens.json'
|
||||
import UniswapInterfaceMulticallJson from '@uniswap/v3-periphery/artifacts/contracts/lens/UniswapInterfaceMulticall.sol/UniswapInterfaceMulticall.json'
|
||||
import NonfungiblePositionManagerJson from '@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json'
|
||||
@ -32,14 +29,12 @@ import WETH_ABI from 'abis/weth.json'
|
||||
import { RPC_PROVIDERS } from 'constants/providers'
|
||||
import { WRAPPED_NATIVE_CURRENCY } from 'constants/tokens'
|
||||
import { useMemo } from 'react'
|
||||
import { NonfungiblePositionManager, Quoter, QuoterV2, TickLens, UniswapInterfaceMulticall } from 'types/v3'
|
||||
import { NonfungiblePositionManager, TickLens, UniswapInterfaceMulticall } from 'types/v3'
|
||||
import { V3Migrator } from 'types/v3/V3Migrator'
|
||||
import { getContract } from 'utils'
|
||||
|
||||
const { abi: IUniswapV2PairABI } = IUniswapV2PairJson
|
||||
const { abi: IUniswapV2Router02ABI } = IUniswapV2Router02Json
|
||||
const { abi: QuoterABI } = QuoterJson
|
||||
const { abi: QuoterV2ABI } = QuoterV2Json
|
||||
const { abi: TickLensABI } = TickLensJson
|
||||
const { abi: MulticallABI } = UniswapInterfaceMulticallJson
|
||||
const { abi: NFTPositionManagerABI } = NonfungiblePositionManagerJson
|
||||
@ -157,10 +152,6 @@ export function useV3NFTPositionManagerContract(withSignerIfPossible?: boolean):
|
||||
)
|
||||
}
|
||||
|
||||
export function useQuoter(useQuoterV2: boolean) {
|
||||
return useContract<Quoter | QuoterV2>(QUOTER_ADDRESSES, useQuoterV2 ? QuoterV2ABI : QuoterABI)
|
||||
}
|
||||
|
||||
export function useTickLens(): TickLens | null {
|
||||
const { chainId } = useWeb3React()
|
||||
const address = chainId ? TICK_LENS_ADDRESSES[chainId] : undefined
|
||||
|
72
src/hooks/useDebouncedTrade.test.ts
Normal file
72
src/hooks/useDebouncedTrade.test.ts
Normal file
@ -0,0 +1,72 @@
|
||||
import { renderHook } from '@testing-library/react'
|
||||
import { CurrencyAmount, TradeType } from '@uniswap/sdk-core'
|
||||
import { DAI, USDC_MAINNET } from 'constants/tokens'
|
||||
import { RouterPreference, TradeState } from 'state/routing/types'
|
||||
import { useRouterPreference } from 'state/user/hooks'
|
||||
import { mocked } from 'test-utils/mocked'
|
||||
|
||||
import { useRoutingAPITrade } from '../state/routing/useRoutingAPITrade'
|
||||
import useAutoRouterSupported from './useAutoRouterSupported'
|
||||
import useDebounce from './useDebounce'
|
||||
import { useDebouncedTrade } from './useDebouncedTrade'
|
||||
import useIsWindowVisible from './useIsWindowVisible'
|
||||
|
||||
const USDCAmount = CurrencyAmount.fromRawAmount(USDC_MAINNET, '10000')
|
||||
const DAIAmount = CurrencyAmount.fromRawAmount(DAI, '10000')
|
||||
|
||||
jest.mock('./useAutoRouterSupported')
|
||||
jest.mock('./useDebounce')
|
||||
jest.mock('./useIsWindowVisible')
|
||||
jest.mock('state/routing/useRoutingAPITrade')
|
||||
jest.mock('state/user/hooks')
|
||||
|
||||
// helpers to set mock expectations
|
||||
const expectRouterMock = (state: TradeState) => {
|
||||
mocked(useRoutingAPITrade).mockReturnValue({ state, trade: undefined })
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
// ignore debounced value
|
||||
mocked(useDebounce).mockImplementation((value) => value)
|
||||
|
||||
mocked(useIsWindowVisible).mockReturnValue(true)
|
||||
mocked(useAutoRouterSupported).mockReturnValue(true)
|
||||
mocked(useRouterPreference).mockReturnValue([RouterPreference.CLIENT, () => undefined])
|
||||
})
|
||||
|
||||
describe('#useBestV3Trade ExactIn', () => {
|
||||
it('does not compute routing api trade when window is not focused', async () => {
|
||||
mocked(useIsWindowVisible).mockReturnValue(false)
|
||||
expectRouterMock(TradeState.NO_ROUTE_FOUND)
|
||||
|
||||
const { result } = renderHook(() => useDebouncedTrade(TradeType.EXACT_INPUT, USDCAmount, DAI))
|
||||
|
||||
expect(useRoutingAPITrade).toHaveBeenCalledWith(
|
||||
TradeType.EXACT_INPUT,
|
||||
USDCAmount,
|
||||
DAI,
|
||||
RouterPreference.CLIENT,
|
||||
true, // skipFetch
|
||||
undefined
|
||||
)
|
||||
expect(result.current).toEqual({ state: TradeState.NO_ROUTE_FOUND, trade: undefined })
|
||||
})
|
||||
})
|
||||
|
||||
describe('#useDebouncedTrade ExactOut', () => {
|
||||
it('does not compute routing api trade when window is not focused', () => {
|
||||
mocked(useIsWindowVisible).mockReturnValue(false)
|
||||
expectRouterMock(TradeState.NO_ROUTE_FOUND)
|
||||
|
||||
const { result } = renderHook(() => useDebouncedTrade(TradeType.EXACT_OUTPUT, DAIAmount, USDC_MAINNET))
|
||||
expect(useRoutingAPITrade).toHaveBeenCalledWith(
|
||||
TradeType.EXACT_OUTPUT,
|
||||
DAIAmount,
|
||||
USDC_MAINNET,
|
||||
RouterPreference.CLIENT,
|
||||
true, // skipFetch
|
||||
undefined
|
||||
)
|
||||
expect(result.current).toEqual({ state: TradeState.NO_ROUTE_FOUND, trade: undefined })
|
||||
})
|
||||
})
|
@ -9,7 +9,6 @@ import { useRoutingAPITrade } from 'state/routing/useRoutingAPITrade'
|
||||
import { useRouterPreference } from 'state/user/hooks'
|
||||
|
||||
import useAutoRouterSupported from './useAutoRouterSupported'
|
||||
import { useClientSideV3Trade } from './useClientSideV3Trade'
|
||||
import useDebounce from './useDebounce'
|
||||
import useIsWindowVisible from './useIsWindowVisible'
|
||||
|
||||
@ -19,7 +18,7 @@ const DEBOUNCE_TIME = 350
|
||||
// Temporary until we remove the feature flag.
|
||||
const DEBOUNCE_TIME_INCREASED = 650
|
||||
|
||||
export function useBestTrade(
|
||||
export function useDebouncedTrade(
|
||||
tradeType: TradeType,
|
||||
amountSpecified?: CurrencyAmount<Currency>,
|
||||
otherCurrency?: Currency,
|
||||
@ -30,7 +29,7 @@ export function useBestTrade(
|
||||
trade?: InterfaceTrade
|
||||
}
|
||||
|
||||
export function useBestTrade(
|
||||
export function useDebouncedTrade(
|
||||
tradeType: TradeType,
|
||||
amountSpecified?: CurrencyAmount<Currency>,
|
||||
otherCurrency?: Currency,
|
||||
@ -41,12 +40,15 @@ export function useBestTrade(
|
||||
trade?: ClassicTrade
|
||||
}
|
||||
/**
|
||||
* Returns the best v2+v3 trade for a desired swap.
|
||||
* Returns the debounced v2+v3 trade for a desired swap.
|
||||
* @param tradeType whether the swap is an exact in/out
|
||||
* @param amountSpecified the exact amount to swap in/out
|
||||
* @param otherCurrency the desired output/payment currency
|
||||
* @param routerPreferenceOverride force useRoutingAPITrade to use a specific RouterPreference
|
||||
* @param account the connected address
|
||||
*
|
||||
*/
|
||||
export function useBestTrade(
|
||||
export function useDebouncedTrade(
|
||||
tradeType: TradeType,
|
||||
amountSpecified?: CurrencyAmount<Currency>,
|
||||
otherCurrency?: Currency,
|
||||
@ -91,21 +93,12 @@ export function useBestTrade(
|
||||
const inDebounce =
|
||||
(!debouncedAmount && Boolean(amountSpecified)) || (!debouncedOtherCurrency && Boolean(otherCurrency))
|
||||
const isLoading = routingAPITrade.state === TradeState.LOADING || inDebounce
|
||||
const useFallback = (!autoRouterSupported || routingAPITrade.state === TradeState.NO_ROUTE_FOUND) && shouldGetTrade
|
||||
|
||||
// only use client side router if routing api trade failed or is not supported
|
||||
const bestV3Trade = useClientSideV3Trade(
|
||||
tradeType,
|
||||
useFallback ? debouncedAmount : undefined,
|
||||
useFallback ? debouncedOtherCurrency : undefined
|
||||
)
|
||||
|
||||
// only return gas estimate from api if routing api trade is used
|
||||
return useMemo(
|
||||
() => ({
|
||||
...(useFallback ? bestV3Trade : routingAPITrade),
|
||||
...routingAPITrade,
|
||||
...(isLoading ? { state: TradeState.LOADING } : {}),
|
||||
}),
|
||||
[bestV3Trade, isLoading, routingAPITrade, useFallback]
|
||||
[isLoading, routingAPITrade]
|
||||
)
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
import { getConnection } from 'connection'
|
||||
import { ConnectionType } from 'connection/types'
|
||||
import { useMemo } from 'react'
|
||||
import { useAppSelector } from 'state/hooks'
|
||||
|
||||
const SELECTABLE_WALLETS = [
|
||||
ConnectionType.UNISWAP_WALLET_V2,
|
||||
@ -10,17 +11,23 @@ const SELECTABLE_WALLETS = [
|
||||
]
|
||||
|
||||
export default function useOrderedConnections() {
|
||||
const selectedWallet = useAppSelector((state) => state.user.selectedWallet)
|
||||
|
||||
return useMemo(() => {
|
||||
const orderedConnectionTypes: ConnectionType[] = []
|
||||
|
||||
// Always attempt to use to Gnosis Safe first, as we can't know if we're in a SafeContext.
|
||||
orderedConnectionTypes.push(ConnectionType.GNOSIS_SAFE)
|
||||
|
||||
orderedConnectionTypes.push(...SELECTABLE_WALLETS)
|
||||
// Add the `selectedWallet` to the top so it's prioritized, then add the other selectable wallets.
|
||||
if (selectedWallet) {
|
||||
orderedConnectionTypes.push(selectedWallet)
|
||||
}
|
||||
orderedConnectionTypes.push(...SELECTABLE_WALLETS.filter((wallet) => wallet !== selectedWallet))
|
||||
|
||||
// Add network connection last as it should be the fallback.
|
||||
orderedConnectionTypes.push(ConnectionType.NETWORK)
|
||||
|
||||
return orderedConnectionTypes.map((connectionType) => getConnection(connectionType))
|
||||
}, [])
|
||||
}, [selectedWallet])
|
||||
}
|
||||
|
@ -58,6 +58,8 @@ export function useUniversalRouterSwapCallback(
|
||||
if (!chainId) throw new Error('missing chainId')
|
||||
if (!provider) throw new Error('missing provider')
|
||||
if (!trade) throw new Error('missing trade')
|
||||
const connectedChainId = await provider.getSigner().getChainId()
|
||||
if (chainId !== connectedChainId) throw new Error('signer chainId does not match')
|
||||
|
||||
setTraceData('slippageTolerance', options.slippageTolerance.toFixed(2))
|
||||
const { calldata: data, value } = SwapRouter.swapERC20CallParameters(trade, {
|
||||
@ -66,6 +68,7 @@ export function useUniversalRouterSwapCallback(
|
||||
inputTokenPermit: options.permit,
|
||||
fee: options.feeOptions,
|
||||
})
|
||||
|
||||
const tx = {
|
||||
from: account,
|
||||
to: UNIVERSAL_ROUTER_ADDRESS(chainId),
|
||||
|
@ -1,56 +0,0 @@
|
||||
import { ChainId, Currency, Token } from '@uniswap/sdk-core'
|
||||
import { FeeAmount, Pool } from '@uniswap/v3-sdk'
|
||||
import { useWeb3React } from '@web3-react/core'
|
||||
import { useMemo } from 'react'
|
||||
|
||||
import { useAllCurrencyCombinations } from './useAllCurrencyCombinations'
|
||||
import { PoolState, usePools } from './usePools'
|
||||
|
||||
/**
|
||||
* Returns all the existing pools that should be considered for swapping between an input currency and an output currency
|
||||
* @param currencyIn the input currency
|
||||
* @param currencyOut the output currency
|
||||
*/
|
||||
export function useV3SwapPools(
|
||||
currencyIn?: Currency,
|
||||
currencyOut?: Currency
|
||||
): {
|
||||
pools: Pool[]
|
||||
loading: boolean
|
||||
} {
|
||||
const { chainId } = useWeb3React()
|
||||
|
||||
const allCurrencyCombinations = useAllCurrencyCombinations(currencyIn, currencyOut)
|
||||
|
||||
const allCurrencyCombinationsWithAllFees: [Token, Token, FeeAmount][] = useMemo(
|
||||
() =>
|
||||
allCurrencyCombinations.reduce<[Token, Token, FeeAmount][]>((list, [tokenA, tokenB]) => {
|
||||
return chainId === ChainId.MAINNET
|
||||
? list.concat([
|
||||
[tokenA, tokenB, FeeAmount.LOW],
|
||||
[tokenA, tokenB, FeeAmount.MEDIUM],
|
||||
[tokenA, tokenB, FeeAmount.HIGH],
|
||||
])
|
||||
: list.concat([
|
||||
[tokenA, tokenB, FeeAmount.LOWEST],
|
||||
[tokenA, tokenB, FeeAmount.LOW],
|
||||
[tokenA, tokenB, FeeAmount.MEDIUM],
|
||||
[tokenA, tokenB, FeeAmount.HIGH],
|
||||
])
|
||||
}, []),
|
||||
[allCurrencyCombinations, chainId]
|
||||
)
|
||||
|
||||
const pools = usePools(allCurrencyCombinationsWithAllFees)
|
||||
|
||||
return useMemo(() => {
|
||||
return {
|
||||
pools: pools
|
||||
.filter((tuple): tuple is [PoolState.EXISTS, Pool] => {
|
||||
return tuple[0] === PoolState.EXISTS && tuple[1] !== null
|
||||
})
|
||||
.map(([, pool]) => pool),
|
||||
loading: pools.some(([state]) => state === PoolState.LOADING),
|
||||
}
|
||||
}, [pools])
|
||||
}
|
@ -35,13 +35,6 @@ export function useSingleContractMultipleData(
|
||||
return multicall.hooks.useSingleContractMultipleData(chainId, latestBlock, ...args)
|
||||
}
|
||||
|
||||
export function useSingleContractWithCallData(
|
||||
...args: SkipFirstTwoParams<typeof multicall.hooks.useSingleContractWithCallData>
|
||||
) {
|
||||
const { chainId, latestBlock } = useCallContext()
|
||||
return multicall.hooks.useSingleContractWithCallData(chainId, latestBlock, ...args)
|
||||
}
|
||||
|
||||
function useCallContext() {
|
||||
const { chainId } = useWeb3React()
|
||||
const latestBlock = useBlockNumber()
|
||||
|
3701
src/locales/af-ZA.po
Normal file
3701
src/locales/af-ZA.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ar-SA.po
Normal file
3701
src/locales/ar-SA.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ca-ES.po
Normal file
3701
src/locales/ca-ES.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/cs-CZ.po
Normal file
3701
src/locales/cs-CZ.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/da-DK.po
Normal file
3701
src/locales/da-DK.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/de-DE.po
Normal file
3701
src/locales/de-DE.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/el-GR.po
Normal file
3701
src/locales/el-GR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/es-ES.po
Normal file
3701
src/locales/es-ES.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/fi-FI.po
Normal file
3701
src/locales/fi-FI.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/fr-FR.po
Normal file
3701
src/locales/fr-FR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/he-IL.po
Normal file
3701
src/locales/he-IL.po
Normal file
File diff suppressed because it is too large
Load Diff
3702
src/locales/hu-HU.po
Normal file
3702
src/locales/hu-HU.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/id-ID.po
Normal file
3701
src/locales/id-ID.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/it-IT.po
Normal file
3701
src/locales/it-IT.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ja-JP.po
Normal file
3701
src/locales/ja-JP.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ko-KR.po
Normal file
3701
src/locales/ko-KR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/nl-NL.po
Normal file
3701
src/locales/nl-NL.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/no-NO.po
Normal file
3701
src/locales/no-NO.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/pl-PL.po
Normal file
3701
src/locales/pl-PL.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/pt-BR.po
Normal file
3701
src/locales/pt-BR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/pt-PT.po
Normal file
3701
src/locales/pt-PT.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ro-RO.po
Normal file
3701
src/locales/ro-RO.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/ru-RU.po
Normal file
3701
src/locales/ru-RU.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sl-SI.po
Normal file
3701
src/locales/sl-SI.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sr-SP.po
Normal file
3701
src/locales/sr-SP.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sv-SE.po
Normal file
3701
src/locales/sv-SE.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/sw-TZ.po
Normal file
3701
src/locales/sw-TZ.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/th-TH.po
Normal file
3701
src/locales/th-TH.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/tr-TR.po
Normal file
3701
src/locales/tr-TR.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/uk-UA.po
Normal file
3701
src/locales/uk-UA.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/vi-VN.po
Normal file
3701
src/locales/vi-VN.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/zh-CN.po
Normal file
3701
src/locales/zh-CN.po
Normal file
File diff suppressed because it is too large
Load Diff
3701
src/locales/zh-TW.po
Normal file
3701
src/locales/zh-TW.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
import { Currency, CurrencyAmount, NativeCurrency, Percent, Token, TradeType } from '@uniswap/sdk-core'
|
||||
import useAutoSlippageTolerance from 'hooks/useAutoSlippageTolerance'
|
||||
import { useBestTrade } from 'hooks/useBestTrade'
|
||||
import { useDebouncedTrade } from 'hooks/useDebouncedTrade'
|
||||
import { useMemo } from 'react'
|
||||
import { RouterPreference } from 'state/routing/types'
|
||||
import { ClassicTrade, TradeState } from 'state/routing/types'
|
||||
@ -15,7 +15,7 @@ export default function useDerivedPayWithAnyTokenSwapInfo(
|
||||
maximumAmountIn?: CurrencyAmount<Token>
|
||||
allowedSlippage: Percent
|
||||
} {
|
||||
const { state, trade } = useBestTrade(
|
||||
const { state, trade } = useDebouncedTrade(
|
||||
TradeType.EXACT_OUTPUT,
|
||||
parsedOutputAmount,
|
||||
inputCurrency ?? undefined,
|
||||
|
@ -128,8 +128,9 @@ export const routingApi = createApi({
|
||||
)
|
||||
},
|
||||
async queryFn(args, _api, _extraOptions, fetch) {
|
||||
const fellBack = false
|
||||
let fellBack = false
|
||||
if (shouldUseAPIRouter(args)) {
|
||||
fellBack = true
|
||||
try {
|
||||
const {
|
||||
tokenInAddress,
|
||||
|
@ -2,7 +2,7 @@ import { Trans } from '@lingui/macro'
|
||||
import { ChainId, Currency, CurrencyAmount, Percent, TradeType } from '@uniswap/sdk-core'
|
||||
import { useWeb3React } from '@web3-react/core'
|
||||
import useAutoSlippageTolerance from 'hooks/useAutoSlippageTolerance'
|
||||
import { useBestTrade } from 'hooks/useBestTrade'
|
||||
import { useDebouncedTrade } from 'hooks/useDebouncedTrade'
|
||||
import tryParseCurrencyAmount from 'lib/utils/tryParseCurrencyAmount'
|
||||
import { ParsedQs } from 'qs'
|
||||
import { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'
|
||||
@ -115,7 +115,7 @@ export function useDerivedSwapInfo(state: SwapState, chainId: ChainId | undefine
|
||||
[inputCurrency, isExactIn, outputCurrency, typedValue]
|
||||
)
|
||||
|
||||
let trade = useBestTrade(
|
||||
let trade = useDebouncedTrade(
|
||||
isExactIn ? TradeType.EXACT_INPUT : TradeType.EXACT_OUTPUT,
|
||||
parsedAmount,
|
||||
(isExactIn ? outputCurrency : inputCurrency) ?? undefined,
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { CurrencyAmount, Price } from '@uniswap/sdk-core'
|
||||
import { renBTC, USDC_MAINNET } from 'constants/tokens'
|
||||
import { USDC_MAINNET, WBTC } from 'constants/tokens'
|
||||
|
||||
import {
|
||||
currencyAmountToPreciseFloat,
|
||||
@ -29,19 +29,19 @@ describe('currencyAmountToPreciseFloat', () => {
|
||||
|
||||
describe('priceToPreciseFloat', () => {
|
||||
it('small number', () => {
|
||||
const price = new Price(renBTC, USDC_MAINNET, 1234, 1)
|
||||
const price = new Price(WBTC, USDC_MAINNET, 1234, 1)
|
||||
expect(priceToPreciseFloat(price)).toEqual(0.0810373)
|
||||
})
|
||||
it('tiny number', () => {
|
||||
const price = new Price(renBTC, USDC_MAINNET, 12345600, 1)
|
||||
const price = new Price(WBTC, USDC_MAINNET, 12345600, 1)
|
||||
expect(priceToPreciseFloat(price)).toEqual(0.00000810005)
|
||||
})
|
||||
it('lots of decimals', () => {
|
||||
const price = new Price(renBTC, USDC_MAINNET, 123, 7)
|
||||
const price = new Price(WBTC, USDC_MAINNET, 123, 7)
|
||||
expect(priceToPreciseFloat(price)).toEqual(5.691056911)
|
||||
})
|
||||
it('integer', () => {
|
||||
const price = new Price(renBTC, USDC_MAINNET, 1, 7)
|
||||
const price = new Price(WBTC, USDC_MAINNET, 1, 7)
|
||||
expect(priceToPreciseFloat(price)).toEqual(700)
|
||||
})
|
||||
})
|
||||
|
608
yarn.lock
608
yarn.lock
@ -1392,6 +1392,31 @@
|
||||
dependencies:
|
||||
mime "^3.0.0"
|
||||
|
||||
"@cloudflare/workerd-darwin-64@1.20230807.0":
|
||||
version "1.20230807.0"
|
||||
resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20230807.0.tgz#e5cb7aed67fe5688c01f8371bbf7f5770df30e72"
|
||||
integrity sha512-p1XgkX6OcomFSRSHiIo6XbWB40sMExnFUWtZFfSvB7oNmkrtEvUCI3iuh+ibFI5IDSZqsRKyIHx6Oe22Z0ei5A==
|
||||
|
||||
"@cloudflare/workerd-darwin-arm64@1.20230807.0":
|
||||
version "1.20230807.0"
|
||||
resolved "https://registry.yarnpkg.com/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20230807.0.tgz#905123cc5f547baca704b0b3d4a018e1416adc26"
|
||||
integrity sha512-HjhjRFPvDg3Sh4TXyz38Z+AhaLA+0AiAmYKRadcnKhysjOaTew86POS3xdaKiZ3xG83J7rsLcqajW54znbmCkg==
|
||||
|
||||
"@cloudflare/workerd-linux-64@1.20230807.0":
|
||||
version "1.20230807.0"
|
||||
resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20230807.0.tgz#21b4a40cb38d7938a37e98bf0a7c8d3da1575821"
|
||||
integrity sha512-PPuGKoRILFTlZDC7uGXgrYBucopqkvicaov/ypbPmUVb/DfrXGqftEkNbXlyiXY1g0t10wXRiSZWi7hOBOIH7w==
|
||||
|
||||
"@cloudflare/workerd-linux-arm64@1.20230807.0":
|
||||
version "1.20230807.0"
|
||||
resolved "https://registry.yarnpkg.com/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20230807.0.tgz#77e6e2df702bf256cf19ab033e0b13de47bb9185"
|
||||
integrity sha512-ESAf2tXarK8dJl07voa/NI2BBpH1duldfgeQQQmor437A3+gSqQSBhAEmh05bjHy6dYHXgZtwLPky+LL6hmyBA==
|
||||
|
||||
"@cloudflare/workerd-windows-64@1.20230807.0":
|
||||
version "1.20230807.0"
|
||||
resolved "https://registry.yarnpkg.com/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20230807.0.tgz#076dd3445835882fa3f26f566807c546b3516847"
|
||||
integrity sha512-DYKkLtT4lNRdVx+2fbYgPxdF7ypJn9bT2HYMZ93N7XPwaKFx2svBRMrZkwBcvwuNb+99Z0jnaQwdcFnHcFLzZA==
|
||||
|
||||
"@cloudflare/workers-types@^4.20230710.1":
|
||||
version "4.20230710.1"
|
||||
resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-4.20230710.1.tgz#a527537d9ee856c9b476b33b0909e516235f2cb5"
|
||||
@ -3767,171 +3792,6 @@
|
||||
resolved "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz"
|
||||
integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==
|
||||
|
||||
"@miniflare/cache@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/cache/-/cache-2.13.0.tgz#896424c1c6c3cdba2ec8641b68d7424cfa556dca"
|
||||
integrity sha512-y3SdN3SVyPECWmLAEGkkrv0RB+LugEPs/FeXn8QtN9aE1vyj69clOAgmsDzoh1DpFfFsLKRiv05aWs4m79P8Xw==
|
||||
dependencies:
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
http-cache-semantics "^4.1.0"
|
||||
undici "5.20.0"
|
||||
|
||||
"@miniflare/cli-parser@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/cli-parser/-/cli-parser-2.13.0.tgz#999c34b8d92f1cf0a85bc567cc9d7c2fdbdfd420"
|
||||
integrity sha512-Nx1PIfuMZ3mK9Dg/JojWZAjHR16h1pcdCFSqYln/ME7y5ifx+P1E5UkShWUQ1cBlibNaltjbJ2n/7stSAsIGPQ==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
kleur "^4.1.4"
|
||||
|
||||
"@miniflare/core@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/core/-/core-2.13.0.tgz#abde9ac31046e18f772193b192e49796c2853152"
|
||||
integrity sha512-YJ/C0J3k+7xn4gvlMpvePnM3xC8nOnkweW96cc0IA8kJ1JSmScOO2tZ7rrU1RyDgp6StkAtQBw4yC0wYeFycBw==
|
||||
dependencies:
|
||||
"@iarna/toml" "^2.2.5"
|
||||
"@miniflare/queues" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
"@miniflare/watcher" "2.13.0"
|
||||
busboy "^1.6.0"
|
||||
dotenv "^10.0.0"
|
||||
kleur "^4.1.4"
|
||||
set-cookie-parser "^2.4.8"
|
||||
undici "5.20.0"
|
||||
urlpattern-polyfill "^4.0.3"
|
||||
|
||||
"@miniflare/d1@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/d1/-/d1-2.13.0.tgz#550cb2fb7ed89f29d267e27f5636a5e98cdc8050"
|
||||
integrity sha512-OslqjO8iTcvzyrC0spByftMboRmHJEyHyTHnlKkjWDGdQQztEOjso2Xj+3I4SZIeUYvbzDRhKLS2QXI9a8LS5A==
|
||||
dependencies:
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
|
||||
"@miniflare/durable-objects@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/durable-objects/-/durable-objects-2.13.0.tgz#e285818f23702b127f717f9f319cbcadfbfe9a77"
|
||||
integrity sha512-CRGVBPO9vY4Fc3aV+pdPRVVeYIt64vQqvw+BJbyW+TQtqVP2CGQeziJGnCfcONNNKyooZxGyUkHewUypyH+Qhg==
|
||||
dependencies:
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
"@miniflare/storage-memory" "2.13.0"
|
||||
undici "5.20.0"
|
||||
|
||||
"@miniflare/html-rewriter@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/html-rewriter/-/html-rewriter-2.13.0.tgz#ec0f2e2de57a15b14990b1ce57497ebbd754fe07"
|
||||
integrity sha512-XhN7Icyzvtvu+o/A0hrnSiSmla78seCaNwQ9M1TDHxt352I/ahPX4wtPXs6GbKqY0/i+V6yoG2KGFRQ/j59cQQ==
|
||||
dependencies:
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
html-rewriter-wasm "^0.4.1"
|
||||
undici "5.20.0"
|
||||
|
||||
"@miniflare/http-server@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/http-server/-/http-server-2.13.0.tgz#6a178b073ea782065ac9c79d70cb82e3fb921ce2"
|
||||
integrity sha512-aMS/nUMTKP15hKnyZboeuWCiqmNrrCu+XRBY/TxDDl07iXcLpiHGf3oVv+yXxXkWlJHJVCbK7i/nXSNPllRMSw==
|
||||
dependencies:
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
"@miniflare/web-sockets" "2.13.0"
|
||||
kleur "^4.1.4"
|
||||
selfsigned "^2.0.0"
|
||||
undici "5.20.0"
|
||||
ws "^8.2.2"
|
||||
youch "^2.2.2"
|
||||
|
||||
"@miniflare/kv@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/kv/-/kv-2.13.0.tgz#a9de0d519b4345c6845584e2fab84ca2f2186c8e"
|
||||
integrity sha512-J0AS5x3g/YVOmHMxMAZs07nRXRvSo9jyuC0eikTBf+4AABvBIyvVYmdTjYNjCmr8O5smcfWBX5S27HelD3aAAQ==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
|
||||
"@miniflare/queues@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/queues/-/queues-2.13.0.tgz#1ea14af23dc8647116fe53d1bc5b8dd6ce844301"
|
||||
integrity sha512-Gf/a6M1mJL03iOvNqh3JNahcBfvEMPHnO28n0gkCoyYWGvddIr9lwCdFIa0qwNJsC1fIDRxhPg8PZ5cQLBMwRA==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
|
||||
"@miniflare/r2@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/r2/-/r2-2.13.0.tgz#0728f536ed152c3444e5ef16d399dda042725907"
|
||||
integrity sha512-/5k6GHOYMNV/oBtilV9HDXBkJUrx8oXVigG5vxbnzEGRXyVRmR+Glzu7mFT8JiE94XiEbXHk9Qvu1S5Dej3wBw==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
undici "5.20.0"
|
||||
|
||||
"@miniflare/runner-vm@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/runner-vm/-/runner-vm-2.13.0.tgz#66668fee0a7bd247eef3e93950358701e455f8e4"
|
||||
integrity sha512-VmKtF2cA8HmTuLXor1THWY0v+DmaobPct63iLcgWIaUdP3MIvL+9X8HDXFAviCR7bCTe6MKxckHkaOj0IE0aJQ==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
|
||||
"@miniflare/scheduler@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/scheduler/-/scheduler-2.13.0.tgz#1f4a011088d74eb9bc382462ccd7afee9d01169a"
|
||||
integrity sha512-AOaQanoR4NjVEzVGWHnrL15A7aMx+d9AKLJhSDF7KaP+4NrT2Wo2BQuXCpn5oStx3itOdlQpMfqQ139e/I8WhQ==
|
||||
dependencies:
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
cron-schedule "^3.0.4"
|
||||
|
||||
"@miniflare/shared@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/shared/-/shared-2.13.0.tgz#40e13d1a76f13d05e985fb929dfcc81a148e6276"
|
||||
integrity sha512-m8YFQzKmbjberrV9hPzNcQjNCXxjTjXUpuNrIGjAJO7g+BDztUHaZbdd26H9maBDlkeiWxA3hf0mDyCT/6MCMA==
|
||||
dependencies:
|
||||
"@types/better-sqlite3" "^7.6.0"
|
||||
kleur "^4.1.4"
|
||||
npx-import "^1.1.4"
|
||||
picomatch "^2.3.1"
|
||||
|
||||
"@miniflare/sites@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/sites/-/sites-2.13.0.tgz#640fd81e96b299e2178441ff2ad785f845f7b6f7"
|
||||
integrity sha512-/tuzIu00o6CF2tkSv01q02MgEShXBSKx85h9jwWvc+6u7prGacAOer0FA1YNRFbE+t9QIfutAkoPGMA9zYf8+Q==
|
||||
dependencies:
|
||||
"@miniflare/kv" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
"@miniflare/storage-file" "2.13.0"
|
||||
|
||||
"@miniflare/storage-file@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/storage-file/-/storage-file-2.13.0.tgz#d317eb6688b8a1dea2ab952d99ef44eba42e64a3"
|
||||
integrity sha512-LuAeAAY5046rq5U1eFLVkz+ppiFEWytWacpkQw92DvVKFFquZcXSj6WPxZF4rSs23WDk+rdcwuLekbb52aDR7A==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
"@miniflare/storage-memory" "2.13.0"
|
||||
|
||||
"@miniflare/storage-memory@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/storage-memory/-/storage-memory-2.13.0.tgz#b6317392abd2da1f019d1530491d86658631ca37"
|
||||
integrity sha512-FnkYcBNXa/ym1ksNilNZycg9WYYKo6cWKplVBeSthRon3e8QY6t3n7/XRseBUo7O6mhDybVTy4wNCP1R2nBiEw==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
|
||||
"@miniflare/watcher@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/watcher/-/watcher-2.13.0.tgz#d1acc14414d845844df767cd889735f640e39eb4"
|
||||
integrity sha512-teAacWcpMStoBLbLae95IUaL5lPzjPlXa9lhK9CbRaio/KRMibTMRGWrYos3IVGQRZvklvLwcms/nTvgcdb6yw==
|
||||
dependencies:
|
||||
"@miniflare/shared" "2.13.0"
|
||||
|
||||
"@miniflare/web-sockets@2.13.0":
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/@miniflare/web-sockets/-/web-sockets-2.13.0.tgz#6023e1eb9f494d037aa4f889ad11283ae4d5c458"
|
||||
integrity sha512-+U2/HCf+BetRIgjAnNQjkuN6UeAjQmXifhQC+7CCaX834XJhrKXoR6z2xr2xkg1qj0qQs4D2jWG0KzrO5OUpug==
|
||||
dependencies:
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
undici "5.20.0"
|
||||
ws "^8.2.2"
|
||||
|
||||
"@motionone/animation@^10.15.1":
|
||||
version "10.15.1"
|
||||
resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807"
|
||||
@ -5297,13 +5157,6 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.3.0"
|
||||
|
||||
"@types/better-sqlite3@^7.6.0":
|
||||
version "7.6.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/better-sqlite3/-/better-sqlite3-7.6.4.tgz#102462611e67aadf950d3ccca10292de91e6f35b"
|
||||
integrity sha512-dzrRZCYPXIXfSR1/surNbJ/grU3scTaygS0OMzjlGf71i9sc2fGyHPXXiXmEvNIoE0cGwsanEFMVJxPXmco9Eg==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/bn.js@^4.11.3":
|
||||
version "4.11.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c"
|
||||
@ -5996,11 +5849,6 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/stack-trace@0.0.29":
|
||||
version "0.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d"
|
||||
integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==
|
||||
|
||||
"@types/stack-utils@^2.0.0":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
|
||||
@ -7442,7 +7290,7 @@ acorn-walk@^7.1.1:
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
|
||||
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
|
||||
|
||||
acorn-walk@^8.1.1:
|
||||
acorn-walk@^8.1.1, acorn-walk@^8.2.0:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
|
||||
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
||||
@ -7772,6 +7620,13 @@ array.prototype.tosorted@^1.1.1:
|
||||
es-shim-unscopables "^1.0.0"
|
||||
get-intrinsic "^1.1.3"
|
||||
|
||||
as-table@^1.0.36:
|
||||
version "1.0.55"
|
||||
resolved "https://registry.yarnpkg.com/as-table/-/as-table-1.0.55.tgz#dc984da3937745de902cea1d45843c01bdbbec4f"
|
||||
integrity sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==
|
||||
dependencies:
|
||||
printable-characters "^1.0.42"
|
||||
|
||||
asap@~2.0.3, asap@~2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"
|
||||
@ -8238,6 +8093,14 @@ bech32@1.1.4:
|
||||
resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
|
||||
integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
|
||||
|
||||
better-sqlite3@^8.1.0:
|
||||
version "8.5.0"
|
||||
resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.5.0.tgz#b13d12d0e477be69191a39628fc8b723ee1c79d4"
|
||||
integrity sha512-vbPcv/Hx5WYdyNg/NbcfyaBZyv9s/NVbxb7yCeC5Bq1pVocNxeL2tZmSu3Rlm4IEOTjYdGyzWQgyx0OSdORBzw==
|
||||
dependencies:
|
||||
bindings "^1.5.0"
|
||||
prebuild-install "^7.1.0"
|
||||
|
||||
bfj@^7.0.2:
|
||||
version "7.0.2"
|
||||
resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
|
||||
@ -8290,14 +8153,14 @@ bind-decorator@^1.0.11:
|
||||
resolved "https://registry.npmjs.org/bind-decorator/-/bind-decorator-1.0.11.tgz"
|
||||
integrity sha1-5BvAah9l3ZzsR2yRxdrzl4SIJS8=
|
||||
|
||||
bindings@^1.3.0:
|
||||
bindings@^1.3.0, bindings@^1.5.0:
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
|
||||
integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
|
||||
dependencies:
|
||||
file-uri-to-path "1.0.0"
|
||||
|
||||
bl@^4.1.0:
|
||||
bl@^4.0.3, bl@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
|
||||
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
||||
@ -8595,13 +8458,6 @@ builtin-modules@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
|
||||
integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
|
||||
|
||||
builtins@^5.0.0:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.0.1.tgz#87f6db9ab0458be728564fa81d876d8d74552fa9"
|
||||
integrity sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==
|
||||
dependencies:
|
||||
semver "^7.0.0"
|
||||
|
||||
bunyan-blackhole@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/bunyan-blackhole/-/bunyan-blackhole-1.1.1.tgz#b9208586dc0b4e47f4f713215b1bddd65e4f6257"
|
||||
@ -8726,6 +8582,14 @@ capital-case@^1.0.4:
|
||||
tslib "^2.0.3"
|
||||
upper-case-first "^2.0.2"
|
||||
|
||||
capnp-ts@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/capnp-ts/-/capnp-ts-0.7.0.tgz#16fd8e76b667d002af8fcf4bf92bf15d1a7b54a9"
|
||||
integrity sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==
|
||||
dependencies:
|
||||
debug "^4.3.1"
|
||||
tslib "^2.2.0"
|
||||
|
||||
case-sensitive-paths-webpack-plugin@^2.4.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"
|
||||
@ -8884,6 +8748,11 @@ chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.4.2, chokidar@^3.4.3, chokidar@^3.5
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
chownr@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
|
||||
integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
|
||||
|
||||
chrome-trace-event@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
|
||||
@ -9321,7 +9190,7 @@ cookie-signature@1.0.6:
|
||||
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
|
||||
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
|
||||
|
||||
cookie@0.5.0:
|
||||
cookie@0.5.0, cookie@^0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
|
||||
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
|
||||
@ -9440,11 +9309,6 @@ create-require@^1.1.0:
|
||||
resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz"
|
||||
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||
|
||||
cron-schedule@^3.0.4:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/cron-schedule/-/cron-schedule-3.0.6.tgz#7d0a3ad9154112fc3720fe43238a43d50e8465e7"
|
||||
integrity sha512-izfGgKyzzIyLaeb1EtZ3KbglkS6AKp9cv7LxmiyoOu+fXfol1tQDC0Cof0enVZGNtudTHW+3lfuW9ZkLQss4Wg==
|
||||
|
||||
cross-fetch@^3.0.4, cross-fetch@^3.0.6, cross-fetch@^3.1.4, cross-fetch@^3.1.5:
|
||||
version "3.1.5"
|
||||
resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
|
||||
@ -10097,6 +9961,11 @@ dashdash@^1.12.0:
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
data-uri-to-buffer@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz#d296973d5a4897a5dbe31716d118211921f04770"
|
||||
integrity sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==
|
||||
|
||||
data-urls@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
|
||||
@ -10174,6 +10043,13 @@ decode-uri-component@^0.2.0, decode-uri-component@^0.2.2:
|
||||
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
|
||||
integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
|
||||
|
||||
decompress-response@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
|
||||
integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==
|
||||
dependencies:
|
||||
mimic-response "^3.1.0"
|
||||
|
||||
dedent@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
|
||||
@ -10304,6 +10180,11 @@ detect-indent@^6.0.0:
|
||||
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6"
|
||||
integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==
|
||||
|
||||
detect-libc@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
|
||||
integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==
|
||||
|
||||
detect-newline@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
|
||||
@ -11542,21 +11423,6 @@ execa@^5.0.0:
|
||||
signal-exit "^3.0.3"
|
||||
strip-final-newline "^2.0.0"
|
||||
|
||||
execa@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-6.1.0.tgz#cea16dee211ff011246556388effa0818394fb20"
|
||||
integrity sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==
|
||||
dependencies:
|
||||
cross-spawn "^7.0.3"
|
||||
get-stream "^6.0.1"
|
||||
human-signals "^3.0.1"
|
||||
is-stream "^3.0.0"
|
||||
merge-stream "^2.0.0"
|
||||
npm-run-path "^5.1.0"
|
||||
onetime "^6.0.0"
|
||||
signal-exit "^3.0.7"
|
||||
strip-final-newline "^3.0.0"
|
||||
|
||||
executable@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
|
||||
@ -11569,11 +11435,21 @@ exif-parser@^0.1.12:
|
||||
resolved "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz"
|
||||
integrity sha1-WKnS1ywCwfbwKg70qRZicrd2CSI=
|
||||
|
||||
exit-hook@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-2.2.1.tgz#007b2d92c6428eda2b76e7016a34351586934593"
|
||||
integrity sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==
|
||||
|
||||
exit@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
|
||||
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
|
||||
|
||||
expand-template@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
|
||||
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
|
||||
|
||||
expand-tilde@^1.2.2:
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449"
|
||||
@ -12078,6 +11954,11 @@ fromentries@^1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a"
|
||||
integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||
|
||||
fs-exists-sync@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
|
||||
@ -12211,6 +12092,14 @@ get-package-type@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
||||
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
||||
|
||||
get-source@^2.0.12:
|
||||
version "2.0.12"
|
||||
resolved "https://registry.yarnpkg.com/get-source/-/get-source-2.0.12.tgz#0b47d57ea1e53ce0d3a69f4f3d277eb8047da944"
|
||||
integrity sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==
|
||||
dependencies:
|
||||
data-uri-to-buffer "^2.0.0"
|
||||
source-map "^0.6.1"
|
||||
|
||||
get-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz"
|
||||
@ -12223,7 +12112,7 @@ get-stream@^5.0.0, get-stream@^5.1.0:
|
||||
dependencies:
|
||||
pump "^3.0.0"
|
||||
|
||||
get-stream@^6.0.0, get-stream@^6.0.1:
|
||||
get-stream@^6.0.0:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
|
||||
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
|
||||
@ -12263,6 +12152,11 @@ gifwrap@^0.9.2:
|
||||
image-q "^1.1.1"
|
||||
omggif "^1.0.10"
|
||||
|
||||
github-from-package@0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
|
||||
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
|
||||
|
||||
glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
|
||||
@ -12746,11 +12640,6 @@ html-minifier-terser@^6.0.2:
|
||||
relateurl "^0.2.7"
|
||||
terser "^5.10.0"
|
||||
|
||||
html-rewriter-wasm@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/html-rewriter-wasm/-/html-rewriter-wasm-0.4.1.tgz#235e3d96c1aa4bfd2182661ee13881e290ff5ff2"
|
||||
integrity sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==
|
||||
|
||||
html-to-react@^1.3.4:
|
||||
version "1.4.5"
|
||||
resolved "https://registry.npmjs.org/html-to-react/-/html-to-react-1.4.5.tgz"
|
||||
@ -12893,11 +12782,6 @@ human-signals@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
|
||||
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
|
||||
|
||||
human-signals@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-3.0.1.tgz#c740920859dafa50e5a3222da9d3bf4bb0e5eef5"
|
||||
integrity sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==
|
||||
|
||||
humanize-ms@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
|
||||
@ -13409,11 +13293,6 @@ is-stream@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
|
||||
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
|
||||
|
||||
is-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
|
||||
integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
|
||||
|
||||
is-string@^1.0.5, is-string@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
|
||||
@ -14898,7 +14777,7 @@ kleur@^3.0.3:
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
|
||||
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
||||
|
||||
kleur@^4.1.4:
|
||||
kleur@^4.1.5:
|
||||
version "4.1.5"
|
||||
resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780"
|
||||
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
|
||||
@ -15505,10 +15384,10 @@ mimic-fn@^2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
|
||||
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
||||
|
||||
mimic-fn@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
|
||||
integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
|
||||
mimic-response@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9"
|
||||
integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==
|
||||
|
||||
min-document@^2.19.0:
|
||||
version "2.19.0"
|
||||
@ -15529,32 +15408,27 @@ mini-css-extract-plugin@^2.4.5:
|
||||
dependencies:
|
||||
schema-utils "^4.0.0"
|
||||
|
||||
miniflare@2.13.0:
|
||||
version "2.13.0"
|
||||
resolved "https://registry.yarnpkg.com/miniflare/-/miniflare-2.13.0.tgz#b5e357952378ef58b612bd4cfde0b32452928ef2"
|
||||
integrity sha512-ayNhVa4a6bZiOuHtrPmOt4BCYcmW1fBQ/+qGL85smq1m2OBBm3aUs6f4ISf38xH8tk+qewgmAywetyVtn6KHPw==
|
||||
miniflare@3.20230801.0:
|
||||
version "3.20230801.0"
|
||||
resolved "https://registry.yarnpkg.com/miniflare/-/miniflare-3.20230801.0.tgz#8afa8f6c6b17c73ce7e046bf9a7e587d56efee22"
|
||||
integrity sha512-jXl++AYc3PDMu9cxeMbFgzrnbgwU8VIkw49cdpOaIAz7jQgPcLuNLOyAw3G+uaLELnILHs81MM67fGR1hAc62A==
|
||||
dependencies:
|
||||
"@miniflare/cache" "2.13.0"
|
||||
"@miniflare/cli-parser" "2.13.0"
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/d1" "2.13.0"
|
||||
"@miniflare/durable-objects" "2.13.0"
|
||||
"@miniflare/html-rewriter" "2.13.0"
|
||||
"@miniflare/http-server" "2.13.0"
|
||||
"@miniflare/kv" "2.13.0"
|
||||
"@miniflare/queues" "2.13.0"
|
||||
"@miniflare/r2" "2.13.0"
|
||||
"@miniflare/runner-vm" "2.13.0"
|
||||
"@miniflare/scheduler" "2.13.0"
|
||||
"@miniflare/shared" "2.13.0"
|
||||
"@miniflare/sites" "2.13.0"
|
||||
"@miniflare/storage-file" "2.13.0"
|
||||
"@miniflare/storage-memory" "2.13.0"
|
||||
"@miniflare/web-sockets" "2.13.0"
|
||||
kleur "^4.1.4"
|
||||
semiver "^1.1.0"
|
||||
source-map-support "^0.5.20"
|
||||
undici "5.20.0"
|
||||
acorn "^8.8.0"
|
||||
acorn-walk "^8.2.0"
|
||||
better-sqlite3 "^8.1.0"
|
||||
capnp-ts "^0.7.0"
|
||||
exit-hook "^2.2.1"
|
||||
glob-to-regexp "^0.4.1"
|
||||
http-cache-semantics "^4.1.0"
|
||||
kleur "^4.1.5"
|
||||
set-cookie-parser "^2.6.0"
|
||||
source-map-support "0.5.21"
|
||||
stoppable "^1.1.0"
|
||||
undici "^5.13.0"
|
||||
workerd "^1.20230801.0"
|
||||
ws "^8.11.0"
|
||||
youch "^3.2.2"
|
||||
zod "^3.20.6"
|
||||
|
||||
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
|
||||
version "1.0.1"
|
||||
@ -15601,11 +15475,16 @@ minimatch@^5.0.1:
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.7, minimist@^1.2.8:
|
||||
minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.7, minimist@^1.2.8:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
|
||||
mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
mkdirp@^0.5.1, mkdirp@~0.5.1:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
|
||||
@ -15794,6 +15673,11 @@ nanoid@^3.3.3, nanoid@^3.3.6:
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
|
||||
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
|
||||
|
||||
napi-build-utils@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806"
|
||||
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
|
||||
|
||||
napi-macros@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.2.2.tgz#817fef20c3e0e40a963fbf7b37d1600bd0201044"
|
||||
@ -15832,6 +15716,13 @@ no-case@^3.0.4:
|
||||
lower-case "^2.0.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
node-abi@^3.3.0:
|
||||
version "3.45.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.45.0.tgz#f568f163a3bfca5aacfce1fbeee1fa2cc98441f5"
|
||||
integrity sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==
|
||||
dependencies:
|
||||
semver "^7.3.5"
|
||||
|
||||
node-addon-api@^2.0.0:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz"
|
||||
@ -15939,23 +15830,6 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1:
|
||||
dependencies:
|
||||
path-key "^3.0.0"
|
||||
|
||||
npm-run-path@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.1.0.tgz#bc62f7f3f6952d9894bd08944ba011a6ee7b7e00"
|
||||
integrity sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==
|
||||
dependencies:
|
||||
path-key "^4.0.0"
|
||||
|
||||
npx-import@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/npx-import/-/npx-import-1.1.4.tgz#0ee9a27484c633255528f7ec2e4c2adeaa1fcda3"
|
||||
integrity sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==
|
||||
dependencies:
|
||||
execa "^6.1.0"
|
||||
parse-package-name "^1.0.0"
|
||||
semver "^7.3.7"
|
||||
validate-npm-package-name "^4.0.0"
|
||||
|
||||
nth-check@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
|
||||
@ -16161,13 +16035,6 @@ onetime@^5.1.0, onetime@^5.1.2:
|
||||
dependencies:
|
||||
mimic-fn "^2.1.0"
|
||||
|
||||
onetime@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
|
||||
integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
|
||||
dependencies:
|
||||
mimic-fn "^4.0.0"
|
||||
|
||||
open@^7.3.1:
|
||||
version "7.4.2"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
|
||||
@ -16432,11 +16299,6 @@ parse-json@^5.0.0, parse-json@^5.2.0:
|
||||
json-parse-even-better-errors "^2.3.0"
|
||||
lines-and-columns "^1.1.6"
|
||||
|
||||
parse-package-name@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-package-name/-/parse-package-name-1.0.0.tgz#1a108757e4ffc6889d5e78bcc4932a97c097a5a7"
|
||||
integrity sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==
|
||||
|
||||
parse-passwd@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6"
|
||||
@ -16503,11 +16365,6 @@ path-key@^3.0.0, path-key@^3.1.0:
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
|
||||
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
|
||||
|
||||
path-key@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
|
||||
integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
|
||||
|
||||
path-parse@^1.0.6, path-parse@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
@ -17260,6 +17117,24 @@ preact@^10.5.9:
|
||||
resolved "https://registry.npmjs.org/preact/-/preact-10.5.13.tgz"
|
||||
integrity sha512-q/vlKIGNwzTLu+jCcvywgGrt+H/1P/oIRSD6mV4ln3hmlC+Aa34C7yfPI4+5bzW8pONyVXYS7SvXosy2dKKtWQ==
|
||||
|
||||
prebuild-install@^7.1.0:
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
|
||||
integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==
|
||||
dependencies:
|
||||
detect-libc "^2.0.0"
|
||||
expand-template "^2.0.3"
|
||||
github-from-package "0.0.0"
|
||||
minimist "^1.2.3"
|
||||
mkdirp-classic "^0.5.3"
|
||||
napi-build-utils "^1.0.1"
|
||||
node-abi "^3.3.0"
|
||||
pump "^3.0.0"
|
||||
rc "^1.2.7"
|
||||
simple-get "^4.0.0"
|
||||
tar-fs "^2.0.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
|
||||
prelude-ls@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
@ -17343,6 +17218,11 @@ pretty-format@^29.6.1, pretty-format@^29.6.2:
|
||||
ansi-styles "^5.0.0"
|
||||
react-is "^18.0.0"
|
||||
|
||||
printable-characters@^1.0.42:
|
||||
version "1.0.42"
|
||||
resolved "https://registry.yarnpkg.com/printable-characters/-/printable-characters-1.0.42.tgz#3f18e977a9bd8eb37fcc4ff5659d7be90868b3d8"
|
||||
integrity sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==
|
||||
|
||||
process-nextick-args@~2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||
@ -17608,7 +17488,7 @@ rc-util@^5.18.1:
|
||||
react-is "^16.12.0"
|
||||
shallowequal "^1.1.0"
|
||||
|
||||
rc@^1.0.1, rc@^1.1.6:
|
||||
rc@^1.0.1, rc@^1.1.6, rc@^1.2.7:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
@ -18638,18 +18518,13 @@ select-hose@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
||||
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
|
||||
|
||||
selfsigned@^2.0.0, selfsigned@^2.0.1, selfsigned@^2.1.1:
|
||||
selfsigned@^2.0.1, selfsigned@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61"
|
||||
integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==
|
||||
dependencies:
|
||||
node-forge "^1"
|
||||
|
||||
semiver@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/semiver/-/semiver-1.1.0.tgz#9c97fb02c21c7ce4fcf1b73e2c7a24324bdddd5f"
|
||||
integrity sha512-QNI2ChmuioGC1/xjyYwyZYADILWyW6AmS1UH6gDj/SFUUUS4MBAWs/7mxnkRPc/F4iHezDP+O8t0dO8WHiEOdg==
|
||||
|
||||
semver@^5.5.0, semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
@ -18660,7 +18535,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
semver@^7.0.0, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3:
|
||||
semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3:
|
||||
version "7.5.3"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e"
|
||||
integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==
|
||||
@ -18773,7 +18648,7 @@ set-blocking@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-cookie-parser@^2.4.8:
|
||||
set-cookie-parser@^2.6.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz#131921e50f62ff1a66a461d7d62d7b21d5d15a51"
|
||||
integrity sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==
|
||||
@ -18866,6 +18741,20 @@ signedsource@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a"
|
||||
integrity sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==
|
||||
|
||||
simple-concat@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
|
||||
integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
|
||||
|
||||
simple-get@^4.0.0:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-4.0.1.tgz#4a39db549287c979d352112fa03fd99fd6bc3543"
|
||||
integrity sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==
|
||||
dependencies:
|
||||
decompress-response "^6.0.0"
|
||||
once "^1.3.1"
|
||||
simple-concat "^1.0.0"
|
||||
|
||||
sisteransi@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
|
||||
@ -18991,7 +18880,7 @@ source-map-support@0.5.13:
|
||||
buffer-from "^1.0.0"
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map-support@^0.5.13, source-map-support@^0.5.17, source-map-support@^0.5.20, source-map-support@^0.5.21, source-map-support@^0.5.6, source-map-support@~0.5.20:
|
||||
source-map-support@0.5.21, source-map-support@^0.5.13, source-map-support@^0.5.17, source-map-support@^0.5.21, source-map-support@^0.5.6, source-map-support@~0.5.20:
|
||||
version "0.5.21"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
|
||||
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
|
||||
@ -19116,11 +19005,6 @@ stable@^0.1.8:
|
||||
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
|
||||
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
|
||||
|
||||
stack-trace@0.0.10:
|
||||
version "0.0.10"
|
||||
resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
|
||||
integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
|
||||
|
||||
stack-utils@^2.0.3:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
|
||||
@ -19140,6 +19024,14 @@ stacktrace-parser@^0.1.10:
|
||||
dependencies:
|
||||
type-fest "^0.7.1"
|
||||
|
||||
stacktracey@^2.1.8:
|
||||
version "2.1.8"
|
||||
resolved "https://registry.yarnpkg.com/stacktracey/-/stacktracey-2.1.8.tgz#bf9916020738ce3700d1323b32bd2c91ea71199d"
|
||||
integrity sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==
|
||||
dependencies:
|
||||
as-table "^1.0.36"
|
||||
get-source "^2.0.12"
|
||||
|
||||
state-toggle@^1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz"
|
||||
@ -19185,6 +19077,11 @@ stop-iteration-iterator@^1.0.0:
|
||||
dependencies:
|
||||
internal-slot "^1.0.4"
|
||||
|
||||
stoppable@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b"
|
||||
integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==
|
||||
|
||||
stream-blackhole@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/stream-blackhole/-/stream-blackhole-1.0.3.tgz#6fc2e2c2e9d9fde6be8c68d3db88de09802e4d63"
|
||||
@ -19350,11 +19247,6 @@ strip-final-newline@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
||||
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
|
||||
|
||||
strip-final-newline@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
|
||||
integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
|
||||
|
||||
strip-hex-prefix@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz"
|
||||
@ -19592,6 +19484,27 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
|
||||
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
|
||||
|
||||
tar-fs@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
|
||||
integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
|
||||
dependencies:
|
||||
chownr "^1.1.1"
|
||||
mkdirp-classic "^0.5.2"
|
||||
pump "^3.0.0"
|
||||
tar-stream "^2.1.4"
|
||||
|
||||
tar-stream@^2.1.4:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
|
||||
integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
|
||||
dependencies:
|
||||
bl "^4.0.3"
|
||||
end-of-stream "^1.4.1"
|
||||
fs-constants "^1.0.0"
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^3.1.1"
|
||||
|
||||
temp-dir@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
|
||||
@ -19958,7 +19871,12 @@ tslib@1.14.1, tslib@^1.0.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.4.1, tslib@~2.4.0:
|
||||
tslib@^2, tslib@^2.0.0, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.0, tslib@^2.3.1, tslib@^2.4.0, tslib@^2.4.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410"
|
||||
integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==
|
||||
|
||||
tslib@~2.4.0:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
|
||||
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
|
||||
@ -20126,17 +20044,10 @@ unc-path-regex@^0.1.2:
|
||||
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
|
||||
integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==
|
||||
|
||||
undici@5.20.0:
|
||||
version "5.20.0"
|
||||
resolved "https://registry.yarnpkg.com/undici/-/undici-5.20.0.tgz#6327462f5ce1d3646bcdac99da7317f455bcc263"
|
||||
integrity sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==
|
||||
dependencies:
|
||||
busboy "^1.6.0"
|
||||
|
||||
undici@^5.12.0, undici@^5.14.0, undici@^5.8.0:
|
||||
version "5.21.2"
|
||||
resolved "https://registry.yarnpkg.com/undici/-/undici-5.21.2.tgz#329f628aaea3f1539a28b9325dccc72097d29acd"
|
||||
integrity sha512-f6pTQ9RF4DQtwoWSaC42P/NKlUjvezVvd9r155ohqkwFNRyBKM3f3pcty3ouusefNRyM25XhIQEbeQ46sZDJfQ==
|
||||
undici@^5.12.0, undici@^5.13.0, undici@^5.14.0, undici@^5.8.0:
|
||||
version "5.23.0"
|
||||
resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0"
|
||||
integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==
|
||||
dependencies:
|
||||
busboy "^1.6.0"
|
||||
|
||||
@ -20316,11 +20227,6 @@ url@^0.11.0:
|
||||
punycode "1.3.2"
|
||||
querystring "0.2.0"
|
||||
|
||||
urlpattern-polyfill@^4.0.3:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-4.0.3.tgz#c1fa7a73eb4e6c6a1ffb41b24cf31974f7392d3b"
|
||||
integrity sha512-DOE84vZT2fEcl9gqCUTcnAw5ZY5Id55ikUcziSUntuEFL3pRvavg5kwDmTEUJkeCHInTlV/HexFomgYnzO5kdQ==
|
||||
|
||||
use-callback-ref@^1.2.1, use-callback-ref@^1.2.3:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.2.5.tgz"
|
||||
@ -20433,13 +20339,6 @@ v8-to-istanbul@^9.0.1:
|
||||
"@types/istanbul-lib-coverage" "^2.0.1"
|
||||
convert-source-map "^1.6.0"
|
||||
|
||||
validate-npm-package-name@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747"
|
||||
integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==
|
||||
dependencies:
|
||||
builtins "^5.0.0"
|
||||
|
||||
valtio@1.10.6:
|
||||
version "1.10.6"
|
||||
resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.6.tgz#80ed00198b949939863a0fa56ae687abb417fc4f"
|
||||
@ -21082,25 +20981,34 @@ workbox-window@6.5.4:
|
||||
"@types/trusted-types" "^2.0.2"
|
||||
workbox-core "6.5.4"
|
||||
|
||||
workerd@^1.20230801.0:
|
||||
version "1.20230807.0"
|
||||
resolved "https://registry.yarnpkg.com/workerd/-/workerd-1.20230807.0.tgz#7253dc9d9f23ab1c20050f7d2b494ccc9a01e271"
|
||||
integrity sha512-yDdHld8wm5lQ6M/WYD68tIzbAmPjcgAoVAYhAHQFaXZSpryjIw9mT3O/NEloyZ8xiickpoPuNSQ4ffxPLao2+Q==
|
||||
optionalDependencies:
|
||||
"@cloudflare/workerd-darwin-64" "1.20230807.0"
|
||||
"@cloudflare/workerd-darwin-arm64" "1.20230807.0"
|
||||
"@cloudflare/workerd-linux-64" "1.20230807.0"
|
||||
"@cloudflare/workerd-linux-arm64" "1.20230807.0"
|
||||
"@cloudflare/workerd-windows-64" "1.20230807.0"
|
||||
|
||||
workerpool@6.2.1:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343"
|
||||
integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==
|
||||
|
||||
"wrangler@https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/4925945367/npm-package-wrangler-3048":
|
||||
version "0.0.0-abeec6fb"
|
||||
resolved "https://prerelease-registry.devprod.cloudflare.dev/workers-sdk/runs/4925945367/npm-package-wrangler-3048#310c94439f607ae7dbd5606ad5ae47ed40f2fd56"
|
||||
wrangler@^3.4.0:
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/wrangler/-/wrangler-3.5.0.tgz#2b174a6e1c8b5c508811c6d0df65b0711067eca5"
|
||||
integrity sha512-lvYo2JUxRXdobzd0hs96FT354DvKAYoAiPslceEpKmr0oHCreMWhU5AStfZwg1PEaJJZCwP17LqA5GgjvQ6zyg==
|
||||
dependencies:
|
||||
"@cloudflare/kv-asset-handler" "^0.2.0"
|
||||
"@esbuild-plugins/node-globals-polyfill" "^0.1.1"
|
||||
"@esbuild-plugins/node-modules-polyfill" "^0.1.4"
|
||||
"@miniflare/core" "2.13.0"
|
||||
"@miniflare/d1" "2.13.0"
|
||||
"@miniflare/durable-objects" "2.13.0"
|
||||
blake3-wasm "^2.1.5"
|
||||
chokidar "^3.5.3"
|
||||
esbuild "0.16.3"
|
||||
miniflare "2.13.0"
|
||||
miniflare "3.20230801.0"
|
||||
nanoid "^3.3.3"
|
||||
path-to-regexp "^6.2.0"
|
||||
selfsigned "^2.0.1"
|
||||
@ -21170,7 +21078,7 @@ ws@^7.4.5, ws@^7.4.6, ws@^7.5.1:
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
|
||||
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
|
||||
|
||||
ws@^8.13.0, ws@^8.2.2, ws@^8.5.0:
|
||||
ws@^8.11.0, ws@^8.13.0, ws@^8.5.0:
|
||||
version "8.13.0"
|
||||
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
|
||||
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
|
||||
@ -21372,15 +21280,14 @@ yocto-queue@^0.1.0:
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
youch@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/youch/-/youch-2.2.2.tgz#cb87a359a5c524ebd35eb07ca3a1521dbc7e1a3e"
|
||||
integrity sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==
|
||||
youch@^3.2.2:
|
||||
version "3.2.3"
|
||||
resolved "https://registry.yarnpkg.com/youch/-/youch-3.2.3.tgz#63c94ea504950a1a5bf1d5969439addba6c726e2"
|
||||
integrity sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==
|
||||
dependencies:
|
||||
"@types/stack-trace" "0.0.29"
|
||||
cookie "^0.4.1"
|
||||
cookie "^0.5.0"
|
||||
mustache "^4.2.0"
|
||||
stack-trace "0.0.10"
|
||||
stacktracey "^2.1.8"
|
||||
|
||||
zen-observable-ts@^1.2.5:
|
||||
version "1.2.5"
|
||||
@ -21394,6 +21301,11 @@ zen-observable@0.8.15:
|
||||
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15"
|
||||
integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==
|
||||
|
||||
zod@^3.20.6:
|
||||
version "3.21.4"
|
||||
resolved "https://registry.yarnpkg.com/zod/-/zod-3.21.4.tgz#10882231d992519f0a10b5dd58a38c9dabbb64db"
|
||||
integrity sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==
|
||||
|
||||
zustand@^4.3.5, zustand@^4.3.6:
|
||||
version "4.3.6"
|
||||
resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.6.tgz#ce7804eb75361af0461a2d0536b65461ec5de86f"
|
||||
|
Loading…
x
Reference in New Issue
Block a user