diff --git a/.github/workflows/ci_develop.yaml b/.github/workflows/ci_develop.yaml index 9ae99f93..f37e1bdf 100644 --- a/.github/workflows/ci_develop.yaml +++ b/.github/workflows/ci_develop.yaml @@ -25,7 +25,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 18.x - name: Create env file run: | diff --git a/.github/workflows/ci_main.yaml b/.github/workflows/ci_main.yaml index f101f36b..bac439c5 100644 --- a/.github/workflows/ci_main.yaml +++ b/.github/workflows/ci_main.yaml @@ -26,7 +26,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: 16.x + node-version: 18.x - name: Create env file run: | diff --git a/.nvmrc b/.nvmrc index 431076a9..a9d08739 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -16.16.0 +18.19.0 diff --git a/apps/admin/src/polyfills.ts b/apps/admin/src/polyfills.ts index 2adf3d05..e4126f39 100644 --- a/apps/admin/src/polyfills.ts +++ b/apps/admin/src/polyfills.ts @@ -5,3 +5,15 @@ */ import 'core-js/stable'; import 'regenerator-runtime/runtime'; + +// Ensure Buffer is globally available early (before any dynamic imports needing it) +try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { Buffer } = require('buffer'); + if (typeof window !== 'undefined' && !(window as any).Buffer) { + (window as any).Buffer = Buffer; + } +} catch (err) { + // eslint-disable-next-line no-console + console.warn('[Polyfills] Buffer polyfill failed', err); +} diff --git a/libs/connect-context/src/Connect.tsx b/libs/connect-context/src/Connect.tsx index c0b28eac..505a6a1f 100644 --- a/libs/connect-context/src/Connect.tsx +++ b/libs/connect-context/src/Connect.tsx @@ -1,12 +1,11 @@ -import { - EthereumClient, - w3mConnectors, - w3mProvider, -} from '@web3modal/ethereum'; import { configureChains, createConfig, WagmiConfig } from 'wagmi'; import { SafeConnector } from '@wagmi/connectors/safe'; +import { InjectedConnector } from 'wagmi/connectors/injected'; +import { MetaMaskConnector } from 'wagmi/connectors/metaMask'; +import { CoinbaseWalletConnector } from 'wagmi/connectors/coinbaseWallet'; +// WalletConnect v2 included whenever a NX_WALLET_CONNECT_ID is provided (no extra enable flag) +import { WalletConnectConnector } from 'wagmi/connectors/walletConnect'; import { jsonRpcProvider } from 'wagmi/providers/jsonRpc'; -import { Web3Modal } from '@web3modal/react'; import { HAUS_NETWORK_DATA, @@ -15,13 +14,26 @@ import { } from '@daohaus/keychain-utils'; import { ConnectProvider, ConnectProviderProps } from './ConnectContext'; +import { logChains } from './utils/debug'; -if (!process.env['NX_WALLET_CONNECT_ID']) { - throw new Error('You need to provide NX_WALLET_CONNECT_ID env variable'); +// Ensure Buffer global for libraries (e.g., walletconnect QR, qrcode) that expect Node Buffer +// Some build setups (webpack 5) do not auto-polyfill core modules. +// Safe to run always; no-op if already defined. +try { + // eslint-disable-next-line @typescript-eslint/no-var-requires + const { Buffer } = require('buffer'); + if (typeof window !== 'undefined' && !(window as any).Buffer) { + (window as any).Buffer = Buffer; + } +} catch (err) { + // Buffer polyfill failed – non-fatal. } -export const projectId = process.env['NX_WALLET_CONNECT_ID']; + +// Legacy Web3Modal artifacts removed; no external modal client. const chains = Object.values(VIEM_CHAINS); +// Debug log of chain list +logChains(chains as unknown as { id: number; name?: string }[]); const { publicClient } = configureChains( chains, [ @@ -33,25 +45,54 @@ const { publicClient } = configureChains( }; }, }), - w3mProvider({ projectId }), ], { retryCount: 10 } ); +const includeSafe = process.env['NX_CONNECT_DISABLE_SAFE'] !== 'true'; +const walletConnectProjectId = process.env['NX_WALLET_CONNECT_ID']; + +const baseConnectors = [ + // Injected first: rename so it doesn't clash label-wise with MetaMask when present + new InjectedConnector({ + chains, + options: { shimDisconnect: true, name: 'Browser Wallet' }, + }), + new MetaMaskConnector({ chains, options: { shimDisconnect: true } }), + new CoinbaseWalletConnector({ + chains, + options: { appName: 'DAOhaus Admin' }, + }), + ...(includeSafe + ? [ + new SafeConnector({ + chains, + options: { + allowedDomains: [/gnosis-safe.io$/, /app.safe.global$/], + debug: false, + }, + }), + ] + : []), + ...(walletConnectProjectId + ? [ + new WalletConnectConnector({ + chains, + options: { + projectId: walletConnectProjectId, + showQrModal: true, // uses WC's standalone QR (not Web3Modal UI) + }, + }), + ] + : []), +]; + export const wagmiConfig = createConfig({ autoConnect: true, - connectors: [ - ...w3mConnectors({ projectId, chains }), - new SafeConnector({ - chains, - options: { - allowedDomains: [/gnosis-safe.io$/, /app.safe.global$/], - debug: false, - }, - }), - ], + connectors: baseConnectors, publicClient, }); -export const ethereumClient = new EthereumClient(wagmiConfig, chains); +// Placeholder for backward compatibility; no external client now +export const ethereumClient = undefined as unknown as Record; export const Connect = ({ children, @@ -70,7 +111,6 @@ export const Connect = ({ > {children} - ); }; diff --git a/libs/connect-context/src/ConnectContext.tsx b/libs/connect-context/src/ConnectContext.tsx index 48c3f146..20f5d383 100644 --- a/libs/connect-context/src/ConnectContext.tsx +++ b/libs/connect-context/src/ConnectContext.tsx @@ -7,7 +7,6 @@ import { useMemo, useState, } from 'react'; -import { useWeb3Modal } from '@web3modal/react'; import { useAccount, useDisconnect, @@ -29,6 +28,7 @@ import { import { defaultConnectValues } from './utils/defaults'; import { ConnectLifecycleFns, UserProfile } from './utils/types'; import { loadProfile } from './utils'; +import InternalConnectModal from './components/InternalConnectModal'; export type UserConnectType = { networks: NetworkConfigs; @@ -58,6 +58,9 @@ export type ConnectProviderProps = { daoChainId?: string; }; +// Always use internal connect modal (Web3Modal removed) +const useInternal = true; + export const ConnectProvider = ({ children, networks = HAUS_NETWORK_DATA, @@ -65,7 +68,6 @@ export const ConnectProvider = ({ daoChainId, daoId, }: ConnectProviderProps) => { - const { open, setDefaultChain } = useWeb3Modal(); const { address, isConnecting } = useAccount(); const { disconnect } = useDisconnect(); const { chain } = useNetwork(); @@ -93,13 +95,11 @@ export const ConnectProvider = ({ [chainId, networks] ); - const connectWallet = useCallback(async () => { - if (daoChainId && VIEM_CHAINS[daoChainId as ValidNetwork]) { - setDefaultChain(VIEM_CHAINS[daoChainId as ValidNetwork]); - } + const [internalOpen, setInternalOpen] = useState(false); - open(); - }, [open, setDefaultChain, daoChainId]); + const connectWallet = useCallback(async () => { + setInternalOpen(true); + }, []); const handleSwitchNetwork = async (_chainId: string | number) => { switchNetwork?.(Number(_chainId)); @@ -135,6 +135,19 @@ export const ConnectProvider = ({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [address, chainId]); + // Auto switch to daoChainId if provided and connected and mismatch + useEffect(() => { + if ( + daoChainId && + isConnected && + chain && + Number(daoChainId) !== chain.id && + switchNetwork + ) { + switchNetwork(Number(daoChainId)); + } + }, [daoChainId, isConnected, chain, switchNetwork]); + return ( {children} + {useInternal && ( + setInternalOpen(false)} + defaultChainId={daoChainId ? Number(daoChainId) : undefined} + /> + )} ); }; diff --git a/libs/connect-context/src/assets/icons/MetaMask-icon-fox.svg b/libs/connect-context/src/assets/icons/MetaMask-icon-fox.svg new file mode 100644 index 00000000..ee73e669 --- /dev/null +++ b/libs/connect-context/src/assets/icons/MetaMask-icon-fox.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + diff --git a/libs/connect-context/src/assets/icons/coinbase_wallet_appicon.svg b/libs/connect-context/src/assets/icons/coinbase_wallet_appicon.svg new file mode 100644 index 00000000..c47fdf94 --- /dev/null +++ b/libs/connect-context/src/assets/icons/coinbase_wallet_appicon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/libs/connect-context/src/assets/icons/index.d.ts b/libs/connect-context/src/assets/icons/index.d.ts new file mode 100644 index 00000000..a02564fe --- /dev/null +++ b/libs/connect-context/src/assets/icons/index.d.ts @@ -0,0 +1,11 @@ +// Module declarations for icon asset imports local to connect-context +// Ensures TypeScript understands imported SVG/PNG modules in this lib. +declare module '*.svg' { + const content: string; + export default content; +} + +declare module '*.png' { + const content: string; + export default content; +} diff --git a/libs/connect-context/src/assets/icons/walletconnect-icon.svg b/libs/connect-context/src/assets/icons/walletconnect-icon.svg new file mode 100644 index 00000000..d90457ad --- /dev/null +++ b/libs/connect-context/src/assets/icons/walletconnect-icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/libs/connect-context/src/components/InternalConnectModal.tsx b/libs/connect-context/src/components/InternalConnectModal.tsx new file mode 100644 index 00000000..199de2a8 --- /dev/null +++ b/libs/connect-context/src/components/InternalConnectModal.tsx @@ -0,0 +1,209 @@ +import { useEffect, useState } from 'react'; +import { + useAccount, + useConnect, + useDisconnect, + useSwitchNetwork, + useNetwork, +} from 'wagmi'; +import { Button } from '@daohaus/ui'; +import { connectorIcon } from './WalletIcons'; + +type Props = { + open: boolean; + onClose: () => void; + defaultChainId?: number; +}; + +export const InternalConnectModal = ({ + open, + onClose, + defaultChainId, +}: Props) => { + const { connectAsync, connectors, isLoading, pendingConnector, error } = + useConnect(); + const { disconnect } = useDisconnect(); + const { chain } = useNetwork(); + const { isConnected } = useAccount(); + const { switchNetwork } = useSwitchNetwork(); + const [switching, setSwitching] = useState(false); + // Last used connector id stored in localStorage. Must be declared before any conditional return to keep hook order stable. + const LAST_KEY = 'dh:lastConnector'; + const [lastUsed, setLastUsed] = useState(() => { + try { + return typeof window !== 'undefined' + ? window.localStorage.getItem(LAST_KEY) + : null; + } catch { + return null; + } + }); + + useEffect(() => { + if ( + open && + defaultChainId && + chain && + chain.id !== defaultChainId && + switchNetwork + ) { + setSwitching(true); + switchNetwork(defaultChainId); + setSwitching(false); + } + }, [open, defaultChainId, chain, switchNetwork]); + + if (!open) return null; + + // Prefer MetaMask: if MetaMask is available, hide the generic injected (Browser Wallet) entry. + // If MetaMask is NOT available, hide the dedicated metaMask connector (some providers misreport) and show generic injected. + const hasMetaMask = + connectors.some((c) => c.id === 'metaMask' && c.ready) || + (typeof (window as any)?.ethereum !== 'undefined' && + (window as any).ethereum?.isMetaMask); + + const filteredConnectors = connectors.filter((c) => { + // Hide generic injected when MetaMask present + if (hasMetaMask && c.id === 'injected') return false; + // If MetaMask not actually detected, hide the dedicated metaMask connector + if (!hasMetaMask && c.id === 'metaMask') return false; + // Hide Safe connector completely if it isn't ready (outside Safe iframe) + if (c.id === 'safe' && !c.ready) return false; + return true; + }); + + const markLastUsed = (id: string) => { + try { + window.localStorage.setItem(LAST_KEY, id); + setLastUsed(id); + } catch { + /* ignore storage issues */ + } + }; + + return ( +
+
+
+

Connect Wallet

+ +
+ {isConnected && ( +
+ +
+ )} +
+ {filteredConnectors.map((c) => { + const isPending = isLoading && pendingConnector?.id === c.id; + return ( + + ); + })} +
+ {error && ( +

+ {(error as Error).message} +

+ )} +
+
+ ); +}; + +const overlayStyles: React.CSSProperties = { + position: 'fixed', + inset: 0, + background: 'rgba(0,0,0,0.6)', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + zIndex: 9999, +}; + +const modalStyles: React.CSSProperties = { + width: 360, + maxWidth: '90%', + background: 'var(--surface-100, #1e1e1e)', + borderRadius: 12, + padding: 20, + boxShadow: '0 8px 32px rgba(0,0,0,0.4)', +}; + +const closeBtnStyles: React.CSSProperties = { + border: 'none', + background: 'transparent', + color: 'inherit', + fontSize: 24, + cursor: 'pointer', + lineHeight: 1, +}; + +export default InternalConnectModal; diff --git a/libs/connect-context/src/components/WalletIcons.tsx b/libs/connect-context/src/components/WalletIcons.tsx new file mode 100644 index 00000000..8155407d --- /dev/null +++ b/libs/connect-context/src/components/WalletIcons.tsx @@ -0,0 +1,169 @@ +import React from 'react'; +// Local copies of brand assets (moved here to avoid app->lib dependency cycles) +// They may resolve either to a ReactComponent (SVGR) or a URL string depending on tooling. +import metaMaskAsset from '../assets/icons/MetaMask-icon-fox.svg'; +import coinbaseAsset from '../assets/icons/coinbase_wallet_appicon.svg'; +import walletConnectAsset from '../assets/icons/walletconnect-icon.svg'; + +const renderImportedSvg = ( + mod: any, + size: number, + fallback: React.ReactNode, + alt: string +): React.ReactNode => { + if (!mod) return fallback; + const possible = mod.default ?? mod; // CommonJS vs ES interop + if (typeof possible === 'string') { + return ( + {alt} + ); + } + // Assume it's a React component + const Cmp = possible as React.ComponentType>; + return ; +}; + +export const IconMetaMask: React.FC<{ size?: number }> = ({ size = 20 }) => { + const Fallback = ( + + + + ); + const inner = renderImportedSvg(metaMaskAsset, size, Fallback, 'MetaMask'); + return {inner}; +}; + +export const IconCoinbaseWallet: React.FC<{ size?: number }> = ({ + size = 20, +}) => { + const Fallback = ( + + + + + + ); + const inner = renderImportedSvg( + coinbaseAsset, + size, + Fallback, + 'Coinbase Wallet' + ); + return {inner}; +}; + +export const IconWalletConnect: React.FC<{ size?: number }> = ({ + size = 20, +}) => { + const inner = renderImportedSvg( + walletConnectAsset, + size, + + + , + 'WalletConnect' + ); + return {inner}; +}; + +export const IconBrowserWallet: React.FC<{ size?: number }> = ({ + size = 20, +}) => { + const inner = ( + + + + + + ); + return {inner}; +}; + +// Wrapper adds consistent background and sizing for visibility on dark surfaces. +const IconWrapper: React.FC<{ brand: string; children: React.ReactNode }> = ({ + brand, + children, +}) => { + const brandColorMap: Record = { + metamask: '#1F1A17', + coinbase: '#0B3CFF', + walletconnect: '#122B46', + browser: 'var(--secondary-step3, #2d2d2d)', + }; + const borderColor = 'rgba(255,255,255,0.08)'; + return ( + + {children} + + ); +}; + +export const connectorIcon = (id: string): React.ReactNode => { + switch (id) { + case 'metaMask': + return ; + case 'coinbaseWallet': + return ; + case 'walletConnect': + return ; + case 'injected': + return ; + default: + return ; + } +}; diff --git a/libs/connect-context/src/components/Web3ModalBoundary.tsx b/libs/connect-context/src/components/Web3ModalBoundary.tsx new file mode 100644 index 00000000..252de601 --- /dev/null +++ b/libs/connect-context/src/components/Web3ModalBoundary.tsx @@ -0,0 +1,6 @@ +import React from 'react'; + +// No-op boundary now that Web3Modal is removed +export const Web3ModalBoundary = () => null; + +export default Web3ModalBoundary; diff --git a/libs/connect-context/src/utils/contextHelpers.ts b/libs/connect-context/src/utils/contextHelpers.ts index c1bafe69..11f17662 100644 --- a/libs/connect-context/src/utils/contextHelpers.ts +++ b/libs/connect-context/src/utils/contextHelpers.ts @@ -35,6 +35,12 @@ export const loadProfile = async ({ if (profile && shouldUpdate) { const displayName = profile.ens || truncateAddress(address); setProfile({ ...profile, displayName }); + } else if (shouldUpdate) { + setProfile({ + address, + ens: '', + displayName: truncateAddress(address), + }); } // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (web3Error: any) { @@ -46,8 +52,12 @@ export const loadProfile = async ({ name: 'Connection Error', message: errMsg, }); - console.error(web3Error); - setProfile({ displayName: '', address: '', ens: '' }); + // Silent profile load failure + setProfile({ + displayName: truncateAddress(address), + address, + ens: '', + }); lifeCycleFns?.onProfileError?.(web3Error); } finally { if (shouldUpdate) { diff --git a/libs/connect-context/src/utils/debug.ts b/libs/connect-context/src/utils/debug.ts new file mode 100644 index 00000000..b460b2c3 --- /dev/null +++ b/libs/connect-context/src/utils/debug.ts @@ -0,0 +1,83 @@ +/* Debug helpers for inspecting injected wallets before opening Web3Modal */ + +// Enable by setting NX_CONNECT_DEBUG=true in env (or toggling window.__CONNECT_DEBUG = true) +const isDebug = () => { + if (typeof window !== 'undefined' && (window as any).__CONNECT_DEBUG) + return true; + return process.env['NX_CONNECT_DEBUG'] === 'true'; +}; + +type ProviderLike = Record & { + isMetaMask?: boolean; + isCoinbaseWallet?: boolean; + isBraveWallet?: boolean; + isFrame?: boolean; + isTally?: boolean; + isTrust?: boolean; + isLedger?: boolean; + providers?: ProviderLike[]; +}; + +export const collectInjectedProviders = (): ProviderLike[] => { + if (typeof window === 'undefined') return []; + const eth = (window as any).ethereum as ProviderLike | undefined; + if (!eth) return []; + if (Array.isArray(eth.providers)) return eth.providers as ProviderLike[]; + return [eth]; +}; + +export const logInjectedWallets = () => { + if (!isDebug()) return; + try { + const providers = collectInjectedProviders(); + // Normalize & extract recognizable flags + const summarized = providers.map((p, idx) => ({ + index: idx, + flags: Object.keys(p) + .filter((k) => k.startsWith('is') && (p as any)[k] === true) + .join(','), + isMetaMask: !!p.isMetaMask, + isCoinbase: !!p.isCoinbaseWallet, + isBrave: !!p.isBraveWallet, + isFrame: !!p.isFrame, + isTally: !!p.isTally, + isTrust: !!p.isTrust, + isLedger: !!p.isLedger, + })); + // eslint-disable-next-line no-console + console.group('[ConnectDebug] Injected Wallet Providers'); + if (!summarized.length) { + // eslint-disable-next-line no-console + console.warn('[ConnectDebug] No window.ethereum providers detected'); + } else { + // eslint-disable-next-line no-console + console.table(summarized); + } + // eslint-disable-next-line no-console + console.groupEnd(); + } catch (err) { + // eslint-disable-next-line no-console + console.error('[ConnectDebug] Error logging injected wallets', err); + } +}; + +export const logChains = (chains: { id: number; name?: string }[]) => { + if (!isDebug()) return; + try { + // eslint-disable-next-line no-console + console.group('[ConnectDebug] Chains'); + // eslint-disable-next-line no-console + console.table( + chains.map((c) => ({ + id: c.id, + hex: '0x' + c.id.toString(16), + name: c.name, + })) + ); + // eslint-disable-next-line no-console + console.groupEnd(); + } catch (err) { + // eslint-disable-next-line no-console + console.error('[ConnectDebug] Error logging chains', err); + } +}; diff --git a/libs/moloch-v3-fields/src/fields/MultisendActions.tsx b/libs/moloch-v3-fields/src/fields/MultisendActions.tsx index 8055be58..84c9549f 100644 --- a/libs/moloch-v3-fields/src/fields/MultisendActions.tsx +++ b/libs/moloch-v3-fields/src/fields/MultisendActions.tsx @@ -414,7 +414,7 @@ const Action = ({ isJSON(contractAbi) ? (JSON.parse(contractAbi) as ABI) : undefined ); } - }, [contractAddress, contractAbi, fetchContractAbi]); // eslint-disable-line react-hooks/exhaustive-deps + }, [contractAddress, contractAbi, fetchContractAbi, selectedMethod]); useEffect(() => { if (abiMethod) { @@ -434,14 +434,14 @@ const Action = ({ } setSelectedMethod(undefined); setArgFieldsIds([]); - }, [abiMethod]); // eslint-disable-line react-hooks/exhaustive-deps + }, [abiMethod, resetField, actionId]); useEffect(() => { if (isEOA) { setValue(dataFieldId, '0x'); setValue(`tx.${actionId}.operation`, '0'); } - }, [isEOA]); // eslint-disable-line react-hooks/exhaustive-deps + }, [isEOA, dataFieldId, actionId, setValue]); useEffect(() => { if (customDataToggle && customData) { @@ -454,7 +454,7 @@ const Action = ({ if (noArgs) { encodeAction({ ...values.tx?.[actionId]?.fields }); } - }, [noArgs]); // eslint-disable-line react-hooks/exhaustive-deps + }, [noArgs, encodeAction, values, actionId]); useEffect(() => { if ( @@ -473,7 +473,7 @@ const Action = ({ values.tx?.[actionId]?.data ); } - }, [encodeAction, values]); // eslint-disable-line react-hooks/exhaustive-deps + }, [encodeAction, values, selectedMethod, actionId, argFieldsIds]); const txFields: FieldLegoBase[] = [ { diff --git a/libs/moloch-v3-fields/src/fields/TransferTokens.tsx b/libs/moloch-v3-fields/src/fields/TransferTokens.tsx index 80cadab6..949b4cb9 100644 --- a/libs/moloch-v3-fields/src/fields/TransferTokens.tsx +++ b/libs/moloch-v3-fields/src/fields/TransferTokens.tsx @@ -95,10 +95,9 @@ export const TransferTokens = (props: Buildable) => { }, [connectedMember, dao, selectedToken]); const setMax = useCallback(() => { - console.log('selectedToken', selectedToken); if (!selectedToken) return; setValue(props.id, tokenBalance.trim()); - }, [selectedToken]); + }, [selectedToken, setValue, props.id, tokenBalance]); const newRules: RegisterOptions = useMemo(() => { return { @@ -115,7 +114,7 @@ export const TransferTokens = (props: Buildable) => { }, ...props.rules, }; - }, [selectedToken, tokenBalance]); + }, [selectedToken, tokenBalance, props.rules]); return ( <> diff --git a/libs/moloch-v3-fields/src/fields/WalletConnectLink.tsx b/libs/moloch-v3-fields/src/fields/WalletConnectLink.tsx index 37e6f717..91a1e531 100644 --- a/libs/moloch-v3-fields/src/fields/WalletConnectLink.tsx +++ b/libs/moloch-v3-fields/src/fields/WalletConnectLink.tsx @@ -20,19 +20,16 @@ import { WrappedInput, } from '@daohaus/ui'; import { IClientMeta } from '@walletconnect/legacy-types'; -import { CoreTypes } from '@walletconnect/types'; +import useWalletConnectV2 from '../utils/walletConnectV2'; import { - WCParams, - WalletConnectVersion, getWalletConnectVersion, - useWalletConnect, + WalletConnectVersion, } from '../utils/walletConnect'; -import useWalletConnectV2 from '../utils/walletConnectV2'; import WalletConnectLogo from '../assets/wallet_connect.svg'; -type MetadataType = CoreTypes.Metadata | IClientMeta | undefined; +// MetadataType unused after v1 removal; legacy reference pruned. enum Status { DISCONNECTED, @@ -89,31 +86,19 @@ export const WalletConnectLink = ({ const { register, setValue, watch } = useFormContext(); const { daoChain } = useCurrentDao(); const { - wcConnector, - txPayload: txPayloadV1, - wcClientData: wcClientDataV1, - wcConnect: wcConnectV1, - wcDisconnect: wcDisconnectV1, - txError: txErrorV1, - } = useWalletConnect(); - const { - txPayload: txPayloadV2, - wcClientData: wcClientDataV2, + txPayload, + wcClientData, wcConnect: wcConnectV2, wcDisconnect: wcDisconnectV2, - error: txErrorV2, + error: txError, } = useWalletConnectV2(); - const wcClientData: MetadataType = wcClientDataV1 || wcClientDataV2; - const txPayload = txPayloadV1 || txPayloadV2; - const txError = txErrorV1 || txErrorV2; - const inputId = 'wcLink'; - const [wcVersion, setWCVersion] = useState(); const [connectionStatus, setConnectionStatus] = useState(Status.DISCONNECTED); const wcLink = watch(inputId); + const [legacyError, setLegacyError] = useState(null); useEffect(() => { register('txTo'); @@ -129,21 +114,22 @@ export const WalletConnectLink = ({ wcLink?.startsWith('wc:') && connectionStatus === Status.DISCONNECTED ) { - const params: WCParams = { + const version = getWalletConnectVersion(wcLink); + if (version === WalletConnectVersion.V1) { + setLegacyError( + 'WalletConnect v1 links are no longer supported. Please request a v2 connection URI from the dApp.' + ); + return; + } + setLegacyError(null); + setConnectionStatus(Status.CONNECTING); + wcConnectV2({ chainId: daoChain as ValidNetwork, safeAddress: dao.safeAddress, uri: wcLink, - }; - setConnectionStatus(Status.CONNECTING); - const version: WalletConnectVersion = getWalletConnectVersion(wcLink); - setWCVersion(version); - if (version === WalletConnectVersion.V1) { - wcConnectV1(params); - } else { - wcConnectV2(params); - } + }); } - }, [connectionStatus, dao, daoChain, wcConnectV1, wcConnectV2, wcLink]); + }, [connectionStatus, dao, daoChain, wcConnectV2, wcLink]); const clean = () => { [inputId, 'txTo', 'txData', 'txValue', 'txOperation'].forEach((formInput) => @@ -153,11 +139,7 @@ export const WalletConnectLink = ({ }; const onDisconnect = () => { - if (wcVersion === WalletConnectVersion.V1) { - if (wcConnector) wcDisconnectV1(wcConnector); - } else { - wcDisconnectV2(); - } + wcDisconnectV2(); clean(); }; @@ -183,7 +165,11 @@ export const WalletConnectLink = ({ id={inputId} disabled={connectionStatus === Status.CONNECTED} rules={rules} - error={txError ? { type: 'error', message: txError } : undefined} + error={ + txError || legacyError + ? { type: 'error', message: (txError || legacyError) as string } + : undefined + } /> { - connector.rejectRequest({ id, error: { message } }); -}; - -export type WCParams = { - chainId: ValidNetwork; - safeAddress: string; - session?: WalletConnect; - uri: string; -}; +// Removed hooks and types tied to v1 sessions. +// Lightweight shared types still required by the WalletConnect v2 implementation. export type Tx = { data: string; @@ -133,137 +120,8 @@ export type WCPayload = { params: Array; }; -export const useWalletConnect = (): { - wcConnector?: WalletConnect; - wcClientData?: IClientMeta; - txPayload?: WCPayload; - txError?: string; - wcConnect: (params: WCParams) => Promise; - wcDisconnect: (session: WalletConnect) => Promise; -} => { - const [wcClientData, setWcClientData] = useState(); - const [txPayload, setTxPayload] = useState(); - const [wcConnector, setConnector] = useState(); - const [localStorageSessionKey, setLocalStorageSessionKey] = useState(''); - const [txError, setTxError] = useState(''); - - const wcDisconnect = useCallback( - async (session: WalletConnect) => { - try { - await session.killSession(); - } catch (error) { - console.error('Error trying to close WC session: ', error); - } finally { - setConnector(undefined); - setWcClientData(undefined); - localStorage.removeItem(localStorageSessionKey); - setLocalStorageSessionKey(''); - setTxError(''); - } - }, - [localStorageSessionKey] - ); - - const wcConnect = useCallback( - async ({ chainId, safeAddress, session, uri }: WCParams) => { - const connector = new WalletConnect({ - uri, - session, - storageId: `session_${safeAddress}`, - }); - setConnector(connector); - setWcClientData(connector.peerMeta || undefined); - setLocalStorageSessionKey(`session_${safeAddress}`); - - connector.on('session_request', (error, payload) => { - if (error) { - setTxError(error.message); - throw error; - } - - connector.approveSession({ - accounts: [safeAddress], - chainId: Number(chainId), - }); - - setWcClientData(payload.params[0].peerMeta); - }); - - connector.on('call_request', async (error, payload) => { - setTxError(''); - try { - if (error) { - setTxError(error.message); - throw error; - } - switch (payload.method) { - case 'eth_sendTransaction': { - setTxPayload(payload); - break; - } - case 'personal_sign': { - const [message] = payload.params; - if (message.startsWith('0x')) { - const tx = encodeSafeSignMessage(chainId, message); - setTxPayload({ - ...payload, - params: [tx], - }); - } else { - const errorMsg = 'Tx personal_sign has the wrong format'; - setTxError(errorMsg); - rejectWithMessage(connector, payload.id, errorMsg); - } - break; - } - case 'eth_signTypedData': - case 'eth_signTypedData_v4': { - const [, typedDataString] = payload.params; - const typedData = JSON.parse(typedDataString); - if (isObjectEIP712TypedData(typedData)) { - const tx = encodeSafeSignMessage(chainId, typedData); - setTxPayload({ - ...payload, - params: [tx], - }); - } else { - const errorMsg = 'Tx eth_signTypedData has the wrong format'; - setTxError(errorMsg); - rejectWithMessage(connector, payload.id, errorMsg); - } - break; - } - default: { - const errorMsg = 'Tx type not supported'; - setTxError(errorMsg); - rejectWithMessage(connector, payload.id, errorMsg); - break; - } - } - } catch (exception) { - const errorMsg = (exception as Error).message; - setTxError(errorMsg); - rejectWithMessage(connector, payload.id, errorMsg); - } - }); - - connector.on('disconnect', (error) => { - if (error) { - throw error; - } - setTxPayload(undefined); - if (wcConnector) wcDisconnect(wcConnector); - }); - }, - [wcConnector, wcDisconnect] - ); - - return { - wcConnector, - wcClientData, - txPayload, - txError, - wcConnect, - wcDisconnect, - }; +export type WCParams = { + chainId: ValidNetwork; + safeAddress: string; + uri: string; }; diff --git a/libs/moloch-v3-fields/src/utils/walletConnectV2.tsx b/libs/moloch-v3-fields/src/utils/walletConnectV2.tsx index f201e6c1..3498e07a 100644 --- a/libs/moloch-v3-fields/src/utils/walletConnectV2.tsx +++ b/libs/moloch-v3-fields/src/utils/walletConnectV2.tsx @@ -1,9 +1,7 @@ import { useState, useCallback, useEffect } from 'react'; import { ValidNetwork } from '@daohaus/keychain-utils'; -import { Core } from '@walletconnect/core'; +// Dynamic import of walletconnect v2 modules to avoid type duplication mismatches during build. import { SignClientTypes, SessionTypes } from '@walletconnect/types'; -import Web3WalletType, { Web3Wallet } from '@walletconnect/web3wallet'; - import { WCParams, WCPayload, @@ -11,11 +9,62 @@ import { isObjectEIP712TypedData, } from './walletConnect'; -if (!process.env['NX_WALLET_CONNECT_ID']) { - throw new Error('You need to provide NX_WALLET_CONNECT_ID env variable'); -} +// Minimal runtime type surface for the Web3Wallet we interact with. Keeps us off the fragile +// upstream internal types while satisfying lint (no explicit any) and providing autocomplete. +type SessionRequestEvent = { + topic: string; + id: number; + params: { + request: { method: string; params: any[] }; // params elements are method-specific + chainId: string; + }; +}; +type SessionProposal = { + id: number; + params: { + requiredNamespaces: Record< + string, + { methods: string[]; chains?: string[]; events?: string[] } + >; + }; +}; +type Web3WalletType = { + on( + event: 'session_request', + listener: (e: SessionRequestEvent) => void + ): void; + on(event: 'session_proposal', listener: (p: SessionProposal) => void): void; + on(event: 'session_delete', listener: () => void): void; + approveSession(args: { + id: number; + namespaces: Record< + string, + { + accounts: string[]; + chains: string[]; + methods: string[]; + events: string[]; + } + >; + }): Promise; + disconnectSession(args: { + topic: string; + reason: { code: number; message: string }; + }): Promise; + respondSessionRequest(args: { + topic: string; + response: unknown; + }): Promise; + rejectSession(args: { + id: number; + reason: { code: number; message: string }; + }): Promise; + getActiveSessions(): Record; + core: { pairing: { pair(args: { uri: string }): Promise } }; +}; const WALLETCONNECT_V2_PROJECT_ID = process.env['NX_WALLET_CONNECT_ID']; +const WC_V2_DISABLED = !WALLETCONNECT_V2_PROJECT_ID; // Silent disable when unset const WALLET_METADATA = { name: 'DAOHaus Admin', @@ -95,32 +144,52 @@ const useWalletConnectV2 = (): useWalletConnectType => { const [error, setError] = useState(); useEffect(() => { - const initializeWalletConnectV2Client = async () => { - const core = new Core({ - projectId: WALLETCONNECT_V2_PROJECT_ID, - // logger: 'debug', // disabled on production - }); - - const web3wallet = await Web3Wallet.init({ - core, - metadata: WALLET_METADATA, - }); - - setWeb3wallet(web3wallet); - }; - - try { - initializeWalletConnectV2Client(); - } catch (error) { - console.log('Error on walletconnect version 2 initialization: ', error); + if (WC_V2_DISABLED) { setIsWallectConnectInitialized(true); + return; } + const initializeWalletConnectV2Client = async () => { + try { + const [{ Core }, { Web3Wallet }] = await Promise.all([ + import('@walletconnect/core'), + import('@walletconnect/web3wallet'), + ]); + // NOTE: We lazy-load Core + Web3Wallet because Nx + multiple transitive packages were + // pulling distinct copies of @walletconnect/types which caused a structural type mismatch + // (Core not assignable to ICore) at build time. Dynamic import ensures a single evaluated + // copy and we cast to any to decouple from fragile internal type surfaces. If upstream + // versions are unified later, this can revert to static imports without the cast. + const core = new Core({ + projectId: WALLETCONNECT_V2_PROJECT_ID as string, + }); + const web3walletInstance = await Web3Wallet.init({ + core: core as any, + metadata: WALLET_METADATA, + }); + // minimal runtime guard: ensure expected event api exists + if ( + web3walletInstance && + typeof web3walletInstance.on === 'function' && + typeof web3walletInstance.core === 'object' + ) { + setWeb3wallet(web3walletInstance as unknown as Web3WalletType); + } else { + console.warn('Unexpected Web3Wallet instance shape'); + setIsWallectConnectInitialized(true); + return; + } + } catch (error) { + console.log('Error on walletconnect version 2 initialization: ', error); + setIsWallectConnectInitialized(true); + } + }; + initializeWalletConnectV2Client(); }, []); useEffect(() => { // session_request needs to be a separate Effect because a valid wcSession should be present if (isWallectConnectInitialized && web3wallet && wcSession) { - web3wallet.on('session_request', async (event) => { + web3wallet.on('session_request', async (event: SessionRequestEvent) => { const { topic, id } = event; const { request, chainId: transactionChainId } = event.params; const { method, params } = request; @@ -260,6 +329,7 @@ const useWalletConnectV2 = (): useWalletConnectType => { }, [chainId, wcSession, isWallectConnectInitialized, web3wallet]); useEffect(() => { + if (WC_V2_DISABLED) return; // no restoration when disabled if (!isWallectConnectInitialized && web3wallet && chainId && safeAddress) { const activeSessions = web3wallet.getActiveSessions(); const compatibleSession = Object.keys(activeSessions) @@ -280,11 +350,15 @@ const useWalletConnectV2 = (): useWalletConnectType => { const wcConnect = useCallback( async ({ chainId, safeAddress, uri }: WCParams) => { + if (WC_V2_DISABLED) { + // silently ignore connect attempts when disabled + return; + } if (web3wallet) { setChainId(Number(chainId)); setSafeAddress(safeAddress); // events - web3wallet.on('session_proposal', async (proposal) => { + web3wallet.on('session_proposal', async (proposal: SessionProposal) => { const { id, params } = proposal; const { requiredNamespaces } = params; @@ -341,6 +415,7 @@ const useWalletConnectV2 = (): useWalletConnectType => { ); const wcDisconnect = useCallback(async () => { + if (WC_V2_DISABLED) return; if (wcSession && web3wallet) { await web3wallet.disconnectSession({ topic: wcSession.topic, @@ -356,6 +431,17 @@ const useWalletConnectV2 = (): useWalletConnectType => { const wcClientData = wcSession?.peer.metadata; + if (WC_V2_DISABLED) { + return { + wcConnect: async () => undefined, + wcClientData: undefined, + wcDisconnect: async () => undefined, + txPayload: undefined, + isWallectConnectInitialized: true, + error: undefined, + }; + } + return { wcConnect, wcClientData, diff --git a/libs/moloch-v3-macro-ui/src/components/MemberProfileCard/MemberTokens.tsx b/libs/moloch-v3-macro-ui/src/components/MemberProfileCard/MemberTokens.tsx index b4188419..3a4a17bd 100644 --- a/libs/moloch-v3-macro-ui/src/components/MemberProfileCard/MemberTokens.tsx +++ b/libs/moloch-v3-macro-ui/src/components/MemberProfileCard/MemberTokens.tsx @@ -33,37 +33,35 @@ export const MemberTokens = ({ daoChain, dao, member }: MemberTokensProps) => { const treasury: MolochV3Dao['vaults'][number] | undefined = useMemo(() => { if (dao) { - return ( - dao.vaults.find((v: DaoSafe) => v.safeAddress === dao.safeAddress) || - undefined - ); + const vaults = dao.vaults || []; + return vaults.find((v: DaoSafe) => v.safeAddress === dao.safeAddress); } return undefined; }, [dao]); const tableData: TokenTableType[] | null = useMemo(() => { if (dao && member && treasury) { - return treasury.tokenBalances - .filter((bal) => Number(bal.balance)) - .map((bal) => { - return { - token: { - address: bal.tokenAddress || NETWORK_TOKEN_ETH_ADDRESS, - name: charLimit(bal.token?.name, 21), - }, - balance: formatValueTo({ - value: memberTokenBalanceShare( - bal.balance, - dao.totalShares || 0, - dao.totalLoot || 0, - member.shares || 0, - member.loot || 0, - bal.token?.decimals || 18 - ), - format: 'number', - }), - }; - }); + const balances = treasury.tokenBalances || []; + if (!Array.isArray(balances) || !balances.length) return []; + return balances + .filter((bal) => bal && Number(bal.balance)) + .map((bal) => ({ + token: { + address: bal.tokenAddress || NETWORK_TOKEN_ETH_ADDRESS, + name: charLimit(bal.token?.name, 21), + }, + balance: formatValueTo({ + value: memberTokenBalanceShare( + bal.balance, + dao.totalShares || 0, + dao.totalLoot || 0, + member.shares || 0, + member.loot || 0, + bal.token?.decimals || 18 + ), + format: 'number', + }), + })); } else { return null; } diff --git a/libs/profile-data/src/profile.ts b/libs/profile-data/src/profile.ts index aa831a6a..302f7e5c 100644 --- a/libs/profile-data/src/profile.ts +++ b/libs/profile-data/src/profile.ts @@ -13,8 +13,14 @@ export const getProfileForAddress = async ({ address: string; rpcUri?: string; }): Promise => { - const reverseEnsRecord = - rpcUri && (await getENSReverseResolver({ address, rpcUri })); + // Allow opt-out (helps when public RPCs lack ENS support or rate limit) + if (process.env['NX_DISABLE_ENS'] === 'true') { + return transformProfile({ address }); + } + + const reverseEnsRecord = rpcUri + ? await getENSReverseResolver({ address, rpcUri }) + : undefined; return transformProfile({ address, @@ -29,17 +35,20 @@ const getENSReverseResolver = async ({ address: string; rpcUri: string; }) => { - try { - const client = createPublicClient({ - chain: mainnet, - transport: http(rpcUri), - }); - - const ensName = await client.getEnsName({ - address: address as `0x${string}`, - }); - - if (ensName) { + const tried: string[] = []; + const candidates = buildEnsRpcCandidateList(rpcUri); + for (const candidate of candidates) { + if (!candidate) continue; + tried.push(candidate); + try { + const client = createPublicClient({ + chain: mainnet, + transport: http(candidate), + }); + const ensName = await client.getEnsName({ + address: address as `0x${string}`, + }); + if (!ensName) return; // No reverse record, stop. const ensText = await client.getEnsAvatar({ name: normalize(ensName), }); @@ -49,8 +58,41 @@ const getENSReverseResolver = async ({ avatar: ensText, }, }; + } catch (err: any) { + // Detect internal or method unsupported style errors & continue to next candidate + const msg = err?.message || ''; + const isRetryable = + /internal error/i.test(msg) || + /rate limit/i.test(msg) || + /timeout/i.test(msg) || + /429/.test(msg) || + /not implemented/i.test(msg); + if (!isRetryable) { + // Non-retryable -> break, but keep logging minimal + // Non-retryable; silent. + break; + } + // Retryable; proceed to next. + continue; // Try next candidate } - } catch (error) { - console.error('Unable to fetch ENS reverse record', error); } + // All candidates failed – silent. +}; + +// Build ordered list of RPC candidates for ENS resolution. +// Priority: provided rpcUri -> NX_ENS_FALLBACK_RPC -> Alchemy (if key) -> Infura (if key) -> public Cloudflare +const buildEnsRpcCandidateList = (primary?: string): string[] => { + const list: (string | undefined)[] = []; + const fallbackEnv = process.env['NX_ENS_FALLBACK_RPC']; + const alchemy = process.env['NX_ETHEREUM_ALCHEMY_KEY'] + ? `https://eth-mainnet.g.alchemy.com/v2/${process.env['NX_ETHEREUM_ALCHEMY_KEY']}` + : undefined; + const infura = process.env['NX_INFURA_API_KEY'] + ? `https://mainnet.infura.io/v3/${process.env['NX_INFURA_API_KEY']}` + : undefined; + const cloudflare = 'https://cloudflare-eth.com'; + [primary, fallbackEnv, alchemy, infura, cloudflare].forEach((u) => { + if (u && !list.includes(u)) list.push(u); + }); + return list as string[]; }; diff --git a/libs/tx-builder/src/utils/deepDecoding.ts b/libs/tx-builder/src/utils/deepDecoding.ts index ec0fc34b..805afa97 100644 --- a/libs/tx-builder/src/utils/deepDecoding.ts +++ b/libs/tx-builder/src/utils/deepDecoding.ts @@ -44,8 +44,14 @@ class EtherscanABILoader implements loaders.ABILoader { rpcs: this.rpcs, explorerKeys: this.explorerKeys, }); + // Instead of throwing, return empty array so MultiABILoader can try other loaders (e.g. Sourcify) + // Downstream we'll gracefully handle empty ABI and mark call as unknown. if (!abi || !abi?.length) { - throw new Error('No ABI found for this contract'); + if (process.env['NX_CONNECT_DEBUG'] === 'true') { + // eslint-disable-next-line no-console + console.warn('[DeepDecode] No ABI found via explorer for', address); + } + return []; } return abi; } @@ -435,12 +441,16 @@ const decodeAction = async ( }); if (!abi || !abi?.length) { - return createActionError( - data, - 'Could not decode action: abi not found', - to, - decodeValue(value) - ); + // Unknown contract: return minimal decoded info rather than hard error + const selector = data && data.length >= 10 ? data.slice(0, 10) : '0x'; + return { + to: to, + operation: operation || OperationType.Call, + name: `unknown(${selector})`, + value: decodeValue(value), + params: [], + decodedActions: [], + }; } const decodedMethod = decodeMethod({ diff --git a/package.json b/package.json index a361b7e3..c6ffff7f 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "0xsequence": "^2.2.14", "@daohaus/baal-contracts": "^1.2.17", "@gnosis.pm/safe-apps-react-sdk": "^4.6.2", - "@gnosis.pm/safe-apps-web3modal": "^17.0.2", "@gnosis.pm/safe-react-components": "^1.2.0", "@graphql-typed-document-node/core": "^3.1.1", "@hookform/devtools": "^4.2.3", @@ -46,10 +45,10 @@ "@types/react-datepicker": "^4.19.1", "@types/react-table": "^7.7.12", "@wagmi/connectors": "^2.6.6", - "@walletconnect/client": "^1.8.0", - "@walletconnect/web3wallet": "^1.9.0", - "@web3modal/ethereum": "^2.7.1", - "@web3modal/react": "^2.7.1", + "@walletconnect/core": "^2.11.3", + "@walletconnect/types": "^2.11.3", + "@walletconnect/web3wallet": "^1.10.3", + "caniuse-lite": "^1.0.30001741", "classnames": "^2.3.2", "core-js": "^3.6.5", "cross-fetch": "^3.1.5", @@ -121,7 +120,6 @@ "@types/uuid": "^8.3.4", "@typescript-eslint/eslint-plugin": "^5.36.1", "@typescript-eslint/parser": "^5.36.1", - "@walletconnect/types": "^2.9.1", "babel-jest": "28.1.1", "babel-loader": "8.1.0", "babel-plugin-styled-components": "1.10.7", @@ -147,5 +145,6 @@ "typescript": "~5.0.4", "url-loader": "^3.0.0", "wrangler": "^2.1.15" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/yarn.lock b/yarn.lock index 1209b790..405a4f9d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -208,6 +208,11 @@ resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.9.2.tgz#60111a5d9db45b2e5cbb6231b0bb8d97e8659316" integrity sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg== +"@adraffy/ens-normalize@^1.10.1": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz#42cc67c5baa407ac25059fcd7d405cc5ecdb0c33" + integrity sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg== + "@ampproject/remapping@^2.2.0": version "2.2.1" resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" @@ -2281,14 +2286,6 @@ resolved "https://registry.yarnpkg.com/@gnosis.pm/mock-contract/-/mock-contract-4.0.0.tgz#eaf500fddcab81b5f6c22280a7b22ff891dd6f87" integrity sha512-SkRq2KwPx6vo0LAjSc8JhgQstrQFXRyn2yqquIfub7r2WHi5nUbF8beeSSXsd36hvBcQxQfmOIYNYRpj9JOhrQ== -"@gnosis.pm/safe-apps-provider@0.15.1": - version "0.15.1" - resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-provider/-/safe-apps-provider-0.15.1.tgz#1d070a7de87311190d09bb8e467137428c475d63" - integrity sha512-jVU0jpXf30HFdLHSHkmscIm04BYSwfoddjcHI4uPolP+u4F+tHRgfah1xo4XNRSCDqs4GTq38d7YAipGTj0CLA== - dependencies: - "@gnosis.pm/safe-apps-sdk" "7.8.0" - events "^3.3.0" - "@gnosis.pm/safe-apps-react-sdk@^4.6.2": version "4.6.2" resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-react-sdk/-/safe-apps-react-sdk-4.6.2.tgz#205908311c685b378338f82da261f06f10336532" @@ -2304,13 +2301,6 @@ "@gnosis.pm/safe-react-gateway-sdk" "^3.1.3" ethers "^5.6.8" -"@gnosis.pm/safe-apps-web3modal@^17.0.2": - version "17.0.4" - resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-apps-web3modal/-/safe-apps-web3modal-17.0.4.tgz#eae48c74d8729058d3d81db80eb695061a8c7edf" - integrity sha512-jJ0q7NgB0eBFa5LY7OepGY3sFbB1xZPY8FPZBgY7Zh2iGJCAuJB0YXsBu0R2sBMvXm08TFJKQM9lnYa+MDVZ+w== - dependencies: - "@gnosis.pm/safe-apps-provider" "0.15.1" - "@gnosis.pm/safe-contracts@1.3.0": version "1.3.0" resolved "https://registry.yarnpkg.com/@gnosis.pm/safe-contracts/-/safe-contracts-1.3.0.tgz#316741a7690d8751a1f701538cfc9ec80866eedc" @@ -3548,6 +3538,11 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" +"@msgpack/msgpack@3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@msgpack/msgpack/-/msgpack-3.1.2.tgz#fdd25cc2202297519798bbaf4689152ad9609e19" + integrity sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ== + "@mui/x-data-grid@^4.0.2": version "4.0.2" resolved "https://registry.yarnpkg.com/@mui/x-data-grid/-/x-data-grid-4.0.2.tgz#5345e74630dff2efcb9a1efa04c6c8facfd8c80a" @@ -3563,6 +3558,11 @@ resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== +"@noble/ciphers@1.3.0", "@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== + "@noble/curves@1.1.0", "@noble/curves@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" @@ -3570,6 +3570,34 @@ dependencies: "@noble/hashes" "1.3.1" +"@noble/curves@1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.0.tgz#fe035a23959e6aeadf695851b51a87465b5ba8f7" + integrity sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ== + dependencies: + "@noble/hashes" "1.7.0" + +"@noble/curves@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.1.tgz#9654a0bc6c13420ae252ddcf975eaf0f58f0a35c" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.2.tgz#73388356ce733922396214a933ff7c95afcef911" + integrity sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@^1.6.0", "@noble/curves@~1.9.0": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + "@noble/curves@~1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.0.0.tgz#e40be8c7daf088aaf291887cbc73f43464a92932" @@ -3592,6 +3620,16 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== +"@noble/hashes@1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.0.tgz#5d9e33af2c7d04fee35de1519b80c958b2e35e39" + integrity sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w== + +"@noble/hashes@1.8.0", "@noble/hashes@~1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + "@noble/hashes@^1.5.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" @@ -4599,6 +4637,11 @@ dependencies: cross-fetch "^3.1.5" +"@scure/base@1.2.6", "@scure/base@~1.2.5": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== + "@scure/base@~1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" @@ -4613,6 +4656,15 @@ "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" +"@scure/bip32@1.7.0", "@scure/bip32@^1.5.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.7.0.tgz#b8683bab172369f988f1589640e53c4606984219" + integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== + dependencies: + "@noble/curves" "~1.9.0" + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + "@scure/bip39@1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.0.tgz#a207e2ef96de354de7d0002292ba1503538fc77b" @@ -4621,6 +4673,14 @@ "@noble/hashes" "~1.3.0" "@scure/base" "~1.1.0" +"@scure/bip39@1.6.0", "@scure/bip39@^1.4.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.6.0.tgz#475970ace440d7be87a6086cbee77cb8f1a684f9" + integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== + dependencies: + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + "@shazow/whatsabi@^0.8.5": version "0.8.5" resolved "https://registry.yarnpkg.com/@shazow/whatsabi/-/whatsabi-0.8.5.tgz#d2cf49a04f4870a1b47b509b2ffc8fdd0ece7388" @@ -4769,7 +4829,7 @@ "@stablelib/constant-time" "^1.0.1" "@stablelib/wipe" "^1.0.1" -"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": +"@stablelib/random@1.0.2", "@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== @@ -4800,7 +4860,7 @@ resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== -"@stablelib/x25519@^1.0.3": +"@stablelib/x25519@1.0.3", "@stablelib/x25519@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== @@ -6712,69 +6772,49 @@ eventemitter3 "^4.0.7" zustand "^4.3.1" -"@walletconnect/auth-client@2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@walletconnect/auth-client/-/auth-client-2.1.1.tgz#45548fc5d5e5ac155503d1b42ac97a96a2cba98d" - integrity sha512-rFGBG3pLkmwCc5DcL9JRCsvOAmPjUcHGxm+KlX31yXNOT1QACT8Gyd8ODSOmtvz5CXZS5dPWBuvO03LUSRbPkw== +"@walletconnect/auth-client@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@walletconnect/auth-client/-/auth-client-2.1.2.tgz#cee304fb0cdca76f6bf4aafac96ef9301862a7e8" + integrity sha512-ubJLn+vGb8sTdBFX6xAh4kjR5idrtS3RBngQWaJJJpEPBQmxMb8pM2q0FIRs8Is4K6jKy+uEhusMV+7ZBmTzjw== dependencies: "@ethersproject/hash" "^5.7.0" "@ethersproject/transactions" "^5.7.0" "@stablelib/random" "^1.0.2" "@stablelib/sha256" "^1.0.1" - "@walletconnect/core" "^2.9.0" + "@walletconnect/core" "^2.10.1" "@walletconnect/events" "^1.0.1" "@walletconnect/heartbeat" "^1.2.1" "@walletconnect/jsonrpc-utils" "^1.0.8" "@walletconnect/logger" "^2.0.1" "@walletconnect/time" "^1.0.2" - "@walletconnect/utils" "^2.9.0" + "@walletconnect/utils" "^2.10.1" events "^3.3.0" isomorphic-unfetch "^3.1.0" -"@walletconnect/browser-utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/browser-utils/-/browser-utils-1.8.0.tgz#33c10e777aa6be86c713095b5206d63d32df0951" - integrity sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A== +"@walletconnect/core@2.17.1": + version "2.17.1" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.17.1.tgz#8ee51d630068e4450014fe62a76af895ab1d349d" + integrity sha512-SMgJR5hEyEE/tENIuvlEb4aB9tmMXPzQ38Y61VgYBmwAFEhOHtpt8EDfnfRWqEhMyXuBXG4K70Yh8c67Yry+Xw== dependencies: - "@walletconnect/safe-json" "1.0.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/window-getters" "1.0.0" - "@walletconnect/window-metadata" "1.0.0" - detect-browser "5.2.0" - -"@walletconnect/client@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.8.0.tgz#6f46b5499c7c861c651ff1ebe5da5b66225ca696" - integrity sha512-svyBQ14NHx6Cs2j4TpkQaBI/2AF4+LXz64FojTjMtV4VMMhl81jSO1vNeg+yYhQzvjcGH/GpSwixjyCW0xFBOQ== - dependencies: - "@walletconnect/core" "^1.8.0" - "@walletconnect/iso-crypto" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - -"@walletconnect/core@2.10.0": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.10.0.tgz#b659de4dfb374becd938964abd4f2150d410e617" - integrity sha512-Z8pdorfIMueuiBXLdnf7yloiO9JIiobuxN3j0OTal+MYc4q5/2O7d+jdD1DAXbLi1taJx3x60UXT/FPVkjIqIQ== - dependencies: - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-provider" "1.0.13" - "@walletconnect/jsonrpc-types" "1.0.3" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/jsonrpc-ws-connection" "1.0.13" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.10.0" - "@walletconnect/utils" "2.10.0" - events "^3.3.0" + "@walletconnect/jsonrpc-ws-connection" "1.0.14" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.17.1" + "@walletconnect/utils" "2.17.1" + "@walletconnect/window-getters" "1.0.1" + events "3.3.0" lodash.isequal "4.5.0" - uint8arrays "^3.1.0" + uint8arrays "3.1.0" -"@walletconnect/core@2.9.2", "@walletconnect/core@^2.9.0": +"@walletconnect/core@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.9.2.tgz#c46734ca63771b28fd77606fd521930b7ecfc5e1" integrity sha512-VARMPAx8sIgodeyngDHbealP3B621PQqjqKsByFUTOep8ZI1/R/20zU+cmq6j9RCrL+kLKZcrZqeVzs8Z7OlqQ== @@ -6796,16 +6836,30 @@ lodash.isequal "4.5.0" uint8arrays "^3.1.0" -"@walletconnect/core@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.8.0.tgz#6b2748b90c999d9d6a70e52e26a8d5e8bfeaa81e" - integrity sha512-aFTHvEEbXcZ8XdWBw6rpQDte41Rxwnuk3SgTD8/iKGSRTni50gI9S3YEzMj05jozSiOBxQci4pJDMVhIUMtarw== +"@walletconnect/core@^2.10.1", "@walletconnect/core@^2.11.3": + version "2.21.8" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.21.8.tgz#57929f64d54a7273265c58e4ce1fc7d59dbdc81f" + integrity sha512-MD1SY7KAeHWvufiBK8C1MwP9/pxxI7SnKi/rHYfjco2Xvke+M+Bbm2OzvuSN7dYZvwLTkZCiJmBccTNVPCpSUQ== dependencies: - "@walletconnect/socket-transport" "^1.8.0" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - -"@walletconnect/crypto@^1.0.2", "@walletconnect/crypto@^1.0.3": + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-provider" "1.0.14" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/jsonrpc-ws-connection" "1.0.16" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.1.0" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.21.8" + "@walletconnect/utils" "2.21.8" + "@walletconnect/window-getters" "1.0.1" + es-toolkit "1.39.3" + events "3.3.0" + uint8arrays "3.1.1" + +"@walletconnect/crypto@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4" integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g== @@ -6817,7 +6871,7 @@ hash.js "^1.1.7" tslib "1.14.1" -"@walletconnect/encoding@^1.0.1", "@walletconnect/encoding@^1.0.2": +"@walletconnect/encoding@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.2.tgz#cb3942ad038d6a6bf01158f66773062dd25724da" integrity sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag== @@ -6848,7 +6902,7 @@ "@walletconnect/utils" "2.9.2" events "^3.3.0" -"@walletconnect/events@^1.0.1": +"@walletconnect/events@1.0.1", "@walletconnect/events@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== @@ -6865,14 +6919,14 @@ "@walletconnect/time" "^1.0.2" tslib "1.14.1" -"@walletconnect/iso-crypto@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.8.0.tgz#44ddf337c4f02837c062dbe33fa7ab36789df451" - integrity sha512-pWy19KCyitpfXb70hA73r9FcvklS+FvO9QUIttp3c2mfW8frxgYeRXfxLRCIQTkaYueRKvdqPjbyhPLam508XQ== +"@walletconnect/heartbeat@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz#e8dc5179db7769950c6f9cf59b23516d9b95227d" + integrity sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw== dependencies: - "@walletconnect/crypto" "^1.0.2" - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" + "@walletconnect/events" "^1.0.1" + "@walletconnect/time" "^1.0.2" + events "^3.3.0" "@walletconnect/jsonrpc-http-connection@^1.0.4", "@walletconnect/jsonrpc-http-connection@^1.0.7": version "1.0.7" @@ -6893,6 +6947,15 @@ "@walletconnect/safe-json" "^1.0.2" tslib "1.14.1" +"@walletconnect/jsonrpc-provider@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz#696f3e3b6d728b361f2e8b853cfc6afbdf2e4e3e" + integrity sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.8" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + "@walletconnect/jsonrpc-types@1.0.3", "@walletconnect/jsonrpc-types@^1.0.2", "@walletconnect/jsonrpc-types@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.3.tgz#65e3b77046f1a7fa8347ae02bc1b841abe6f290c" @@ -6901,7 +6964,15 @@ keyvaluestorage-interface "^1.0.0" tslib "1.14.1" -"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.3", "@walletconnect/jsonrpc-utils@^1.0.4", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": +"@walletconnect/jsonrpc-types@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz#ce1a667d79eadf2a2d9d002c152ceb68739c230c" + integrity sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ== + dependencies: + events "^3.3.0" + keyvaluestorage-interface "^1.0.0" + +"@walletconnect/jsonrpc-utils@1.0.8", "@walletconnect/jsonrpc-utils@^1.0.4", "@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7", "@walletconnect/jsonrpc-utils@^1.0.8": version "1.0.8" resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.8.tgz#82d0cc6a5d6ff0ecc277cb35f71402c91ad48d72" integrity sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw== @@ -6921,6 +6992,35 @@ tslib "1.14.1" ws "^7.5.1" +"@walletconnect/jsonrpc-ws-connection@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.14.tgz#eec700e74766c7887de2bd76c91a0206628732aa" + integrity sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + ws "^7.5.1" + +"@walletconnect/jsonrpc-ws-connection@1.0.16": + version "1.0.16" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.16.tgz#666bb13fbf32a2d4f7912d5b4d0bdef26a1d057b" + integrity sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.6" + "@walletconnect/safe-json" "^1.0.2" + events "^3.3.0" + ws "^7.5.1" + +"@walletconnect/keyvaluestorage@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.1.1.tgz#dd2caddabfbaf80f6b8993a0704d8b83115a1842" + integrity sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA== + dependencies: + "@walletconnect/safe-json" "^1.0.1" + idb-keyval "^6.2.1" + unstorage "^1.9.0" + "@walletconnect/keyvaluestorage@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" @@ -6989,7 +7089,15 @@ detect-browser "^5.3.0" query-string "^6.13.5" -"@walletconnect/logger@2.0.1", "@walletconnect/logger@^2.0.1": +"@walletconnect/logger@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.1.2.tgz#813c9af61b96323a99f16c10089bfeb525e2a272" + integrity sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw== + dependencies: + "@walletconnect/safe-json" "^1.0.2" + pino "7.11.0" + +"@walletconnect/logger@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== @@ -7032,6 +7140,13 @@ randombytes "^2.1.0" tslib "1.14.1" +"@walletconnect/relay-api@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.11.tgz#80ab7ef2e83c6c173be1a59756f95e515fb63224" + integrity sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.2" + "@walletconnect/relay-api@^1.0.9": version "1.0.9" resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" @@ -7040,7 +7155,7 @@ "@walletconnect/jsonrpc-types" "^1.0.2" tslib "1.14.1" -"@walletconnect/relay-auth@^1.0.4": +"@walletconnect/relay-auth@1.0.4", "@walletconnect/relay-auth@^1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== @@ -7052,32 +7167,38 @@ tslib "1.14.1" uint8arrays "^3.0.0" -"@walletconnect/safe-json@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" - integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== +"@walletconnect/relay-auth@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.1.0.tgz#c3c5f54abd44a5138ea7d4fe77970597ba66c077" + integrity sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ== + dependencies: + "@noble/curves" "1.8.0" + "@noble/hashes" "1.7.0" + "@walletconnect/safe-json" "^1.0.1" + "@walletconnect/time" "^1.0.2" + uint8arrays "^3.0.0" -"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": +"@walletconnect/safe-json@1.0.2", "@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== dependencies: tslib "1.14.1" -"@walletconnect/sign-client@2.10.0": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.10.0.tgz#0fee8f12821e37783099f0c7bd64e6efdfbd9d86" - integrity sha512-hbDljDS53kR/It3oXD91UkcOsT6diNnW5+Zzksm0YEfwww5dop/YfNlcdnc8+jKUhWOL/YDPNQCjzsCSNlVzbw== +"@walletconnect/sign-client@2.17.1": + version "2.17.1" + resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.17.1.tgz#0777536427eba1b725c111ecc08eb301e05a8c55" + integrity sha512-6rLw6YNy0smslH9wrFTbNiYrGsL3DrOsS5FcuU4gIN6oh8pGYOFZ5FiSyTTroc5tngOk3/Sd7dlGY9S7O4nveg== dependencies: - "@walletconnect/core" "2.10.0" - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" + "@walletconnect/core" "2.17.1" + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.10.0" - "@walletconnect/utils" "2.10.0" - events "^3.3.0" + "@walletconnect/logger" "2.1.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.17.1" + "@walletconnect/utils" "2.17.1" + events "3.3.0" "@walletconnect/sign-client@2.9.2": version "2.9.2" @@ -7094,35 +7215,38 @@ "@walletconnect/utils" "2.9.2" events "^3.3.0" -"@walletconnect/socket-transport@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.8.0.tgz#9a1128a249628a0be11a0979b522fe82b44afa1b" - integrity sha512-5DyIyWrzHXTcVp0Vd93zJ5XMW61iDM6bcWT4p8DTRfFsOtW46JquruMhxOLeCOieM4D73kcr3U7WtyR4JUsGuQ== - dependencies: - "@walletconnect/types" "^1.8.0" - "@walletconnect/utils" "^1.8.0" - ws "7.5.3" - -"@walletconnect/time@^1.0.2": +"@walletconnect/time@1.0.2", "@walletconnect/time@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== dependencies: tslib "1.14.1" -"@walletconnect/types@2.10.0": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.10.0.tgz#5d63235b49e03d609521402a4b49627dbc4ed514" - integrity sha512-kSTA/WZnbKdEbvbXSW16Ty6dOSzOZCHnGg6JH7q1MuraalD2HuNg00lVVu7QAZ/Rj1Gn9DAkrgP5Wd5a8Xq//Q== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-types" "1.0.3" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - -"@walletconnect/types@2.9.2", "@walletconnect/types@^2.9.1": +"@walletconnect/types@2.17.1": + version "2.17.1" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.17.1.tgz#425dedbe5853231252d081f61448c55ecd341c96" + integrity sha512-aiUeBE3EZZTsZBv5Cju3D0PWAsZCMks1g3hzQs9oNtrbuLL6pKKU0/zpKwk4vGywszxPvC3U0tBCku9LLsH/0A== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + events "3.3.0" + +"@walletconnect/types@2.21.8", "@walletconnect/types@^2.11.3": + version "2.21.8" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.21.8.tgz#14fddcc61fd5ff2fbacaf89792a14c251c67087f" + integrity sha512-xuLIPrLxe6viMu8Uk28Nf0sgyMy+4oT0mroOjBe5Vqyft8GTiwUBKZXmrGU9uDzZsYVn1FXLO9CkuNHXda3ODA== + dependencies: + "@walletconnect/events" "1.0.1" + "@walletconnect/heartbeat" "1.2.2" + "@walletconnect/jsonrpc-types" "1.0.4" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/logger" "2.1.2" + events "3.3.0" + +"@walletconnect/types@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.9.2.tgz#d5fd5a61dc0f41cbdca59d1885b85207ac7bf8c5" integrity sha512-7Rdn30amnJEEal4hk83cdwHUuxI1SWQ+K7fFFHBMqkuHLGi3tpMY6kpyfDxnUScYEZXqgRps4Jo5qQgnRqVM7A== @@ -7134,11 +7258,6 @@ "@walletconnect/logger" "^2.0.1" events "^3.3.0" -"@walletconnect/types@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.8.0.tgz#3f5e85b2d6b149337f727ab8a71b8471d8d9a195" - integrity sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg== - "@walletconnect/universal-provider@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.9.2.tgz#40e54e98bc48b1f2f5f77eb5b7f05462093a8506" @@ -7154,27 +7273,59 @@ "@walletconnect/utils" "2.9.2" events "^3.3.0" -"@walletconnect/utils@2.10.0": - version "2.10.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.10.0.tgz#6918d12180d797b8bd4a19fb2ff128e394e181d6" - integrity sha512-9GRyEz/7CJW+G04RvrjPET5k7hOEsB9b3fF9cWDk/iDCxSWpbkU/hv/urRB36C+gvQMAZgIZYX3dHfzJWkY/2g== +"@walletconnect/utils@2.17.1": + version "2.17.1" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.17.1.tgz#fc57ffb89fc101fa1bf015de016ea01091d10ae0" + integrity sha512-KL7pPwq7qUC+zcTmvxGqIyYanfHgBQ+PFd0TEblg88jM7EjuDLhjyyjtkhyE/2q7QgR7OanIK7pCpilhWvBsBQ== dependencies: + "@ethersproject/hash" "5.7.0" + "@ethersproject/transactions" "5.7.0" "@stablelib/chacha20poly1305" "1.0.1" "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" + "@stablelib/random" "1.0.2" "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.10.0" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" + "@stablelib/x25519" "1.0.3" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.0.4" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.17.1" + "@walletconnect/window-getters" "1.0.1" + "@walletconnect/window-metadata" "1.0.1" detect-browser "5.3.0" + elliptic "6.5.7" query-string "7.1.3" - uint8arrays "^3.1.0" + uint8arrays "3.1.0" + +"@walletconnect/utils@2.21.8", "@walletconnect/utils@^2.10.1": + version "2.21.8" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.21.8.tgz#2bd3ed74ba586c8e161908f0279efd035de6fa73" + integrity sha512-HtMraGJ9qXo55l4wGSM1aZvyz0XVv460iWhlRGAyRl9Yz8RQeKyXavDhwBfcTFha/6kwLxPExqQ+MURtKeVVXw== + dependencies: + "@msgpack/msgpack" "3.1.2" + "@noble/ciphers" "1.3.0" + "@noble/curves" "1.9.2" + "@noble/hashes" "1.8.0" + "@scure/base" "1.2.6" + "@walletconnect/jsonrpc-utils" "1.0.8" + "@walletconnect/keyvaluestorage" "1.1.1" + "@walletconnect/relay-api" "1.0.11" + "@walletconnect/relay-auth" "1.1.0" + "@walletconnect/safe-json" "1.0.2" + "@walletconnect/time" "1.0.2" + "@walletconnect/types" "2.21.8" + "@walletconnect/window-getters" "1.0.1" + "@walletconnect/window-metadata" "1.0.1" + blakejs "1.2.1" + bs58 "6.0.0" + detect-browser "5.3.0" + query-string "7.1.3" + uint8arrays "3.1.1" + viem "2.31.0" -"@walletconnect/utils@2.9.2", "@walletconnect/utils@^2.9.0": +"@walletconnect/utils@2.9.2": version "2.9.2" resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.9.2.tgz#035bdb859ee81a4bcc6420f56114cc5ec3e30afb" integrity sha512-D44hwXET/8JhhIjqljY6qxSu7xXnlPrf63UN/Qfl98vDjWlYVcDl2+JIQRxD9GPastw0S8XZXdRq59XDXLuZBg== @@ -7194,53 +7345,28 @@ query-string "7.1.3" uint8arrays "^3.1.0" -"@walletconnect/utils@^1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.8.0.tgz#2591a197c1fa7429941fe428876088fda6632060" - integrity sha512-zExzp8Mj1YiAIBfKNm5u622oNw44WOESzo6hj+Q3apSMIb0Jph9X3GDIdbZmvVZsNPxWDL7uodKgZcCInZv2vA== - dependencies: - "@walletconnect/browser-utils" "^1.8.0" - "@walletconnect/encoding" "^1.0.1" - "@walletconnect/jsonrpc-utils" "^1.0.3" - "@walletconnect/types" "^1.8.0" - bn.js "4.11.8" - js-sha3 "0.8.0" - query-string "6.13.5" - -"@walletconnect/web3wallet@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@walletconnect/web3wallet/-/web3wallet-1.9.0.tgz#ad4094e1e2ed757bc75efa961121b66b2eeb4306" - integrity sha512-3uu6GbOz2uwcmVaIpijkPlReywC1GsFtwJOB1bJZOkc8wjtNmR3jUMwqxWUv8ojbmDVVWQl1HN7Sptkrmq9Xyw== +"@walletconnect/web3wallet@^1.10.3": + version "1.16.1" + resolved "https://registry.yarnpkg.com/@walletconnect/web3wallet/-/web3wallet-1.16.1.tgz#53abb98fea6f1ac77704d4e4c91288e0300f2fb9" + integrity sha512-l6jVoLEh/UtRfvYUDs52fN+LYXsBgx3F9WfErJuCSCFfpbxDKIzM2Y9sI0WI1/5dWN5sh24H1zNCXnQ4JJltZw== dependencies: - "@walletconnect/auth-client" "2.1.1" - "@walletconnect/core" "2.10.0" - "@walletconnect/jsonrpc-provider" "1.0.13" + "@walletconnect/auth-client" "2.1.2" + "@walletconnect/core" "2.17.1" + "@walletconnect/jsonrpc-provider" "1.0.14" "@walletconnect/jsonrpc-utils" "1.0.8" - "@walletconnect/logger" "2.0.1" - "@walletconnect/sign-client" "2.10.0" - "@walletconnect/types" "2.10.0" - "@walletconnect/utils" "2.10.0" - -"@walletconnect/window-getters@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" - integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + "@walletconnect/logger" "2.1.2" + "@walletconnect/sign-client" "2.17.1" + "@walletconnect/types" "2.17.1" + "@walletconnect/utils" "2.17.1" -"@walletconnect/window-getters@^1.0.0", "@walletconnect/window-getters@^1.0.1": +"@walletconnect/window-getters@1.0.1", "@walletconnect/window-getters@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== dependencies: tslib "1.14.1" -"@walletconnect/window-metadata@1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" - integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== - dependencies: - "@walletconnect/window-getters" "^1.0.0" - -"@walletconnect/window-metadata@^1.0.1": +"@walletconnect/window-metadata@1.0.1", "@walletconnect/window-metadata@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== @@ -7248,36 +7374,6 @@ "@walletconnect/window-getters" "^1.0.1" tslib "1.14.1" -"@web3modal/core@2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.7.1.tgz#257534d45f7b5d6bddbc667f787c094eb91dd281" - integrity sha512-eFWR1tK1qN4FguhaZq2VW0AVr8DC/Fox2eJnK1eTfk32hxSgUtl8wr5fVM8EoLeoapQ7Zcc0SNg/QLuLQ9t2tA== - dependencies: - valtio "1.11.0" - -"@web3modal/ethereum@^2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@web3modal/ethereum/-/ethereum-2.7.1.tgz#464dbc1d00d075c16961b77e9a353b1966538653" - integrity sha512-1x3qhYh9qgtvw1MDQD4VeDf2ZOsVANKRPtUty4lF+N4L8xnAIwvNKUAMA4j6T5xSsjqUfq5Tdy5mYsNxLmsWMA== - -"@web3modal/react@^2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@web3modal/react/-/react-2.7.1.tgz#c768aae41bfe15abe379f8b6489d69d153fc7a46" - integrity sha512-+zvP5Q7Q3ozW2hyA1NvS8giVDeZWA6PWgVhKA6656dCnOutonPUpWYuFPJahsFBYCrhLO8ApPmomgb6Dx/mh5A== - dependencies: - "@web3modal/core" "2.7.1" - "@web3modal/ui" "2.7.1" - -"@web3modal/ui@2.7.1": - version "2.7.1" - resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.7.1.tgz#9c2cb0f66623fcf41084f50e63acff33f26b0635" - integrity sha512-JpGJbLAl/Wmuyyn+JwuwtlPD8mUW2HV/gsSxKWZoElgjbfDY4vjHo9PH2G++2HhugISfzjawp43r8lP/hWgWOQ== - dependencies: - "@web3modal/core" "2.7.1" - lit "2.7.6" - motion "10.16.2" - qrcode "1.5.3" - "@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24" @@ -7658,6 +7754,16 @@ abitype@0.9.3: resolved "https://registry.yarnpkg.com/abitype/-/abitype-0.9.3.tgz#294d25288ee683d72baf4e1fed757034e3c8c277" integrity sha512-dz4qCQLurx97FQhnb/EIYTk/ldQ+oafEDUqC0VVIeQS1Q48/YWt/9YNfMmp9SLFqN41ktxny3c8aYxHjmFIB/w== +abitype@1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.8.tgz#3554f28b2e9d6e9f35eb59878193eabd1b9f46ba" + integrity sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg== + +abitype@^1.0.6: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.0.tgz#510c5b3f92901877977af5e864841f443bf55406" + integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" @@ -7898,7 +8004,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.0, anymatch@^3.0.3, anymatch@^3.1.3, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -8564,6 +8670,11 @@ base-x@^3.0.2: dependencies: safe-buffer "^5.0.1" +base-x@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.1.tgz#16bf35254be1df8aca15e36b7c1dda74b2aa6b03" + integrity sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg== + base16@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" @@ -8681,7 +8792,7 @@ blake3-wasm@^2.1.5: resolved "https://registry.yarnpkg.com/blake3-wasm/-/blake3-wasm-2.1.5.tgz#b22dbb84bc9419ed0159caa76af4b1b132e6ba52" integrity sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g== -blakejs@^1.1.0: +blakejs@1.2.1, blakejs@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== @@ -8706,11 +8817,6 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== -bn.js@4.11.8: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -8929,6 +9035,13 @@ bs-logger@0.x: dependencies: fast-json-stable-stringify "2.x" +bs58@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" @@ -9190,6 +9303,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001394, can resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz#3e7b8b8a7077e78b0eb054d69e6edf5c7df35601" integrity sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg== +caniuse-lite@^1.0.30001741: + version "1.0.30001741" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001741.tgz#67fb92953edc536442f3c9da74320774aa523143" + integrity sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw== + capital-case@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" @@ -9365,6 +9483,13 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -9754,6 +9879,11 @@ convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.0, resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== +cookie-es@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.2.2.tgz#18ceef9eb513cac1cb6c14bcbf8bdb2679b34821" + integrity sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg== + cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -9967,6 +10097,13 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crossws@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/crossws/-/crossws-0.3.5.tgz#daad331d44148ea6500098bc858869f3a5ab81a6" + integrity sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA== + dependencies: + uncrypto "^0.1.3" + crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" @@ -10450,6 +10587,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +defu@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" + integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== + delay@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" @@ -10493,6 +10635,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +destr@^2.0.3, destr@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.5.tgz#7d112ff1b925fb8d2079fac5bdb4a90973b51fdb" + integrity sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -10505,11 +10652,6 @@ detab@2.0.4: dependencies: repeat-string "^1.5.4" -detect-browser@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.2.0.tgz#c9cd5afa96a6a19fda0bbe9e9be48a6b6e1e9c97" - integrity sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA== - detect-browser@5.3.0, detect-browser@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" @@ -10794,6 +10936,19 @@ elliptic@6.5.4, elliptic@^6.5.3, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" +elliptic@6.5.7: + version "6.5.7" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.7.tgz#8ec4da2cb2939926a1b9a73619d768207e647c8b" + integrity sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + emittery@^0.10.2: version "0.10.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" @@ -11003,6 +11158,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es-toolkit@1.39.3: + version "1.39.3" + resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.39.3.tgz#934b2cab9578c496dcbc0305cae687258cb14aee" + integrity sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww== + es5-shim@^4.5.13: version "4.6.7" resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.7.tgz#bc67ae0fc3dd520636e0a1601cc73b450ad3e955" @@ -11504,12 +11664,17 @@ eventemitter2@^6.4.5: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125" integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg== +eventemitter3@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + eventemitter3@^4.0.0, eventemitter3@^4.0.4, eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0, events@^3.3.0: +events@3.3.0, events@^3.0.0, events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -12646,6 +12811,21 @@ graphql@^14.0.2: dependencies: iterall "^1.2.2" +h3@^1.15.4: + version "1.15.4" + resolved "https://registry.yarnpkg.com/h3/-/h3-1.15.4.tgz#022ab3563bbaf2108c25375c40460f3e54a5fe02" + integrity sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ== + dependencies: + cookie-es "^1.2.2" + crossws "^0.3.5" + defu "^6.1.4" + destr "^2.0.5" + iron-webcrypto "^1.2.1" + node-mock-http "^1.0.2" + radix3 "^1.1.2" + ufo "^1.6.1" + uncrypto "^0.1.3" + handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -13197,6 +13377,11 @@ icss-utils@^5.0.0, icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== +idb-keyval@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.2.tgz#b0171b5f73944854a3291a5cdba8e12768c4854a" + integrity sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg== + idb@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" @@ -13396,6 +13581,11 @@ ipaddr.js@^2.0.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== +iron-webcrypto@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz#aa60ff2aa10550630f4c0b11fd2442becdb35a6f" + integrity sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg== + is-absolute-url@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" @@ -13962,6 +14152,11 @@ isomorphic-ws@^4.0.1: resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== +isows@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -15260,6 +15455,11 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" +lru-cache@^10.4.3: + version "10.4.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" + integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -16169,6 +16369,11 @@ node-dir@^0.1.10: dependencies: minimatch "^3.0.2" +node-fetch-native@^1.6.4, node-fetch-native@^1.6.7: + version "1.6.7" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.7.tgz#9d09ca63066cc48423211ed4caf5d70075d76a71" + integrity sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q== + node-fetch@^2.2.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.6.12" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" @@ -16220,6 +16425,11 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" +node-mock-http@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/node-mock-http/-/node-mock-http-1.0.3.tgz#4e55e093267a3b910cded7354389ce2d02c89e77" + integrity sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog== + node-releases@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" @@ -16493,6 +16703,15 @@ obuf@^1.0.0, obuf@^1.1.2: resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +ofetch@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.4.1.tgz#b6bf6b0d75ba616cef6519dd8b6385a8bae480ec" + integrity sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw== + dependencies: + destr "^2.0.3" + node-fetch-native "^1.6.4" + ufo "^1.5.4" + on-exit-leak-free@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" @@ -16600,6 +16819,20 @@ ospath@^1.2.2: resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== +ox@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.7.1.tgz#fb23a770dd966c051ad916d4e2e655a6f995e1cf" + integrity sha512-+k9fY9PRNuAMHRFIUbiK9Nt5seYHHzSQs9Bj+iMETcGtlpS7SmBzcGSVUQO3+nqGLEiNK4598pHNFlVRaZbRsg== + dependencies: + "@adraffy/ens-normalize" "^1.10.1" + "@noble/ciphers" "^1.3.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" + eventemitter3 "5.0.1" + p-all@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" @@ -17749,15 +17982,6 @@ qs@~6.10.3: dependencies: side-channel "^1.0.4" -query-string@6.13.5: - version "6.13.5" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" - integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - query-string@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" @@ -17798,6 +18022,11 @@ quick-format-unescaped@^4.0.3: resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== +radix3@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" + integrity sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== + ramda@^0.28.0: version "0.28.0" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.28.0.tgz#acd785690100337e8b063cab3470019be427cc97" @@ -18184,6 +18413,11 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -20465,12 +20699,24 @@ ua-parser-js@^1.0.35: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.35.tgz#c4ef44343bc3db0a3cbefdf21822f1b1fc1ab011" integrity sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA== +ufo@^1.5.4, ufo@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b" + integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c" integrity sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g== -uint8arrays@^3.0.0, uint8arrays@^3.1.0: +uint8arrays@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.0.tgz#8186b8eafce68f28bd29bd29d683a311778901e2" + integrity sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog== + dependencies: + multiformats "^9.4.2" + +uint8arrays@3.1.1, uint8arrays@^3.0.0, uint8arrays@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== @@ -20492,6 +20738,11 @@ 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== +uncrypto@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b" + integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q== + undici@5.20.0: version "5.20.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.20.0.tgz#6327462f5ce1d3646bcdac99da7317f455bcc263" @@ -20730,6 +20981,20 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +unstorage@^1.9.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.17.1.tgz#611519b799d6d9dbecb34364a1f8919d39732e81" + integrity sha512-KKGwRTT0iVBCErKemkJCLs7JdxNVfqTPc/85ae1XES0+bsHbc/sFBfVi5kJp156cc51BHinIH2l3k0EZ24vOBQ== + dependencies: + anymatch "^3.1.3" + chokidar "^4.0.3" + destr "^2.0.5" + h3 "^1.15.4" + lru-cache "^10.4.3" + node-fetch-native "^1.6.7" + ofetch "^1.4.1" + ufo "^1.6.1" + untildify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" @@ -21078,6 +21343,20 @@ vfile@^6.0.0: unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" +viem@2.31.0: + version "2.31.0" + resolved "https://registry.yarnpkg.com/viem/-/viem-2.31.0.tgz#2263426cce091d440e283b88183dff6f1d8bae5c" + integrity sha512-U7OMQ6yqK+bRbEIarf2vqxL7unSEQvNxvML/1zG7suAmKuJmipqdVTVJGKBCJiYsm/EremyO2FS4dHIPpGv+eA== + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.0.8" + isows "1.0.7" + ox "0.7.1" + ws "8.18.2" + viem@^1.0.0, viem@^1.3.0: version "1.6.0" resolved "https://registry.yarnpkg.com/viem/-/viem-1.6.0.tgz#8befa678c3ac79b9558dfd1708130b2ecb1994f4" @@ -21632,11 +21911,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@7.5.3: - version "7.5.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" - integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== - ws@8.12.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" @@ -21647,6 +21921,11 @@ ws@8.13.0, ws@^8.12.0, ws@^8.13.0, ws@^8.2.2, ws@^8.2.3, ws@^8.5.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== +ws@8.18.2: + version "8.18.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.2.tgz#42738b2be57ced85f46154320aabb51ab003705a" + integrity sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ== + ws@8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"