diff --git a/apps/demo-react/components/walletModal/walletModal.tsx b/apps/demo-react/components/walletModal/walletModal.tsx index d1bc8966..3db00972 100644 --- a/apps/demo-react/components/walletModal/walletModal.tsx +++ b/apps/demo-react/components/walletModal/walletModal.tsx @@ -6,9 +6,10 @@ import { Identicon, External, Copy, + Select, + Option, } from '@lidofinance/lido-ui'; -import { useEtherscanOpen } from '@lido-sdk/react'; -import { useWeb3 } from 'reef-knot/web3-react'; + import { useForceDisconnect, useConnectorInfo } from 'reef-knot/core-react'; import { useCopyToClipboard } from 'hooks/useCopyToClipboard'; import { FC, useCallback } from 'react'; @@ -21,10 +22,19 @@ import { WalletModalAddressStyle, WalletModalActionsStyle, } from './walletModalStyles'; +import { usePublicClient } from 'wagmi'; +import { useAccount } from 'wagmi'; +import { useChainId } from 'wagmi'; +import { useSwitchChain } from 'wagmi'; +import { useConnections } from 'wagmi'; const WalletModal: FC = (props) => { const { onClose } = props; - const { account } = useWeb3(); + const chainId = useChainId(); + const [connection] = useConnections(); + const { chains, switchChain } = useSwitchChain(); + const { address } = useAccount(); + const client = usePublicClient(); const { connectorName } = useConnectorInfo(); const { forceDisconnect } = useForceDisconnect(); const handleDisconnect = useCallback(() => { @@ -32,9 +42,15 @@ const WalletModal: FC = (props) => { onClose?.(); }, [onClose, forceDisconnect]); - const handleCopy = useCopyToClipboard(account ?? ''); - const handleEtherscan = useEtherscanOpen(account ?? '', 'address'); + const handleCopy = useCopyToClipboard(address ?? ''); + const handleEtherscan = () => { + if (address && client) { + window.open( + `${client.chain.blockExplorers?.default.url}/address/${address}`, + ); + } + }; return ( @@ -57,12 +73,29 @@ const WalletModal: FC = (props) => { - + -
+
+ + + + { return dynamics.rpcProviderUrls[chainId]; }; - -export const backendRPC = { - [mainnet.id]: getBackendRPCPath(mainnet.id), - [holesky.id]: getBackendRPCPath(holesky.id), -}; diff --git a/apps/demo-react/env-dynamics.mjs b/apps/demo-react/env-dynamics.mjs index bca72dfa..8c3525df 100644 --- a/apps/demo-react/env-dynamics.mjs +++ b/apps/demo-react/env-dynamics.mjs @@ -2,6 +2,9 @@ export const rpcProviderUrls = { 1: process.env[`RPC_PROVIDER_URL_1`], 17000: process.env[`RPC_PROVIDER_URL_17000`], + 11155111: process.env[`RPC_PROVIDER_URL_11155111`], + 10: process.env[`RPC_PROVIDER_URL_10`], + 11155420: process.env[`RPC_PROVIDER_URL_11155420`], }; /** @type number */ export const defaultChain = parseInt(process.env.DEFAULT_CHAIN, 10) || 17000; diff --git a/apps/demo-react/hooks/useToken.ts b/apps/demo-react/hooks/useToken.ts deleted file mode 100644 index 861f0edf..00000000 --- a/apps/demo-react/hooks/useToken.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { useMemo } from 'react'; -import { TOKENS } from '@lido-sdk/constants'; -import { - useWSTETHContractWeb3, - useSTETHBalance, - useWSTETHBalance, - useSTETHContractWeb3, -} from '@lido-sdk/react'; - -export const useToken = (selectedToken: TOKENS) => { - const wstethContractWeb3 = useWSTETHContractWeb3(); - const stethContractWeb3 = useSTETHContractWeb3(); - const stethBalance = useSTETHBalance(); - const wstethBalance = useWSTETHBalance(); - const isSteth = selectedToken === TOKENS.STETH; - const tokenContract = isSteth ? stethContractWeb3 : wstethContractWeb3; - const tokenBalance = isSteth ? stethBalance.data : wstethBalance.data; - - return useMemo(() => { - return { - token: selectedToken, - tokenContract, - tokenBalance, - } as const; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedToken, tokenContract, tokenBalance]); -}; diff --git a/apps/demo-react/package.json b/apps/demo-react/package.json index 87b6f674..b2e8eba8 100644 --- a/apps/demo-react/package.json +++ b/apps/demo-react/package.json @@ -15,9 +15,8 @@ "@ethersproject/constants": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@lido-sdk/constants": "^3.2.1", - "@lido-sdk/providers": "^1.4.14", "@lido-sdk/react": "2.0.2", - "@lidofinance/lido-ethereum-sdk": "4.0.0", + "@lidofinance/lido-ethereum-sdk": "^4.0.0", "@lidofinance/lido-ui": "^3.18.0", "@svgr/webpack": "^8.0.1", "@tanstack/react-query": "^5.29.0", diff --git a/apps/demo-react/providers/sdk-legacy.tsx b/apps/demo-react/providers/sdk-legacy.tsx deleted file mode 100644 index 4902c227..00000000 --- a/apps/demo-react/providers/sdk-legacy.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import React, { useEffect, useMemo, useState } from 'react'; -import { ProviderSDK } from '@lido-sdk/react'; -import { getStaticRpcBatchProvider } from '@lido-sdk/providers'; -import { Web3Provider } from '@ethersproject/providers'; -import { useAccount, useClient, useConfig } from 'wagmi'; -import { Chain, mainnet } from 'wagmi/chains'; -import { useWeb3 } from 'reef-knot/web3-react'; - -const POLLING_INTERVAL = 12_000; - -export const SDKLegacyProvider = (props: { - children?: React.ReactNode; - defaultChainId: number; - supportedChains: Chain[]; - rpc: Record; - pollingInterval?: number; -}) => { - const { - children, - defaultChainId, - rpc, - supportedChains, - pollingInterval = POLLING_INTERVAL, - } = props; - const { chainId = defaultChainId, account } = useWeb3(); - const { isConnected } = useAccount(); - const config = useConfig(); - const client = useClient(); - - const [providerWeb3, setProviderWeb3] = useState(); - - useEffect(() => { - let isHookMounted = true; - - const getProviderTransport = async () => { - const { state } = config; - if (!state.current) return client?.transport; - const connector = state.connections.get(state.current)?.connector; - if (!connector) return client?.transport; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const provider: any = await connector.getProvider(); - return provider || client?.transport; - }; - - const getProviderValue = async () => { - if (!client || !account || !isConnected) return undefined; - const { chain } = client; - const providerTransport = await getProviderTransport(); - - // https://wagmi.sh/core/guides/ethers#reference-implementation-1 - const provider = new Web3Provider(providerTransport, { - chainId: chain.id, - name: chain.name, - ensAddress: chain.contracts?.ensRegistry?.address, - }); - provider.pollingInterval = POLLING_INTERVAL; - - return provider; - }; - - const getProviderAndSet = async () => { - const provider = await getProviderValue(); - if (isHookMounted) setProviderWeb3(provider); - }; - - void getProviderAndSet(); - - return () => { - isHookMounted = false; - }; - }, [config.state, client, account, config, isConnected]); - - const supportedChainIds = useMemo( - () => supportedChains.map((chain) => chain.id), - [supportedChains], - ); - - const providerRpc = useMemo( - () => getStaticRpcBatchProvider(chainId, rpc[chainId], 0, pollingInterval), - [chainId, rpc, pollingInterval], - ); - - const providerMainnetRpc = useMemo( - () => - getStaticRpcBatchProvider( - mainnet.id, - rpc[mainnet.id], - 0, - POLLING_INTERVAL, - ), - [rpc], - ); - - return ( - // @ts-expect-error Property children does not exist on type - - {children} - - ); -}; diff --git a/apps/demo-react/providers/sdk.tsx b/apps/demo-react/providers/sdk.tsx index 92efa9b2..e5da682b 100644 --- a/apps/demo-react/providers/sdk.tsx +++ b/apps/demo-react/providers/sdk.tsx @@ -1,11 +1,21 @@ -import { createContext, useMemo, PropsWithChildren, useContext } from 'react'; -import { useSDK } from '@lido-sdk/react'; - -import { createWalletClient, custom } from 'viem'; +import { + createContext, + useMemo, + PropsWithChildren, + useContext, + useEffect, +} from 'react'; import { LidoSDK } from '@lidofinance/lido-ethereum-sdk'; import invariant from 'tiny-invariant'; -import { getBackendRPCPath } from 'config'; +import { + useWalletClient, + usePublicClient, + useAccount, + useConfig, + useSwitchChain, +} from 'wagmi'; +import { useClientConfig } from './client-config'; const context = createContext(null); @@ -16,25 +26,42 @@ export const useLidoSDK = () => { }; export const LidoSDKProvider: React.FC = ({ children }) => { - const { providerWeb3, chainId, account } = useSDK(); - const value = useMemo(() => { - const client = - providerWeb3 && account - ? createWalletClient({ - transport: custom(providerWeb3.provider as any), - }) - : undefined; + const { defaultChain: defaultChainId } = useClientConfig(); + const { data: walletClient } = useWalletClient(); + const publicClient = usePublicClient(); + // reset internal wagmi state after disconnect + const { isConnected } = useAccount(); + + const wagmiConfig = useConfig(); + const { switchChain } = useSwitchChain(); + useEffect(() => { + if (isConnected) { + return () => { + // protecs from side effect double run + if (!wagmiConfig.state.current) { + switchChain({ + chainId: defaultChainId, + }); + } + }; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isConnected]); + + const contextValue = useMemo(() => { + // @ts-expect-error: typing (viem + LidoSDK) const sdk = new LidoSDK({ - chainId: chainId as any, - rpcUrls: [getBackendRPCPath(chainId)], - web3Provider: client as any, + chainId: publicClient!.chain.id, logMode: 'none', + rpcProvider: publicClient, + web3Provider: walletClient, }); // inject lido_sdk for console access if (typeof window !== 'undefined') (window as any).lido_sdk = sdk; + return sdk; - }, [providerWeb3, chainId, account]); + }, [publicClient, walletClient]); - return {children}; + return {children}; }; diff --git a/apps/demo-react/providers/web3.tsx b/apps/demo-react/providers/web3.tsx index 36ead0ed..c3d3825b 100644 --- a/apps/demo-react/providers/web3.tsx +++ b/apps/demo-react/providers/web3.tsx @@ -15,7 +15,6 @@ import { import metrics from 'utils/metrics'; import { getBackendRPCPath } from 'config'; import { useClientConfig } from 'providers/client-config'; -import { SDKLegacyProvider } from './sdk-legacy'; const LINK_DONT_HAVE_WALLET = 'https://support.metamask.io/hc/en-us/articles/360015489531-Getting-started-with-MetaMask'; @@ -110,13 +109,7 @@ const Web3Provider: FC = ({ children }) => { config={walletsModalConfig} darkThemeEnabled={themeName === 'dark'} /> - - {children} - + {children} diff --git a/packages/connectors/ledger-connector/CHANGELOG.md b/packages/connectors/ledger-connector/CHANGELOG.md index 2454e5b6..70412750 100644 --- a/packages/connectors/ledger-connector/CHANGELOG.md +++ b/packages/connectors/ledger-connector/CHANGELOG.md @@ -1,5 +1,11 @@ # @reef-knot/ledger-connector +## 4.2.0 + +### Minor Changes + +- add chainChange to ledger hardware connector + ## 4.1.4 ### Patch Changes diff --git a/packages/connectors/ledger-connector/package.json b/packages/connectors/ledger-connector/package.json index aef7d414..a428c087 100644 --- a/packages/connectors/ledger-connector/package.json +++ b/packages/connectors/ledger-connector/package.json @@ -1,6 +1,6 @@ { "name": "@reef-knot/ledger-connector", - "version": "4.1.4", + "version": "4.2.0", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { diff --git a/packages/connectors/ledger-connector/src/hid/connector.ts b/packages/connectors/ledger-connector/src/hid/connector.ts index c6f25c5c..f6117547 100644 --- a/packages/connectors/ledger-connector/src/hid/connector.ts +++ b/packages/connectors/ledger-connector/src/hid/connector.ts @@ -6,7 +6,6 @@ import { import { Chain } from 'wagmi/chains'; import { checkError, clearLedgerDerivationPath } from '../hid/helpers'; import type { LedgerHQProvider } from './provider'; - export const idLedgerHid = 'ledgerHID'; export const name = 'Ledger'; @@ -89,6 +88,21 @@ export function ledgerHIDConnector({ } }, + async switchChain({ chainId }) { + const id = chainId.toString(16); + + emitter.emit('change', { chainId: Number(chainId) }); + return Promise.resolve( + chains.find((x) => x.id === chainId) ?? { + id: chainId, + name: `Chain ${id}`, + network: `${id}`, + nativeCurrency: { decimals: 18, name: 'Ether', symbol: 'ETH' }, + rpcUrls: { default: { http: [''] }, public: { http: [''] } }, + }, + ); + }, + onDisconnect() { // Is called when HID API emits 'disconnect' event for some reason. // For example, the device was manually unplugged. @@ -98,10 +112,12 @@ export function ledgerHIDConnector({ onAccountsChanged() { // NOOP + // HID Ledger cannot change account by itself }, onChainChanged() { // NOOP + // HID Ledger cannot change chain by itself }, })); } diff --git a/packages/reef-knot/CHANGELOG.md b/packages/reef-knot/CHANGELOG.md index 58536325..9e50eb3a 100644 --- a/packages/reef-knot/CHANGELOG.md +++ b/packages/reef-knot/CHANGELOG.md @@ -1,5 +1,12 @@ # reef-knot +## 6.0.2 + +### Patch Changes + +- Updated dependencies + - @reef-knot/ledger-connector@4.2.0 + ## 6.0.1 ### Patch Changes diff --git a/packages/reef-knot/package.json b/packages/reef-knot/package.json index 33ef5c28..b894f060 100644 --- a/packages/reef-knot/package.json +++ b/packages/reef-knot/package.json @@ -1,6 +1,6 @@ { "name": "reef-knot", - "version": "6.0.1", + "version": "6.0.2", "main": "dist/index.js", "types": "dist/index.d.ts", "exports": { @@ -48,7 +48,7 @@ "@reef-knot/wallets-list": "3.0.0", "@reef-knot/wallets-helpers": "2.1.1", "@reef-knot/types": "3.0.0", - "@reef-knot/ledger-connector": "4.1.4" + "@reef-knot/ledger-connector": "4.2.0" }, "peerDependencies": { "@lidofinance/lido-ui": "^3.18.0", diff --git a/packages/wallets/binance-wallet/package.json b/packages/wallets/binance-wallet/package.json index 420082ef..8fc18e1e 100644 --- a/packages/wallets/binance-wallet/package.json +++ b/packages/wallets/binance-wallet/package.json @@ -40,7 +40,7 @@ "peerDependencies": { "@reef-knot/types": "^3.0.0", "@reef-knot/wallets-helpers": "^2.0.0", - "wagmi": "2.10.2" + "wagmi": ">=2.12" }, "dependencies": { "@binance/w3w-wagmi-connector-v2": "^1.2.3", diff --git a/packages/wallets/coinbase-smart-wallet/package.json b/packages/wallets/coinbase-smart-wallet/package.json index 252a8581..e2df34c1 100644 --- a/packages/wallets/coinbase-smart-wallet/package.json +++ b/packages/wallets/coinbase-smart-wallet/package.json @@ -37,7 +37,7 @@ "eslint-config-custom": "*" }, "peerDependencies": { - "wagmi": "2.10.4", + "wagmi": ">=2.12", "@reef-knot/types": "^3.0.0", "@tanstack/react-query": "^5.29.0" } diff --git a/yarn.lock b/yarn.lock index 7b5887e0..adf9a0d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,11 +7,6 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@adraffy/ens-normalize@1.10.0": - version "1.10.0" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz#d2a39395c587e092d77cbbc80acf956a54f38bf7" - integrity sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q== - "@adraffy/ens-normalize@1.11.0": version "1.11.0" resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" @@ -2632,7 +2627,7 @@ dependencies: tiny-invariant "^1.1.0" -"@lido-sdk/constants@3.2.1", "@lido-sdk/constants@^3.2.1": +"@lido-sdk/constants@^3.2.1": version "3.2.1" resolved "https://registry.yarnpkg.com/@lido-sdk/constants/-/constants-3.2.1.tgz#0c4582d7e76e4f8bc42e8f3c0d14dc0fbe481d77" integrity sha512-zes0Mw0r1nEQYBNHV5fxK2H9Byowejy4haFy9LYDh1nL72aNJzzdh5S5iM+pKlEuLHQJHV5lVO/k9tunNJIKqQ== @@ -2655,13 +2650,6 @@ "@lido-sdk/constants" "3.2.0" tiny-invariant "^1.1.0" -"@lido-sdk/providers@^1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@lido-sdk/providers/-/providers-1.4.14.tgz#b7c714aa753d662c0d51f71ee4990b3cb78ce790" - integrity sha512-m422uXuaGoXoUlF8oyFTIQsj8ljVet/x7nK0xF8UoURm/iuaAhTbEXpcxhmkx8JSSDli1928apJRAwxG0McgnQ== - dependencies: - "@lido-sdk/constants" "3.2.1" - "@lido-sdk/react@2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@lido-sdk/react/-/react-2.0.2.tgz#03dc39c7f86b69314210ac17b47f9b02e14f3ae5" @@ -2681,7 +2669,7 @@ dependencies: typescript "^4.7" -"@lidofinance/lido-ethereum-sdk@4.0.0": +"@lidofinance/lido-ethereum-sdk@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@lidofinance/lido-ethereum-sdk/-/lido-ethereum-sdk-4.0.0.tgz#5378b57c3026d610b6f14b319b23f50bdacdc7dc" integrity sha512-ozXt6qGI1I7WlWZ52rweUGsBGZWt4NWRWjCwiqfJf4DAILe7bkoXEMDEdR+9qHrAzQa+R+JC25aocJ1zeBf2MQ== @@ -3079,13 +3067,6 @@ resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.0.0.tgz#34758a1cbfcd4126880f83e6b1cdeb88785b7970" integrity sha512-wH5EHOmLi0rEazphPbecAzmjd12I6/Yv/SiHdkA9LSycsQk7RuuTp7am5/o62qYr0RScE7Pc9icXGBbsr6cesA== -"@noble/curves@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.0.tgz#f05771ef64da724997f69ee1261b2417a49522d6" - integrity sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg== - dependencies: - "@noble/hashes" "1.4.0" - "@noble/curves@1.4.2", "@noble/curves@^1.4.0", "@noble/curves@~1.4.0": version "1.4.2" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" @@ -4596,11 +4577,6 @@ resolved "https://registry.yarnpkg.com/@web3-react/types/-/types-6.0.7.tgz#34a6204224467eedc6123abaf55fbb6baeb2809f" integrity sha512-ofGmfDhxmNT1/P/MgVa8IKSkCStFiyvXe+U5tyZurKdrtTDFU+wJ/LxClPDtFerWpczNFPUSrKcuhfPX1sI6+A== -abitype@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.5.tgz#29d0daa3eea867ca90f7e4123144c1d1270774b6" - integrity sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw== - abitype@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.6.tgz#76410903e1d88e34f1362746e2d407513c38565b" @@ -8256,11 +8232,6 @@ isexe@^2.0.0: resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -isows@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.4.tgz#810cd0d90cc4995c26395d2aa4cfa4037ebdf061" - integrity sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ== - isows@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" @@ -10786,7 +10757,16 @@ string-format@^2.0.0: resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -10882,7 +10862,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -11787,19 +11774,19 @@ viem@>=2.21, viem@^2.21.37: ws "8.18.0" viem@^2.1.1: - version "2.18.5" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.18.5.tgz#6b29c2b30c8c01de4f4c5a3cc99b8e30ae942df8" - integrity sha512-hIV5+kzI1f6fOzmZWuycjH+9F/qcEQ3BOyF0/m1cc+pd2+PMdJ/yccL4MeKAUDc1mun5KGjub9HhJsu+9Ndd3Q== + version "2.21.35" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.21.35.tgz#418782906554b6409082aa2ccb5f27c77abdf1b1" + integrity sha512-f3EFc5JILeA9veuNymUN8HG/nKP9ykC0NCgwFrZWuxcCc822GaP0IEnkRBsHGqmjwbz//FxJFmvtx7TBcdVs0A== dependencies: - "@adraffy/ens-normalize" "1.10.0" - "@noble/curves" "1.4.0" - "@noble/hashes" "1.4.0" - "@scure/bip32" "1.4.0" - "@scure/bip39" "1.3.0" - abitype "1.0.5" - isows "1.0.4" - webauthn-p256 "0.0.5" - ws "8.17.1" + "@adraffy/ens-normalize" "1.11.0" + "@noble/curves" "1.6.0" + "@noble/hashes" "1.5.0" + "@scure/bip32" "1.5.0" + "@scure/bip39" "1.4.0" + abitype "1.0.6" + isows "1.0.6" + webauthn-p256 "0.0.10" + ws "8.18.0" wagmi@>=2.12, wagmi@^2.12.25: version "2.12.25" @@ -11825,14 +11812,6 @@ webauthn-p256@0.0.10: "@noble/curves" "^1.4.0" "@noble/hashes" "^1.4.0" -webauthn-p256@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/webauthn-p256/-/webauthn-p256-0.0.5.tgz#0baebd2ba8a414b21cc09c0d40f9dd0be96a06bd" - integrity sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg== - dependencies: - "@noble/curves" "^1.4.0" - "@noble/hashes" "^1.4.0" - "webextension-polyfill@>=0.10.0 <1.0": version "0.12.0" resolved "https://registry.yarnpkg.com/webextension-polyfill/-/webextension-polyfill-0.12.0.tgz#f62c57d2cd42524e9fbdcee494c034cae34a3d69" @@ -11976,7 +11955,7 @@ wordwrapjs@^4.0.0: reduce-flatten "^2.0.0" typical "^5.2.0" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -11994,6 +11973,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -12013,11 +12001,6 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@8.17.1, ws@~8.17.1: - version "8.17.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" - integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== - ws@8.18.0, ws@^8.13.0: version "8.18.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" @@ -12033,6 +12016,11 @@ ws@^7.4.0: resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + xmlhttprequest-ssl@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz#91360c86b914e67f44dce769180027c0da618c67"