diff --git a/.github/workflows/deploy-dockerhub.yml b/.github/workflows/deploy-dockerhub.yml index 87719b0aae..db4c810127 100644 --- a/.github/workflows/deploy-dockerhub.yml +++ b/.github/workflows/deploy-dockerhub.yml @@ -13,7 +13,6 @@ on: jobs: dockerhub-push: runs-on: ubuntu-latest - if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' || startsWith(github.ref, 'refs/tags/') steps: - uses: actions/checkout@v3 - name: Dockerhub login diff --git a/Dockerfile b/Dockerfile index 9d34381fbf..c7005e98b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,10 @@ -FROM node:16-alpine -RUN apk add --no-cache libc6-compat git python3 py3-pip make g++ +FROM node:18-alpine +RUN apk add --no-cache libc6-compat git python3 py3-pip make g++ libusb-dev eudev-dev linux-headers WORKDIR /app COPY . . # install deps -RUN yarn install +RUN yarn install --frozen-lockfile ENV NODE_ENV production diff --git a/cypress/e2e/smoke/address_book.cy.js b/cypress/e2e/smoke/address_book.cy.js index 442c898316..3e365bd69a 100644 --- a/cypress/e2e/smoke/address_book.cy.js +++ b/cypress/e2e/smoke/address_book.cy.js @@ -4,8 +4,7 @@ import { format } from 'date-fns' const NAME = 'Owner1' const EDITED_NAME = 'Edited Owner1' -const ENS_NAME = 'diogo.eth' -const ENS_ADDRESS = '0x6a5602335a878ADDCa4BF63a050E34946B56B5bC' +const ADDRESS = '0x6a5602335a878ADDCa4BF63a050E34946B56B5bC' const GOERLI_TEST_SAFE = 'gor:0x97d314157727D517A706B5D08507A1f9B44AaaE9' const GNO_TEST_SAFE = 'gno:0xB8d760a90a5ed54D3c2b3EFC231277e99188642A' const GOERLI_CSV_ENTRY = { @@ -30,13 +29,14 @@ describe('Address book', () => { // Add a new entry manually cy.contains('Create entry').click() cy.get('input[name="name"]').type(NAME) - cy.get('input[name="address"]').type(ENS_NAME) - // Name was translated - cy.get(ENS_NAME).should('not.exist') + cy.get('input[name="address"]').type(ADDRESS) + + // Save the entry cy.contains('button', 'Save').click() + // The new entry is visible cy.contains(NAME).should('exist') - cy.contains(ENS_ADDRESS).should('exist') + cy.contains(ADDRESS).should('exist') }) it('should save an edited entry name', () => { diff --git a/cypress/e2e/smoke/batch_tx.cy.js b/cypress/e2e/smoke/batch_tx.cy.js index f1c626788d..579e8145ea 100644 --- a/cypress/e2e/smoke/batch_tx.cy.js +++ b/cypress/e2e/smoke/batch_tx.cy.js @@ -13,6 +13,8 @@ describe('Create batch transaction', () => { before(() => { cy.visit(`/home?safe=${SAFE}`) cy.contains('Accept selection').click() + + cy.contains(/E2E Wallet @ G(รถ|oe)rli/) }) it('Should open an empty batch list', () => { diff --git a/jest.setup.js b/jest.setup.js index f4a9076f2f..8f8d57b6c7 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -12,7 +12,6 @@ jest.mock('@web3-onboard/keystone/dist/index', () => jest.fn()) jest.mock('@web3-onboard/ledger/dist/index', () => jest.fn()) jest.mock('@web3-onboard/trezor', () => jest.fn()) jest.mock('@web3-onboard/walletconnect', () => jest.fn()) -jest.mock('@web3-onboard/taho', () => jest.fn()) const mockOnboardState = { chains: [], diff --git a/package.json b/package.json index 1c248236b8..eea885d6c4 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/safe-global/safe-wallet-web", "license": "GPL-3.0", "type": "module", - "version": "1.17.1", + "version": "1.18.0", "scripts": { "dev": "next dev", "start": "next dev", @@ -28,15 +28,15 @@ "serve": "npx -y serve out -p ${REVERSE_PROXY_UI_PORT:=8080}", "static-serve": "yarn build && yarn serve" }, + "engines": { + "node": ">=16" + }, "pre-commit": [ "lint" ], "resolutions": { "@web3-onboard/trezor/**/protobufjs": "^7.2.4" }, - "engines": { - "node": ">=18" - }, "dependencies": { "@date-io/date-fns": "^2.15.0", "@emotion/cache": "^11.10.1", @@ -63,7 +63,6 @@ "@web3-onboard/injected-wallets": "^2.10.0", "@web3-onboard/keystone": "^2.3.7", "@web3-onboard/ledger": "2.3.2", - "@web3-onboard/taho": "^2.0.5", "@web3-onboard/trezor": "^2.4.2", "@web3-onboard/walletconnect": "^2.4.5", "classnames": "^2.3.1", diff --git a/src/components/batch/BatchSidebar/index.tsx b/src/components/batch/BatchSidebar/index.tsx index 65da6237e6..4edbbca106 100644 --- a/src/components/batch/BatchSidebar/index.tsx +++ b/src/components/batch/BatchSidebar/index.tsx @@ -10,6 +10,7 @@ import ConfirmBatchFlow from '@/components/tx-flow/flows/ConfirmBatch' import Track from '@/components/common/Track' import { BATCH_EVENTS } from '@/services/analytics' import { BatchReorder } from './BatchTxList' +import CheckWallet from '@/components/common/CheckWallet' import PlusIcon from '@/public/images/common/plus.svg' import EmptyBatch from './EmptyBatch' @@ -27,6 +28,15 @@ const BatchSidebar = ({ isOpen, onToggle }: { isOpen: boolean; onToggle: (open: batchTxs.forEach((item) => deleteTx(item.id)) }, [deleteTx, batchTxs]) + // Close confirmation flow when batch is empty + const isConfirmationFlow = txFlow?.type === ConfirmBatchFlow + const shouldExitFlow = isConfirmationFlow && batchTxs.length === 0 + useEffect(() => { + if (shouldExitFlow) { + setTxFlow(undefined) + } + }, [setTxFlow, shouldExitFlow]) + const onAddClick = useCallback( (e: SyntheticEvent) => { e.preventDefault() @@ -65,33 +75,45 @@ const BatchSidebar = ({ isOpen, onToggle }: { isOpen: boolean; onToggle: (open: - - - + + {(isOk) => ( + + + + )} + - - - + + {(isOk) => ( + + + + )} + ) : ( - - - + + {(isOk) => ( + + + + )} + )} diff --git a/src/components/licenses/index.tsx b/src/components/licenses/index.tsx index 8061a5e5dd..fe6d496ebb 100644 --- a/src/components/licenses/index.tsx +++ b/src/components/licenses/index.tsx @@ -552,14 +552,6 @@ const SafeLicenses = () => { - - @web3-onboard/taho - - - https://github.com/blocknative/web3-onboard/blob/main/LICENSE - - - @web3-onboard/trezor diff --git a/src/components/transactions/TxDetails/TxData/index.tsx b/src/components/transactions/TxDetails/TxData/index.tsx index 8b9faf0d70..81f46f50cc 100644 --- a/src/components/transactions/TxDetails/TxData/index.tsx +++ b/src/components/transactions/TxDetails/TxData/index.tsx @@ -7,7 +7,6 @@ import { isMultisigDetailedExecutionInfo, isSettingsChangeTxInfo, isSpendingLimitMethod, - isSupportedMultiSendAddress, isSupportedSpendingLimitAddress, isTransferTxInfo, } from '@/utils/transaction-guards' @@ -36,7 +35,7 @@ const TxData = ({ txDetails }: { txDetails: TransactionDetails }): ReactElement return } - if (isSupportedMultiSendAddress(txInfo, chainId) && isMultiSendTxInfo(txInfo)) { + if (isMultiSendTxInfo(txInfo)) { return } diff --git a/src/components/transactions/TxDetails/index.tsx b/src/components/transactions/TxDetails/index.tsx index 8f57837278..5506754491 100644 --- a/src/components/transactions/TxDetails/index.tsx +++ b/src/components/transactions/TxDetails/index.tsx @@ -14,7 +14,6 @@ import { isMultiSendTxInfo, isMultisigDetailedExecutionInfo, isMultisigExecutionInfo, - isSupportedMultiSendAddress, isTxQueued, } from '@/utils/transaction-guards' import { InfoDetails } from '@/components/transactions/InfoDetails' @@ -39,7 +38,6 @@ type TxDetailsProps = { } const TxDetailsBlock = ({ txSummary, txDetails }: TxDetailsProps): ReactElement => { - const chainId = useChainId() const isPending = useIsPending(txSummary.id) const isQueue = isTxQueued(txSummary.txStatus) const awaitingExecution = isAwaitingExecution(txSummary.txStatus) @@ -89,7 +87,7 @@ const TxDetailsBlock = ({ txSummary, txDetails }: TxDetailsProps): ReactElement - {isSupportedMultiSendAddress(txDetails.txInfo, chainId) && isMultiSendTxInfo(txDetails.txInfo) && ( + {isMultiSendTxInfo(txDetails.txInfo) && (
Error parsing data
}> diff --git a/src/components/transactions/TxInfo/index.tsx b/src/components/transactions/TxInfo/index.tsx index eb2be5d6dc..d0f51838bb 100644 --- a/src/components/transactions/TxInfo/index.tsx +++ b/src/components/transactions/TxInfo/index.tsx @@ -17,12 +17,10 @@ import { isMultiSendTxInfo, isNativeTokenTransfer, isSettingsChangeTxInfo, - isSupportedMultiSendAddress, isTransferTxInfo, } from '@/utils/transaction-guards' import { ellipsis, shortenAddress } from '@/utils/formatters' import { useCurrentChain } from '@/hooks/useChains' -import useChainId from '@/hooks/useChainId' export const TransferTx = ({ info, @@ -98,13 +96,11 @@ const SettingsChangeTx = ({ info }: { info: SettingsChange }): ReactElement => { } const TxInfo = ({ info, ...rest }: { info: TransactionInfo; omitSign?: boolean; withLogo?: boolean }): ReactElement => { - const chainId = useChainId() - if (isSettingsChangeTxInfo(info)) { return } - if (isSupportedMultiSendAddress(info, chainId) && isMultiSendTxInfo(info)) { + if (isMultiSendTxInfo(info)) { return } diff --git a/src/hooks/wallets/consts.ts b/src/hooks/wallets/consts.ts index 8150309c3e..10a3bb99fa 100644 --- a/src/hooks/wallets/consts.ts +++ b/src/hooks/wallets/consts.ts @@ -1,23 +1,19 @@ export const enum WALLET_KEYS { - COINBASE = 'COINBASE', INJECTED = 'INJECTED', - KEYSTONE = 'KEYSTONE', - LEDGER = 'LEDGER', + WALLETCONNECT_V2 = 'WALLETCONNECT_V2', + COINBASE = 'COINBASE', PAIRING = 'PAIRING', + LEDGER = 'LEDGER', TREZOR = 'TREZOR', - WALLETCONNECT = 'WALLETCONNECT', - WALLETCONNECT_V2 = 'WALLETCONNECT_V2', - TAHO = 'TAHO', + KEYSTONE = 'KEYSTONE', } export const CGW_NAMES: { [key in WALLET_KEYS]: string | undefined } = { - [WALLET_KEYS.COINBASE]: 'coinbase', [WALLET_KEYS.INJECTED]: 'detectedwallet', - [WALLET_KEYS.KEYSTONE]: 'keystone', - [WALLET_KEYS.LEDGER]: 'ledger', + [WALLET_KEYS.WALLETCONNECT_V2]: 'walletConnect_v2', + [WALLET_KEYS.COINBASE]: 'coinbase', [WALLET_KEYS.PAIRING]: 'safeMobile', + [WALLET_KEYS.LEDGER]: 'ledger', [WALLET_KEYS.TREZOR]: 'trezor', - [WALLET_KEYS.WALLETCONNECT]: 'walletConnect', - [WALLET_KEYS.WALLETCONNECT_V2]: 'walletConnect_v2', - [WALLET_KEYS.TAHO]: 'tally', + [WALLET_KEYS.KEYSTONE]: 'keystone', } diff --git a/src/hooks/wallets/useOnboard.ts b/src/hooks/wallets/useOnboard.ts index 5e38bb1ab1..2781d67d86 100644 --- a/src/hooks/wallets/useOnboard.ts +++ b/src/hooks/wallets/useOnboard.ts @@ -68,8 +68,7 @@ const getWalletConnectLabel = async (wallet: ConnectedWallet): Promise { diff --git a/src/hooks/wallets/wallets.ts b/src/hooks/wallets/wallets.ts index e85b7861f3..4a9e27aa38 100644 --- a/src/hooks/wallets/wallets.ts +++ b/src/hooks/wallets/wallets.ts @@ -1,5 +1,5 @@ -import { CYPRESS_MNEMONIC, TREZOR_APP_URL, TREZOR_EMAIL, WC_BRIDGE, WC_PROJECT_ID } from '@/config/constants' -import type { RecommendedInjectedWallets, WalletInit, WalletModule } from '@web3-onboard/common/dist/types.d' +import { CYPRESS_MNEMONIC, TREZOR_APP_URL, TREZOR_EMAIL, WC_PROJECT_ID } from '@/config/constants' +import type { RecommendedInjectedWallets, WalletInit } from '@web3-onboard/common/dist/types.d' import type { ChainInfo } from '@safe-global/safe-gateway-typescript-sdk' import coinbaseModule from '@web3-onboard/coinbase' @@ -8,7 +8,6 @@ import keystoneModule from '@web3-onboard/keystone/dist/index' import ledgerModule from '@web3-onboard/ledger/dist/index' import trezorModule from '@web3-onboard/trezor' import walletConnect from '@web3-onboard/walletconnect' -import tahoModule from '@web3-onboard/taho' import pairingModule from '@/services/pairing/module' import e2eWalletModule from '@/tests/e2e-wallet' @@ -18,20 +17,6 @@ const prefersDarkMode = (): boolean => { return window?.matchMedia('(prefers-color-scheme: dark)')?.matches } -// We need to modify the module name as onboard dedupes modules with the same label and the WC v1 and v2 modules have the same -// @see https://github.com/blocknative/web3-onboard/blob/d399e0b76daf7b363d6a74b100b2c96ccb14536c/packages/core/src/store/actions.ts#L419 -// TODO: When removing this, also remove the associated CSS in `onboard.css` -export const WALLET_CONNECT_V1_MODULE_NAME = 'WalletConnect v1' -const walletConnectV1 = (): WalletInit => { - return (helpers) => { - const walletConnectModule = walletConnect({ version: 1, bridge: WC_BRIDGE })(helpers) as WalletModule - - walletConnectModule.label = WALLET_CONNECT_V1_MODULE_NAME - - return walletConnectModule - } -} - const walletConnectV2 = (chain: ChainInfo): WalletInit => { // WalletConnect v2 requires a project ID if (!WC_PROJECT_ID) { @@ -54,14 +39,12 @@ const walletConnectV2 = (chain: ChainInfo): WalletInit => { const WALLET_MODULES: { [key in WALLET_KEYS]: (chain: ChainInfo) => WalletInit } = { [WALLET_KEYS.INJECTED]: () => injectedWalletModule(), - [WALLET_KEYS.PAIRING]: () => pairingModule(), - [WALLET_KEYS.WALLETCONNECT]: () => walletConnectV1(), [WALLET_KEYS.WALLETCONNECT_V2]: (chain) => walletConnectV2(chain), + [WALLET_KEYS.COINBASE]: () => coinbaseModule({ darkMode: prefersDarkMode() }), + [WALLET_KEYS.PAIRING]: () => pairingModule(), [WALLET_KEYS.LEDGER]: () => ledgerModule(), [WALLET_KEYS.TREZOR]: () => trezorModule({ appUrl: TREZOR_APP_URL, email: TREZOR_EMAIL }), [WALLET_KEYS.KEYSTONE]: () => keystoneModule(), - [WALLET_KEYS.TAHO]: () => tahoModule(), - [WALLET_KEYS.COINBASE]: () => coinbaseModule({ darkMode: prefersDarkMode() }), } export const getAllWallets = (chain: ChainInfo): WalletInit[] => { diff --git a/src/services/contracts/safeContracts.ts b/src/services/contracts/safeContracts.ts index a3ef2c4ffb..922584745d 100644 --- a/src/services/contracts/safeContracts.ts +++ b/src/services/contracts/safeContracts.ts @@ -1,7 +1,6 @@ import { getFallbackHandlerDeployment, getMultiSendCallOnlyDeployment, - getMultiSendDeployment, getProxyFactoryDeployment, getSafeL2SingletonDeployment, getSafeSingletonDeployment, @@ -102,28 +101,6 @@ export const getReadOnlyGnosisSafeContract = (chain: ChainInfo, safeVersion: str // MultiSend -const getMultiSendContractDeployment = (chainId: string) => { - return getMultiSendDeployment({ network: chainId }) || getMultiSendDeployment() -} - -export const getMultiSendContractAddress = (chainId: string): string | undefined => { - const deployment = getMultiSendContractDeployment(chainId) - - return deployment?.networkAddresses[chainId] -} - -// MultiSendCallOnly - -const getMultiSendCallOnlyContractDeployment = (chainId: string) => { - return getMultiSendCallOnlyDeployment({ network: chainId }) || getMultiSendCallOnlyDeployment() -} - -export const getMultiSendCallOnlyContractAddress = (chainId: string): string | undefined => { - const deployment = getMultiSendCallOnlyContractDeployment(chainId) - - return deployment?.networkAddresses[chainId] -} - export const getMultiSendCallOnlyContract = ( chainId: string, safeVersion: SafeInfo['version'] = LATEST_SAFE_VERSION, @@ -132,7 +109,7 @@ export const getMultiSendCallOnlyContract = ( const ethAdapter = createEthersAdapter(provider) return ethAdapter.getMultiSendCallOnlyContract({ - singletonDeployment: getMultiSendCallOnlyContractDeployment(chainId), + singletonDeployment: getMultiSendCallOnlyDeployment({ network: chainId, version: safeVersion || undefined }), ..._getValidatedGetContractProps(chainId, safeVersion), }) } @@ -144,7 +121,7 @@ export const getReadOnlyMultiSendCallOnlyContract = ( const ethAdapter = createReadOnlyEthersAdapter() return ethAdapter.getMultiSendCallOnlyContract({ - singletonDeployment: getMultiSendCallOnlyContractDeployment(chainId), + singletonDeployment: getMultiSendCallOnlyDeployment({ network: chainId, version: safeVersion || undefined }), ..._getValidatedGetContractProps(chainId, safeVersion), }) } diff --git a/src/store/batchSlice.ts b/src/store/batchSlice.ts index fc93d682f6..31897e623a 100644 --- a/src/store/batchSlice.ts +++ b/src/store/batchSlice.ts @@ -74,7 +74,7 @@ export const batchSlice = createSlice({ export const { setBatch, addTx, removeTx } = batchSlice.actions const selectAllBatches = (state: RootState): BatchTxsState => { - return state[batchSlice.name] || {} + return state[batchSlice.name] || initialState } export const selectBatchBySafe = createSelector( diff --git a/src/store/settingsSlice.ts b/src/store/settingsSlice.ts index 691e8d96f3..d31b752622 100644 --- a/src/store/settingsSlice.ts +++ b/src/store/settingsSlice.ts @@ -151,9 +151,12 @@ export const selectTokenList = (state: RootState): SettingsState['tokenList'] => return state[settingsSlice.name].tokenList || initialState.tokenList } -export const selectHiddenTokensPerChain = (state: RootState, chainId: string): string[] => { - return state[settingsSlice.name].hiddenTokens?.[chainId] || [] -} +export const selectHiddenTokensPerChain = createSelector( + [selectSettings, (_, chainId) => chainId], + (settings, chainId) => { + return settings.hiddenTokens?.[chainId] || [] + }, +) export const selectRpc = createSelector(selectSettings, (settings) => settings.env.rpc) diff --git a/src/utils/__tests__/transactions.test.ts b/src/utils/__tests__/transactions.test.ts index 6d73f5dc38..52c47123ac 100644 --- a/src/utils/__tests__/transactions.test.ts +++ b/src/utils/__tests__/transactions.test.ts @@ -5,6 +5,8 @@ import type { SafeAppData, Transaction, } from '@safe-global/safe-gateway-typescript-sdk' +import { TransactionInfoType } from '@safe-global/safe-gateway-typescript-sdk' +import { isMultiSendTxInfo } from '../transaction-guards' import { getQueuedTransactionCount, getTxOrigin } from '../transactions' describe('transactions', () => { @@ -110,4 +112,77 @@ describe('transactions', () => { ) }) }) + + describe('isMultiSendTxInfo', () => { + it('should return true for a multisend tx', () => { + expect( + isMultiSendTxInfo({ + type: TransactionInfoType.CUSTOM, + to: { + value: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D', + name: 'Gnosis Safe: MultiSendCallOnly', + logoUri: + 'https://safe-transaction-assets.safe.global/contracts/logos/0x40A2aCCbd92BCA938b02010E17A5b8929b49130D.png', + }, + dataSize: '1188', + value: '0', + methodName: 'multiSend', + actionCount: 3, + isCancellation: false, + }), + ).toBe(true) + }) + + it('should return false for non-multisend txs', () => { + expect( + isMultiSendTxInfo({ + type: TransactionInfoType.CUSTOM, + to: { + value: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D', + name: 'Gnosis Safe: MultiSendCallOnly', + logoUri: + 'https://safe-transaction-assets.safe.global/contracts/logos/0x40A2aCCbd92BCA938b02010E17A5b8929b49130D.png', + }, + dataSize: '1188', + value: '0', + methodName: 'multiSend', + //actionCount: 3, // missing actionCount + isCancellation: false, + }), + ).toBe(false) + + expect( + isMultiSendTxInfo({ + type: TransactionInfoType.CUSTOM, + to: { + value: '0x40A2aCCbd92BCA938b02010E17A5b8929b49130D', + name: 'Gnosis Safe: MultiSendCallOnly', + logoUri: + 'https://safe-transaction-assets.safe.global/contracts/logos/0x40A2aCCbd92BCA938b02010E17A5b8929b49130D.png', + }, + dataSize: '1188', + value: '0', + methodName: 'notMultiSend', // wrong method + actionCount: 3, + isCancellation: false, + }), + ).toBe(false) + + expect( + isMultiSendTxInfo({ + type: TransactionInfoType.SETTINGS_CHANGE, // wrong type + dataDecoded: { + method: 'changeThreshold', + parameters: [ + { + name: '_threshold', + type: 'uint256', + value: '2', + }, + ], + }, + }), + ).toBe(false) + }) + }) }) diff --git a/src/utils/transaction-guards.ts b/src/utils/transaction-guards.ts index 5622cc1b81..a8f402a8b6 100644 --- a/src/utils/transaction-guards.ts +++ b/src/utils/transaction-guards.ts @@ -35,7 +35,6 @@ import { } from '@safe-global/safe-gateway-typescript-sdk' import { getSpendingLimitModuleAddress } from '@/services/contracts/spendingLimitContracts' import { sameAddress } from '@/utils/addresses' -import { getMultiSendCallOnlyContractAddress, getMultiSendContractAddress } from '@/services/contracts/safeContracts' import type { NamedAddress } from '@/components/new-safe/create/types' export const isTxQueued = (value: TransactionStatus): boolean => { @@ -78,16 +77,12 @@ export const isCustomTxInfo = (value: TransactionInfo): value is Custom => { return value.type === TransactionInfoType.CUSTOM } -export const isSupportedMultiSendAddress = (txInfo: TransactionInfo, chainId: string): boolean => { - const toAddress = isCustomTxInfo(txInfo) ? txInfo.to.value : '' - const multiSendAddress = getMultiSendContractAddress(chainId) - const multiSendCallOnlyAddress = getMultiSendCallOnlyContractAddress(chainId) - - return sameAddress(multiSendAddress, toAddress) || sameAddress(multiSendCallOnlyAddress, toAddress) -} - export const isMultiSendTxInfo = (value: TransactionInfo): value is MultiSend => { - return value.type === TransactionInfoType.CUSTOM && value.methodName === 'multiSend' + return ( + value.type === TransactionInfoType.CUSTOM && + value.methodName === 'multiSend' && + typeof value.actionCount === 'number' + ) } export const isCancellationTxInfo = (value: TransactionInfo): value is Cancellation => { diff --git a/yarn.lock b/yarn.lock index eceda5cd86..22db38c51a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5040,15 +5040,6 @@ buffer "^6.0.3" ethereumjs-util "^7.1.3" -"@web3-onboard/taho@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@web3-onboard/taho/-/taho-2.0.5.tgz#899d147c234d61e1fb81045fc7339182c230c632" - integrity sha512-Z5n2UMumLNppOlDgYM9MhrM+YGyz8Emouaf7htH8l4B2r/meV4F3Wkgol2xYuwwu5SJyPaJH2GxNeh/EAfyBxg== - dependencies: - "@web3-onboard/common" "^2.3.3" - tallyho-detect-provider "^1.0.0" - tallyho-onboarding "^1.0.2" - "@web3-onboard/trezor@^2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@web3-onboard/trezor/-/trezor-2.4.2.tgz#49a485467d970ae872288c07eccb7adf18782622" @@ -5860,7 +5851,7 @@ borsh@^0.7.0: bs58 "^4.0.0" text-encoding-utf-8 "^1.0.2" -bowser@^2.11.0, bowser@^2.9.0: +bowser@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== @@ -13410,18 +13401,6 @@ table-layout@^1.0.2: typical "^5.2.0" wordwrapjs "^4.0.0" -tallyho-detect-provider@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tallyho-detect-provider/-/tallyho-detect-provider-1.0.2.tgz#6e462c34494217d39a83e22709dd855488b2d32d" - integrity sha512-VUGZiWUrKJUUjtnkib09tuNO7Kld4UWLs54nnNYP0tewvzmeb1VWDK0UTv88bEUcuRKx2YWGDIuOuK9v270Ewg== - -tallyho-onboarding@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tallyho-onboarding/-/tallyho-onboarding-1.0.2.tgz#afc7dc4eb05b3a7861ead215e798585e1cbe2e91" - integrity sha512-bdFT/fNrFrq1BYVgjl/JKtwDmeS+z2u0415PoxmGmmYYRfdcKqXtEPImMoEbVwGtOeN0iFVohuS8ESrrAe+w7w== - dependencies: - bowser "^2.9.0" - tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"