From 6a55fa1462a9d1e0028e9cb0a0b340e263565e04 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 14:42:20 +0200 Subject: [PATCH 001/115] fix: remove dead 1inch IPFS token list and make fetching resilient MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 1inch token list at ipfs.io/ipns/tokens.1inch.eth returns 504 on all IPFS gateways — the IPNS record is unmaintained. Removed the dead source. Made fetchTokenList resilient: a failing source now logs a warning and returns an empty list instead of throwing, so one broken source doesn't block the entire app. --- src/constants/tokenLists.ts | 3 +- src/hooks/useTokenLists.test.ts | 86 ++++++++++++++++++++++++++++++++- src/hooks/useTokenLists.ts | 46 +++++++++++++----- 3 files changed, 120 insertions(+), 15 deletions(-) diff --git a/src/constants/tokenLists.ts b/src/constants/tokenLists.ts index eef5ed10..12475c5b 100644 --- a/src/constants/tokenLists.ts +++ b/src/constants/tokenLists.ts @@ -2,9 +2,8 @@ * @dev Here you can add the list of tokens you want to use in the app * The list follow the standard from: https://tokenlists.org/ * - * Token list must complain with the Schema defined in /src/token.ts + * Token list must comply with the Schema defined in /src/token.ts */ export const tokenLists = { - '1INCH': 'https://ipfs.io/ipns/tokens.1inch.eth', COINGECKO: 'https://tokens.coingecko.com/uniswap/all.json', } as const diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index bb8ddc0f..efbb40a3 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -36,7 +36,10 @@ vi.mock('@tanstack/react-query', async (importActual) => { }) import * as tanstackQuery from '@tanstack/react-query' -import { useTokenLists } from './useTokenLists' +import { fetchTokenList, useTokenLists } from './useTokenLists' + +const mockFetch = vi.fn() +vi.stubGlobal('fetch', mockFetch) const mockToken1: Token = { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', @@ -73,6 +76,87 @@ beforeEach(() => { }) }) +describe('fetchTokenList', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it('returns empty token list on HTTP error', async () => { + mockFetch.mockResolvedValue({ + ok: false, + status: 504, + statusText: 'Gateway Timeout', + }) + + const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}) + const result = await fetchTokenList('https://example.com/tokens.json') + + expect(result.tokens).toEqual([]) + expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Token list fetch failed')) + warnSpy.mockRestore() + }) + + it('returns empty token list on network error', async () => { + mockFetch.mockRejectedValue(new Error('Network error')) + + const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}) + const result = await fetchTokenList('https://example.com/tokens.json') + + expect(result.tokens).toEqual([]) + expect(warnSpy).toHaveBeenCalledWith( + expect.stringContaining('Token list fetch failed'), + 'Network error', + ) + warnSpy.mockRestore() + }) + + it('returns empty token list on invalid JSON schema', async () => { + mockFetch.mockResolvedValue({ + ok: true, + json: () => Promise.resolve({ error: 'not a token list' }), + }) + + const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}) + const result = await fetchTokenList('https://example.com/tokens.json') + + expect(result.tokens).toEqual([]) + expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('invalid schema')) + warnSpy.mockRestore() + }) + + it('returns token list on valid response', async () => { + const validTokenList = { + name: 'Test', + timestamp: '2026-01-01', + version: { major: 1, minor: 0, patch: 0 }, + tokens: [{ symbol: 'ETH', name: 'Ether', address: '0x0', chainId: 1, decimals: 18 }], + } + + mockFetch.mockResolvedValue({ + ok: true, + json: () => Promise.resolve(validTokenList), + }) + + const result = await fetchTokenList('https://example.com/tokens.json') + + expect(result.tokens).toHaveLength(1) + expect(result.tokens[0].symbol).toBe('ETH') + }) + + it('returns empty token list when tokens field is not an array', async () => { + mockFetch.mockResolvedValue({ + ok: true, + json: () => Promise.resolve({ tokens: 'not an array' }), + }) + + const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}) + const result = await fetchTokenList('https://example.com/tokens.json') + + expect(result.tokens).toEqual([]) + warnSpy.mockRestore() + }) +}) + describe('useTokenLists', () => { it('returns tokens and tokensByChainId', () => { vi.mocked(tanstackQuery.useSuspenseQueries).mockReturnValueOnce( diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 79009d9b..73b48463 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -63,8 +63,8 @@ export const useTokenLists = (): TokensMap => { queries: tokenListUrls.map>((url) => ({ queryKey: ['tokens-list', url], queryFn: () => fetchTokenList(url), - staleTime: Number.POSITIVE_INFINITY, - gcTime: Number.POSITIVE_INFINITY, + staleTime: 60 * 60 * 1000, + gcTime: 60 * 60 * 1000, })), combine: combineTokenLists, }) @@ -145,26 +145,48 @@ function combineTokenLists(results: Array>): T return tokensMap } +const emptyTokenList: TokenList = { + name: '', + timestamp: '', + version: { major: 0, minor: 0, patch: 0 }, + tokens: [], +} + /** - * A wrapper around fetch, to return the parsed JSON or throw an error if something goes wrong + * Fetches a token list from a URL. Returns an empty token list on failure + * instead of throwing, so one broken source doesn't block the entire app. * - * @param url - a link to a list of tokens or 'default' to use the list added as a dependency to the project - * @returns {Promise} a token list + * @param url - a link to a list of tokens or 'default' to use the bundled list + * @returns a token list (empty on failure) */ -async function fetchTokenList(url: string): Promise { +export async function fetchTokenList(url: string): Promise { if (url === 'default') { return defaultTokens as TokenList } - const result = await fetch(url) + try { + const result = await fetch(url) + + if (!result.ok) { + console.warn(`Token list fetch failed for ${url}: HTTP ${result.status} ${result.statusText}`) + return emptyTokenList + } - if (!result.ok) { - throw new Error( - `Something went wrong. HTTP status code: ${result.status}. Status Message: ${result.statusText}`, + const data = await result.json() + + if (!data || typeof data !== 'object' || !Array.isArray(data.tokens)) { + console.warn(`Token list fetch for ${url} returned invalid schema; expected a tokens array.`) + return emptyTokenList + } + + return data as TokenList + } catch (error) { + console.warn( + `Token list fetch failed for ${url}:`, + error instanceof Error ? error.message : error, ) + return emptyTokenList } - - return result.json() } /** From 35425460e5c17dd615556528614e49f07bfda2af Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 13:37:50 +0200 Subject: [PATCH 002/115] feat: add useWalletStatus hook with tests New state-only hook that answers "is the wallet ready to interact with this chain?" Built on top of useWeb3Status. Closes part of #303 --- src/hooks/useWalletStatus.test.ts | 158 ++++++++++++++++++++++++++++++ src/hooks/useWalletStatus.ts | 40 ++++++++ 2 files changed, 198 insertions(+) create mode 100644 src/hooks/useWalletStatus.test.ts create mode 100644 src/hooks/useWalletStatus.ts diff --git a/src/hooks/useWalletStatus.test.ts b/src/hooks/useWalletStatus.test.ts new file mode 100644 index 00000000..396ca1ec --- /dev/null +++ b/src/hooks/useWalletStatus.test.ts @@ -0,0 +1,158 @@ +import { renderHook } from '@testing-library/react' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { useWalletStatus } from './useWalletStatus' + +// Mock useWeb3Status +const mockSwitchChain = vi.fn() +const mockDisconnect = vi.fn() + +vi.mock('@/src/hooks/useWeb3Status', () => ({ + useWeb3Status: vi.fn(() => ({ + appChainId: 1, + isWalletConnected: false, + isWalletSynced: false, + switchChain: mockSwitchChain, + walletChainId: undefined, + })), +})) + +vi.mock('@/src/lib/networks.config', () => ({ + chains: [ + { id: 1, name: 'Ethereum' }, + { id: 10, name: 'OP Mainnet' }, + { id: 137, name: 'Polygon' }, + ], +})) + +vi.mock('viem', async () => { + const actual = await vi.importActual('viem') + return { + ...actual, + extractChain: vi.fn(({ chains, id }) => { + const chain = chains.find((c: { id: number }) => c.id === id) + if (!chain) { + throw new Error(`Chain with id ${id} not found`) + } + return chain + }), + } +}) + +// Import after mocks are set up +const { useWeb3Status } = await import('@/src/hooks/useWeb3Status') +const mockedUseWeb3Status = vi.mocked(useWeb3Status) + +const baseWeb3Status: ReturnType = { + readOnlyClient: undefined, + appChainId: 1, + address: undefined, + balance: undefined, + connectingWallet: false, + switchingChain: false, + isWalletConnected: false, + walletClient: undefined, + isWalletSynced: false, + walletChainId: undefined, + switchChain: mockSwitchChain, + disconnect: mockDisconnect, +} + +describe('useWalletStatus', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it('returns needsConnect when wallet is not connected', () => { + mockedUseWeb3Status.mockReturnValue({ + ...baseWeb3Status, + appChainId: 1, + isWalletConnected: false, + isWalletSynced: false, + walletChainId: undefined, + }) + + const { result } = renderHook(() => useWalletStatus()) + + expect(result.current.needsConnect).toBe(true) + expect(result.current.needsChainSwitch).toBe(false) + expect(result.current.isReady).toBe(false) + }) + + it('returns needsChainSwitch when connected but on wrong chain', () => { + mockedUseWeb3Status.mockReturnValue({ + ...baseWeb3Status, + appChainId: 1, + isWalletConnected: true, + isWalletSynced: false, + walletChainId: 137, + }) + + const { result } = renderHook(() => useWalletStatus()) + + expect(result.current.needsConnect).toBe(false) + expect(result.current.needsChainSwitch).toBe(true) + expect(result.current.isReady).toBe(false) + expect(result.current.targetChain).toEqual({ id: 1, name: 'Ethereum' }) + }) + + it('returns isReady when connected and on correct chain', () => { + mockedUseWeb3Status.mockReturnValue({ + ...baseWeb3Status, + appChainId: 1, + isWalletConnected: true, + isWalletSynced: true, + walletChainId: 1, + }) + + const { result } = renderHook(() => useWalletStatus()) + + expect(result.current.needsConnect).toBe(false) + expect(result.current.needsChainSwitch).toBe(false) + expect(result.current.isReady).toBe(true) + }) + + it('uses provided chainId over appChainId', () => { + mockedUseWeb3Status.mockReturnValue({ + ...baseWeb3Status, + appChainId: 1, + isWalletConnected: true, + isWalletSynced: true, + walletChainId: 1, + }) + + const { result } = renderHook(() => useWalletStatus({ chainId: 10 })) + + expect(result.current.needsChainSwitch).toBe(true) + expect(result.current.isReady).toBe(false) + expect(result.current.targetChain).toEqual({ id: 10, name: 'OP Mainnet' }) + }) + + it('falls back to chains[0].id when no chainId or appChainId', () => { + mockedUseWeb3Status.mockReturnValue({ + ...baseWeb3Status, + appChainId: undefined as unknown as ReturnType['appChainId'], + isWalletConnected: true, + isWalletSynced: false, + walletChainId: 137, + }) + + const { result } = renderHook(() => useWalletStatus()) + + expect(result.current.targetChain).toEqual({ id: 1, name: 'Ethereum' }) + }) + + it('switchChain calls through to useWeb3Status switchChain', () => { + mockedUseWeb3Status.mockReturnValue({ + ...baseWeb3Status, + appChainId: 1, + isWalletConnected: true, + isWalletSynced: false, + walletChainId: 137, + }) + + const { result } = renderHook(() => useWalletStatus()) + + result.current.switchChain(10) + expect(mockSwitchChain).toHaveBeenCalledWith(10) + }) +}) diff --git a/src/hooks/useWalletStatus.ts b/src/hooks/useWalletStatus.ts new file mode 100644 index 00000000..f51c9ef4 --- /dev/null +++ b/src/hooks/useWalletStatus.ts @@ -0,0 +1,40 @@ +import { extractChain } from 'viem' +import type { Chain } from 'viem' + +import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { type ChainsIds, chains } from '@/src/lib/networks.config' + +interface UseWalletStatusOptions { + chainId?: ChainsIds +} + +interface WalletStatus { + isReady: boolean + needsConnect: boolean + needsChainSwitch: boolean + targetChain: Chain + switchChain: (chainId: ChainsIds) => void +} + +export const useWalletStatus = (options?: UseWalletStatusOptions): WalletStatus => { + const { appChainId, isWalletConnected, isWalletSynced, switchChain, walletChainId } = + useWeb3Status() + + const targetChain = extractChain({ + chains, + id: options?.chainId || appChainId || chains[0].id, + }) + + const needsConnect = !isWalletConnected + const needsChainSwitch = + isWalletConnected && (!isWalletSynced || walletChainId !== targetChain.id) + const isReady = isWalletConnected && !needsChainSwitch + + return { + isReady, + needsConnect, + needsChainSwitch, + targetChain, + switchChain, + } +} From 63f94f30e9b7fd820a8cd0248a2f1628cc4583cd Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 13:38:16 +0200 Subject: [PATCH 003/115] refactor: WalletStatusVerifier uses useWalletStatus hook, remove HoC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The withWalletStatusVerifier HoC is removed. The WalletStatusVerifier wrapper component now uses the useWalletStatus hook internally. Extracts shared SwitchChainButton to ui/SwitchChainButton.tsx. Same external API — no breaking change for wrapper consumers. Closes part of #303 --- .../WalletStatusVerifier.test.tsx | 214 ++++++++++-------- .../sharedComponents/WalletStatusVerifier.tsx | 101 ++------- .../sharedComponents/ui/SwitchChainButton.tsx | 14 ++ 3 files changed, 149 insertions(+), 180 deletions(-) create mode 100644 src/components/sharedComponents/ui/SwitchChainButton.tsx diff --git a/src/components/sharedComponents/WalletStatusVerifier.test.tsx b/src/components/sharedComponents/WalletStatusVerifier.test.tsx index 09c5b00d..dd8d6acd 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.test.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.test.tsx @@ -1,122 +1,150 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { render, screen } from '@testing-library/react' -import type { ReactElement } from 'react' -import { describe, expect, it, vi } from 'vitest' -import { WalletStatusVerifier, withWalletStatusVerifier } from './WalletStatusVerifier' +import userEvent from '@testing-library/user-event' +import { type ReactNode, createElement } from 'react' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { WalletStatusVerifier } from './WalletStatusVerifier' -const system = createSystem(defaultConfig) +const mockSwitchChain = vi.fn() -vi.mock('@/src/hooks/useWeb3Status', () => ({ - useWeb3Status: vi.fn(), +vi.mock('@/src/hooks/useWalletStatus', () => ({ + useWalletStatus: vi.fn(() => ({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' }, + switchChain: mockSwitchChain, + })), })) vi.mock('@/src/providers/Web3Provider', () => ({ - ConnectWalletButton: () => , + ConnectWalletButton: () => + createElement( + 'button', + { type: 'button', 'data-testid': 'connect-wallet-button' }, + 'Connect Wallet', + ), })) -import * as useWeb3StatusModule from '@/src/hooks/useWeb3Status' - -// chains[0] = optimismSepolia (id: 11155420) when PUBLIC_INCLUDE_TESTNETS=true (default) -const OP_SEPOLIA_ID = 11155420 as const - -function connectedSyncedStatus(overrides = {}) { - return { - isWalletConnected: true, - isWalletSynced: true, - walletChainId: OP_SEPOLIA_ID, - appChainId: OP_SEPOLIA_ID, - switchChain: vi.fn(), - disconnect: vi.fn(), - address: '0x1234567890abcdef1234567890abcdef12345678' as `0x${string}`, - balance: undefined, - connectingWallet: false, - switchingChain: false, - walletClient: undefined, - readOnlyClient: undefined, - ...overrides, - } -} - -function wrap(ui: ReactElement) { - return render({ui}) -} +const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') +const mockedUseWalletStatus = vi.mocked(useWalletStatus) + +const system = createSystem(defaultConfig) + +const renderWithChakra = (ui: ReactNode) => + render({ui}) describe('WalletStatusVerifier', () => { - it('renders default ConnectWalletButton fallback when wallet not connected', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue( - // biome-ignore lint/suspicious/noExplicitAny: partial mock - connectedSyncedStatus({ isWalletConnected: false, isWalletSynced: false }) as any, - ) - wrap( - -
Protected Content
-
, - ) - expect(screen.getByText('Connect Wallet')).toBeDefined() - expect(screen.queryByText('Protected Content')).toBeNull() + beforeEach(() => { + vi.clearAllMocks() }) - it('renders custom fallback when wallet not connected', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue( - // biome-ignore lint/suspicious/noExplicitAny: partial mock - connectedSyncedStatus({ isWalletConnected: false, isWalletSynced: false }) as any, - ) - wrap( - Custom Fallback}> -
Protected Content
-
, + it('renders default fallback (ConnectWalletButton) when wallet needs connect', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, + }) + + renderWithChakra( + createElement( + WalletStatusVerifier, + null, + createElement('div', { 'data-testid': 'protected-content' }, 'Protected'), + ), ) - expect(screen.getByText('Custom Fallback')).toBeDefined() + + expect(screen.getByTestId('connect-wallet-button')).toBeInTheDocument() + expect(screen.queryByTestId('protected-content')).toBeNull() }) - it('renders switch chain button when wallet is on wrong chain', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue( - // biome-ignore lint/suspicious/noExplicitAny: partial mock - connectedSyncedStatus({ isWalletSynced: false, walletChainId: 1 }) as any, - ) - wrap( - -
Protected Content
-
, + it('renders custom fallback when provided and wallet needs connect', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, + }) + + renderWithChakra( + createElement( + WalletStatusVerifier, + { fallback: createElement('div', { 'data-testid': 'custom-fallback' }, 'Custom') }, + createElement('div', { 'data-testid': 'protected-content' }, 'Protected'), + ), ) - expect(screen.getByRole('button').textContent?.toLowerCase()).toContain('switch to') - expect(screen.queryByText('Protected Content')).toBeNull() + + expect(screen.getByTestId('custom-fallback')).toBeInTheDocument() + expect(screen.queryByTestId('protected-content')).toBeNull() }) - it('renders children when wallet is connected and synced', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue( - // biome-ignore lint/suspicious/noExplicitAny: partial mock - connectedSyncedStatus() as any, - ) - wrap( - -
Protected Content
-
, + it('renders switch chain button when wallet needs chain switch', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: false, + needsChainSwitch: true, + targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< + typeof useWalletStatus + >['targetChain'], + switchChain: mockSwitchChain, + }) + + renderWithChakra( + createElement( + WalletStatusVerifier, + null, + createElement('div', { 'data-testid': 'protected-content' }, 'Protected'), + ), ) - expect(screen.getByText('Protected Content')).toBeDefined() + + expect(screen.getByText(/Switch to/)).toBeInTheDocument() + expect(screen.getByText(/OP Mainnet/)).toBeInTheDocument() + expect(screen.queryByTestId('protected-content')).toBeNull() }) -}) -describe('withWalletStatusVerifier HOC', () => { - const ProtectedComponent = () =>
Protected Component
- const Wrapped = withWalletStatusVerifier(ProtectedComponent) + it('renders children when wallet is ready', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: true, + needsConnect: false, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, + }) - it('renders fallback when wallet not connected', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue( - // biome-ignore lint/suspicious/noExplicitAny: partial mock - connectedSyncedStatus({ isWalletConnected: false, isWalletSynced: false }) as any, + renderWithChakra( + createElement( + WalletStatusVerifier, + null, + createElement('div', { 'data-testid': 'protected-content' }, 'Protected'), + ), ) - wrap() - expect(screen.getByText('Connect Wallet')).toBeDefined() - expect(screen.queryByText('Protected Component')).toBeNull() + + expect(screen.getByTestId('protected-content')).toBeInTheDocument() }) - it('renders wrapped component when wallet is connected and synced', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue( - // biome-ignore lint/suspicious/noExplicitAny: partial mock - connectedSyncedStatus() as any, + it('calls switchChain when switch button is clicked', async () => { + const user = userEvent.setup() + + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: false, + needsChainSwitch: true, + targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< + typeof useWalletStatus + >['targetChain'], + switchChain: mockSwitchChain, + }) + + renderWithChakra( + createElement(WalletStatusVerifier, null, createElement('div', null, 'Protected')), ) - wrap() - expect(screen.getByText('Protected Component')).toBeDefined() + + const switchButton = screen.getByText(/Switch to/) + await user.click(switchButton) + + expect(mockSwitchChain).toHaveBeenCalledWith(10) }) }) diff --git a/src/components/sharedComponents/WalletStatusVerifier.tsx b/src/components/sharedComponents/WalletStatusVerifier.tsx index 7e9d46c2..c0e29756 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.tsx @@ -1,20 +1,8 @@ -import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { type ChainsIds, chains } from '@/src/lib/networks.config' +import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' +import { useWalletStatus } from '@/src/hooks/useWalletStatus' +import type { ChainsIds } from '@/src/lib/networks.config' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import { chakra } from '@chakra-ui/react' -import type { ComponentType, FC, ReactElement } from 'react' -import { extractChain } from 'viem' - -const Button = chakra(PrimaryButton, { - base: { - fontSize: '16px', - fontWeight: 500, - height: '48px', - paddingLeft: 6, - paddingRight: 6, - }, -}) +import type { FC, ReactElement } from 'react' interface WalletStatusVerifierProps { chainId?: ChainsIds @@ -24,21 +12,14 @@ interface WalletStatusVerifierProps { } /** - * WalletStatusVerifier Component - * - * This component checks the wallet connection and chain synchronization status. - * If the wallet is not connected, it displays a fallback component (default: ConnectWalletButton) - * If the wallet is connected but not synced with the correct chain, it provides an option to switch chain. + * Wrapper component that gates content on wallet connection and chain status. * - * @param {Object} props - WalletStatusVerifier component props - * @param {Chain['id']} [props.chainId] - The chain ID to check for synchronization - * @param {ReactElement} [props.fallback] - The fallback component to render if the wallet is not connected - * @param {ReactElement} props.children - The children components to render if the wallet is connected and synced + * This is the primary API for protecting UI that requires a connected wallet. * * @example * ```tsx * - * + * * * ``` */ @@ -48,75 +29,21 @@ const WalletStatusVerifier: FC = ({ fallback = , labelSwitchChain = 'Switch to', }: WalletStatusVerifierProps) => { - const { appChainId, isWalletConnected, isWalletSynced, switchChain, walletChainId } = - useWeb3Status() + const { needsConnect, needsChainSwitch, targetChain, switchChain } = useWalletStatus({ chainId }) - const chainToSwitch = extractChain({ chains, id: chainId || appChainId || chains[0].id }) - - if (!isWalletConnected) { + if (needsConnect) { return fallback } - if (!isWalletSynced || walletChainId !== chainToSwitch.id) { + if (needsChainSwitch) { return ( - + switchChain(targetChain.id as ChainsIds)}> + {labelSwitchChain} {targetChain.name} + ) } return children } -/** - * WalletStatusVerifier Component - * - * Checks the wallet connection and chain synchronization status. - * - If wallet is not connected, displays fallback component (default: ConnectWalletButton) - * - If wallet is connected but on wrong chain, provides option to switch networks - * - If wallet is connected and on correct chain, renders children - * - * @param {WalletStatusVerifierProps} props - Component props - * @param {ChainsIds} [props.chainId] - The required chain ID (defaults to appChainId) - * @param {ReactElement} [props.children] - The content to render when wallet is connected and synced - * @param {ReactElement} [props.fallback=] - Component to render when wallet is not connected - * @param {string} [props.labelSwitchChain='Switch to'] - Label for the chain switching button - * - * @example - * ```tsx - * - * - * - * ``` - */ -const withWalletStatusVerifier =

( - WrappedComponent: ComponentType

, - { - chainId, - fallback = , - labelSwitchChain = 'Switch to', - }: WalletStatusVerifierProps = {}, -): FC

=> { - const ComponentWithVerifier: FC

= (props: P) => { - const { appChainId, isWalletConnected, isWalletSynced, switchChain, walletChainId } = - useWeb3Status() - - const chainToSwitch = extractChain({ chains, id: chainId || appChainId || chains[0].id }) - - return !isWalletConnected ? ( - fallback - ) : !isWalletSynced || walletChainId !== chainToSwitch.id ? ( - - ) : ( - - ) - } - - ComponentWithVerifier.displayName = `withWalletStatusVerifier(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})` - - return ComponentWithVerifier -} - -export { WalletStatusVerifier, withWalletStatusVerifier } +export { WalletStatusVerifier } diff --git a/src/components/sharedComponents/ui/SwitchChainButton.tsx b/src/components/sharedComponents/ui/SwitchChainButton.tsx new file mode 100644 index 00000000..02fc0d1d --- /dev/null +++ b/src/components/sharedComponents/ui/SwitchChainButton.tsx @@ -0,0 +1,14 @@ +import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' +import { chakra } from '@chakra-ui/react' + +const SwitchChainButton = chakra(PrimaryButton, { + base: { + fontSize: '16px', + fontWeight: 500, + height: '48px', + paddingLeft: 6, + paddingRight: 6, + }, +}) + +export default SwitchChainButton From 91357b87d3c793a54d6fc8cedcc93291f1a54796 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 13:38:22 +0200 Subject: [PATCH 004/115] refactor: TransactionButton internalizes wallet verification TransactionButton now uses useWalletStatus hook directly instead of being wrapped with withWalletStatusVerifier HoC. Adds optional chainId, fallback, and switchChainLabel props. Closes part of #303 --- .../TransactionButton.test.tsx | 220 +++++++++--------- .../sharedComponents/TransactionButton.tsx | 119 ++++++---- 2 files changed, 183 insertions(+), 156 deletions(-) diff --git a/src/components/sharedComponents/TransactionButton.test.tsx b/src/components/sharedComponents/TransactionButton.test.tsx index 74e4686d..474fc0fa 100644 --- a/src/components/sharedComponents/TransactionButton.test.tsx +++ b/src/components/sharedComponents/TransactionButton.test.tsx @@ -1,146 +1,148 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' -import { fireEvent, render, screen, waitFor } from '@testing-library/react' -import { describe, expect, it, vi } from 'vitest' +import { render, screen } from '@testing-library/react' +import { type ReactNode, createElement } from 'react' +import { beforeEach, describe, expect, it, vi } from 'vitest' import TransactionButton from './TransactionButton' -const system = createSystem(defaultConfig) +const mockSwitchChain = vi.fn() +const mockWatchTx = vi.fn() +const mockTransaction = vi.fn(() => Promise.resolve('0xabc' as `0x${string}`)) + +vi.mock('@/src/hooks/useWalletStatus', () => ({ + useWalletStatus: vi.fn(() => ({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' }, + switchChain: mockSwitchChain, + })), +})) -vi.mock('@/src/hooks/useWeb3Status', () => ({ - useWeb3Status: vi.fn(), +vi.mock('@/src/providers/Web3Provider', () => ({ + ConnectWalletButton: () => + createElement( + 'button', + { type: 'button', 'data-testid': 'connect-wallet-button' }, + 'Connect Wallet', + ), })) vi.mock('@/src/providers/TransactionNotificationProvider', () => ({ useTransactionNotification: vi.fn(() => ({ - watchTx: vi.fn(), - watchHash: vi.fn(), - watchSignature: vi.fn(), + watchTx: mockWatchTx, })), })) vi.mock('wagmi', () => ({ - useWaitForTransactionReceipt: vi.fn(() => ({ data: undefined })), + useWaitForTransactionReceipt: vi.fn(() => ({ + data: undefined, + })), })) -vi.mock('@/src/providers/Web3Provider', () => ({ - ConnectWalletButton: () => , -})) +const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') +const mockedUseWalletStatus = vi.mocked(useWalletStatus) -import * as useWeb3StatusModule from '@/src/hooks/useWeb3Status' -import * as wagmiModule from 'wagmi' - -// chains[0] = optimismSepolia (id: 11155420) when PUBLIC_INCLUDE_TESTNETS=true (default) -const OP_SEPOLIA_ID = 11155420 as const - -function connectedStatus() { - return { - isWalletConnected: true, - isWalletSynced: true, - walletChainId: OP_SEPOLIA_ID, - appChainId: OP_SEPOLIA_ID, - address: '0x1234567890abcdef1234567890abcdef12345678' as `0x${string}`, - balance: undefined, - connectingWallet: false, - switchingChain: false, - walletClient: undefined, - readOnlyClient: undefined, - switchChain: vi.fn(), - disconnect: vi.fn(), - } -} - -// biome-ignore lint/suspicious/noExplicitAny: test helper accepts flexible props -function renderButton(props: any = {}) { - return render( - - Promise.resolve('0x1' as `0x${string}`)} - {...props} - /> - , - ) -} +const system = createSystem(defaultConfig) + +const renderWithChakra = (ui: ReactNode) => + render({ui}) describe('TransactionButton', () => { - it('renders fallback when wallet not connected', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue({ - ...connectedStatus(), - isWalletConnected: false, - isWalletSynced: false, - }) - renderButton() - expect(screen.getByText('Connect Wallet')).toBeDefined() + beforeEach(() => { + vi.clearAllMocks() }) - it('renders switch chain button when wallet is on wrong chain', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue({ - ...connectedStatus(), - isWalletSynced: false, - walletChainId: 1, + it('renders connect button when wallet needs connect', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, }) - renderButton() - expect(screen.getByRole('button').textContent?.toLowerCase()).toContain('switch to') - }) - it('renders with default label when wallet is connected and synced', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue(connectedStatus()) - vi.mocked(wagmiModule.useWaitForTransactionReceipt).mockReturnValue({ - data: undefined, - } as ReturnType) - renderButton() - expect(screen.getByText('Send Transaction')).toBeDefined() - }) + renderWithChakra(Send) - it('renders with custom children label', () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue(connectedStatus()) - vi.mocked(wagmiModule.useWaitForTransactionReceipt).mockReturnValue({ - data: undefined, - } as ReturnType) - renderButton({ children: 'Deposit ETH' }) - expect(screen.getByText('Deposit ETH')).toBeDefined() + expect(screen.getByTestId('connect-wallet-button')).toBeInTheDocument() + expect(screen.queryByText('Send')).toBeNull() }) - it('shows labelSending while transaction is pending', async () => { - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue(connectedStatus()) - vi.mocked(wagmiModule.useWaitForTransactionReceipt).mockReturnValue({ - data: undefined, - } as ReturnType) - - const neverResolves = () => new Promise<`0x${string}`>(() => {}) - renderButton({ transaction: neverResolves, labelSending: 'Processing...' }) + it('renders custom fallback when provided and wallet needs connect', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, + }) - expect(screen.getByRole('button').textContent).not.toContain('Processing...') + renderWithChakra( + + Send + , + ) - fireEvent.click(screen.getByRole('button')) + expect(screen.getByTestId('custom-fallback')).toBeInTheDocument() + expect(screen.queryByText('Send')).toBeNull() + }) - await waitFor(() => { - expect(screen.getByRole('button').textContent).toContain('Processing...') + it('renders switch chain button when wallet needs chain switch', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: false, + needsChainSwitch: true, + targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< + typeof useWalletStatus + >['targetChain'], + switchChain: mockSwitchChain, }) + + renderWithChakra(Send) + + expect(screen.getByText(/Switch to/)).toBeInTheDocument() + expect(screen.getByText(/OP Mainnet/)).toBeInTheDocument() + expect(screen.queryByText('Send')).toBeNull() }) - it('calls onMined when receipt becomes available', async () => { - // biome-ignore lint/suspicious/noExplicitAny: mock receipt shape - const mockReceipt = { status: 'success', transactionHash: '0x1' } as any - const onMined = vi.fn() - - vi.mocked(useWeb3StatusModule.useWeb3Status).mockReturnValue(connectedStatus()) - // Only return a receipt when called with the matching hash so the mock - // doesn't fire prematurely before the transaction is submitted. - vi.mocked(wagmiModule.useWaitForTransactionReceipt).mockImplementation( - (config) => - ({ - data: config?.hash === '0x1' ? mockReceipt : undefined, - }) as ReturnType, + it('renders custom switch chain label when provided', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: false, + needsChainSwitch: true, + targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< + typeof useWalletStatus + >['targetChain'], + switchChain: mockSwitchChain, + }) + + renderWithChakra( + + Send + , ) - renderButton({ - transaction: () => Promise.resolve('0x1' as `0x${string}`), - onMined, + expect(screen.getByText(/Change to/)).toBeInTheDocument() + expect(screen.getByText(/OP Mainnet/)).toBeInTheDocument() + }) + + it('renders transaction button when wallet is ready', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: true, + needsConnect: false, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, }) - fireEvent.click(screen.getByRole('button')) + renderWithChakra(Send ETH) - await waitFor(() => { - expect(onMined).toHaveBeenCalledWith(mockReceipt) - }) + expect(screen.getByText('Send ETH')).toBeInTheDocument() + expect(screen.queryByTestId('connect-wallet-button')).toBeNull() }) }) diff --git a/src/components/sharedComponents/TransactionButton.tsx b/src/components/sharedComponents/TransactionButton.tsx index 8710b8a3..a3e9bb28 100644 --- a/src/components/sharedComponents/TransactionButton.tsx +++ b/src/components/sharedComponents/TransactionButton.tsx @@ -1,15 +1,22 @@ -import { withWalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' +import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' +import { useWalletStatus } from '@/src/hooks/useWalletStatus' +import type { ChainsIds } from '@/src/lib/networks.config' import { useTransactionNotification } from '@/src/providers/TransactionNotificationProvider' +import { ConnectWalletButton } from '@/src/providers/Web3Provider' import type { ButtonProps } from '@chakra-ui/react' import { useEffect, useState } from 'react' +import type { ReactElement } from 'react' import type { Hash, TransactionReceipt } from 'viem' import { useWaitForTransactionReceipt } from 'wagmi' interface TransactionButtonProps extends ButtonProps { + chainId?: ChainsIds confirmations?: number + fallback?: ReactElement labelSending?: string onMined?: (receipt: TransactionReceipt) => void + switchChainLabel?: string transaction: { (): Promise methodId?: string @@ -30,6 +37,9 @@ interface TransactionButtonProps extends ButtonProps { * @param {string} [props.labelSending='Sending...'] - Button label during pending transaction. * @param {number} [props.confirmations=1] - Number of confirmations to wait for. * @param {ReactNode} [props.children='Send Transaction'] - Button content. + * @param {ChainsIds} [props.chainId] - Target chain ID for wallet status verification. + * @param {ReactElement} [props.fallback] - Custom fallback when wallet needs connection. + * @param {string} [props.switchChainLabel='Switch to'] - Label for the switch chain button. * @param {ButtonProps} props.restProps - Additional props inherited from Chakra UI ButtonProps. * * @example @@ -44,60 +54,75 @@ interface TransactionButtonProps extends ButtonProps { * * ``` */ -const TransactionButton = withWalletStatusVerifier( - ({ - children = 'Send Transaction', - confirmations = 1, - disabled, - labelSending = 'Sending...', - onMined, - transaction, - ...restProps - }) => { - const [hash, setHash] = useState() - const [isPending, setIsPending] = useState(false) +function TransactionButton({ + chainId, + children = 'Send Transaction', + confirmations = 1, + disabled, + fallback = , + labelSending = 'Sending...', + onMined, + switchChainLabel = 'Switch to', + transaction, + ...restProps +}: TransactionButtonProps) { + const { needsConnect, needsChainSwitch, targetChain, switchChain } = useWalletStatus({ chainId }) - const { watchTx } = useTransactionNotification() - const { data: receipt } = useWaitForTransactionReceipt({ - hash: hash, - confirmations, - }) + const [hash, setHash] = useState() + const [isPending, setIsPending] = useState(false) - useEffect(() => { - const handleMined = async () => { - if (receipt && isPending) { - await onMined?.(receipt) - setIsPending(false) - setHash(undefined) - } - } - - handleMined() - }, [isPending, onMined, receipt]) + const { watchTx } = useTransactionNotification() + const { data: receipt } = useWaitForTransactionReceipt({ + hash: hash, + confirmations, + }) - const handleSendTransaction = async () => { - setIsPending(true) - try { - const txPromise = transaction() - watchTx({ txPromise, methodId: transaction.methodId }) - const hash = await txPromise - setHash(hash) - } catch (error: unknown) { - console.error('Error sending transaction', error instanceof Error ? error.message : error) + useEffect(() => { + const handleMined = async () => { + if (receipt && isPending) { + await onMined?.(receipt) setIsPending(false) + setHash(undefined) } } + handleMined() + }, [isPending, onMined, receipt]) + + if (needsConnect) { + return fallback + } + + if (needsChainSwitch) { return ( - - {isPending ? labelSending : children} - + switchChain(targetChain.id as ChainsIds)}> + {switchChainLabel} {targetChain.name} + ) - }, -) + } + + const handleSendTransaction = async () => { + setIsPending(true) + try { + const txPromise = transaction() + watchTx({ txPromise, methodId: transaction.methodId }) + const hash = await txPromise + setHash(hash) + } catch (error: unknown) { + console.error('Error sending transaction', error instanceof Error ? error.message : error) + setIsPending(false) + } + } + + return ( + + {isPending ? labelSending : children} + + ) +} export default TransactionButton From ba1d48253c1aff1a7d5c4391a98495f1c8ee20fc Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 13:38:28 +0200 Subject: [PATCH 005/115] refactor: SignButton internalizes wallet verification SignButton now uses useWalletStatus hook directly instead of withWalletStatusVerifier HoC. Adds optional chainId, fallback, and switchChainLabel props. Closes part of #303 --- .../sharedComponents/SignButton.test.tsx | 130 ++++++++++++++++++ .../sharedComponents/SignButton.tsx | 95 ++++++++----- 2 files changed, 189 insertions(+), 36 deletions(-) create mode 100644 src/components/sharedComponents/SignButton.test.tsx diff --git a/src/components/sharedComponents/SignButton.test.tsx b/src/components/sharedComponents/SignButton.test.tsx new file mode 100644 index 00000000..0b826f52 --- /dev/null +++ b/src/components/sharedComponents/SignButton.test.tsx @@ -0,0 +1,130 @@ +import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' +import { render, screen } from '@testing-library/react' +import type { ReactNode } from 'react' +import { createElement } from 'react' +import { beforeEach, describe, expect, it, vi } from 'vitest' + +const mockSwitchChain = vi.fn() +const mockSignMessageAsync = vi.fn() +const mockWatchSignature = vi.fn() + +vi.mock('@/src/hooks/useWalletStatus', () => ({ + useWalletStatus: vi.fn(() => ({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' }, + switchChain: mockSwitchChain, + })), +})) + +vi.mock('@/src/providers/Web3Provider', () => ({ + ConnectWalletButton: () => + createElement( + 'button', + { type: 'button', 'data-testid': 'connect-wallet-button' }, + 'Connect Wallet', + ), +})) + +vi.mock('@/src/providers/TransactionNotificationProvider', () => ({ + useTransactionNotification: vi.fn(() => ({ + watchSignature: mockWatchSignature, + })), +})) + +vi.mock('wagmi', () => ({ + useSignMessage: vi.fn(() => ({ + isPending: false, + signMessageAsync: mockSignMessageAsync, + })), +})) + +const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') +const mockedUseWalletStatus = vi.mocked(useWalletStatus) + +const system = createSystem(defaultConfig) + +const renderWithChakra = (ui: ReactNode) => + render({ui}) + +describe('SignButton', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + it('renders connect button when wallet needs connect', async () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, + }) + + const { default: SignButton } = await import('./SignButton') + + renderWithChakra() + + expect(screen.getByTestId('connect-wallet-button')).toBeInTheDocument() + expect(screen.queryByText('Sign Message')).toBeNull() + }) + + it('renders custom fallback when provided and wallet needs connect', async () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, + }) + + const { default: SignButton } = await import('./SignButton') + + renderWithChakra( + , + ) + + expect(screen.getByTestId('custom-fallback')).toBeInTheDocument() + expect(screen.queryByText('Sign Message')).toBeNull() + }) + + it('renders switch chain button when wallet needs chain switch', async () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: false, + needsConnect: false, + needsChainSwitch: true, + targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< + typeof useWalletStatus + >['targetChain'], + switchChain: mockSwitchChain, + }) + + const { default: SignButton } = await import('./SignButton') + + renderWithChakra() + + expect(screen.getByText(/Switch to/)).toBeInTheDocument() + expect(screen.getByText(/OP Mainnet/)).toBeInTheDocument() + expect(screen.queryByText('Sign Message')).toBeNull() + }) + + it('renders sign button when wallet is ready', async () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: true, + needsConnect: false, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + switchChain: mockSwitchChain, + }) + + const { default: SignButton } = await import('./SignButton') + + renderWithChakra() + + expect(screen.getByText('Sign Message')).toBeInTheDocument() + }) +}) diff --git a/src/components/sharedComponents/SignButton.tsx b/src/components/sharedComponents/SignButton.tsx index d548ab4a..b27eefaf 100644 --- a/src/components/sharedComponents/SignButton.tsx +++ b/src/components/sharedComponents/SignButton.tsx @@ -1,15 +1,21 @@ -import { withWalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' +import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' +import { useWalletStatus } from '@/src/hooks/useWalletStatus' +import type { ChainsIds } from '@/src/lib/networks.config' import { useTransactionNotification } from '@/src/providers/TransactionNotificationProvider' +import { ConnectWalletButton } from '@/src/providers/Web3Provider' import { type ButtonProps, chakra } from '@chakra-ui/react' -import type { FC } from 'react' +import type { FC, ReactElement } from 'react' import { useSignMessage } from 'wagmi' interface SignButtonProps extends Omit { + chainId?: ChainsIds + fallback?: ReactElement label?: string labelSigning?: string message: string onError?: (error: Error) => void onSign?: (signature: string) => void + switchChainLabel?: string } /** @@ -23,6 +29,9 @@ interface SignButtonProps extends Omit { * @param {(error: Error) => void} [props.onError] - Callback function called when an error occurs. * @param {string} [props.label='Sign Message'] - The label for the button (alternative to children). * @param {string} [props.labelSigning='Signing...'] - The label for the button when the message is being signed. + * @param {ChainsIds} [props.chainId] - Target chain ID for wallet status verification. + * @param {ReactElement} [props.fallback] - Custom fallback when wallet needs connect. + * @param {string} [props.switchChainLabel='Switch to'] - Label for the switch chain button. * @param {ButtonProps} [props.restProps] - Additional props inherited from Chakra UI ButtonProps. * * @example @@ -34,44 +43,58 @@ interface SignButtonProps extends Omit { * /> * ``` */ -const SignButton: FC = withWalletStatusVerifier( - ({ - children = 'Sign Message', - disabled, - labelSigning = 'Signing...', - message, - onError, - onSign, - ...restProps - }: SignButtonProps) => { - const { watchSignature } = useTransactionNotification() +const SignButton: FC = ({ + chainId, + children = 'Sign Message', + disabled, + fallback = , + labelSigning = 'Signing...', + message, + onError, + onSign, + switchChainLabel = 'Switch to', + ...restProps +}) => { + const { needsConnect, needsChainSwitch, targetChain, switchChain } = useWalletStatus({ chainId }) + const { watchSignature } = useTransactionNotification() - const { isPending, signMessageAsync } = useSignMessage({ - mutation: { - onSuccess(data) { - onSign?.(data) - }, - onError(error) { - onError?.(error) - }, + const { isPending, signMessageAsync } = useSignMessage({ + mutation: { + onSuccess(data) { + onSign?.(data) }, - }) + onError(error) { + onError?.(error) + }, + }, + }) + + if (needsConnect) { + return fallback + } + if (needsChainSwitch) { return ( - { - watchSignature({ - message: 'Signing message...', - signaturePromise: signMessageAsync({ message }), - }) - }} - {...restProps} - > - {isPending ? labelSigning : children} - + switchChain(targetChain.id as ChainsIds)}> + {switchChainLabel} {targetChain.name} + ) - }, -) + } + + return ( + { + watchSignature({ + message: 'Signing message...', + signaturePromise: signMessageAsync({ message }), + }) + }} + {...restProps} + > + {isPending ? labelSigning : children} + + ) +} export default SignButton From 544e17f87b4d5c0abe5ced7ab7456253e831ddd0 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 13:38:36 +0200 Subject: [PATCH 006/115] refactor: demo components use WalletStatusVerifier wrapper instead of HoC NativeToken, ERC20ApproveAndTransferButton, and OptimismCrossDomainMessenger now use the declarative wrapper instead of withWalletStatusVerifier. Suspense HoCs (withSuspense, withSuspenseAndRetry) are preserved. Closes #303 --- .../OptimismCrossDomainMessenger/index.tsx | 43 ++++----- .../ERC20ApproveAndTransferButton/index.tsx | 95 +++++++++---------- .../demos/TransactionButton/NativeToken.tsx | 57 ++++++----- tsconfig.json | 2 +- 4 files changed, 95 insertions(+), 102 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx index 00b518bf..ee53d487 100644 --- a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx @@ -2,7 +2,7 @@ import Icon from '@/src/components/pageComponents/home/Examples/demos/OptimismCr import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import Hash from '@/src/components/sharedComponents/Hash' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' -import { withWalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import { getContract } from '@/src/constants/contracts/contracts' import { useL1CrossDomainMessengerProxy } from '@/src/hooks/useOPL1CrossDomainMessengerProxy' import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' @@ -15,27 +15,27 @@ import { parseEther } from 'viem' import { optimismSepolia, sepolia } from 'viem/chains' import { extractTransactionDepositedLogs, getL2TransactionHash } from 'viem/op-stack' -const OptimismCrossDomainMessenger = withWalletStatusVerifier( - withSuspenseAndRetry(() => { - // https://sepolia-optimism.etherscan.io/address/0xb50201558b00496a145fe76f7424749556e326d8 - const AAVEProxy = '0xb50201558b00496a145fe76f7424749556e326d8' - const { address: walletAddress, readOnlyClient } = useWeb3StatusConnected() +const OptimismCrossDomainMessenger = withSuspenseAndRetry(() => { + // https://sepolia-optimism.etherscan.io/address/0xb50201558b00496a145fe76f7424749556e326d8 + const AAVEProxy = '0xb50201558b00496a145fe76f7424749556e326d8' + const { address: walletAddress, readOnlyClient } = useWeb3StatusConnected() - const contract = getContract('AAVEWeth', optimismSepolia.id) - const depositValue = parseEther('0.01') + const contract = getContract('AAVEWeth', optimismSepolia.id) + const depositValue = parseEther('0.01') - const [l2Hash, setL2Hash] = useState

(null) + const [l2Hash, setL2Hash] = useState
(null) - const sendCrossChainMessage = useL1CrossDomainMessengerProxy({ - fromChain: sepolia, - contractName: 'AAVEWeth', - functionName: 'depositETH', - l2ContractAddress: contract.address, - args: [AAVEProxy, walletAddress, 0], - value: depositValue, - }) + const sendCrossChainMessage = useL1CrossDomainMessengerProxy({ + fromChain: sepolia, + contractName: 'AAVEWeth', + functionName: 'depositETH', + l2ContractAddress: contract.address, + args: [AAVEProxy, walletAddress, 0], + value: depositValue, + }) - return ( + return ( +

Deposit 0.01 ETH in{' '} @@ -76,10 +76,9 @@ const OptimismCrossDomainMessenger = withWalletStatusVerifier( )} - ) - }), - { chainId: sepolia.id }, -) + + ) +}) const optimismCrossdomainMessenger = { demo: , diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx index 66fec3ba..32ade80f 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx @@ -1,7 +1,7 @@ import BaseERC20ApproveAndTransferButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton' import MintUSDC from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' -import { withWalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import { useSuspenseReadErc20BalanceOf } from '@/src/hooks/generated' import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' @@ -57,59 +57,56 @@ const ABIExample = [ * * Works only on Sepolia chain. */ -const ERC20ApproveAndTransferButton = withWalletStatusVerifier( - withSuspense(() => { - const { address } = useWeb3StatusConnected() - const { writeContractAsync } = useWriteContract() +const ERC20ApproveAndTransferButton = withSuspense(() => { + const { address } = useWeb3StatusConnected() + const { writeContractAsync } = useWriteContract() - const { data: balance, refetch: refetchBalance } = useSuspenseReadErc20BalanceOf({ - address: tokenUSDC_sepolia.address as Address, - args: [address], - }) + const { data: balance, refetch: refetchBalance } = useSuspenseReadErc20BalanceOf({ + address: tokenUSDC_sepolia.address as Address, + args: [address], + }) - // AAVE staging contract pool address - const spender = '0x6Ae43d3271ff6888e7Fc43Fd7321a503ff738951' + // AAVE staging contract pool address + const spender = '0x6Ae43d3271ff6888e7Fc43Fd7321a503ff738951' - const amount = 10000000000n // 10,000.00 USDC + const amount = 10000000000n // 10,000.00 USDC - const handleTransaction = () => - writeContractAsync({ - abi: ABIExample, - address: spender, - functionName: 'supply', - args: [tokenUSDC_sepolia.address as Address, amount, address, 0], - }) - handleTransaction.methodId = 'Supply USDC' + const handleTransaction = () => + writeContractAsync({ + abi: ABIExample, + address: spender, + functionName: 'supply', + args: [tokenUSDC_sepolia.address as Address, amount, address, 0], + }) + handleTransaction.methodId = 'Supply USDC' - const formattedAmount = formatNumberOrString( - formatUnits(amount, tokenUSDC_sepolia.decimals), - NumberType.TokenTx, - ) + const formattedAmount = formatNumberOrString( + formatUnits(amount, tokenUSDC_sepolia.decimals), + NumberType.TokenTx, + ) - return ( - <> - {balance < amount ? ( - - - - ) : ( - refetchBalance} - spender={spender} - token={tokenUSDC_sepolia} - transaction={handleTransaction} - /> - )} - - ) - }), - { chainId: sepolia.id }, // this DEMO component only works on sepolia chain -) + return ( + + {balance < amount ? ( + + + + ) : ( + refetchBalance} + spender={spender} + token={tokenUSDC_sepolia} + transaction={handleTransaction} + /> + )} + + ) +}) export default ERC20ApproveAndTransferButton diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx index a1894296..13c32cdd 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx @@ -1,6 +1,6 @@ import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' -import { withWalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' @@ -15,32 +15,32 @@ import { useSendTransaction } from 'wagmi' * * Works only on Sepolia chain. */ -const NativeToken = withWalletStatusVerifier( - () => { - const [isModalOpen, setIsModalOpen] = useState(false) - const { address } = useWeb3StatusConnected() - const { sendTransactionAsync } = useSendTransaction() - const [minedMessage, setMinedMessage] = useState() +const NativeToken = () => { + const [isModalOpen, setIsModalOpen] = useState(false) + const { address } = useWeb3StatusConnected() + const { sendTransactionAsync } = useSendTransaction() + const [minedMessage, setMinedMessage] = useState() - const handleOnMined = (receipt: TransactionReceipt) => { - setMinedMessage( - <> - Hash: {receipt.transactionHash} - , - ) - setIsModalOpen(true) - } + const handleOnMined = (receipt: TransactionReceipt) => { + setMinedMessage( + <> + Hash: {receipt.transactionHash} + , + ) + setIsModalOpen(true) + } - const handleSendTransaction = (): Promise => { - // Send native token - return sendTransactionAsync({ - to: address, - value: parseEther('0.1'), - }) - } - handleSendTransaction.methodId = 'sendTransaction' + const handleSendTransaction = (): Promise => { + // Send native token + return sendTransactionAsync({ + to: address, + value: parseEther('0.1'), + }) + } + handleSendTransaction.methodId = 'sendTransaction' - return ( + return ( + - ) - }, - { - chainId: sepolia.id, // this DEMO component only works on sepolia chain - }, -) + + ) +} export default NativeToken diff --git a/tsconfig.json b/tsconfig.json index e1c3e446..df3a50b5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,7 +18,7 @@ "skipLibCheck": true, "strict": true, "target": "ESNext", - "types": ["vitest/globals"], + "types": ["vitest/globals", "@testing-library/jest-dom/vitest"], "useDefineForClassFields": true, "paths": { "@/src/*": ["./src/*"], From c9f54aa475299b20066f4630189f2ef6669abf57 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 14:03:34 +0200 Subject: [PATCH 007/115] chore: fix TypeDoc warnings for TransactionButton and SignButton Add @param, @returns, @example, @throws to TypeDoc blockTags config (they were being treated as unknown). Move param docs to interface properties where TypeDoc can resolve them for destructured params. Reduces TypeDoc warnings from 330 to 9 (remaining are in unrelated files). --- .../sharedComponents/SignButton.tsx | 24 ++++++++--------- .../sharedComponents/TransactionButton.tsx | 26 +++++++------------ typedoc.json | 2 +- 3 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/components/sharedComponents/SignButton.tsx b/src/components/sharedComponents/SignButton.tsx index b27eefaf..b75e7837 100644 --- a/src/components/sharedComponents/SignButton.tsx +++ b/src/components/sharedComponents/SignButton.tsx @@ -8,31 +8,29 @@ import type { FC, ReactElement } from 'react' import { useSignMessage } from 'wagmi' interface SignButtonProps extends Omit { + /** Target chain ID for wallet status verification. */ chainId?: ChainsIds + /** Custom fallback when wallet needs connection. Defaults to ConnectWalletButton. */ fallback?: ReactElement + /** Alternative label for the button. */ label?: string + /** Button label while signing. Defaults to 'Signing...'. */ labelSigning?: string + /** The message to sign. */ message: string + /** Callback function called when an error occurs. */ onError?: (error: Error) => void + /** Callback function called when the message is signed. */ onSign?: (signature: string) => void + /** Label for the switch chain button. Defaults to 'Switch to'. */ switchChainLabel?: string } /** - * SignButton component that allows users to sign a message. + * Self-contained message signing button with wallet verification. * - * @param {SignButtonProps} props - SignButton component props. - * @param {string} props.message - The message to sign. - * @param {string|ReactNode} [props.children='Sign Message'] - The content to display in the button. - * @param {boolean} [props.disabled] - Whether the button is disabled. - * @param {(signature: string) => void} [props.onSign] - Callback function called when the message is signed. - * @param {(error: Error) => void} [props.onError] - Callback function called when an error occurs. - * @param {string} [props.label='Sign Message'] - The label for the button (alternative to children). - * @param {string} [props.labelSigning='Signing...'] - The label for the button when the message is being signed. - * @param {ChainsIds} [props.chainId] - Target chain ID for wallet status verification. - * @param {ReactElement} [props.fallback] - Custom fallback when wallet needs connect. - * @param {string} [props.switchChainLabel='Switch to'] - Label for the switch chain button. - * @param {ButtonProps} [props.restProps] - Additional props inherited from Chakra UI ButtonProps. + * Handles wallet connection status internally — shows a connect button if not connected, + * a switch chain button if on the wrong chain, or the sign button when ready. * * @example * ```tsx diff --git a/src/components/sharedComponents/TransactionButton.tsx b/src/components/sharedComponents/TransactionButton.tsx index a3e9bb28..17af5fda 100644 --- a/src/components/sharedComponents/TransactionButton.tsx +++ b/src/components/sharedComponents/TransactionButton.tsx @@ -11,12 +11,19 @@ import type { Hash, TransactionReceipt } from 'viem' import { useWaitForTransactionReceipt } from 'wagmi' interface TransactionButtonProps extends ButtonProps { + /** Target chain ID for wallet status verification. */ chainId?: ChainsIds + /** Number of confirmations to wait for. Defaults to 1. */ confirmations?: number + /** Custom fallback when wallet needs connection. Defaults to ConnectWalletButton. */ fallback?: ReactElement + /** Button label during pending transaction. Defaults to 'Sending...'. */ labelSending?: string + /** Callback function called when transaction is mined. */ onMined?: (receipt: TransactionReceipt) => void + /** Label for the switch chain button. Defaults to 'Switch to'. */ switchChainLabel?: string + /** Function that initiates the transaction and returns a hash. */ transaction: { (): Promise methodId?: string @@ -24,23 +31,10 @@ interface TransactionButtonProps extends ButtonProps { } /** - * TransactionButton component that handles blockchain transaction submission and monitoring. + * Self-contained transaction button with wallet verification, submission, and confirmation tracking. * - * Integrates with writeContractSync or sendTransactionSync functions to handle transaction - * submission and wait for confirmation. Displays transaction status and calls the onMined - * callback when the transaction is confirmed. - * - * @param {TransactionButtonProps} props - TransactionButton component props. - * @param {() => Promise} props.transaction - Function that initiates the transaction. - * @param {(receipt: TransactionReceipt) => void} [props.onMined] - Callback function called when transaction is mined. - * @param {boolean} [props.disabled] - Whether the button is disabled. - * @param {string} [props.labelSending='Sending...'] - Button label during pending transaction. - * @param {number} [props.confirmations=1] - Number of confirmations to wait for. - * @param {ReactNode} [props.children='Send Transaction'] - Button content. - * @param {ChainsIds} [props.chainId] - Target chain ID for wallet status verification. - * @param {ReactElement} [props.fallback] - Custom fallback when wallet needs connection. - * @param {string} [props.switchChainLabel='Switch to'] - Label for the switch chain button. - * @param {ButtonProps} props.restProps - Additional props inherited from Chakra UI ButtonProps. + * Handles wallet connection status internally — shows a connect button if not connected, + * a switch chain button if on the wrong chain, or the transaction button when ready. * * @example * ```tsx diff --git a/typedoc.json b/typedoc.json index 41da282c..c2c7e15f 100644 --- a/typedoc.json +++ b/typedoc.json @@ -51,7 +51,7 @@ "visibilityFilters": { "inherited": true }, - "blockTags": ["@dev", "@source", "@name", "@description"], + "blockTags": ["@dev", "@source", "@name", "@description", "@param", "@returns", "@example", "@throws"], "validation": { "invalidLink": true, "notDocumented": false From 2bbdfd486df170054c397aeb0fd74376b944f50c Mon Sep 17 00:00:00 2001 From: fernandomg Date: Mon, 30 Mar 2026 15:10:12 +0200 Subject: [PATCH 008/115] fix: address Copilot review feedback - Add targetChainId to useWalletStatus return, removing unsafe `as ChainsIds` casts from all consumers - Fix onSuccess callback in ERC20ApproveAndTransferButton demo (was returning refetchBalance instead of passing it directly) --- .../ERC20ApproveAndTransferButton/index.tsx | 2 +- src/components/sharedComponents/SignButton.test.tsx | 5 +++++ src/components/sharedComponents/SignButton.tsx | 5 +++-- .../sharedComponents/TransactionButton.test.tsx | 6 ++++++ src/components/sharedComponents/TransactionButton.tsx | 5 +++-- .../sharedComponents/WalletStatusVerifier.test.tsx | 6 ++++++ .../sharedComponents/WalletStatusVerifier.tsx | 5 +++-- src/hooks/useWalletStatus.test.ts | 2 ++ src/hooks/useWalletStatus.ts | 11 +++++------ 9 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx index 32ade80f..58b231b8 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx @@ -99,7 +99,7 @@ const ERC20ApproveAndTransferButton = withSuspense(() => { amount={amount} label={`Supply ${formattedAmount} USDC`} labelSending="Sending..." - onSuccess={() => refetchBalance} + onSuccess={() => refetchBalance()} spender={spender} token={tokenUSDC_sepolia} transaction={handleTransaction} diff --git a/src/components/sharedComponents/SignButton.test.tsx b/src/components/sharedComponents/SignButton.test.tsx index 0b826f52..f4e07cae 100644 --- a/src/components/sharedComponents/SignButton.test.tsx +++ b/src/components/sharedComponents/SignButton.test.tsx @@ -14,6 +14,7 @@ vi.mock('@/src/hooks/useWalletStatus', () => ({ needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' }, + targetChainId: 1, switchChain: mockSwitchChain, })), })) @@ -59,6 +60,7 @@ describe('SignButton', () => { needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) @@ -76,6 +78,7 @@ describe('SignButton', () => { needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) @@ -100,6 +103,7 @@ describe('SignButton', () => { targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< typeof useWalletStatus >['targetChain'], + targetChainId: 10, switchChain: mockSwitchChain, }) @@ -118,6 +122,7 @@ describe('SignButton', () => { needsConnect: false, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) diff --git a/src/components/sharedComponents/SignButton.tsx b/src/components/sharedComponents/SignButton.tsx index b75e7837..5abcdd4c 100644 --- a/src/components/sharedComponents/SignButton.tsx +++ b/src/components/sharedComponents/SignButton.tsx @@ -53,7 +53,8 @@ const SignButton: FC = ({ switchChainLabel = 'Switch to', ...restProps }) => { - const { needsConnect, needsChainSwitch, targetChain, switchChain } = useWalletStatus({ chainId }) + const { needsConnect, needsChainSwitch, targetChain, targetChainId, switchChain } = + useWalletStatus({ chainId }) const { watchSignature } = useTransactionNotification() const { isPending, signMessageAsync } = useSignMessage({ @@ -73,7 +74,7 @@ const SignButton: FC = ({ if (needsChainSwitch) { return ( - switchChain(targetChain.id as ChainsIds)}> + switchChain(targetChainId)}> {switchChainLabel} {targetChain.name} ) diff --git a/src/components/sharedComponents/TransactionButton.test.tsx b/src/components/sharedComponents/TransactionButton.test.tsx index 474fc0fa..deb77f9d 100644 --- a/src/components/sharedComponents/TransactionButton.test.tsx +++ b/src/components/sharedComponents/TransactionButton.test.tsx @@ -14,6 +14,7 @@ vi.mock('@/src/hooks/useWalletStatus', () => ({ needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' }, + targetChainId: 1, switchChain: mockSwitchChain, })), })) @@ -58,6 +59,7 @@ describe('TransactionButton', () => { needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) @@ -73,6 +75,7 @@ describe('TransactionButton', () => { needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) @@ -97,6 +100,7 @@ describe('TransactionButton', () => { targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< typeof useWalletStatus >['targetChain'], + targetChainId: 10, switchChain: mockSwitchChain, }) @@ -115,6 +119,7 @@ describe('TransactionButton', () => { targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< typeof useWalletStatus >['targetChain'], + targetChainId: 10, switchChain: mockSwitchChain, }) @@ -137,6 +142,7 @@ describe('TransactionButton', () => { needsConnect: false, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) diff --git a/src/components/sharedComponents/TransactionButton.tsx b/src/components/sharedComponents/TransactionButton.tsx index 17af5fda..fd43ae32 100644 --- a/src/components/sharedComponents/TransactionButton.tsx +++ b/src/components/sharedComponents/TransactionButton.tsx @@ -60,7 +60,8 @@ function TransactionButton({ transaction, ...restProps }: TransactionButtonProps) { - const { needsConnect, needsChainSwitch, targetChain, switchChain } = useWalletStatus({ chainId }) + const { needsConnect, needsChainSwitch, targetChain, targetChainId, switchChain } = + useWalletStatus({ chainId }) const [hash, setHash] = useState() const [isPending, setIsPending] = useState(false) @@ -89,7 +90,7 @@ function TransactionButton({ if (needsChainSwitch) { return ( - switchChain(targetChain.id as ChainsIds)}> + switchChain(targetChainId)}> {switchChainLabel} {targetChain.name} ) diff --git a/src/components/sharedComponents/WalletStatusVerifier.test.tsx b/src/components/sharedComponents/WalletStatusVerifier.test.tsx index dd8d6acd..9f188e66 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.test.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.test.tsx @@ -13,6 +13,7 @@ vi.mock('@/src/hooks/useWalletStatus', () => ({ needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' }, + targetChainId: 1, switchChain: mockSwitchChain, })), })) @@ -45,6 +46,7 @@ describe('WalletStatusVerifier', () => { needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) @@ -66,6 +68,7 @@ describe('WalletStatusVerifier', () => { needsConnect: true, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) @@ -89,6 +92,7 @@ describe('WalletStatusVerifier', () => { targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< typeof useWalletStatus >['targetChain'], + targetChainId: 10, switchChain: mockSwitchChain, }) @@ -111,6 +115,7 @@ describe('WalletStatusVerifier', () => { needsConnect: false, needsChainSwitch: false, targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, switchChain: mockSwitchChain, }) @@ -135,6 +140,7 @@ describe('WalletStatusVerifier', () => { targetChain: { id: 10, name: 'OP Mainnet' } as ReturnType< typeof useWalletStatus >['targetChain'], + targetChainId: 10, switchChain: mockSwitchChain, }) diff --git a/src/components/sharedComponents/WalletStatusVerifier.tsx b/src/components/sharedComponents/WalletStatusVerifier.tsx index c0e29756..d5cfef50 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.tsx @@ -29,7 +29,8 @@ const WalletStatusVerifier: FC = ({ fallback = , labelSwitchChain = 'Switch to', }: WalletStatusVerifierProps) => { - const { needsConnect, needsChainSwitch, targetChain, switchChain } = useWalletStatus({ chainId }) + const { needsConnect, needsChainSwitch, targetChain, targetChainId, switchChain } = + useWalletStatus({ chainId }) if (needsConnect) { return fallback @@ -37,7 +38,7 @@ const WalletStatusVerifier: FC = ({ if (needsChainSwitch) { return ( - switchChain(targetChain.id as ChainsIds)}> + switchChain(targetChainId)}> {labelSwitchChain} {targetChain.name} ) diff --git a/src/hooks/useWalletStatus.test.ts b/src/hooks/useWalletStatus.test.ts index 396ca1ec..ce5bd0fd 100644 --- a/src/hooks/useWalletStatus.test.ts +++ b/src/hooks/useWalletStatus.test.ts @@ -93,6 +93,7 @@ describe('useWalletStatus', () => { expect(result.current.needsChainSwitch).toBe(true) expect(result.current.isReady).toBe(false) expect(result.current.targetChain).toEqual({ id: 1, name: 'Ethereum' }) + expect(result.current.targetChainId).toBe(1) }) it('returns isReady when connected and on correct chain', () => { @@ -125,6 +126,7 @@ describe('useWalletStatus', () => { expect(result.current.needsChainSwitch).toBe(true) expect(result.current.isReady).toBe(false) expect(result.current.targetChain).toEqual({ id: 10, name: 'OP Mainnet' }) + expect(result.current.targetChainId).toBe(10) }) it('falls back to chains[0].id when no chainId or appChainId', () => { diff --git a/src/hooks/useWalletStatus.ts b/src/hooks/useWalletStatus.ts index f51c9ef4..3afae7cc 100644 --- a/src/hooks/useWalletStatus.ts +++ b/src/hooks/useWalletStatus.ts @@ -13,6 +13,7 @@ interface WalletStatus { needsConnect: boolean needsChainSwitch: boolean targetChain: Chain + targetChainId: ChainsIds switchChain: (chainId: ChainsIds) => void } @@ -20,14 +21,11 @@ export const useWalletStatus = (options?: UseWalletStatusOptions): WalletStatus const { appChainId, isWalletConnected, isWalletSynced, switchChain, walletChainId } = useWeb3Status() - const targetChain = extractChain({ - chains, - id: options?.chainId || appChainId || chains[0].id, - }) + const targetChainId = options?.chainId || appChainId || chains[0].id + const targetChain = extractChain({ chains, id: targetChainId }) const needsConnect = !isWalletConnected - const needsChainSwitch = - isWalletConnected && (!isWalletSynced || walletChainId !== targetChain.id) + const needsChainSwitch = isWalletConnected && (!isWalletSynced || walletChainId !== targetChainId) const isReady = isWalletConnected && !needsChainSwitch return { @@ -35,6 +33,7 @@ export const useWalletStatus = (options?: UseWalletStatusOptions): WalletStatus needsConnect, needsChainSwitch, targetChain, + targetChainId, switchChain, } } From b4607fc125acdcd0682beb7f8e72851cac1fe276 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Tue, 31 Mar 2026 18:10:58 +0200 Subject: [PATCH 009/115] fix: remove unused label prop from SignButtonProps --- src/components/sharedComponents/SignButton.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/sharedComponents/SignButton.tsx b/src/components/sharedComponents/SignButton.tsx index 5abcdd4c..84b09906 100644 --- a/src/components/sharedComponents/SignButton.tsx +++ b/src/components/sharedComponents/SignButton.tsx @@ -12,8 +12,6 @@ interface SignButtonProps extends Omit { chainId?: ChainsIds /** Custom fallback when wallet needs connection. Defaults to ConnectWalletButton. */ fallback?: ReactElement - /** Alternative label for the button. */ - label?: string /** Button label while signing. Defaults to 'Signing...'. */ labelSigning?: string /** The message to sign. */ From 6d08c287571aacde890960f269a75ac023cd3e72 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Tue, 31 Mar 2026 18:11:25 +0200 Subject: [PATCH 010/115] feat: enforce useWeb3StatusConnected via WalletStatusVerifier context WalletStatusVerifier now provides a React Context with the connected wallet data. useWeb3StatusConnected reads from that context and throws a DeveloperError if called outside the tree, so error boundaries show the message without a "Try Again" button. - Rename labelSwitchChain to switchChainLabel for consistency - useOPL1CrossDomainMessengerProxy accepts walletAddress parameter - Demo components wrap with WalletStatusVerifier from outside - Add DeveloperError class for non-retriable structural errors --- .../OptimismCrossDomainMessenger/index.tsx | 89 ++++++++++--------- .../ERC20ApproveAndTransferButton.tsx | 3 +- .../MintUSDC.tsx | 2 +- .../ERC20ApproveAndTransferButton/index.tsx | 41 ++++----- .../demos/TransactionButton/NativeToken.tsx | 74 ++++++++------- .../WalletStatusVerifier.test.tsx | 39 +++++++- .../sharedComponents/WalletStatusVerifier.tsx | 37 ++++++-- src/hooks/useOPL1CrossDomainMessengerProxy.ts | 6 +- src/hooks/useWeb3Status.test.ts | 48 ++++++++-- src/hooks/useWeb3Status.tsx | 9 -- src/utils/DeveloperError.ts | 7 ++ src/utils/suspenseWrapper.tsx | 12 ++- 12 files changed, 234 insertions(+), 133 deletions(-) create mode 100644 src/utils/DeveloperError.ts diff --git a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx index ee53d487..8a92f454 100644 --- a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx @@ -3,9 +3,9 @@ import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import Hash from '@/src/components/sharedComponents/Hash' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { getContract } from '@/src/constants/contracts/contracts' import { useL1CrossDomainMessengerProxy } from '@/src/hooks/useOPL1CrossDomainMessengerProxy' -import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' import { getExplorerLink } from '@/src/utils/getExplorerLink' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' import { Flex, Span } from '@chakra-ui/react' @@ -32,56 +32,59 @@ const OptimismCrossDomainMessenger = withSuspenseAndRetry(() => { l2ContractAddress: contract.address, args: [AAVEProxy, walletAddress, 0], value: depositValue, + walletAddress, }) return ( - - -

- Deposit 0.01 ETH in{' '} - - Optimism Sepolia AAVE market - {' '} - from Sepolia. -

- { - setL2Hash(null) - const hash = await sendCrossChainMessage() - const receipt = await readOnlyClient.waitForTransactionReceipt({ hash }) - const [log] = extractTransactionDepositedLogs(receipt) - const l2Hash = getL2TransactionHash({ log }) - setL2Hash(l2Hash) - return hash - }} + +

+ Deposit 0.01 ETH in{' '} + - Deposit ETH - - {l2Hash && ( - - OpSepolia tx - - - )} - - + Optimism Sepolia AAVE market + {' '} + from Sepolia. +

+ { + setL2Hash(null) + const hash = await sendCrossChainMessage() + const receipt = await readOnlyClient.waitForTransactionReceipt({ hash }) + const [log] = extractTransactionDepositedLogs(receipt) + const l2Hash = getL2TransactionHash({ log }) + setL2Hash(l2Hash) + return hash + }} + > + Deposit ETH + + {l2Hash && ( + + OpSepolia tx + + + )} +
) }) const optimismCrossdomainMessenger = { - demo: , + demo: ( + + + + ), href: 'https://bootnodedev.github.io/dAppBooster/functions/hooks_useOPL1CrossDomainMessengerProxy.useL1CrossDomainMessengerProxy.html', icon: , text: ( diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx index 93db6525..9cb5fdcb 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx @@ -1,7 +1,8 @@ import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { useSuspenseReadErc20Allowance } from '@/src/hooks/generated' -import { useWeb3Status, useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import { getExplorerLink } from '@/src/utils/getExplorerLink' import type { FC } from 'react' diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx index 7dbad8f9..c17124e2 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx @@ -1,7 +1,7 @@ import TransactionButton from '@/src/components/sharedComponents/TransactionButton' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { AaveFaucetABI } from '@/src/constants/contracts/abis/AaveFaucet' import { getContract } from '@/src/constants/contracts/contracts' -import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' import { sepolia } from 'viem/chains' import { useWriteContract } from 'wagmi' diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx index 58b231b8..dad63df9 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx @@ -1,9 +1,8 @@ import BaseERC20ApproveAndTransferButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton' import MintUSDC from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { useSuspenseReadErc20BalanceOf } from '@/src/hooks/generated' -import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import { NumberType, formatNumberOrString } from '@/src/utils/numberFormat' import { withSuspense } from '@/src/utils/suspenseWrapper' @@ -85,27 +84,23 @@ const ERC20ApproveAndTransferButton = withSuspense(() => { NumberType.TokenTx, ) - return ( - - {balance < amount ? ( - - - - ) : ( - refetchBalance()} - spender={spender} - token={tokenUSDC_sepolia} - transaction={handleTransaction} - /> - )} - + return balance < amount ? ( + + + + ) : ( + refetchBalance()} + spender={spender} + token={tokenUSDC_sepolia} + transaction={handleTransaction} + /> ) }) diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx index 13c32cdd..99505f53 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx @@ -1,13 +1,11 @@ import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' import { Dialog } from '@chakra-ui/react' import { type ReactElement, useState } from 'react' import { type Hash, type TransactionReceipt, parseEther } from 'viem' -import { sepolia } from 'viem/chains' import { useSendTransaction } from 'wagmi' /** @@ -40,44 +38,42 @@ const NativeToken = () => { handleSendTransaction.methodId = 'sendTransaction' return ( - - + - - - Send 0.1 Sepolia ETH - - - - - - { - setIsModalOpen(false) - setMinedMessage('') - }} - > - Close - - } - message={minedMessage} - title={'Transaction completed!'} - /> - - - - + Send 0.1 Sepolia ETH +
+
+ + + + { + setIsModalOpen(false) + setMinedMessage('') + }} + > + Close + + } + message={minedMessage} + title={'Transaction completed!'} + /> + + + ) } diff --git a/src/components/sharedComponents/WalletStatusVerifier.test.tsx b/src/components/sharedComponents/WalletStatusVerifier.test.tsx index 9f188e66..6633c3b0 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.test.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.test.tsx @@ -3,7 +3,7 @@ import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { type ReactNode, createElement } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { WalletStatusVerifier } from './WalletStatusVerifier' +import { WalletStatusVerifier, useWeb3StatusConnected } from './WalletStatusVerifier' const mockSwitchChain = vi.fn() @@ -18,6 +18,23 @@ vi.mock('@/src/hooks/useWalletStatus', () => ({ })), })) +vi.mock('@/src/hooks/useWeb3Status', () => ({ + useWeb3Status: vi.fn(() => ({ + readOnlyClient: {}, + appChainId: 1, + address: '0xdeadbeef', + balance: undefined, + connectingWallet: false, + switchingChain: false, + isWalletConnected: true, + walletClient: undefined, + isWalletSynced: true, + walletChainId: 1, + switchChain: vi.fn(), + disconnect: vi.fn(), + })), +})) + vi.mock('@/src/providers/Web3Provider', () => ({ ConnectWalletButton: () => createElement( @@ -153,4 +170,24 @@ describe('WalletStatusVerifier', () => { expect(mockSwitchChain).toHaveBeenCalledWith(10) }) + + it('provides web3 status context to children when wallet is ready', () => { + mockedUseWalletStatus.mockReturnValue({ + isReady: true, + needsConnect: false, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, + switchChain: mockSwitchChain, + }) + + const ChildComponent = () => { + const { address } = useWeb3StatusConnected() + return createElement('div', { 'data-testid': 'address' }, address) + } + + renderWithChakra(createElement(WalletStatusVerifier, null, createElement(ChildComponent))) + + expect(screen.getByTestId('address')).toHaveTextContent('0xdeadbeef') + }) }) diff --git a/src/components/sharedComponents/WalletStatusVerifier.tsx b/src/components/sharedComponents/WalletStatusVerifier.tsx index d5cfef50..c9902807 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.tsx @@ -1,20 +1,42 @@ import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' +import { type Web3Status, useWeb3Status } from '@/src/hooks/useWeb3Status' import type { ChainsIds } from '@/src/lib/networks.config' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import type { FC, ReactElement } from 'react' +import type { RequiredNonNull } from '@/src/types/utils' +import { DeveloperError } from '@/src/utils/DeveloperError' +import { type FC, type ReactElement, createContext, useContext } from 'react' + +const WalletStatusVerifierContext = createContext | null>(null) + +/** + * Returns the connected wallet's Web3 status. + * + * Must be called inside a `` component tree. + * Throws if called outside one. + */ +export const useWeb3StatusConnected = () => { + const context = useContext(WalletStatusVerifierContext) + if (context === null) { + throw new DeveloperError( + 'useWeb3StatusConnected must be used inside a component.', + ) + } + return context +} interface WalletStatusVerifierProps { chainId?: ChainsIds children?: ReactElement fallback?: ReactElement - labelSwitchChain?: string + switchChainLabel?: string } /** * Wrapper component that gates content on wallet connection and chain status. * * This is the primary API for protecting UI that requires a connected wallet. + * Components that call `useWeb3StatusConnected` must be rendered inside this component. * * @example * ```tsx @@ -27,10 +49,11 @@ const WalletStatusVerifier: FC = ({ chainId, children, fallback = , - labelSwitchChain = 'Switch to', + switchChainLabel = 'Switch to', }: WalletStatusVerifierProps) => { const { needsConnect, needsChainSwitch, targetChain, targetChainId, switchChain } = useWalletStatus({ chainId }) + const web3Status = useWeb3Status() if (needsConnect) { return fallback @@ -39,12 +62,16 @@ const WalletStatusVerifier: FC = ({ if (needsChainSwitch) { return ( switchChain(targetChainId)}> - {labelSwitchChain} {targetChain.name} + {switchChainLabel} {targetChain.name} ) } - return children + return ( + }> + {children} + + ) } export { WalletStatusVerifier } diff --git a/src/hooks/useOPL1CrossDomainMessengerProxy.ts b/src/hooks/useOPL1CrossDomainMessengerProxy.ts index f0756615..89dc4475 100644 --- a/src/hooks/useOPL1CrossDomainMessengerProxy.ts +++ b/src/hooks/useOPL1CrossDomainMessengerProxy.ts @@ -11,7 +11,6 @@ import { type ContractNames, getContract, } from '@/src/constants/contracts/contracts' -import { useWeb3StatusConnected } from '@/src/hooks/useWeb3Status' import { transports } from '@/src/lib/networks.config' async function l2ContractCallInfo({ @@ -132,6 +131,7 @@ export function useL1CrossDomainMessengerProxy({ functionName, args, value, + walletAddress, }: { fromChain: typeof sepolia | typeof mainnet l2ContractAddress: Address @@ -139,8 +139,8 @@ export function useL1CrossDomainMessengerProxy({ functionName: ContractFunctionName args: ContractFunctionArgs value: bigint -}) { - const { address: walletAddress } = useWeb3StatusConnected() + walletAddress: Address +}): () => Promise { const contract = getContract('OPL1CrossDomainMessengerProxy', fromChain.id) const { writeContractAsync } = useWriteContract() diff --git a/src/hooks/useWeb3Status.test.ts b/src/hooks/useWeb3Status.test.ts index 1010ea0b..c9afb54f 100644 --- a/src/hooks/useWeb3Status.test.ts +++ b/src/hooks/useWeb3Status.test.ts @@ -1,7 +1,9 @@ +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { renderHook } from '@testing-library/react' +import { createElement } from 'react' import type { Address } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { useWeb3Status, useWeb3StatusConnected } from './useWeb3Status' +import { useWeb3Status } from './useWeb3Status' const mockDisconnect = vi.fn() const mockSwitchChain = vi.fn() @@ -21,8 +23,28 @@ vi.mock('wagmi', () => ({ useDisconnect: vi.fn(() => ({ disconnect: mockDisconnect })), })) +vi.mock('@/src/hooks/useWalletStatus', () => ({ + useWalletStatus: vi.fn(() => ({ + isReady: false, + needsConnect: true, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' }, + targetChainId: 1, + switchChain: vi.fn(), + })), +})) + +vi.mock('@/src/providers/Web3Provider', () => ({ + ConnectWalletButton: () => + createElement('button', { type: 'button', 'data-testid': 'connect-wallet-button' }, 'Connect'), +})) + +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import * as wagmi from 'wagmi' +const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') +const mockedUseWalletStatus = vi.mocked(useWalletStatus) + type MockAccount = ReturnType type MockSwitchChain = ReturnType @@ -107,20 +129,32 @@ describe('useWeb3Status', () => { describe('useWeb3StatusConnected', () => { it('throws when wallet is not connected', () => { expect(() => renderHook(() => useWeb3StatusConnected())).toThrow( - 'Use useWeb3StatusConnected only when a wallet is connected', + 'useWeb3StatusConnected must be used inside a component.', ) }) it('returns status when wallet is connected', () => { - const mock = { + mockedUseWalletStatus.mockReturnValue({ + isReady: true, + needsConnect: false, + needsChainSwitch: false, + targetChain: { id: 1, name: 'Ethereum' } as ReturnType['targetChain'], + targetChainId: 1, + switchChain: vi.fn(), + }) + + vi.mocked(wagmi.useAccount).mockReturnValueOnce({ address: '0xdeadbeef' as Address, chainId: 1, isConnected: true, isConnecting: false, - } as unknown as MockAccount - // useWeb3StatusConnected calls useWeb3Status twice; both calls must see connected state - vi.mocked(wagmi.useAccount).mockReturnValueOnce(mock).mockReturnValueOnce(mock) - const { result } = renderHook(() => useWeb3StatusConnected()) + } as unknown as ReturnType) + + const wrapper = ({ children }: { children: React.ReactNode }) => + createElement(WalletStatusVerifier, null, children) + + const { result } = renderHook(() => useWeb3StatusConnected(), { wrapper }) + expect(result.current.address).toBe('0xdeadbeef') expect(result.current.isWalletConnected).toBe(true) }) }) diff --git a/src/hooks/useWeb3Status.tsx b/src/hooks/useWeb3Status.tsx index af95dd25..0690ee13 100644 --- a/src/hooks/useWeb3Status.tsx +++ b/src/hooks/useWeb3Status.tsx @@ -13,7 +13,6 @@ import { } from 'wagmi' import { type ChainsIds, chains } from '@/src/lib/networks.config' -import type { RequiredNonNull } from '@/src/types/utils' export type AppWeb3Status = { readOnlyClient: UsePublicClientReturnType @@ -135,11 +134,3 @@ export const useWeb3Status = () => { return web3Connection } - -export const useWeb3StatusConnected = () => { - const context = useWeb3Status() - if (!context.isWalletConnected) { - throw new Error('Use useWeb3StatusConnected only when a wallet is connected') - } - return useWeb3Status() as RequiredNonNull -} diff --git a/src/utils/DeveloperError.ts b/src/utils/DeveloperError.ts new file mode 100644 index 00000000..86b7af0a --- /dev/null +++ b/src/utils/DeveloperError.ts @@ -0,0 +1,7 @@ +/** Error for structural/developer mistakes that cannot be fixed by retrying at runtime. */ +export class DeveloperError extends Error { + constructor(message: string) { + super(message) + this.name = 'DeveloperError' + } +} diff --git a/src/utils/suspenseWrapper.tsx b/src/utils/suspenseWrapper.tsx index 38253c23..e8aba0d2 100644 --- a/src/utils/suspenseWrapper.tsx +++ b/src/utils/suspenseWrapper.tsx @@ -1,5 +1,6 @@ import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' +import { DeveloperError } from '@/src/utils/DeveloperError' import { Flex, Spinner } from '@chakra-ui/react' import { Dialog, Portal } from '@chakra-ui/react' import { QueryErrorResetBoundary } from '@tanstack/react-query' @@ -101,6 +102,10 @@ const defaultFallbackRender: ErrorBoundaryPropsWithRender['fallbackRender'] = ({ }: FallbackProps): ReactNode => { const message = error instanceof Error ? error.message : 'Something went wrong.' + if (error instanceof DeveloperError) { + return
{message}
+ } + return ( <>
{message}
@@ -122,6 +127,7 @@ const defaultFallbackRenderDialog: ErrorBoundaryPropsWithRender['fallbackRender' resetErrorBoundary, }: FallbackProps): ReactNode => { const message = error instanceof Error ? error.message : 'Something went wrong.' + const isDeveloperError = error instanceof DeveloperError return ( Try again} + actionButton={ + isDeveloperError ? undefined : ( + Try again + ) + } message={message} /> From b6e563255b13aa2fe896f54fc3408038125d0c3c Mon Sep 17 00:00:00 2001 From: fernandomg Date: Tue, 31 Mar 2026 18:12:02 +0200 Subject: [PATCH 011/115] fix: prevent .env.local RPC values from leaking into test env --- .env.test | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.env.test b/.env.test index f4bf82d2..4fc516d0 100644 --- a/.env.test +++ b/.env.test @@ -5,3 +5,7 @@ PUBLIC_WALLETCONNECT_PROJECT_ID=test-project-id PUBLIC_SUBGRAPHS_API_KEY=test-api-key PUBLIC_SUBGRAPHS_CHAINS_RESOURCE_IDS=1:test:test-resource-id PUBLIC_SUBGRAPHS_ENVIRONMENT=production + +# Explicitly unset optional RPC vars so .env.local values don't leak into tests +PUBLIC_RPC_MAINNET= +PUBLIC_RPC_SEPOLIA= From a614bea019564a4bf7183d34b18632b375741820 Mon Sep 17 00:00:00 2001 From: fernandomg Date: Tue, 31 Mar 2026 18:13:22 +0200 Subject: [PATCH 012/115] chore: bump pnpm to 10.33.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 29e5067f..11625c97 100644 --- a/package.json +++ b/package.json @@ -91,5 +91,5 @@ "vitest": "^3.1.3", "vocs": "1.0.11" }, - "packageManager": "pnpm@10.30.2" + "packageManager": "pnpm@10.33.0" } From ea2f1b637e37a6786861deafd95d3f40e2945b65 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:33:15 -0300 Subject: [PATCH 013/115] docs: add SDLC sections to agent configuration files --- AGENTS.md | 232 +----------------------------------------------------- CLAUDE.md | 95 +++++++++++++++++++++- 2 files changed, 95 insertions(+), 232 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index eceea487..b14931c8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,231 +1,5 @@ -# dAppBooster +# Agent Configuration -> This file is mirrored as `CLAUDE.md` for Claude. Keep both files in sync when making changes. +This repo's agent configuration lives in [`CLAUDE.md`](./CLAUDE.md). -A repository template / starter-kit for building decentralized applications (dApps). Built by BootNode based on 5+ years of dApp development. Docs: https://docs.dappbooster.dev/ Components: https://components.dappbooster.dev/ - -## Requirements - -- Node 24+ (see `.nvmrc`) -- pnpm 10.30.2+ (enforced via `packageManager` in package.json; corepack will block npm/yarn) - -## Setup - -1. `pnpm install` (postinstall automatically runs `pnpm wagmi-generate`) -2. `cp .env.example .env.local` -3. Edit `.env.local`: - - `PUBLIC_APP_NAME` is mandatory - - `PUBLIC_WALLETCONNECT_PROJECT_ID` is needed for wallet connection to work - - RPC vars (`PUBLIC_RPC_*`) are optional -- wagmi falls back to default public RPCs - - Subgraph vars are all-or-nothing: if ANY `PUBLIC_SUBGRAPHS_*` var is missing or empty, codegen will skip and the app will crash at runtime. Either set them all or remove all subgraph-related code. -4. `pnpm subgraph-codegen` (only if subgraph vars are configured) -5. `pnpm dev` - -## Git Hooks (Husky) - -Three hooks run automatically and will block on failure: - -- **pre-commit:** lint-staged runs Biome check + Vitest on related files for staged changes -- **commit-msg:** commitlint enforces conventional commit format. Valid types: `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`. PR titles are also validated via CI. -- **pre-push:** full `tsc --noEmit` type check (pushes with type errors will be rejected) - -## Quick Reference - -- **Dev server:** `pnpm dev` -- **Build:** `pnpm build` (runs tsc + vite build) -- **Lint:** `pnpm lint` (Biome) / `pnpm lint:fix` -- **Test:** `pnpm test` / `pnpm test:watch` / `pnpm test:coverage` -- **Generate contract hooks:** `pnpm wagmi-generate` -- **Generate routes:** `pnpm routes:generate` -- **Generate subgraph types:** `pnpm subgraph-codegen` -- **Docs site:** `pnpm docs:dev` - -## Tech Stack - -- React 19 + TypeScript (strict mode, ESM -- `"type": "module"`, no `require()`) -- Vite + SWC (fast JSX transform) -- Wagmi 2 + viem 2 (Ethereum interaction) -- TanStack Router (file-based routing with auto code-splitting) -- TanStack Query (server state / data fetching) -- Chakra UI 3 (component library + theming) -- ConnectKit (default wallet connector; RainbowKit and Web3Modal also available) -- LI.FI SDK (token prices/balances) -- Zod + @t3-oss/env-core (environment variable validation) -- Biome (linting + formatting) -- Vitest + Testing Library (testing) - -## Project Structure - -``` -src/ - components/ - pageComponents/ # Page-level components (home/, weth/, demos/) - sharedComponents/ # Reusable UI + business components - ui/ # Chakra provider + theme setup - hooks/ # Custom React hooks - generated.ts # Auto-generated by wagmi-cli (do not edit) - providers/ # Web3Provider, TransactionNotificationProvider - routes/ # TanStack Router file-based routes - __root.tsx # Root layout (provider stack + shell) - lib/ - networks.config.ts # Chain + transport configuration - wagmi/ # Wagmi CLI config + custom Suspense plugin - wallets/ # ConnectKit, RainbowKit, Web3Modal configs - constants/ - contracts/ # Contract ABIs + addresses per chain - tokenLists.ts # Token list URLs - common.ts # Shared constants (isDev, includeTestnets) - types/ # TypeScript type definitions - utils/ # Utility functions - subgraphs/ # GraphQL codegen config + queries - env.ts # Zod-validated environment variables - main.tsx # Entry point - routeTree.gen.ts # Auto-generated route tree (do not edit) -``` - -No top-level barrel exports. Import directly from each file/folder path. - -## Provider Stack - -The root layout (`src/routes/__root.tsx`) wraps the app in this order: - -``` -Chakra Provider (theme, color mode) - Web3Provider (WagmiProvider -> QueryClientProvider -> WalletProvider) - TransactionNotificationProvider (tx toast context) - Header / Outlet (page) / Footer -``` - -New providers should be inserted at the appropriate layer based on their dependencies. - -## Code Style - -- **No semicolons** in TypeScript/JavaScript -- **Single quotes** -- 2-space indentation, 100 char line width -- Import organization handled by Biome -- Path aliases: `@/src/*` and `@packageJSON` -- All env vars prefixed with `PUBLIC_` and validated in `src/env.ts` -- JSDoc comments on exported functions/components (follow existing patterns) - -## Styling - -- **Chakra UI props** are the primary styling method. No CSS modules, no Tailwind, no styled-components. -- Theme is defined in `src/components/ui/provider.tsx` using `createSystem` extending `defaultConfig`. -- Use **semantic tokens** for colors: `bg`, `primary`, `text`, `danger`, `ok`, `warning`. These support light/dark mode. Do not hardcode color values. -- Fonts: Manrope (body/heading), Roboto Mono (mono/code). -- Complex components export style objects from a `styles.ts` file, consumed via Chakra's `css` prop or spread into component props. - -## Component Conventions - -- **Simple components:** single file (e.g., `ExplorerLink.tsx`, `SwitchNetwork.tsx`) -- **Complex components:** folder with: - - `index.tsx` -- main component and public API - - `Components.tsx` -- sub-components (styled primitives, layout pieces) - - `styles.ts` -- style objects - - `useComponentName.ts` -- dedicated hook (optional) -- Page components go in `src/components/pageComponents//` -- Shared/reusable components go in `src/components/sharedComponents/` - -## Key Patterns - -### Adding a New Contract - -1. Save ABI in `src/constants/contracts/abis/YourContract.ts` (export as const) -2. Register in `src/constants/contracts/contracts.ts` with name, ABI, and addresses per chain -3. Run `pnpm wagmi-generate` to auto-generate typed hooks in `src/hooks/generated.ts` - -The contracts array uses `as const satisfies ContractConfig[]` for full type inference. Follow this pattern. - -Use `getContract(name, chainId)` to retrieve a typed contract config at runtime (e.g., `getContract('WETH', sepolia.id)` returns `{ abi, address }`). - -### Generated Hook Naming Convention - -`pnpm wagmi-generate` produces hooks in `src/hooks/generated.ts` following this naming pattern: - -- `useReadContractNameFunctionName` -- standard read hook -- `useWriteContractNameFunctionName` -- write hook -- `useSuspenseReadContractNameFunctionName` -- Suspense-enabled read hook -- `useSimulateContractNameFunctionName` -- simulation hook - -Example: contract named `WETH` with function `allowance` generates `useReadWethAllowance`, `useWriteWethApprove`, `useSuspenseReadWethAllowance`, etc. - -### Adding a New Route/Page - -1. Create route file in `src/routes/` using `.lazy.tsx` extension for code-split lazy loading (e.g., `yourpage.lazy.tsx`). Use plain `.tsx` only for routes that must be eagerly loaded. -2. Create page component in `src/components/pageComponents/yourpage/` -3. Route tree auto-generates via TanStack Router plugin - -### Adding a New Network - -1. Import chain from `viem/chains` in `src/lib/networks.config.ts` -2. Add to the appropriate chain array (devChains or prodChains) -3. Add transport entry with optional custom RPC from env -4. Add RPC env var to `src/env.ts` if needed - -### Environment Variables - -- Defined and validated with Zod in `src/env.ts` -- Access via `import { env } from '@/src/env'` (never `import.meta.env` directly) -- New variables MUST be added to both `.env.example` and `src/env.ts` - -### Web3 Status - -- Use `useWeb3Status()` for unified wallet/chain state -- Use `useWeb3StatusConnected()` when wallet connection is guaranteed (throws otherwise) -- Use `withWalletStatusVerifier()` HOC to gate components behind wallet connection - -### Suspense and Error Boundaries - -- Contract read hooks use React Suspense via custom `reactSuspenseRead` wagmi plugin -- `useTokenLists` is Suspense-based -- Wrap async components with `withSuspenseAndRetry()` from `src/utils/suspenseWrapper.tsx` -- this is the primary error boundary pattern. It integrates with TanStack Query's `QueryErrorResetBoundary` for automatic retry on query failures. -- `withSuspenseAndRetry` accepts: `suspenseFallback`, `errorFallback`, `defaultFallbackFormat` ('dialog' | 'default'), `spinnerSize` -- Simpler variant `withSuspense()` available when retry logic is not needed - -### Transaction Handling - -Two components for two different jobs -- both auto-wrap with `withWalletStatusVerifier` (do not double-wrap): - -- **`TransactionButton`** -- for on-chain transactions. Takes `transaction: () => Promise` prop. Attach a `methodId` string property to the function for notification context. Calls `onMined(receipt)` on confirmation. -- **`SignButton`** -- for message signing only (uses `useSignMessage`). Takes `message`, `onSign`, `onError` props. - -`TransactionNotificationProvider` handles toast notifications and tx watching for both. - -### Token Management - -- Token lists configured in `src/constants/tokenLists.ts` -- Fetch with `useTokenLists()` hook (Suspense-based). Tokens are deduplicated by `chainId + address` (lowercased). Native tokens are auto-injected for each configured chain. -- Token prices/balances via `useTokens()` (LI.FI SDK) -- `TokenInput` + `useTokenInput()` for amount input with validation -- For raw bigint/decimal conversion in inputs, use `BigNumberInput` (wraps viem's `parseUnits`/`formatUnits`). Never use `parseFloat` or `Number()` for token amounts. - -### Wallet Provider - -- Default: ConnectKit (configured in `src/lib/wallets/connectkit.config.tsx`) -- To switch: modify `src/providers/Web3Provider.tsx` imports -- Alternatives available: RainbowKit (`rainbowkit.config.tsx`), Web3Modal (`web3modal.config.tsx`) - -## Auto-Generated Files (Do Not Edit, Do Not Commit) - -These files are gitignored and regenerated from source: - -- `src/hooks/generated.ts` -- regenerate with `pnpm wagmi-generate` -- `src/routeTree.gen.ts` -- regenerate with `pnpm routes:generate` -- `src/subgraphs/gql/` -- regenerate with `pnpm subgraph-codegen` - -## Utilities - -- **Number formatting:** Use `formatNumber()` from `src/utils/numberFormat.ts` with the appropriate `NumberType` context (`TokenTx`, `FiatTokenPrice`, `SwapPrice`, `PortfolioBalance`, etc.). Never use raw `.toString()` or `.toFixed()` for user-facing numbers. -- **Explorer links:** `getExplorerLink()` from `src/utils/getExplorerLink.ts` -- **String truncation:** `truncateStringInTheMiddle()`, `getTruncatedHash()` from `src/utils/strings.ts` -- **Native token check:** `isNativeToken()` from `src/utils/address.ts` -- **Hash detection:** `detectHash()` from `src/utils/hash.ts` -- identifies ENS names, transaction hashes, contract addresses, and EOAs - -## Testing - -- Framework: Vitest with jsdom environment -- Test files: colocated as `*.test.ts` / `*.test.tsx` -- Mocking: `vi.mock()` for module mocks -- Component testing: Testing Library + jest-dom matchers -- Run: `pnpm test` (single run) or `pnpm test:watch` +Claude Code reads `CLAUDE.md` natively. If your agent reads `AGENTS.md` (Cursor, Windsurf, etc.), load rules from `CLAUDE.md` -- it is the single source of truth for this repo's conventions and working rules. diff --git a/CLAUDE.md b/CLAUDE.md index cb3ccf5c..edd223a1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,7 +1,5 @@ # dAppBooster -> This file is mirrored as `AGENTS.md` for non-Claude AI agents. Keep both files in sync when making changes. - A repository template / starter-kit for building decentralized applications (dApps). Built by BootNode based on 5+ years of dApp development. Docs: https://docs.dappbooster.dev/ Components: https://components.dappbooster.dev/ ## Requirements @@ -26,9 +24,70 @@ A repository template / starter-kit for building decentralized applications (dAp Three hooks run automatically and will block on failure: - **pre-commit:** lint-staged runs Biome check + Vitest on related files for staged changes -- **commit-msg:** commitlint enforces conventional commit format. Valid types: `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`. PR titles are also validated via CI. +- **commit-msg:** commitlint enforces conventional commit format. Valid types: `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`, `style`, `build`, `wip`, `release`. PR titles are also validated via CI. - **pre-push:** full `tsc --noEmit` type check (pushes with type errors will be rejected) +## Commit Standards + +Use [Conventional Commits](https://www.conventionalcommits.org/): + +**Format:** `type(scope): subject` + +- **Scope** is optional: `feat: add login` and `feat(auth): add login` are both valid +- **Subject** uses imperative mood, lowercase after the colon, no trailing period +- **Body** (optional): separated by a blank line, explains *what* and *why* + +**Prefixes:** + +| Prefix | Purpose | +|--------|---------| +| `feat` | New feature | +| `fix` | Bug fix | +| `chore` | Maintenance, dependencies, config | +| `docs` | Documentation only | +| `refactor` | Code change that neither fixes a bug nor adds a feature | +| `test` | Adding or updating tests | +| `style` | Formatting, whitespace, semicolons | +| `ci` | CI/CD pipeline changes | +| `perf` | Performance improvement | +| `build` | Build system or external dependencies | +| `revert` | Reverts a previous commit | +| `wip` | Work in progress (avoid on main) | +| `release` | Release-related changes | + +## PR Workflow + +- Every PR must reference an issue (`Closes #N`) +- Mirror the issue's acceptance criteria in the PR +- Self-review your diff before requesting peer review +- Keep PRs small and focused -- one issue, one PR +- PR titles use the same conventional commit format (`feat: add user dashboard`) + +## Label Conventions + +GitHub form dropdowns (like the Severity field in `1-bug.yml`) only work through the web UI. When issues are created via `gh` CLI or REST API, dropdown values become unstructured body text -- not queryable, not consistent. **Labels are the API-reliable mechanism for structured metadata.** + +**Severity** (bugs only): + +| Label | Description | +|-------|-------------| +| `severity: critical` | System down, data loss, or security issue | +| `severity: high` | Broken feature, no workaround | +| `severity: medium` | Broken feature, workaround exists | +| `severity: low` | Cosmetic or minor inconvenience | + +**Priority** (features and epics): + +| Label | Description | +|-------|-------------| +| `priority: high` | Must be addressed in current sprint | +| `priority: medium` | Should be addressed soon | +| `priority: low` | Nice to have, can wait | + +Labels are queryable: `gh issue list --label "severity: high"`, `gh issue list --label "priority: medium"`. + +The `/issue` skill applies these labels automatically when creating issues via CLI. The bug template's severity dropdown is kept for web UI users but is not the source of truth for programmatic workflows. + ## Quick Reference - **Dev server:** `pnpm dev` @@ -229,3 +288,33 @@ These files are gitignored and regenerated from source: - Mocking: `vi.mock()` for module mocks - Component testing: Testing Library + jest-dom matchers - Run: `pnpm test` (single run) or `pnpm test:watch` +- **What to test:** Business logic, API integrations, component behavior +- **What not to test:** Styling, third-party library internals, trivial getters/setters +- **Coverage:** Aim for meaningful coverage, not a number. Cover the paths that matter. + +## Guardrails + +- Do not commit secrets, API keys, or credentials +- Do not modify CI/CD pipelines without team review +- Do not skip tests or linting to make a build pass +- When in doubt, ask -- don't assume + +## Change Strategy + +- Prefer small, focused diffs over broad refactors +- Preserve existing UX unless the task explicitly changes it +- Avoid introducing new patterns when a project pattern already exists +- Update docs only when behavior or workflow changes + +## Validation Checklist + +Run before declaring work done: + +- `pnpm lint` +- `pnpm test` +- `pnpm build` (when feasible for runtime-impacting changes) + +## References + +- [dAppBooster Docs](https://docs.dappbooster.dev/) +- [Component Library](https://components.dappbooster.dev/) From 64e1ff4bef3a435403ca2345fabf133fdb3dec06 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:33:23 -0300 Subject: [PATCH 014/115] chore: add wip and release to commitlint allowed types --- commitlint.config.js | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/commitlint.config.js b/commitlint.config.js index 7c4ff4d9..cc1019a3 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -1 +1,24 @@ -export default { extends: ['@commitlint/config-conventional'] } +export default { + extends: ['@commitlint/config-conventional'], + rules: { + 'type-enum': [ + 2, + 'always', + [ + 'build', + 'chore', + 'ci', + 'docs', + 'feat', + 'fix', + 'perf', + 'refactor', + 'release', + 'revert', + 'style', + 'test', + 'wip', + ], + ], + }, +} From 5198fbc7a627a511d4dc81ca40768a1d95c07feb Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:33:29 -0300 Subject: [PATCH 015/115] chore: add pull request template --- .github/PULL_REQUEST_TEMPLATE.md | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..85eec745 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,34 @@ +## Summary + + + +Closes # + +## Changes + + + +- + +## Acceptance criteria + + + +- [ ] + +## Test plan + + + +## Breaking changes + + + +None. + +## Checklist + +- [ ] Self-reviewed my own diff +- [ ] Tests added or updated +- [ ] Docs updated (if applicable) +- [ ] No unrelated changes bundled in From 85c2903b45d85cf37555b2f259f5cdd01b1d29da Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:33:35 -0300 Subject: [PATCH 016/115] chore: add structured issue templates for bugs, features, epics, and spikes --- .github/ISSUE_TEMPLATE/1-bug.yml | 90 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/2-feature.yml | 75 +++++++++++++++++++ .github/ISSUE_TEMPLATE/3-epic.yml | 103 +++++++++++++++++++++++++++ .github/ISSUE_TEMPLATE/4-spike.yml | 102 ++++++++++++++++++++++++++ 4 files changed, 370 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/1-bug.yml create mode 100644 .github/ISSUE_TEMPLATE/2-feature.yml create mode 100644 .github/ISSUE_TEMPLATE/3-epic.yml create mode 100644 .github/ISSUE_TEMPLATE/4-spike.yml diff --git a/.github/ISSUE_TEMPLATE/1-bug.yml b/.github/ISSUE_TEMPLATE/1-bug.yml new file mode 100644 index 00000000..8d49b4fa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-bug.yml @@ -0,0 +1,90 @@ +name: Bug Report +description: Report a bug or unexpected behavior. +title: "" +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report this. Before opening a new issue, please search existing issues to avoid duplicates. + + - type: textarea + id: description + attributes: + label: Description + description: A clear and concise description of the bug. + placeholder: What happened? + validations: + required: true + + - type: textarea + id: steps + attributes: + label: Steps to reproduce + description: Minimal steps to reproduce the behavior. + placeholder: | + 1. Go to '...' + 2. Click on '...' + 3. Scroll down to '...' + 4. See error + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected vs actual behavior + description: What did you expect to happen, and what actually happened? + placeholder: | + **Expected:** ... + **Actual:** ... + validations: + required: true + + - type: input + id: reproduction + attributes: + label: Reproduction link + description: Link to a minimal reproduction (repo, sandbox, deploy). Issues without a reproduction may be closed. + placeholder: https://github.com/... + validations: + required: false + + - type: textarea + id: environment + attributes: + label: Environment + description: Relevant environment details (OS, browser, runtime, package versions). + render: bash + placeholder: | + OS: macOS 15.3 + Node: 22.x + Package: 1.0.0 + validations: + required: false + + - type: markdown + attributes: + value: | + > **Programmatic creation:** When using `gh` CLI or REST API, apply `severity: ` labels instead of using the Severity dropdown (e.g., `--label "severity: high"`). See the Label Conventions section in `AGENTS.md` for the full table. + + - type: dropdown + id: severity + attributes: + label: Severity + description: How much does this impact your work? + options: + - Low — cosmetic or minor inconvenience + - Medium — broken feature, workaround exists + - High — broken feature, no workaround + - Critical — system down, data loss, or security issue + validations: + required: false + + - type: textarea + id: context + attributes: + label: Additional context + description: Screenshots, logs, error messages, or anything else that might help. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2-feature.yml b/.github/ISSUE_TEMPLATE/2-feature.yml new file mode 100644 index 00000000..79926725 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-feature.yml @@ -0,0 +1,75 @@ +name: Feature +description: Propose a new feature or enhancement. +title: "" +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Before opening a feature request, please check if a similar one already exists. + + - type: markdown + attributes: + value: | + > **Priority:** When using `gh` CLI or REST API, apply `priority: ` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `AGENTS.md` for the full table. + + - type: textarea + id: user-story + attributes: + label: User story / Problem statement + description: 'Who needs this and why? Pick the format that fits: "As a [role]..." for new capabilities with a clear user beneficiary; "Currently..." for UX fixes, missing feedback, or when the user role is implicit.' + placeholder: | + As a [role], I want [goal], so that [benefit]. + + — or — + + Currently, ... This is a problem because ... + validations: + required: true + + - type: textarea + id: expected-outcome + attributes: + label: Expected outcome + description: What does success look like? Describe the desired end state from the user's perspective, not the implementation approach. + placeholder: | + When this is done, a user should be able to... + The system should behave as follows... + validations: + required: true + + - type: textarea + id: acceptance-criteria + attributes: + label: Acceptance criteria + description: Specific, testable conditions that verify the expected outcome was achieved. These will be mirrored in the PR checklist. + placeholder: | + - [ ] ... + - [ ] ... + - [ ] ... + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Other approaches you explored and why they were discarded. + validations: + required: false + + - type: textarea + id: technical-notes + attributes: + label: Technical notes + description: Architecture considerations, dependencies, migration concerns, or anything the implementer should know. + validations: + required: false + + - type: textarea + id: context + attributes: + label: Additional context + description: Mockups, screenshots, references, or related issues. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/3-epic.yml b/.github/ISSUE_TEMPLATE/3-epic.yml new file mode 100644 index 00000000..88a980db --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3-epic.yml @@ -0,0 +1,103 @@ +name: Epic +description: Define a large body of work that will be broken into smaller issues. +title: "" +labels: ["epic"] +body: + - type: markdown + attributes: + value: | + Epics capture the vision and scope of a significant effort. They get decomposed into smaller, independently deliverable issues. Invest time here — the quality of the epic sets the ceiling for everything downstream. + + - type: markdown + attributes: + value: | + > **Priority:** When using `gh` CLI or REST API, apply `priority: ` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `AGENTS.md` for the full table. + + - type: textarea + id: objective + attributes: + label: Objective + description: What are we trying to achieve? The high-level goal in one or two sentences. + placeholder: Enable users to... + validations: + required: true + + - type: textarea + id: rationale + attributes: + label: Rationale + description: Why does this matter? Business value, user impact, or technical justification. + placeholder: This is important because... + validations: + required: true + + - type: textarea + id: scope + attributes: + label: Scope + description: What is in scope and, just as importantly, what is out of scope. + placeholder: | + **In scope:** + - ... + + **Out of scope:** + - ... + validations: + required: true + + - type: textarea + id: architecture + attributes: + label: Architecture & technical considerations + description: Key technical decisions, patterns, constraints, or risks. Link to ADRs or design docs if they exist. + validations: + required: false + + - type: textarea + id: dependencies + attributes: + label: Dependencies + description: What blocks this epic or what does this epic block? External services, other teams, infrastructure, etc. + validations: + required: false + + - type: textarea + id: issues + attributes: + label: Issue breakdown + description: Checklist of sub-issues that compose this epic. Can start as a rough draft — the agent or the team will refine and create the actual issues. + placeholder: | + - [ ] #issue or description + - [ ] #issue or description + - [ ] #issue or description + validations: + required: false + + - type: textarea + id: acceptance-criteria + attributes: + label: Acceptance criteria + description: How do we know this epic is done? High-level conditions, not per-issue details. + placeholder: | + - [ ] ... + - [ ] ... + validations: + required: true + + - type: input + id: owner + attributes: + label: Owner / DRI + description: Who is responsible for driving this epic to completion? + placeholder: "@username" + validations: + required: false + + - type: input + id: milestone + attributes: + label: Target milestone + description: Which milestone or release is this epic targeting? + placeholder: v1.0, Q2 2026, Sprint 5... + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/4-spike.yml b/.github/ISSUE_TEMPLATE/4-spike.yml new file mode 100644 index 00000000..94cd18d4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4-spike.yml @@ -0,0 +1,102 @@ +name: Spike / Research +description: Time-boxed investigation to answer a question or reduce uncertainty. +title: "" +labels: ["spike"] +body: + - type: markdown + attributes: + value: | + A spike is not about delivering code — it's about answering a question. Define the question clearly, time-box the effort, and document findings here. The issue itself becomes the deliverable. + + - type: textarea + id: question + attributes: + label: Research question + description: What question(s) are we trying to answer? Be specific. + placeholder: | + Can we use X to solve Y? + What are the trade-offs between A and B for our use case? + validations: + required: true + + - type: dropdown + id: timebox + attributes: + label: Time-box + description: Maximum time to spend before reporting back, regardless of outcome. + options: + - 2 hours + - Half day + - 1 day + - 2 days + - 3 days + validations: + required: true + + - type: textarea + id: background + attributes: + label: Background / What we already know + description: Context, prior decisions, links to related issues or docs. Prevents the investigator from repeating work. + validations: + required: false + + - type: textarea + id: method + attributes: + label: Investigation approach + description: How should this be investigated? Prototype, docs research, vendor comparison, proof of concept, talk to someone? + placeholder: | + - Read the docs for X + - Build a minimal prototype that tests Y + - Compare options A and B against criteria Z + validations: + required: false + + - type: dropdown + id: output + attributes: + label: Expected output + description: What does "done" look like for this spike? + options: + - Decision (go / no-go) + - Technical recommendation with trade-offs + - Proof of concept / prototype + - Written summary / findings document + - Architecture or design proposal + multiple: true + validations: + required: true + + - type: markdown + attributes: + value: | + --- + **The sections below are filled in after the investigation.** + + - type: textarea + id: findings + attributes: + label: Findings + description: What did you learn? Evidence, data, demos, links. + validations: + required: false + + - type: textarea + id: conclusions + attributes: + label: Conclusions & recommendations + description: Answers to the original question(s). What do you recommend and why? + validations: + required: false + + - type: textarea + id: next-steps + attributes: + label: Next steps + description: Follow-up issues, decisions to make, or work to schedule based on findings. + placeholder: | + - [ ] Create issue for... + - [ ] Discuss with team... + validations: + required: false From 3e3949d99e0ec7b1c45b38fb40560832c0c12cc8 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 10:33:40 -0300 Subject: [PATCH 017/115] chore: add issue creation skill for Claude Code --- .claude/skills/issue/SKILL.md | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .claude/skills/issue/SKILL.md diff --git a/.claude/skills/issue/SKILL.md b/.claude/skills/issue/SKILL.md new file mode 100644 index 00000000..74e8d061 --- /dev/null +++ b/.claude/skills/issue/SKILL.md @@ -0,0 +1,64 @@ +--- +name: issue +description: Use when creating a GitHub issue from a brief -- bug, feature, epic, or spike -- against the repo's GitHub issue templates via gh CLI. +--- + +# /issue + +Create a well-structured GitHub issue using the repo's own templates and `gh` CLI. + +**Core principle:** Templates own the format. Skill owns the behavior. + +## Core Pattern + +1. **Classify** -- Determine type from brief: bug / feature / epic / spike. If unclear, ask once. +2. **Read** -- Load `.github/ISSUE_TEMPLATE/.yml`. Extract all fields, required vs optional, and label. Do this every time -- never reconstruct from memory. +3. **Interview** -- Ask only for missing required fields. If the brief already covers a field, don't re-ask. Scale ceremony to issue weight. +4. **Draft** -- Build title and body. Sections follow template field order using `label` as heading. Omit empty optional fields. +5. **Confirm** -- Show full draft including labels. Wait for explicit approval. Iterate until approved. +6. **Create** -- Write body to temp file, run `gh issue create` with all labels, report issue URL. + +## Template Map + +| Type | File | Type label | Additional labels | +|---------|-----------------|---------------|---------------------------| +| Bug | `1-bug.yml` | `bug` | `severity: ` | +| Feature | `2-feature.yml` | `enhancement` | `priority: ` | +| Epic | `3-epic.yml` | `epic` | `priority: ` | +| Spike | `4-spike.yml` | `spike` | -- | + +## Labels + +Severity and priority are applied as labels, not form dropdowns. See the Label Conventions section in `AGENTS.md` for the full table and descriptions. + +- Bugs get a `severity: ` label (critical / high / medium / low). +- Features and epics get a `priority: ` label (high / medium / low). +- Spikes don't carry severity or priority. +- If the brief doesn't specify a level, ask once. Never default silently. + +## gh Command + +```bash +BODY_FILE=$(mktemp /tmp/gh_issue_body.XXXXXX.md) + +cat > "$BODY_FILE" << 'EOF' + +EOF + +gh issue create \ + --title "" \ + --label "<type-label>" \ + --label "<severity-or-priority-label>" \ # omit for spikes + --body-file "$BODY_FILE" +``` + +Multiple `--label` flags can be chained. The type label is always present. The severity/priority label is added for bugs (severity), features, and epics (priority) -- omit it for spikes. + +Optional flags: `--assignee "<username>"`, `--milestone "<name>"`, `--project "<name>"` + +## Common Mistakes + +- **Skipping the template read** -- Field names and order come from the YAML, not assumptions. Read it every time. +- **Pre-emptively asking for optional fields** -- Required fields are the floor. Let the user volunteer the rest. +- **Creating before confirmation** -- Never run `gh` without explicit approval. Always show the full draft first. +- **Omitting severity/priority labels** -- Form dropdowns do not survive `gh` CLI creation. Always apply these as labels. From b53b3583b3a93c6538a18cb02ee576b9d72881f3 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:13:26 -0300 Subject: [PATCH 018/115] docs: add architecture overview and consolidate structural docs Add architecture.md with full project documentation covering tech stack, directory structure, data flow, environment variables, scripts, and domain-specific sections (number precision, provider hierarchy, hook patterns, error handling, smart contract integration, wallet access control). Slim down CLAUDE.md by moving structural/reference content to architecture.md, keeping only operational rules, conventions, and how-to instructions. Add a soft reference so LLMs know to read architecture.md when working on structure-related tasks. --- CLAUDE.md | 127 +---------------------- architecture.md | 269 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 271 insertions(+), 125 deletions(-) create mode 100644 architecture.md diff --git a/CLAUDE.md b/CLAUDE.md index edd223a1..48d28512 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,6 +2,8 @@ A repository template / starter-kit for building decentralized applications (dApps). Built by BootNode based on 5+ years of dApp development. Docs: https://docs.dappbooster.dev/ Components: https://components.dappbooster.dev/ +System architecture, data flow, provider hierarchy, and structural conventions are documented in [architecture.md](./architecture.md). Read it when working on tasks that involve the system's structure or patterns. + ## Requirements - Node 24+ (see `.nvmrc`) @@ -88,75 +90,6 @@ Labels are queryable: `gh issue list --label "severity: high"`, `gh issue list - The `/issue` skill applies these labels automatically when creating issues via CLI. The bug template's severity dropdown is kept for web UI users but is not the source of truth for programmatic workflows. -## Quick Reference - -- **Dev server:** `pnpm dev` -- **Build:** `pnpm build` (runs tsc + vite build) -- **Lint:** `pnpm lint` (Biome) / `pnpm lint:fix` -- **Test:** `pnpm test` / `pnpm test:watch` / `pnpm test:coverage` -- **Generate contract hooks:** `pnpm wagmi-generate` -- **Generate routes:** `pnpm routes:generate` -- **Generate subgraph types:** `pnpm subgraph-codegen` -- **Docs site:** `pnpm docs:dev` - -## Tech Stack - -- React 19 + TypeScript (strict mode, ESM -- `"type": "module"`, no `require()`) -- Vite + SWC (fast JSX transform) -- Wagmi 2 + viem 2 (Ethereum interaction) -- TanStack Router (file-based routing with auto code-splitting) -- TanStack Query (server state / data fetching) -- Chakra UI 3 (component library + theming) -- ConnectKit (default wallet connector; RainbowKit and Web3Modal also available) -- LI.FI SDK (token prices/balances) -- Zod + @t3-oss/env-core (environment variable validation) -- Biome (linting + formatting) -- Vitest + Testing Library (testing) - -## Project Structure - -``` -src/ - components/ - pageComponents/ # Page-level components (home/, weth/, demos/) - sharedComponents/ # Reusable UI + business components - ui/ # Chakra provider + theme setup - hooks/ # Custom React hooks - generated.ts # Auto-generated by wagmi-cli (do not edit) - providers/ # Web3Provider, TransactionNotificationProvider - routes/ # TanStack Router file-based routes - __root.tsx # Root layout (provider stack + shell) - lib/ - networks.config.ts # Chain + transport configuration - wagmi/ # Wagmi CLI config + custom Suspense plugin - wallets/ # ConnectKit, RainbowKit, Web3Modal configs - constants/ - contracts/ # Contract ABIs + addresses per chain - tokenLists.ts # Token list URLs - common.ts # Shared constants (isDev, includeTestnets) - types/ # TypeScript type definitions - utils/ # Utility functions - subgraphs/ # GraphQL codegen config + queries - env.ts # Zod-validated environment variables - main.tsx # Entry point - routeTree.gen.ts # Auto-generated route tree (do not edit) -``` - -No top-level barrel exports. Import directly from each file/folder path. - -## Provider Stack - -The root layout (`src/routes/__root.tsx`) wraps the app in this order: - -``` -Chakra Provider (theme, color mode) - Web3Provider (WagmiProvider -> QueryClientProvider -> WalletProvider) - TransactionNotificationProvider (tx toast context) - Header / Outlet (page) / Footer -``` - -New providers should be inserted at the appropriate layer based on their dependencies. - ## Code Style - **No semicolons** in TypeScript/JavaScript @@ -198,17 +131,6 @@ The contracts array uses `as const satisfies ContractConfig<Abi>[]` for full typ Use `getContract(name, chainId)` to retrieve a typed contract config at runtime (e.g., `getContract('WETH', sepolia.id)` returns `{ abi, address }`). -### Generated Hook Naming Convention - -`pnpm wagmi-generate` produces hooks in `src/hooks/generated.ts` following this naming pattern: - -- `useReadContractNameFunctionName` -- standard read hook -- `useWriteContractNameFunctionName` -- write hook -- `useSuspenseReadContractNameFunctionName` -- Suspense-enabled read hook -- `useSimulateContractNameFunctionName` -- simulation hook - -Example: contract named `WETH` with function `allowance` generates `useReadWethAllowance`, `useWriteWethApprove`, `useSuspenseReadWethAllowance`, etc. - ### Adding a New Route/Page 1. Create route file in `src/routes/` using `.lazy.tsx` extension for code-split lazy loading (e.g., `yourpage.lazy.tsx`). Use plain `.tsx` only for routes that must be eagerly loaded. @@ -228,43 +150,6 @@ Example: contract named `WETH` with function `allowance` generates `useReadWethA - Access via `import { env } from '@/src/env'` (never `import.meta.env` directly) - New variables MUST be added to both `.env.example` and `src/env.ts` -### Web3 Status - -- Use `useWeb3Status()` for unified wallet/chain state -- Use `useWeb3StatusConnected()` when wallet connection is guaranteed (throws otherwise) -- Use `withWalletStatusVerifier()` HOC to gate components behind wallet connection - -### Suspense and Error Boundaries - -- Contract read hooks use React Suspense via custom `reactSuspenseRead` wagmi plugin -- `useTokenLists` is Suspense-based -- Wrap async components with `withSuspenseAndRetry()` from `src/utils/suspenseWrapper.tsx` -- this is the primary error boundary pattern. It integrates with TanStack Query's `QueryErrorResetBoundary` for automatic retry on query failures. -- `withSuspenseAndRetry` accepts: `suspenseFallback`, `errorFallback`, `defaultFallbackFormat` ('dialog' | 'default'), `spinnerSize` -- Simpler variant `withSuspense()` available when retry logic is not needed - -### Transaction Handling - -Two components for two different jobs -- both auto-wrap with `withWalletStatusVerifier` (do not double-wrap): - -- **`TransactionButton`** -- for on-chain transactions. Takes `transaction: () => Promise<Hash>` prop. Attach a `methodId` string property to the function for notification context. Calls `onMined(receipt)` on confirmation. -- **`SignButton`** -- for message signing only (uses `useSignMessage`). Takes `message`, `onSign`, `onError` props. - -`TransactionNotificationProvider` handles toast notifications and tx watching for both. - -### Token Management - -- Token lists configured in `src/constants/tokenLists.ts` -- Fetch with `useTokenLists()` hook (Suspense-based). Tokens are deduplicated by `chainId + address` (lowercased). Native tokens are auto-injected for each configured chain. -- Token prices/balances via `useTokens()` (LI.FI SDK) -- `TokenInput` + `useTokenInput()` for amount input with validation -- For raw bigint/decimal conversion in inputs, use `BigNumberInput` (wraps viem's `parseUnits`/`formatUnits`). Never use `parseFloat` or `Number()` for token amounts. - -### Wallet Provider - -- Default: ConnectKit (configured in `src/lib/wallets/connectkit.config.tsx`) -- To switch: modify `src/providers/Web3Provider.tsx` imports -- Alternatives available: RainbowKit (`rainbowkit.config.tsx`), Web3Modal (`web3modal.config.tsx`) - ## Auto-Generated Files (Do Not Edit, Do Not Commit) These files are gitignored and regenerated from source: @@ -273,14 +158,6 @@ These files are gitignored and regenerated from source: - `src/routeTree.gen.ts` -- regenerate with `pnpm routes:generate` - `src/subgraphs/gql/` -- regenerate with `pnpm subgraph-codegen` -## Utilities - -- **Number formatting:** Use `formatNumber()` from `src/utils/numberFormat.ts` with the appropriate `NumberType` context (`TokenTx`, `FiatTokenPrice`, `SwapPrice`, `PortfolioBalance`, etc.). Never use raw `.toString()` or `.toFixed()` for user-facing numbers. -- **Explorer links:** `getExplorerLink()` from `src/utils/getExplorerLink.ts` -- **String truncation:** `truncateStringInTheMiddle()`, `getTruncatedHash()` from `src/utils/strings.ts` -- **Native token check:** `isNativeToken()` from `src/utils/address.ts` -- **Hash detection:** `detectHash()` from `src/utils/hash.ts` -- identifies ENS names, transaction hashes, contract addresses, and EOAs - ## Testing - Framework: Vitest with jsdom environment diff --git a/architecture.md b/architecture.md new file mode 100644 index 00000000..46889646 --- /dev/null +++ b/architecture.md @@ -0,0 +1,269 @@ +# Architecture Overview + +<!-- Keep this document up to date as the system evolves. It captures structural + knowledge that helps both humans onboarding and agents building context at + session start. Focus on the "shape" of the system — not usage instructions + (that's AGENTS.md) or API docs (that's code comments). --> + +## Tech Stack + +| Category | Technology | Notes | +|----------|-----------|-------| +| Framework | React 19 | StrictMode enabled | +| Language | TypeScript 5 (strict, ESM) | Path aliases: `@/src/*`, `@packageJSON` | +| Blockchain | wagmi 2 + viem 2 | Type-safe Ethereum interaction | +| Data fetching | TanStack Query 5, graphql-request | Suspense-based contract reads | +| Routing | TanStack Router | File-based with auto code-splitting | +| UI | Chakra UI 3 + Emotion | Semantic tokens, light/dark mode | +| Testing | Vitest + Testing Library | jsdom environment, colocated test files | +| Build | Vite 6 + SWC | Manual chunk splitting for vendors | +| Linting | Biome | Format + lint in one tool | +| Env validation | Zod + @t3-oss/env-core | All vars `PUBLIC_` prefixed | + +## Project Structure + +``` +src/ + components/ + pageComponents/ Page-level components (home/, demos/) + sharedComponents/ Reusable UI + business components + ui/ Chakra provider, color mode, toaster, tooltip + hooks/ Custom React hooks + generated.ts Auto-generated by wagmi-cli (do not edit) + providers/ Web3Provider, TransactionNotificationProvider + routes/ TanStack Router file-based routes + __root.tsx Root layout (provider stack + shell) + lib/ + networks.config.ts Chain + transport configuration + wagmi/ Wagmi CLI config + custom Suspense plugin + wallets/ ConnectKit, RainbowKit, Web3Modal, Porto configs + constants/ + contracts/ Contract ABIs + addresses per chain + tokenLists.ts Token list URLs + common.ts Shared constants (isDev, includeTestnets) + types/ TypeScript type definitions (Token via Zod) + utils/ Utility functions + subgraphs/ GraphQL codegen config + queries + env.ts Zod-validated environment variables + main.tsx Entry point + routeTree.gen.ts Auto-generated route tree (do not edit) +``` + +No top-level barrel exports. Import directly from each file/folder path. + +## Key Abstractions + +**Component structure** -- simple components are a single file; complex components use a folder: +``` +ComponentName/ + index.tsx main component and public API + Components.tsx sub-components (styled primitives, layout pieces) + styles.ts style objects consumed via Chakra's css prop + useComponentName.ts dedicated hook (optional) +``` + +**HOC patterns:** +- `withSuspenseAndRetry(Component)` -- primary pattern for async components; wraps in `QueryErrorResetBoundary` + `ErrorBoundary` + `Suspense` for automatic retry on query failures +- `withSuspense(Component)` -- simpler variant without retry +- `withWalletStatusVerifier(Component)` -- gates a component behind wallet connection + chain sync + +**Contract hooks** (auto-generated by wagmi-cli from ABIs): +- `useRead{Contract}{Function}` -- standard read +- `useSuspenseRead{Contract}{Function}` -- Suspense-enabled read (preferred) +- `useWrite{Contract}{Function}` -- write/mutation +- `useSimulate{Contract}{Function}` -- simulation before write + +**Contract lookup:** `getContract(name, chainId)` from `src/constants/contracts/contracts.ts` returns typed `{ abi, address }`. Validates address with `isAddress()`, throws with a helpful message if not found. + +**Utility functions** (`src/utils/`): +- `formatNumber(value, type)` -- user-facing number formatting with `NumberType` contexts (`TokenTx`, `FiatTokenPrice`, `SwapPrice`, `PortfolioBalance`) +- `getExplorerLink(chainId, hash, type)` -- block explorer URLs per chain +- `truncateStringInTheMiddle(str)`, `getTruncatedHash(hash)` -- string display helpers +- `isNativeToken(address)` -- checks against native token address +- `detectHash(str)` -- identifies ENS names, tx hashes, contract addresses, EOAs + +### Data Access Layer + +Four external data paths. Components never call external services directly -- they use hooks. + +1. **Blockchain reads**: `useSuspenseRead{Contract}{Function}` hooks (generated) -> wagmi `readContract` -> TanStack Query cache. All contract reads are Suspense-based via the custom `reactSuspenseRead` wagmi plugin in `src/lib/wagmi/plugins/`. + +2. **Blockchain writes**: `TransactionButton` calls `transaction: () => Promise<Hash>` prop -> wagmi `writeContract` -> `useWaitForTransactionReceipt` -> `TransactionNotificationProvider` toasts (loading, success/revert, explorer link). + +3. **Subgraph queries**: `graphql-request` with typed document nodes from `@graphql-codegen` -> TanStack Query cache. Queries live in `src/subgraphs/queries/`, generated types in `src/subgraphs/gql/`. + +4. **Token data**: LI.FI SDK (`getChains` -> `getTokens` -> `getTokenBalances`) via `useTokens` hook. Token lists fetched in parallel via `useTokenLists` (Suspense-based, sources: 1INCH, CoinGecko, optional Uniswap default list). Tokens deduplicated by `chainId + address`, native tokens auto-injected per chain. + +## Routes + +| Route | Module | Description | +|-------|--------|-------------| +| `/` | `src/components/pageComponents/home/` | Landing page with welcome + feature demos | +| `*` | `src/components/pageComponents/NotFound404.tsx` | Catch-all 404 page | + +File-based routing via TanStack Router. Use `.lazy.tsx` extension for code-split lazy loading; plain `.tsx` only for routes that must eagerly load. Route tree auto-generates to `src/routeTree.gen.ts` via the TanStack Router Vite plugin. + +## Data Flow + +``` +External source Data layer State UI +─────────────── ────────── ───── ── +EVM chains (RPC) ───> wagmi readContract ───> TanStack Query cache ───> Chakra components +EVM chains (write) ───> wagmi writeContract ───> TransactionContext ───> Toast notifications +The Graph subgraphs ───> graphql-request ───> TanStack Query cache ───> Chakra components +LI.FI API (prices/balances) ───> @lifi/sdk ───> TanStack Query cache ───> Chakra components +Token list URLs ───> fetch + Zod validate ───> TanStack Query cache ───> Chakra components +``` + +Caching strategy: +- All async state lives in TanStack Query. Components do not hold async data in local state. +- Token lists: `staleTime: Infinity`, `gcTime: Infinity` (fetched once per session). +- Token balances: refreshed every ~32s (`BALANCE_EXPIRATION_TIME`). +- Contract reads: Suspense-based -- component suspends until data arrives, then cached normally. + +## Environment Variables + +All variables use the `PUBLIC_` prefix and are validated with Zod in `src/env.ts`. Access via `import { env } from '@/src/env'` -- never `import.meta.env` directly. + +**App** + +| Variable | Required | Purpose | +|----------|----------|---------| +| `PUBLIC_APP_NAME` | yes | Application name | +| `PUBLIC_APP_DESCRIPTION` | no | App description | +| `PUBLIC_APP_URL` | no | Canonical URL | +| `PUBLIC_APP_LOGO` | no | Logo URL | +| `PUBLIC_ENABLE_PORTO` | no (default: true) | Enable Porto wallet connector | +| `PUBLIC_INCLUDE_TESTNETS` | no (default: true) | Include testnet chains | +| `PUBLIC_USE_DEFAULT_TOKENS` | no (default: true) | Include Uniswap default token list | + +**RPC endpoints** (all optional -- wagmi falls back to public RPCs) + +`PUBLIC_RPC_MAINNET`, `PUBLIC_RPC_OPTIMISM`, `PUBLIC_RPC_POLYGON`, `PUBLIC_RPC_ARBITRUM`, `PUBLIC_RPC_BASE`, `PUBLIC_RPC_GNOSIS`, `PUBLIC_RPC_SEPOLIA`, `PUBLIC_RPC_OPTIMISM_SEPOLIA`, `PUBLIC_RPC_ARBITRUM_SEPOLIA`, `PUBLIC_RPC_BASE_SEPOLIA`, `PUBLIC_RPC_GNOSIS_CHIADO`, `PUBLIC_RPC_POLYGON_MUMBAI` + +**Wallet / API** + +| Variable | Required | Purpose | +|----------|----------|---------| +| `PUBLIC_WALLETCONNECT_PROJECT_ID` | no (default: '') | WalletConnect project ID | +| `PUBLIC_ALCHEMY_KEY` | no | Alchemy RPC key | +| `PUBLIC_INFURA_KEY` | no | Infura RPC key | +| `PUBLIC_NATIVE_TOKEN_ADDRESS` | no (default: `0x0...0`) | Native token sentinel address | + +**Subgraph** (all-or-nothing: set all or remove subgraph code) + +| Variable | Required | Purpose | +|----------|----------|---------| +| `PUBLIC_SUBGRAPHS_API_KEY` | yes | The Graph API key | +| `PUBLIC_SUBGRAPHS_CHAINS_RESOURCE_IDS` | yes | `chainId:subgraphId:resourceId` comma-separated | +| `PUBLIC_SUBGRAPHS_ENVIRONMENT` | no (default: production) | `development` or `production` | +| `PUBLIC_SUBGRAPHS_DEVELOPMENT_URL` | no | Dev subgraph URL template | +| `PUBLIC_SUBGRAPHS_PRODUCTION_URL` | no | Production subgraph URL template | + +## Scripts + +| Command | Purpose | +|---------|---------| +| `pnpm dev` | Vite dev server + TanStack Router route watching | +| `pnpm build` | `tsc --noEmit` + Vite production build | +| `pnpm test` | Vitest single run | +| `pnpm test:watch` | Vitest watch mode | +| `pnpm test:coverage` | Coverage report (v8) | +| `pnpm lint` | Biome check | +| `pnpm lint:fix` | Biome auto-fix | +| `pnpm wagmi-generate` | Generate typed contract hooks from ABIs into `src/hooks/generated.ts` | +| `pnpm routes:generate` | Generate TanStack Router route tree into `src/routeTree.gen.ts` | +| `pnpm subgraph-codegen` | Generate GraphQL types from subgraph schemas into `src/subgraphs/gql/` | +| `pnpm docs:dev` | Documentation site dev server (vocs) | + +--- + +## Domain-Specific Sections + +### Number / Precision Handling + +Token amounts are always `bigint` internally. Never use `parseFloat`, `Number()`, or `.toFixed()` on token values. + +- **Input**: `BigNumberInput` component wraps `react-number-format` + viem's `parseUnits` / `formatUnits`. The `BigNumberInput` is the only place raw user strings convert to bigint. +- **Display**: `formatNumber(value, type)` from `src/utils/numberFormat.ts` with a `NumberType` context that sets decimal precision and formatting rules: + - `TokenTx` -- token transaction amounts + - `FiatTokenPrice` -- USD prices + - `SwapPrice` -- swap rate display + - `PortfolioBalance` -- portfolio totals +- The bigint -> formatted string conversion only happens at the UI boundary. + +### Provider / Context Hierarchy + +From `src/routes/__root.tsx`, outermost to innermost: + +``` +Chakra Provider (theme system, color mode via next-themes, default: dark) + Web3Provider + WagmiProvider (chains, transports, wallet connectors) + QueryClientProvider (TanStack Query client) + WalletProvider (ConnectKit wallet UI) + TransactionNotificationProvider (tx/signature toast context) + Header + Outlet (page content) + Footer + Devtools (React Query + Router devtools, dev only) + Vercel Analytics + Toaster +``` + +When adding a new provider: place it inside the outermost provider it depends on. Anything needing blockchain access goes inside `Web3Provider`. Anything needing tx notifications goes inside `TransactionNotificationProvider`. + +### Hook Patterns + +**Generated contract hooks** (`src/hooks/generated.ts`, auto-generated by `pnpm wagmi-generate`): +- `useRead{Contract}{Function}` -- standard read, manual refetch +- `useSuspenseRead{Contract}{Function}` -- Suspense read (preferred; component suspends until resolved) +- `useWrite{Contract}{Function}` -- write/mutation +- `useSimulate{Contract}{Function}` -- simulate before write to surface errors early + +**Web3 connection state** (`src/hooks/useWeb3Status.tsx`): +- `useWeb3Status()` -- returns `{ readOnlyClient, appChainId, address, isWalletConnected, isWalletSynced, switchChain, disconnect, ... }` +- `useWeb3StatusConnected()` -- same but throws if wallet is not connected; use inside components that are already gated by `withWalletStatusVerifier` + +**Token hooks**: +- `useTokens()` -- token list + LI.FI prices + account balances, sorted by balance value +- `useTokenLists()` -- Suspense-based parallel fetch of all configured token list URLs +- `useTokenInput()` -- manages selected token + amount state, fetches balance +- `useTokenSearch(tokens, query)` -- filters by name or symbol + +**Suspense convention**: all contract reads use Suspense. Wrap consuming components with `withSuspenseAndRetry()` to handle the loading and error states. + +### Error Handling Patterns + +**`withSuspenseAndRetry(Component)`** (`src/utils/suspenseWrapper.tsx`) -- primary pattern: +- Wraps in `QueryErrorResetBoundary` (TanStack Query) + `ErrorBoundary` + `Suspense` +- On error: shows error UI with a retry button that resets the query and re-renders +- Props: `suspenseFallback`, `errorFallback`, `defaultFallbackFormat` (`'default'` | `'dialog'`), `spinnerSize` + +**`withSuspense(Component)`** -- simpler variant when retry is not needed (no query resets). + +**`defaultFallbackFormat: 'dialog'`** -- renders the error in a modal. Use for critical errors where inline display is disruptive. + +**Transaction errors** -- handled by `TransactionNotificationProvider`. It catches rejected signatures, reverted transactions, and gas estimation failures, and surfaces them as toast notifications with user-friendly messages. Handles transaction replacement (gas bump) and cancellation by the wallet. + +### Smart Contract Integration + +Contracts are registered centrally and consumed via generated hooks. + +1. **ABIs**: stored as `as const` typed exports in `src/constants/contracts/abis/`. +2. **Registration**: `src/constants/contracts/contracts.ts` -- array typed as `ContractConfig<Abi>[]` with `name`, `abi`, and optional `address: { [chainId]: '0x...' }`. +3. **Runtime lookup**: `getContract(name, chainId)` returns `{ abi, address }` -- throws if contract or chain address not found. +4. **Hook generation**: `pnpm wagmi-generate` reads the contracts array and writes `src/hooks/generated.ts`. The custom `reactSuspenseRead` plugin in `src/lib/wagmi/plugins/reactSuspenseRead.ts` adds Suspense variants for all read functions. + +To add a new contract: save the ABI, add it to the contracts array, run `pnpm wagmi-generate`. + +### Wallet Access Control + +**`WalletStatusVerifier`** component (`src/components/sharedComponents/WalletStatusVerifier.tsx`) -- renders a fallback cascade based on wallet state: +1. Not connected -> `ConnectWalletButton` +2. Connected but `walletChainId !== appChainId` -> "Switch to [Network]" button +3. Connected + synced -> renders children + +**`withWalletStatusVerifier(Component)`** HOC -- wraps the component with the above logic. Already applied to `TransactionButton` and `SignButton` -- do not double-wrap. + +Sync check: `isWalletSynced = isWalletConnected && walletChainId === appChainId`. From 9bec715fdfe111e73e5e8496cc9472fed296eaf6 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:21:39 -0300 Subject: [PATCH 019/115] chore: sync hotfix and release commit types across all validators --- .github/workflows/conventional-commits-PR-title.yml | 7 ++++--- CLAUDE.md | 3 ++- commitlint.config.js | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/conventional-commits-PR-title.yml b/.github/workflows/conventional-commits-PR-title.yml index 15cf4077..4a6740b0 100644 --- a/.github/workflows/conventional-commits-PR-title.yml +++ b/.github/workflows/conventional-commits-PR-title.yml @@ -9,7 +9,8 @@ jobs: runs-on: ubuntu-latest steps: - name: PR Conventional Commit Validation - uses: ytanikin/PRConventionalCommits@1.1.0 + uses: ytanikin/pr-conventional-commits@1.4.0 with: - task_types: '["feat","fix","docs","test","ci","refactor","perf","chore","revert"]' - add_label: 'false' + task_types: '["feat", "fix", "docs", "test", "ci", "refactor", "perf", "chore", "revert", "hotfix", "wip", "build", "style", "release"]' + custom_labels: '{"feat": "feature", "fix": "fix", "docs": "documentation", "test": "test", "ci": "CI/CD", "refactor": "refactor", "perf": "performance", "chore": "chore", "revert": "revert", "hotfix": "hotfix", "wip": "WIP", "build": "build", "style": "style", "release": "release"}' + add_scope_label: 'true' diff --git a/CLAUDE.md b/CLAUDE.md index 48d28512..f782a89f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -26,7 +26,7 @@ System architecture, data flow, provider hierarchy, and structural conventions a Three hooks run automatically and will block on failure: - **pre-commit:** lint-staged runs Biome check + Vitest on related files for staged changes -- **commit-msg:** commitlint enforces conventional commit format. Valid types: `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`, `style`, `build`, `wip`, `release`. PR titles are also validated via CI. +- **commit-msg:** commitlint enforces conventional commit format. Valid types: `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`, `style`, `build`, `hotfix`, `wip`, `release`. PR titles are also validated via CI. - **pre-push:** full `tsc --noEmit` type check (pushes with type errors will be rejected) ## Commit Standards @@ -54,6 +54,7 @@ Use [Conventional Commits](https://www.conventionalcommits.org/): | `perf` | Performance improvement | | `build` | Build system or external dependencies | | `revert` | Reverts a previous commit | +| `hotfix` | Urgent fix that bypasses the normal release cycle | | `wip` | Work in progress (avoid on main) | | `release` | Release-related changes | diff --git a/commitlint.config.js b/commitlint.config.js index cc1019a3..45f89143 100644 --- a/commitlint.config.js +++ b/commitlint.config.js @@ -11,6 +11,7 @@ export default { 'docs', 'feat', 'fix', + 'hotfix', 'perf', 'refactor', 'release', From 296ef2144b728463b14d273b90305adb73fb0c98 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:26:17 -0300 Subject: [PATCH 020/115] ci: add PR self-assignment workflow --- .github/workflows/pr-self-assign.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 .github/workflows/pr-self-assign.yml diff --git a/.github/workflows/pr-self-assign.yml b/.github/workflows/pr-self-assign.yml new file mode 100644 index 00000000..f96a1c22 --- /dev/null +++ b/.github/workflows/pr-self-assign.yml @@ -0,0 +1,15 @@ +name: PR Self-Assignment + +on: + pull_request: + types: [opened, ready_for_review] + +jobs: + assign: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: hkusu/review-assign-action@v1 + with: + assignees: ${{ github.actor }} # assign pull request author From 3a00be1a3fa0fa8901a76dac6ec5293aaeae52d9 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:35:40 -0300 Subject: [PATCH 021/115] docs: update architecture.md reference from AGENTS.md to CLAUDE.md --- architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/architecture.md b/architecture.md index 46889646..90c6da52 100644 --- a/architecture.md +++ b/architecture.md @@ -3,7 +3,7 @@ <!-- Keep this document up to date as the system evolves. It captures structural knowledge that helps both humans onboarding and agents building context at session start. Focus on the "shape" of the system — not usage instructions - (that's AGENTS.md) or API docs (that's code comments). --> + (that's CLAUDE.md) or API docs (that's code comments). --> ## Tech Stack From 03f85a5ee1d8cfb64e52b2c9d31d265bb17c7c7d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:35:59 -0300 Subject: [PATCH 022/115] docs: update bug template reference from AGENTS.md to CLAUDE.md --- .github/ISSUE_TEMPLATE/1-bug.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/1-bug.yml b/.github/ISSUE_TEMPLATE/1-bug.yml index 8d49b4fa..b3053186 100644 --- a/.github/ISSUE_TEMPLATE/1-bug.yml +++ b/.github/ISSUE_TEMPLATE/1-bug.yml @@ -66,7 +66,7 @@ body: - type: markdown attributes: value: | - > **Programmatic creation:** When using `gh` CLI or REST API, apply `severity: <level>` labels instead of using the Severity dropdown (e.g., `--label "severity: high"`). See the Label Conventions section in `AGENTS.md` for the full table. + > **Programmatic creation:** When using `gh` CLI or REST API, apply `severity: <level>` labels instead of using the Severity dropdown (e.g., `--label "severity: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. - type: dropdown id: severity From ead606da7b45be64d37d3e83c74c37035fbf045f Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:36:15 -0300 Subject: [PATCH 023/115] docs: update feature template reference from AGENTS.md to CLAUDE.md --- .github/ISSUE_TEMPLATE/2-feature.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/2-feature.yml b/.github/ISSUE_TEMPLATE/2-feature.yml index 79926725..e1f798fa 100644 --- a/.github/ISSUE_TEMPLATE/2-feature.yml +++ b/.github/ISSUE_TEMPLATE/2-feature.yml @@ -11,7 +11,7 @@ body: - type: markdown attributes: value: | - > **Priority:** When using `gh` CLI or REST API, apply `priority: <level>` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `AGENTS.md` for the full table. + > **Priority:** When using `gh` CLI or REST API, apply `priority: <level>` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. - type: textarea id: user-story From 71ebfd631a6e47aa4bb36303ac752da54e006b5b Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:36:30 -0300 Subject: [PATCH 024/115] docs: update epic template reference from AGENTS.md to CLAUDE.md --- .github/ISSUE_TEMPLATE/3-epic.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/3-epic.yml b/.github/ISSUE_TEMPLATE/3-epic.yml index 88a980db..fa51fa51 100644 --- a/.github/ISSUE_TEMPLATE/3-epic.yml +++ b/.github/ISSUE_TEMPLATE/3-epic.yml @@ -11,7 +11,7 @@ body: - type: markdown attributes: value: | - > **Priority:** When using `gh` CLI or REST API, apply `priority: <level>` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `AGENTS.md` for the full table. + > **Priority:** When using `gh` CLI or REST API, apply `priority: <level>` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. - type: textarea id: objective From 5d7552250aec81157937d71156d1b226a08c7995 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:37:00 -0300 Subject: [PATCH 025/115] docs: update issue skill reference from AGENTS.md to CLAUDE.md --- .claude/skills/issue/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/skills/issue/SKILL.md b/.claude/skills/issue/SKILL.md index 74e8d061..806f9391 100644 --- a/.claude/skills/issue/SKILL.md +++ b/.claude/skills/issue/SKILL.md @@ -29,7 +29,7 @@ Create a well-structured GitHub issue using the repo's own templates and `gh` CL ## Labels -Severity and priority are applied as labels, not form dropdowns. See the Label Conventions section in `AGENTS.md` for the full table and descriptions. +Severity and priority are applied as labels, not form dropdowns. See the Label Conventions section in `CLAUDE.md` for the full table and descriptions. - Bugs get a `severity: <level>` label (critical / high / medium / low). - Features and epics get a `priority: <level>` label (high / medium / low). From f21234f0f4abf0c638edbe92b00c003d762bd8d4 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 11:53:45 -0300 Subject: [PATCH 026/115] docs: update Node placeholder in bug template to 24.x --- .github/ISSUE_TEMPLATE/1-bug.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/1-bug.yml b/.github/ISSUE_TEMPLATE/1-bug.yml index b3053186..f7863826 100644 --- a/.github/ISSUE_TEMPLATE/1-bug.yml +++ b/.github/ISSUE_TEMPLATE/1-bug.yml @@ -58,7 +58,7 @@ body: render: bash placeholder: | OS: macOS 15.3 - Node: 22.x + Node: 24.x Package: 1.0.0 validations: required: false From cdc596ab8649806097e1118a645f8e70b6e2ba46 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 15:16:29 -0300 Subject: [PATCH 027/115] chore: update patch dependencies - @tanstack/react-router 1.168.3 -> 1.168.10 - @tanstack/router-cli 1.166.18 -> 1.166.25 - @tanstack/router-plugin 1.167.4 -> 1.167.12 - connectkit 1.9.1 -> 1.9.2 - graphql 16.13.1 -> 16.13.2 - use-debounce 10.1.0 -> 10.1.1 - typedoc 0.28.17 -> 0.28.18 Also fix pre-existing typedoc.json formatting. Part of #434. --- package.json | 14 +- pnpm-lock.yaml | 1078 ++++++++++++++++++++++++++++++------------------ typedoc.json | 11 +- 3 files changed, 698 insertions(+), 405 deletions(-) diff --git a/package.json b/package.json index 11625c97..968105b3 100644 --- a/package.json +++ b/package.json @@ -34,14 +34,14 @@ "@reown/appkit-adapter-wagmi": "^1.8.19", "@t3-oss/env-core": "^0.13.11", "@tanstack/react-query": "^5.95.2", - "@tanstack/react-router": "^1.168.3", + "@tanstack/react-router": "^1.168.10", "@tanstack/react-virtual": "^3.13.23", "@uniswap/default-token-list": "^13.33.0", "@vercel/analytics": "^1.5.0", "@web3icons/core": "^4.0.13", "@web3icons/react": "^4.0.13", - "connectkit": "^1.9.0", - "graphql": "^16.13.1", + "connectkit": "^1.9.2", + "graphql": "^16.13.2", "graphql-request": "^7.1.2", "next-themes": "^0.4.6", "porto": "^0.2.28", @@ -50,7 +50,7 @@ "react-error-boundary": "^6.0.0", "react-jazzicon": "^1.0.4", "react-number-format": "^5.4.5", - "use-debounce": "^10.0.4", + "use-debounce": "^10.1.1", "viem": "^2.47.6", "wagmi": "^2.17.5", "zod": "^3.24.4" @@ -63,9 +63,9 @@ "@graphql-typed-document-node/core": "^3.2.0", "@parcel/watcher": "^2.5.1", "@tanstack/react-query-devtools": "^5.95.2", - "@tanstack/router-cli": "^1.166.18", + "@tanstack/router-cli": "^1.166.25", "@tanstack/router-devtools": "^1.166.11", - "@tanstack/router-plugin": "^1.167.4", + "@tanstack/router-plugin": "^1.167.12", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", @@ -79,7 +79,7 @@ "jsdom": "^26.1.0", "lint-staged": "^15.5.2", "ts-node": "^10.9.2", - "typedoc": "^0.28.4", + "typedoc": "^0.28.18", "typedoc-github-theme": "^0.3.0", "typedoc-plugin-inline-sources": "^1.3.0", "typedoc-plugin-missing-exports": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f30a3eb9..fcf22cef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@bootnodedev/db-subgraph': specifier: ^0.1.2 - version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.1))(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) '@chakra-ui/react': specifier: ^3.34.0 version: 3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -36,8 +36,8 @@ importers: specifier: ^5.95.2 version: 5.95.2(react@19.1.0) '@tanstack/react-router': - specifier: ^1.168.3 - version: 1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^1.168.10 + version: 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/react-virtual': specifier: ^3.13.23 version: 3.13.23(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -54,14 +54,14 @@ importers: specifier: ^4.0.13 version: 4.1.17(react@19.1.0)(typescript@5.9.3) connectkit: - specifier: ^1.9.0 - version: 1.9.1(@babel/core@7.29.0)(@tanstack/react-query@5.95.2(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + specifier: ^1.9.2 + version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.95.2(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) graphql: - specifier: ^16.13.1 - version: 16.13.1 + specifier: ^16.13.2 + version: 16.13.2 graphql-request: specifier: ^7.1.2 - version: 7.4.0(graphql@16.13.1) + version: 7.4.0(graphql@16.13.2) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) @@ -84,8 +84,8 @@ importers: specifier: ^5.4.5 version: 5.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) use-debounce: - specifier: ^10.0.4 - version: 10.1.0(react@19.1.0) + specifier: ^10.1.1 + version: 10.1.1(react@19.1.0) viem: specifier: ^2.47.6 version: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) @@ -107,10 +107,10 @@ importers: version: 19.8.1 '@graphql-codegen/cli': specifier: ^5.0.6 - version: 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(typescript@5.9.3)(utf-8-validate@5.0.10) + version: 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) '@graphql-typed-document-node/core': specifier: ^3.2.0 - version: 3.2.0(graphql@16.13.1) + version: 3.2.0(graphql@16.13.2) '@parcel/watcher': specifier: ^2.5.1 version: 2.5.6 @@ -118,14 +118,14 @@ importers: specifier: ^5.95.2 version: 5.95.2(@tanstack/react-query@5.95.2(react@19.1.0))(react@19.1.0) '@tanstack/router-cli': - specifier: ^1.166.18 - version: 1.166.18 + specifier: ^1.166.25 + version: 1.166.25 '@tanstack/router-devtools': specifier: ^1.166.11 - version: 1.166.11(@tanstack/react-router@1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.3)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/router-plugin': - specifier: ^1.167.4 - version: 1.167.4(@tanstack/react-router@1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^1.167.12 + version: 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.9.1 @@ -166,20 +166,20 @@ importers: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@5.9.3) typedoc: - specifier: ^0.28.4 - version: 0.28.17(typescript@5.9.3) + specifier: ^0.28.18 + version: 0.28.18(typescript@5.9.3) typedoc-github-theme: specifier: ^0.3.0 - version: 0.3.1(typedoc@0.28.17(typescript@5.9.3)) + version: 0.3.1(typedoc@0.28.18(typescript@5.9.3)) typedoc-plugin-inline-sources: specifier: ^1.3.0 - version: 1.3.0(typedoc@0.28.17(typescript@5.9.3)) + version: 1.3.0(typedoc@0.28.18(typescript@5.9.3)) typedoc-plugin-missing-exports: specifier: ^4.0.0 - version: 4.1.2(typedoc@0.28.17(typescript@5.9.3)) + version: 4.1.2(typedoc@0.28.18(typescript@5.9.3)) typedoc-plugin-rename-defaults: specifier: ^0.7.3 - version: 0.7.3(typedoc@0.28.17(typescript@5.9.3)) + version: 0.7.3(typedoc@0.28.18(typescript@5.9.3)) typescript: specifier: ^5.8.3 version: 5.9.3 @@ -215,6 +215,23 @@ packages: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 typescript: ^5.0.0 + '@aave/account@0.2.0': + resolution: {integrity: sha512-fk9KcC0He0WNvUGytxVv4urh8F+zznm6ZdpgKnNvq9jKUpnc2HSSn7mS3n4h13h80WtF8OL6rpL50ctqqc4/Nw==} + peerDependencies: + react: 17.x || 18.x || 19.x + react-dom: 17.x || 18.x || 19.x + viem: 2.x + wagmi: 2.x + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + viem: + optional: true + wagmi: + optional: true + '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} @@ -823,6 +840,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.4': + resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.25.12': resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} @@ -835,6 +858,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.4': + resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.25.12': resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} @@ -847,6 +876,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.4': + resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.25.12': resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} @@ -859,6 +894,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.4': + resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.25.12': resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} @@ -871,6 +912,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.4': + resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.25.12': resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} @@ -883,6 +930,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.4': + resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.25.12': resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} @@ -895,6 +948,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.4': + resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.25.12': resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} @@ -907,6 +966,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.4': + resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.25.12': resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} @@ -919,6 +984,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.4': + resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.25.12': resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} @@ -931,6 +1002,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.4': + resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.25.12': resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} @@ -943,6 +1020,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.4': + resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.25.12': resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} @@ -955,6 +1038,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.4': + resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.25.12': resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} @@ -967,6 +1056,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.4': + resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.25.12': resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} @@ -979,6 +1074,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.4': + resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.25.12': resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} @@ -991,6 +1092,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.4': + resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.25.12': resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} @@ -1003,6 +1110,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.4': + resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.25.12': resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} @@ -1015,6 +1128,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.4': + resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -1027,6 +1146,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.4': + resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.25.12': resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} @@ -1039,6 +1164,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.4': + resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -1051,6 +1182,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.4': + resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.25.12': resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} @@ -1063,6 +1200,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.4': + resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -1075,6 +1218,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.4': + resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.25.12': resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} @@ -1087,6 +1236,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.4': + resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.25.12': resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} @@ -1099,6 +1254,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.4': + resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.25.12': resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} @@ -1111,6 +1272,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.4': + resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.25.12': resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} @@ -1123,6 +1290,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.4': + resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@ethereumjs/common@3.2.0': resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} @@ -1177,8 +1350,8 @@ packages: peerDependencies: viem: '>=2.0.0' - '@gerrit0/mini-shiki@3.22.0': - resolution: {integrity: sha512-jMpciqEVUBKE1QwU64S4saNMzpsSza6diNCk4MWAeCxO2+LFi2FIFmL2S0VDLzEJCxuvCbU783xi8Hp/gkM5CQ==} + '@gerrit0/mini-shiki@3.23.0': + resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} '@gql.tada/cli-utils@1.7.2': resolution: {integrity: sha512-Qbc7hbLvCz6IliIJpJuKJa9p05b2Jona7ov7+qofCsMRxHRZE1kpAmZMvL8JCI4c0IagpIlWNaMizXEQUe8XjQ==} @@ -2853,14 +3026,14 @@ packages: '@shikijs/engine-oniguruma@1.29.2': resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==} - '@shikijs/engine-oniguruma@3.22.0': - resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} '@shikijs/langs@1.29.2': resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==} - '@shikijs/langs@3.22.0': - resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} '@shikijs/rehype@1.29.2': resolution: {integrity: sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==} @@ -2868,8 +3041,8 @@ packages: '@shikijs/themes@1.29.2': resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==} - '@shikijs/themes@3.22.0': - resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} '@shikijs/transformers@1.29.2': resolution: {integrity: sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA==} @@ -2880,8 +3053,8 @@ packages: '@shikijs/types@1.29.2': resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==} - '@shikijs/types@3.22.0': - resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -3508,15 +3681,15 @@ packages: '@tanstack/router-core': optional: true - '@tanstack/react-router@1.168.3': - resolution: {integrity: sha512-hMWXhckeaSvjepHT5x9tUYJVXMvT/kUjaVHOUDmCfyOBtjxJNYJKbEWClXoopGwWlHjRTAzhsndhnQQRbIiKmA==} + '@tanstack/react-router@1.168.10': + resolution: {integrity: sha512-/RmDlOwDkCug609KdPB3U+U1zmrtadJpvsmRg2zEn8TRCKRNri7dYZIjQZbNg8PgUiRL4T6njrZBV1ChzblNaA==} engines: {node: '>=20.19'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-store@0.9.2': - resolution: {integrity: sha512-Vt5usJE5sHG/cMechQfmwvwne6ktGCELe89Lmvoxe3LKRoFrhPa8OCKWs0NliG8HTJElEIj7PLtaBQIcux5pAQ==} + '@tanstack/react-store@0.9.3': + resolution: {integrity: sha512-y2iHd/N9OkoQbFJLUX1T9vbc2O9tjH0pQRgTcx1/Nz4IlwLvkgpuglXUx+mXt0g5ZDFrEeDnONPqkbfxXJKwRg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -3527,13 +3700,13 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-cli@1.166.18': - resolution: {integrity: sha512-NR48iTLMuNm53SUWBBEQyE0TG3zAoqalPbcmVyQ9NOrzcXW/E7QLo96/8TYF4hiAu/x51e+z2fZ5wYl8XcGB7w==} + '@tanstack/router-cli@1.166.25': + resolution: {integrity: sha512-COkW3lKmVw2lDgw75zEmHzE1FaWMoHJQfuCGrAUrNnpkPIXwVQgIP0O3+COToELxbegPktXozEpYnGD0m9YoVg==} engines: {node: '>=20.19'} hasBin: true - '@tanstack/router-core@1.168.3': - resolution: {integrity: sha512-qcjArls3v12UQQkEpU0+todc0/MCyrEZeXxhtgZZ0e5gxZDG25BUe/HlNcIjzyb7NZaw0TQAUBXbTClmFaHZiw==} + '@tanstack/router-core@1.168.9': + resolution: {integrity: sha512-18oeEwEDyXOIuO1VBP9ACaK7tYHZUjynGDCoUh/5c/BNhia9vCJCp9O0LfhZXOorDc/PmLSgvmweFhVmIxF10g==} engines: {node: '>=20.19'} hasBin: true @@ -3559,17 +3732,17 @@ packages: csstype: optional: true - '@tanstack/router-generator@1.166.17': - resolution: {integrity: sha512-sBs6lyvA+B51hpUWYLx0KdaAIO/m9Ml2bsAdfVYyvs5DZXiAZZEbVD0myndyIkWaPR5x+kzuBakkrgTxJ9/m9Q==} + '@tanstack/router-generator@1.166.24': + resolution: {integrity: sha512-vdaGKwuH+r+DPe6R1mjk+TDDmDH6NTG7QqwxHqGEvOH4aGf9sPjhmRKNJZqQr8cPIbfp6u5lXyZ1TeDcSNMVEA==} engines: {node: '>=20.19'} - '@tanstack/router-plugin@1.167.4': - resolution: {integrity: sha512-VChByI+CHdHMW350E6winbgqdX4tzmZIHovys8vXidRZkxGAhlygj/zhbnepF/TGX88rubj+SXDwSHY25qEcpQ==} + '@tanstack/router-plugin@1.167.12': + resolution: {integrity: sha512-StEHcctCuFI5taSjO+lhR/yQ+EK63BdyYa+ne6FoNQPB3MMrOUrz2ZVnbqILRLkh2b+p2EfBKt65sgAKdKygPQ==} engines: {node: '>=20.19'} hasBin: true peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.168.3 + '@tanstack/react-router': ^1.168.10 vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' vite-plugin-solid: ^2.11.10 webpack: '>=5.92.0' @@ -3589,8 +3762,8 @@ packages: resolution: {integrity: sha512-nRcYw+w2OEgK6VfjirYvGyPLOK+tZQz1jkYcmH5AjMamQ9PycnlxZF2aEZtPpNoUsaceX2bHptn6Ub5hGXqNvw==} engines: {node: '>=20.19'} - '@tanstack/store@0.9.2': - resolution: {integrity: sha512-K013lUJEFJK2ofFQ/hZKJUmCnpcV00ebLyOyFOWQvyQHUOZp/iYO84BM6aOGiV81JzwbX0APTVmW8YI7yiG5oA==} + '@tanstack/store@0.9.3': + resolution: {integrity: sha512-8reSzl/qGWGGVKhBoxXPMWzATSbZLZFWhwBAFO9NAyp0TxzfBP0mIrGb8CP8KrQTmvzXlR/vFPPUrHTLBGyFyw==} '@tanstack/virtual-core@3.13.23': resolution: {integrity: sha512-zSz2Z2HNyLjCplANTDyl3BcdQJc2k1+yyFoKhNRmCr7V7dY8o8q5m8uFTI1/Pg1kL+Hgrz6u3Xo6eFUB7l66cg==} @@ -4600,13 +4773,17 @@ packages: bowser@2.14.1: resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} brace-expansion@5.0.3: resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==} engines: {node: 18 || 20 || >=22} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -4856,8 +5033,8 @@ packages: confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - connectkit@1.9.1: - resolution: {integrity: sha512-ac9Ki3+HdS3l5NCa6H86y7R+0PqwJ8yzsBQVtWk4/jkFo+JJioetO43A/Q0O7VtxLbfuLLfwDGZ09taePLNzfQ==} + connectkit@1.9.2: + resolution: {integrity: sha512-ZaYdL2UgHdcVy5j7Cn5C6KUtA5Ev3LEc3mPAzEoH3V3hdu3CdC8jgFTFsgInTXXpsdNpwTEEDPnP245ok7wOYg==} engines: {node: '>=12.4'} peerDependencies: '@tanstack/react-query': '>=5.0.0' @@ -4888,8 +5065,8 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + cookie-es@1.2.3: + resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} cookie-es@2.0.0: resolution: {integrity: sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg==} @@ -5315,6 +5492,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.4: + resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -5427,23 +5609,6 @@ packages: resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} engines: {node: '> 0.1.90'} - family@0.1.6: - resolution: {integrity: sha512-ulHRThfhz+glfmVfSPcU16N1hZ/uj0Y1D79vl0PeJ3yFfgXlkiBbVwXRJhDQuP8oizxBCl16KT2PrMleiYwrPw==} - peerDependencies: - react: 17.x || 18.x || 19.x - react-dom: 17.x || 18.x || 19.x - viem: 2.x - wagmi: 2.x - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - viem: - optional: true - wagmi: - optional: true - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -5615,8 +5780,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.13.6: - resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + get-tsconfig@4.13.7: + resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} git-raw-commits@4.0.0: resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} @@ -5714,8 +5879,8 @@ packages: ws: optional: true - graphql@16.13.1: - resolution: {integrity: sha512-gGgrVCoDKlIZ8fIqXBBb0pPKqDgki0Z/FSKNiQzSGj2uEYHr1tq5wmBegGwJx6QB5S5cM0khSBpi/JFHMCvsmQ==} + graphql@16.13.2: + resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} h3@1.15.5: @@ -6659,8 +6824,12 @@ packages: resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} engines: {node: 18 || 20 || >=22} - minimatch@3.1.3: - resolution: {integrity: sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} minimatch@9.0.6: resolution: {integrity: sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==} @@ -8056,12 +8225,12 @@ packages: peerDependencies: typedoc: '>=0.22.x <0.29.x' - typedoc@0.28.17: - resolution: {integrity: sha512-ZkJ2G7mZrbxrKxinTQMjFqsCoYY6a5Luwv2GKbTnBCEgV2ihYm5CflA9JnJAwH0pZWavqfYxmDkFHPt4yx2oDQ==} + typedoc@0.28.18: + resolution: {integrity: sha512-NTWTUOFRQ9+SGKKTuWKUioUkjxNwtS3JDRPVKZAXGHZy2wCA8bdv2iJiyeePn0xkmK+TCCqZFT0X7+2+FLjngA==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} @@ -8239,8 +8408,8 @@ packages: '@types/react': optional: true - use-debounce@10.1.0: - resolution: {integrity: sha512-lu87Za35V3n/MyMoEpD5zJv0k7hCn0p+V/fK2kWD+3k2u3kOCwO593UArbczg1fhfs2rqPEnHpULJ3KmGdDzvg==} + use-debounce@10.1.1: + resolution: {integrity: sha512-kvds8BHR2k28cFsxW8k3nc/tRga2rs1RHYCqmmGqb90MEeE++oALwzh2COiuBLO1/QXiOuShXoSN2ZpWnMmvuQ==} engines: {node: '>= 16.0.0'} peerDependencies: react: '*' @@ -8729,16 +8898,23 @@ packages: snapshots: - '@0no-co/graphql.web@1.2.0(graphql@16.13.1)': + '@0no-co/graphql.web@1.2.0(graphql@16.13.2)': optionalDependencies: - graphql: 16.13.1 + graphql: 16.13.2 - '@0no-co/graphqlsp@1.15.2(graphql@16.13.1)(typescript@5.9.3)': + '@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@5.9.3)': dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.9.3) - graphql: 16.13.1 + '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@5.9.3) + graphql: 16.13.2 typescript: 5.9.3 + '@aave/account@0.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': + optionalDependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + '@adobe/css-tools@4.4.4': {} '@adraffy/ens-normalize@1.11.1': {} @@ -8748,7 +8924,7 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@ardatan/relay-compiler@12.0.0(graphql@16.13.1)': + '@ardatan/relay-compiler@12.0.0(graphql@16.13.2)': dependencies: '@babel/core': 7.29.0 '@babel/generator': 7.29.1 @@ -8761,7 +8937,7 @@ snapshots: fb-watchman: 2.0.2 fbjs: 3.0.5 glob: 7.2.3 - graphql: 16.13.1 + graphql: 16.13.2 immutable: 3.7.6 invariant: 2.2.4 nullthrows: 1.1.1 @@ -8772,14 +8948,14 @@ snapshots: - encoding - supports-color - '@ardatan/relay-compiler@12.0.3(graphql@16.13.1)': + '@ardatan/relay-compiler@12.0.3(graphql@16.13.2)': dependencies: '@babel/generator': 7.29.1 '@babel/parser': 7.29.0 '@babel/runtime': 7.28.6 chalk: 4.1.2 fb-watchman: 2.0.2 - graphql: 16.13.1 + graphql: 16.13.2 immutable: 3.7.6 invariant: 2.2.4 nullthrows: 1.1.1 @@ -9287,13 +9463,13 @@ snapshots: dependencies: '@noble/curves': 1.9.7 - '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.1))(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: - '@graphql-codegen/cli': 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@graphql-codegen/typescript-graphql-request': 6.4.0(graphql-request@6.1.0(graphql@16.13.1))(graphql-tag@2.12.6(graphql@16.13.1))(graphql@16.13.1) + '@graphql-codegen/cli': 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@graphql-codegen/typescript-graphql-request': 6.4.0(graphql-request@6.1.0(graphql@16.13.2))(graphql-tag@2.12.6(graphql@16.13.2))(graphql@16.13.2) '@tanstack/react-query': 5.95.2(react@19.1.0) - graphql: 16.13.1 - graphql-request: 6.1.0(graphql@16.13.1) + graphql: 16.13.2 + graphql-request: 6.1.0(graphql@16.13.2) react: 19.1.0 viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: @@ -9632,156 +9808,234 @@ snapshots: '@esbuild/aix-ppc64@0.27.3': optional: true + '@esbuild/aix-ppc64@0.27.4': + optional: true + '@esbuild/android-arm64@0.25.12': optional: true '@esbuild/android-arm64@0.27.3': optional: true + '@esbuild/android-arm64@0.27.4': + optional: true + '@esbuild/android-arm@0.25.12': optional: true '@esbuild/android-arm@0.27.3': optional: true + '@esbuild/android-arm@0.27.4': + optional: true + '@esbuild/android-x64@0.25.12': optional: true '@esbuild/android-x64@0.27.3': optional: true + '@esbuild/android-x64@0.27.4': + optional: true + '@esbuild/darwin-arm64@0.25.12': optional: true '@esbuild/darwin-arm64@0.27.3': optional: true + '@esbuild/darwin-arm64@0.27.4': + optional: true + '@esbuild/darwin-x64@0.25.12': optional: true '@esbuild/darwin-x64@0.27.3': optional: true + '@esbuild/darwin-x64@0.27.4': + optional: true + '@esbuild/freebsd-arm64@0.25.12': optional: true '@esbuild/freebsd-arm64@0.27.3': optional: true + '@esbuild/freebsd-arm64@0.27.4': + optional: true + '@esbuild/freebsd-x64@0.25.12': optional: true '@esbuild/freebsd-x64@0.27.3': optional: true + '@esbuild/freebsd-x64@0.27.4': + optional: true + '@esbuild/linux-arm64@0.25.12': optional: true '@esbuild/linux-arm64@0.27.3': optional: true + '@esbuild/linux-arm64@0.27.4': + optional: true + '@esbuild/linux-arm@0.25.12': optional: true '@esbuild/linux-arm@0.27.3': optional: true + '@esbuild/linux-arm@0.27.4': + optional: true + '@esbuild/linux-ia32@0.25.12': optional: true '@esbuild/linux-ia32@0.27.3': optional: true + '@esbuild/linux-ia32@0.27.4': + optional: true + '@esbuild/linux-loong64@0.25.12': optional: true '@esbuild/linux-loong64@0.27.3': optional: true + '@esbuild/linux-loong64@0.27.4': + optional: true + '@esbuild/linux-mips64el@0.25.12': optional: true '@esbuild/linux-mips64el@0.27.3': optional: true + '@esbuild/linux-mips64el@0.27.4': + optional: true + '@esbuild/linux-ppc64@0.25.12': optional: true '@esbuild/linux-ppc64@0.27.3': optional: true + '@esbuild/linux-ppc64@0.27.4': + optional: true + '@esbuild/linux-riscv64@0.25.12': optional: true '@esbuild/linux-riscv64@0.27.3': optional: true + '@esbuild/linux-riscv64@0.27.4': + optional: true + '@esbuild/linux-s390x@0.25.12': optional: true '@esbuild/linux-s390x@0.27.3': optional: true + '@esbuild/linux-s390x@0.27.4': + optional: true + '@esbuild/linux-x64@0.25.12': optional: true '@esbuild/linux-x64@0.27.3': optional: true + '@esbuild/linux-x64@0.27.4': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true '@esbuild/netbsd-arm64@0.27.3': optional: true + '@esbuild/netbsd-arm64@0.27.4': + optional: true + '@esbuild/netbsd-x64@0.25.12': optional: true '@esbuild/netbsd-x64@0.27.3': optional: true + '@esbuild/netbsd-x64@0.27.4': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true '@esbuild/openbsd-arm64@0.27.3': optional: true + '@esbuild/openbsd-arm64@0.27.4': + optional: true + '@esbuild/openbsd-x64@0.25.12': optional: true '@esbuild/openbsd-x64@0.27.3': optional: true + '@esbuild/openbsd-x64@0.27.4': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.27.3': optional: true + '@esbuild/openharmony-arm64@0.27.4': + optional: true + '@esbuild/sunos-x64@0.25.12': optional: true '@esbuild/sunos-x64@0.27.3': optional: true + '@esbuild/sunos-x64@0.27.4': + optional: true + '@esbuild/win32-arm64@0.25.12': optional: true '@esbuild/win32-arm64@0.27.3': optional: true + '@esbuild/win32-arm64@0.27.4': + optional: true + '@esbuild/win32-ia32@0.25.12': optional: true '@esbuild/win32-ia32@0.27.3': optional: true + '@esbuild/win32-ia32@0.27.4': + optional: true + '@esbuild/win32-x64@0.25.12': optional: true '@esbuild/win32-x64@0.27.3': optional: true + '@esbuild/win32-x64@0.27.4': + optional: true + '@ethereumjs/common@3.2.0': dependencies: '@ethereumjs/util': 8.1.0 @@ -9848,58 +10102,58 @@ snapshots: transitivePeerDependencies: - supports-color - '@gerrit0/mini-shiki@3.22.0': + '@gerrit0/mini-shiki@3.23.0': dependencies: - '@shikijs/engine-oniguruma': 3.22.0 - '@shikijs/langs': 3.22.0 - '@shikijs/themes': 3.22.0 - '@shikijs/types': 3.22.0 + '@shikijs/engine-oniguruma': 3.23.0 + '@shikijs/langs': 3.23.0 + '@shikijs/themes': 3.23.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.1)(typescript@5.9.3))(graphql@16.13.1)(typescript@5.9.3)': + '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@5.9.3))(graphql@16.13.2)(typescript@5.9.3)': dependencies: - '@0no-co/graphqlsp': 1.15.2(graphql@16.13.1)(typescript@5.9.3) - '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.9.3) - graphql: 16.13.1 + '@0no-co/graphqlsp': 1.15.2(graphql@16.13.2)(typescript@5.9.3) + '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@5.9.3) + graphql: 16.13.2 typescript: 5.9.3 - '@gql.tada/internal@1.0.8(graphql@16.13.1)(typescript@5.9.3)': + '@gql.tada/internal@1.0.8(graphql@16.13.2)(typescript@5.9.3)': dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.13.1) - graphql: 16.13.1 + '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) + graphql: 16.13.2 typescript: 5.9.3 - '@graphql-codegen/add@5.0.3(graphql@16.13.1)': + '@graphql-codegen/add@5.0.3(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.6.3 - '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: '@babel/generator': 7.29.1 '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@graphql-codegen/client-preset': 4.8.3(graphql@16.13.1) - '@graphql-codegen/core': 4.0.2(graphql@16.13.1) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-tools/apollo-engine-loader': 8.0.28(graphql@16.13.1) - '@graphql-tools/code-file-loader': 8.1.28(graphql@16.13.1) - '@graphql-tools/git-loader': 8.0.32(graphql@16.13.1) - '@graphql-tools/github-loader': 8.0.22(@types/node@25.3.0)(graphql@16.13.1) - '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.13.1) - '@graphql-tools/json-file-loader': 8.0.26(graphql@16.13.1) - '@graphql-tools/load': 8.1.8(graphql@16.13.1) - '@graphql-tools/prisma-loader': 8.0.17(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10) - '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-codegen/client-preset': 4.8.3(graphql@16.13.2) + '@graphql-codegen/core': 4.0.2(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-tools/apollo-engine-loader': 8.0.28(graphql@16.13.2) + '@graphql-tools/code-file-loader': 8.1.28(graphql@16.13.2) + '@graphql-tools/git-loader': 8.0.32(graphql@16.13.2) + '@graphql-tools/github-loader': 8.0.22(@types/node@25.3.0)(graphql@16.13.2) + '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.13.2) + '@graphql-tools/json-file-loader': 8.0.26(graphql@16.13.2) + '@graphql-tools/load': 8.1.8(graphql@16.13.2) + '@graphql-tools/prisma-loader': 8.0.17(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@whatwg-node/fetch': 0.10.13 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.9.3) debounce: 1.2.1 detect-indent: 6.1.0 - graphql: 16.13.1 - graphql-config: 5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(typescript@5.9.3)(utf-8-validate@5.0.10) + graphql: 16.13.2 + graphql-config: 5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) inquirer: 8.2.7(@types/node@25.3.0) is-glob: 4.0.3 jiti: 1.21.7 @@ -9928,145 +10182,145 @@ snapshots: - typescript - utf-8-validate - '@graphql-codegen/client-preset@4.8.3(graphql@16.13.1)': + '@graphql-codegen/client-preset@4.8.3(graphql@16.13.2)': dependencies: '@babel/helper-plugin-utils': 7.28.6 '@babel/template': 7.28.6 - '@graphql-codegen/add': 5.0.3(graphql@16.13.1) - '@graphql-codegen/gql-tag-operations': 4.0.17(graphql@16.13.1) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-codegen/typed-document-node': 5.1.2(graphql@16.13.1) - '@graphql-codegen/typescript': 4.1.6(graphql@16.13.1) - '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.13.1) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.1) - '@graphql-tools/documents': 1.0.1(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-codegen/add': 5.0.3(graphql@16.13.2) + '@graphql-codegen/gql-tag-operations': 4.0.17(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/typed-document-node': 5.1.2(graphql@16.13.2) + '@graphql-codegen/typescript': 4.1.6(graphql@16.13.2) + '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) + '@graphql-tools/documents': 1.0.1(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/core@4.0.2(graphql@16.13.1)': + '@graphql-codegen/core@4.0.2(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-tools/schema': 10.0.31(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-tools/schema': 10.0.31(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.6.3 - '@graphql-codegen/gql-tag-operations@4.0.17(graphql@16.13.1)': + '@graphql-codegen/gql-tag-operations@4.0.17(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) auto-bind: 4.0.0 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/plugin-helpers@3.1.2(graphql@16.13.1)': + '@graphql-codegen/plugin-helpers@3.1.2(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.13.1) + '@graphql-tools/utils': 9.2.1(graphql@16.13.2) change-case-all: 1.0.15 common-tags: 1.8.2 - graphql: 16.13.1 + graphql: 16.13.2 import-from: 4.0.0 lodash: 4.17.23 tslib: 2.4.1 - '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.13.1)': + '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) change-case-all: 1.0.15 common-tags: 1.8.2 - graphql: 16.13.1 + graphql: 16.13.2 import-from: 4.0.0 lodash: 4.17.23 tslib: 2.6.3 - '@graphql-codegen/schema-ast@4.1.0(graphql@16.13.1)': + '@graphql-codegen/schema-ast@4.1.0(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.6.3 - '@graphql-codegen/typed-document-node@5.1.2(graphql@16.13.1)': + '@graphql-codegen/typed-document-node@5.1.2(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.1) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) auto-bind: 4.0.0 change-case-all: 1.0.15 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/typescript-graphql-request@6.4.0(graphql-request@6.1.0(graphql@16.13.1))(graphql-tag@2.12.6(graphql@16.13.1))(graphql@16.13.1)': + '@graphql-codegen/typescript-graphql-request@6.4.0(graphql-request@6.1.0(graphql@16.13.2))(graphql-tag@2.12.6(graphql@16.13.2))(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.13.1) - '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.13.1) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.13.2) auto-bind: 4.0.0 - graphql: 16.13.1 - graphql-request: 6.1.0(graphql@16.13.1) - graphql-tag: 2.12.6(graphql@16.13.1) + graphql: 16.13.2 + graphql-request: 6.1.0(graphql@16.13.2) + graphql-tag: 2.12.6(graphql@16.13.2) tslib: 2.8.1 transitivePeerDependencies: - encoding - supports-color - '@graphql-codegen/typescript-operations@4.6.1(graphql@16.13.1)': + '@graphql-codegen/typescript-operations@4.6.1(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-codegen/typescript': 4.1.6(graphql@16.13.1) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.1) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/typescript': 4.1.6(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) auto-bind: 4.0.0 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/typescript@4.1.6(graphql@16.13.1)': + '@graphql-codegen/typescript@4.1.6(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-codegen/schema-ast': 4.1.0(graphql@16.13.1) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.1) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/schema-ast': 4.1.0(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) auto-bind: 4.0.0 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.6.3 transitivePeerDependencies: - encoding - '@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.13.1)': + '@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.13.1) - '@graphql-tools/optimize': 1.4.0(graphql@16.13.1) - '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.13.1) - '@graphql-tools/utils': 9.2.1(graphql@16.13.1) + '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.13.2) + '@graphql-tools/optimize': 1.4.0(graphql@16.13.2) + '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.13.2) + '@graphql-tools/utils': 9.2.1(graphql@16.13.2) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.13.1 - graphql-tag: 2.12.6(graphql@16.13.1) + graphql: 16.13.2 + graphql-tag: 2.12.6(graphql@16.13.2) parse-filepath: 1.0.2 tslib: 2.4.1 transitivePeerDependencies: - encoding - supports-color - '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.13.1)': + '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.1) - '@graphql-tools/optimize': 2.0.0(graphql@16.13.1) - '@graphql-tools/relay-operation-optimizer': 7.0.27(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-tools/optimize': 2.0.0(graphql@16.13.2) + '@graphql-tools/relay-operation-optimizer': 7.0.27(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 - graphql: 16.13.1 - graphql-tag: 2.12.6(graphql@16.13.1) + graphql: 16.13.2 + graphql-tag: 2.12.6(graphql@16.13.2) parse-filepath: 1.0.2 tslib: 2.6.3 transitivePeerDependencies: @@ -10074,71 +10328,71 @@ snapshots: '@graphql-hive/signal@1.0.0': {} - '@graphql-tools/apollo-engine-loader@8.0.28(graphql@16.13.1)': + '@graphql-tools/apollo-engine-loader@8.0.28(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@whatwg-node/fetch': 0.10.13 - graphql: 16.13.1 + graphql: 16.13.2 sync-fetch: 0.6.0 tslib: 2.8.1 - '@graphql-tools/batch-execute@9.0.19(graphql@16.13.1)': + '@graphql-tools/batch-execute@9.0.19(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/code-file-loader@8.1.28(graphql@16.13.1)': + '@graphql-tools/code-file-loader@8.1.28(graphql@16.13.2)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.13.1) - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) + '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) globby: 11.1.0 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/delegate@10.2.23(graphql@16.13.1)': + '@graphql-tools/delegate@10.2.23(graphql@16.13.2)': dependencies: - '@graphql-tools/batch-execute': 9.0.19(graphql@16.13.1) - '@graphql-tools/executor': 1.5.1(graphql@16.13.1) - '@graphql-tools/schema': 10.0.31(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/batch-execute': 9.0.19(graphql@16.13.2) + '@graphql-tools/executor': 1.5.1(graphql@16.13.2) + '@graphql-tools/schema': 10.0.31(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 dset: 3.1.4 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/documents@1.0.1(graphql@16.13.1)': + '@graphql-tools/documents@1.0.1(graphql@16.13.2)': dependencies: - graphql: 16.13.1 + graphql: 16.13.2 lodash.sortby: 4.7.0 tslib: 2.8.1 - '@graphql-tools/executor-common@0.0.4(graphql@16.13.1)': + '@graphql-tools/executor-common@0.0.4(graphql@16.13.2)': dependencies: '@envelop/core': 5.5.1 - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + graphql: 16.13.2 - '@graphql-tools/executor-common@0.0.6(graphql@16.13.1)': + '@graphql-tools/executor-common@0.0.6(graphql@16.13.2)': dependencies: '@envelop/core': 5.5.1 - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + graphql: 16.13.2 - '@graphql-tools/executor-graphql-ws@2.0.7(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10)': + '@graphql-tools/executor-graphql-ws@2.0.7(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/executor-common': 0.0.6(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/executor-common': 0.0.6(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@whatwg-node/disposablestack': 0.0.6 - graphql: 16.13.1 - graphql-ws: 6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + graphql: 16.13.2 + graphql-ws: 6.0.7(crossws@0.3.5)(graphql@16.13.2)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) isomorphic-ws: 5.0.0(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) tslib: 2.8.1 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) @@ -10148,26 +10402,26 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/executor-http@1.3.3(@types/node@25.3.0)(graphql@16.13.1)': + '@graphql-tools/executor-http@1.3.3(@types/node@25.3.0)(graphql@16.13.2)': dependencies: '@graphql-hive/signal': 1.0.0 - '@graphql-tools/executor-common': 0.0.4(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/executor-common': 0.0.4(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.1 + graphql: 16.13.2 meros: 1.3.2(@types/node@25.3.0) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - '@graphql-tools/executor-legacy-ws@1.1.25(bufferutil@4.1.0)(graphql@16.13.1)(utf-8-validate@5.0.10)': + '@graphql-tools/executor-legacy-ws@1.1.25(bufferutil@4.1.0)(graphql@16.13.2)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@types/ws': 8.18.1 - graphql: 16.13.1 + graphql: 16.13.2 isomorphic-ws: 5.0.0(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) tslib: 2.8.1 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) @@ -10175,21 +10429,21 @@ snapshots: - bufferutil - utf-8-validate - '@graphql-tools/executor@1.5.1(graphql@16.13.1)': + '@graphql-tools/executor@1.5.1(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/git-loader@8.0.32(graphql@16.13.1)': + '@graphql-tools/git-loader@8.0.32(graphql@16.13.2)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.13.1) - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + graphql: 16.13.2 is-glob: 4.0.3 micromatch: 4.0.8 tslib: 2.8.1 @@ -10197,97 +10451,97 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.22(@types/node@25.3.0)(graphql@16.13.1)': + '@graphql-tools/github-loader@8.0.22(@types/node@25.3.0)(graphql@16.13.2)': dependencies: - '@graphql-tools/executor-http': 1.3.3(@types/node@25.3.0)(graphql@16.13.1) - '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/executor-http': 1.3.3(@types/node@25.3.0)(graphql@16.13.2) + '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.1 + graphql: 16.13.2 sync-fetch: 0.6.0-2 tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - supports-color - '@graphql-tools/graphql-file-loader@8.1.9(graphql@16.13.1)': + '@graphql-tools/graphql-file-loader@8.1.9(graphql@16.13.2)': dependencies: - '@graphql-tools/import': 7.1.9(graphql@16.13.1) - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) + '@graphql-tools/import': 7.1.9(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) globby: 11.1.0 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/graphql-tag-pluck@8.3.27(graphql@16.13.1)': + '@graphql-tools/graphql-tag-pluck@8.3.27(graphql@16.13.2)': dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.0 '@babel/plugin-syntax-import-assertions': 7.28.6(@babel/core@7.29.0) '@babel/traverse': 7.29.0(supports-color@5.5.0) '@babel/types': 7.29.0 - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@graphql-tools/import@7.1.9(graphql@16.13.1)': + '@graphql-tools/import@7.1.9(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - '@theguild/federation-composition': 0.21.3(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + '@theguild/federation-composition': 0.21.3(graphql@16.13.2) + graphql: 16.13.2 resolve-from: 5.0.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@graphql-tools/json-file-loader@8.0.26(graphql@16.13.1)': + '@graphql-tools/json-file-loader@8.0.26(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) globby: 11.1.0 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/load@8.1.8(graphql@16.13.1)': + '@graphql-tools/load@8.1.8(graphql@16.13.2)': dependencies: - '@graphql-tools/schema': 10.0.31(graphql@16.13.1) - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/schema': 10.0.31(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + graphql: 16.13.2 p-limit: 3.1.0 tslib: 2.8.1 - '@graphql-tools/merge@9.1.7(graphql@16.13.1)': + '@graphql-tools/merge@9.1.7(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/optimize@1.4.0(graphql@16.13.1)': + '@graphql-tools/optimize@1.4.0(graphql@16.13.2)': dependencies: - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/optimize@2.0.0(graphql@16.13.1)': + '@graphql-tools/optimize@2.0.0(graphql@16.13.2)': dependencies: - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/prisma-loader@8.0.17(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10)': + '@graphql-tools/prisma-loader@8.0.17(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@types/js-yaml': 4.0.9 '@whatwg-node/fetch': 0.10.13 chalk: 4.1.2 debug: 4.4.3(supports-color@5.5.0) dotenv: 16.6.1 - graphql: 16.13.1 - graphql-request: 6.1.0(graphql@16.13.1) + graphql: 16.13.2 + graphql-request: 6.1.0(graphql@16.13.2) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 jose: 5.10.0 @@ -10305,43 +10559,43 @@ snapshots: - supports-color - utf-8-validate - '@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.13.1)': + '@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.13.2)': dependencies: - '@ardatan/relay-compiler': 12.0.0(graphql@16.13.1) - '@graphql-tools/utils': 9.2.1(graphql@16.13.1) - graphql: 16.13.1 + '@ardatan/relay-compiler': 12.0.0(graphql@16.13.2) + '@graphql-tools/utils': 9.2.1(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.8.1 transitivePeerDependencies: - encoding - supports-color - '@graphql-tools/relay-operation-optimizer@7.0.27(graphql@16.13.1)': + '@graphql-tools/relay-operation-optimizer@7.0.27(graphql@16.13.2)': dependencies: - '@ardatan/relay-compiler': 12.0.3(graphql@16.13.1) - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - graphql: 16.13.1 + '@ardatan/relay-compiler': 12.0.3(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.8.1 transitivePeerDependencies: - encoding - '@graphql-tools/schema@10.0.31(graphql@16.13.1)': + '@graphql-tools/schema@10.0.31(graphql@16.13.2)': dependencies: - '@graphql-tools/merge': 9.1.7(graphql@16.13.1) - '@graphql-tools/utils': 11.0.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-tools/merge': 9.1.7(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/url-loader@8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10)': + '@graphql-tools/url-loader@8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/executor-graphql-ws': 2.0.7(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10) - '@graphql-tools/executor-http': 1.3.3(@types/node@25.3.0)(graphql@16.13.1) - '@graphql-tools/executor-legacy-ws': 1.1.25(bufferutil@4.1.0)(graphql@16.13.1)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) - '@graphql-tools/wrap': 10.1.4(graphql@16.13.1) + '@graphql-tools/executor-graphql-ws': 2.0.7(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/executor-http': 1.3.3(@types/node@25.3.0)(graphql@16.13.2) + '@graphql-tools/executor-legacy-ws': 1.1.25(bufferutil@4.1.0)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/wrap': 10.1.4(graphql@16.13.2) '@types/ws': 8.18.1 '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.1 + graphql: 16.13.2 isomorphic-ws: 5.0.0(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) sync-fetch: 0.6.0-2 tslib: 2.8.1 @@ -10353,40 +10607,40 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/utils@10.11.0(graphql@16.13.1)': + '@graphql-tools/utils@10.11.0(graphql@16.13.2)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) '@whatwg-node/promise-helpers': 1.3.2 cross-inspect: 1.0.1 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/utils@11.0.0(graphql@16.13.1)': + '@graphql-tools/utils@11.0.0(graphql@16.13.2)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) '@whatwg-node/promise-helpers': 1.3.2 cross-inspect: 1.0.1 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/utils@9.2.1(graphql@16.13.1)': + '@graphql-tools/utils@9.2.1(graphql@16.13.2)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/wrap@10.1.4(graphql@16.13.1)': + '@graphql-tools/wrap@10.1.4(graphql@16.13.2)': dependencies: - '@graphql-tools/delegate': 10.2.23(graphql@16.13.1) - '@graphql-tools/schema': 10.0.31(graphql@16.13.1) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/delegate': 10.2.23(graphql@16.13.2) + '@graphql-tools/schema': 10.0.31(graphql@16.13.2) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - '@graphql-typed-document-node/core@3.2.0(graphql@16.13.1)': + '@graphql-typed-document-node/core@3.2.0(graphql@16.13.2)': dependencies: - graphql: 16.13.1 + graphql: 16.13.2 '@hono/node-server@1.19.9(hono@4.12.2)': dependencies: @@ -10763,7 +11017,7 @@ snapshots: '@mysten/sui@1.45.2(typescript@5.9.3)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) '@mysten/bcs': 1.9.2 '@mysten/utils': 0.2.0 '@noble/curves': 1.9.4 @@ -10774,8 +11028,8 @@ snapshots: '@scure/base': 1.2.6 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - gql.tada: 1.9.0(graphql@16.13.1)(typescript@5.9.3) - graphql: 16.13.1 + gql.tada: 1.9.0(graphql@16.13.2)(typescript@5.9.3) + graphql: 16.13.2 poseidon-lite: 0.2.1 valibot: 1.2.0(typescript@5.9.3) transitivePeerDependencies: @@ -12491,18 +12745,18 @@ snapshots: '@shikijs/types': 1.29.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/engine-oniguruma@3.22.0': + '@shikijs/engine-oniguruma@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 '@shikijs/langs@1.29.2': dependencies: '@shikijs/types': 1.29.2 - '@shikijs/langs@3.22.0': + '@shikijs/langs@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 '@shikijs/rehype@1.29.2': dependencies: @@ -12517,9 +12771,9 @@ snapshots: dependencies: '@shikijs/types': 1.29.2 - '@shikijs/themes@3.22.0': + '@shikijs/themes@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 '@shikijs/transformers@1.29.2': dependencies: @@ -12540,7 +12794,7 @@ snapshots: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 - '@shikijs/types@3.22.0': + '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -13181,29 +13435,29 @@ snapshots: '@tanstack/query-core': 5.95.2 react: 19.1.0 - '@tanstack/react-router-devtools@1.166.11(@tanstack/react-router@1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.3)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@tanstack/react-router': 1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-devtools-core': 1.167.1(@tanstack/router-core@1.168.3)(csstype@3.2.3) + '@tanstack/react-router': 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/router-devtools-core': 1.167.1(@tanstack/router-core@1.168.9)(csstype@3.2.3) react: 19.1.0 react-dom: 19.1.0(react@19.1.0) optionalDependencies: - '@tanstack/router-core': 1.168.3 + '@tanstack/router-core': 1.168.9 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: '@tanstack/history': 1.161.6 - '@tanstack/react-store': 0.9.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/router-core': 1.168.3 + '@tanstack/react-store': 0.9.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/router-core': 1.168.9 isbot: 5.1.35 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@tanstack/react-store@0.9.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-store@0.9.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@tanstack/store': 0.9.2 + '@tanstack/store': 0.9.3 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) use-sync-external-store: 1.6.0(react@19.1.0) @@ -13214,33 +13468,33 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@tanstack/router-cli@1.166.18': + '@tanstack/router-cli@1.166.25': dependencies: - '@tanstack/router-generator': 1.166.17 + '@tanstack/router-generator': 1.166.24 chokidar: 3.6.0 yargs: 17.7.2 transitivePeerDependencies: - supports-color - '@tanstack/router-core@1.168.3': + '@tanstack/router-core@1.168.9': dependencies: '@tanstack/history': 1.161.6 cookie-es: 2.0.0 seroval: 1.5.1 seroval-plugins: 1.5.1(seroval@1.5.1) - '@tanstack/router-devtools-core@1.167.1(@tanstack/router-core@1.168.3)(csstype@3.2.3)': + '@tanstack/router-devtools-core@1.167.1(@tanstack/router-core@1.168.9)(csstype@3.2.3)': dependencies: - '@tanstack/router-core': 1.168.3 + '@tanstack/router-core': 1.168.9 clsx: 2.1.1 goober: 2.1.18(csstype@3.2.3) optionalDependencies: csstype: 3.2.3 - '@tanstack/router-devtools@1.166.11(@tanstack/react-router@1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.3)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': dependencies: - '@tanstack/react-router': 1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/react-router-devtools': 1.166.11(@tanstack/react-router@1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.3)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router': 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router-devtools': 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) clsx: 2.1.1 goober: 2.1.18(csstype@3.2.3) react: 19.1.0 @@ -13250,9 +13504,9 @@ snapshots: transitivePeerDependencies: - '@tanstack/router-core' - '@tanstack/router-generator@1.166.17': + '@tanstack/router-generator@1.166.24': dependencies: - '@tanstack/router-core': 1.168.3 + '@tanstack/router-core': 1.168.9 '@tanstack/router-utils': 1.161.6 '@tanstack/virtual-file-routes': 1.161.7 prettier: 3.8.1 @@ -13263,7 +13517,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.167.4(@tanstack/react-router@1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) @@ -13271,15 +13525,15 @@ snapshots: '@babel/template': 7.28.6 '@babel/traverse': 7.29.0(supports-color@5.5.0) '@babel/types': 7.29.0 - '@tanstack/router-core': 1.168.3 - '@tanstack/router-generator': 1.166.17 + '@tanstack/router-core': 1.168.9 + '@tanstack/router-generator': 1.166.24 '@tanstack/router-utils': 1.161.6 '@tanstack/virtual-file-routes': 1.161.7 chokidar: 3.6.0 unplugin: 2.3.11 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.168.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router': 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -13298,7 +13552,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/store@0.9.2': {} + '@tanstack/store@0.9.3': {} '@tanstack/virtual-core@3.13.23': {} @@ -13338,11 +13592,11 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 - '@theguild/federation-composition@0.21.3(graphql@16.13.1)': + '@theguild/federation-composition@0.21.3(graphql@16.13.2)': dependencies: constant-case: 3.0.4 debug: 4.4.3(supports-color@5.5.0) - graphql: 16.13.1 + graphql: 16.13.2 json5: 2.2.3 lodash.sortby: 4.7.0 transitivePeerDependencies: @@ -15428,7 +15682,7 @@ snapshots: bowser@2.14.1: {} - brace-expansion@1.1.12: + brace-expansion@1.1.13: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 @@ -15437,6 +15691,10 @@ snapshots: dependencies: balanced-match: 4.0.4 + brace-expansion@5.0.5: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -15707,12 +15965,12 @@ snapshots: confbox@0.1.8: {} - connectkit@1.9.1(@babel/core@7.29.0)(@tanstack/react-query@5.95.2(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + connectkit@1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.95.2(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): dependencies: + '@aave/account': 0.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) '@tanstack/react-query': 5.95.2(react@19.1.0) buffer: 6.0.3 detect-browser: 5.3.0 - family: 0.1.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) framer-motion: 6.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) qrcode: 1.5.4 react: 19.1.0 @@ -15752,7 +16010,7 @@ snapshots: convert-source-map@2.0.0: {} - cookie-es@1.2.2: {} + cookie-es@1.2.3: {} cookie-es@2.0.0: {} @@ -16168,6 +16426,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + esbuild@0.27.4: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.4 + '@esbuild/android-arm': 0.27.4 + '@esbuild/android-arm64': 0.27.4 + '@esbuild/android-x64': 0.27.4 + '@esbuild/darwin-arm64': 0.27.4 + '@esbuild/darwin-x64': 0.27.4 + '@esbuild/freebsd-arm64': 0.27.4 + '@esbuild/freebsd-x64': 0.27.4 + '@esbuild/linux-arm': 0.27.4 + '@esbuild/linux-arm64': 0.27.4 + '@esbuild/linux-ia32': 0.27.4 + '@esbuild/linux-loong64': 0.27.4 + '@esbuild/linux-mips64el': 0.27.4 + '@esbuild/linux-ppc64': 0.27.4 + '@esbuild/linux-riscv64': 0.27.4 + '@esbuild/linux-s390x': 0.27.4 + '@esbuild/linux-x64': 0.27.4 + '@esbuild/netbsd-arm64': 0.27.4 + '@esbuild/netbsd-x64': 0.27.4 + '@esbuild/openbsd-arm64': 0.27.4 + '@esbuild/openbsd-x64': 0.27.4 + '@esbuild/openharmony-arm64': 0.27.4 + '@esbuild/sunos-x64': 0.27.4 + '@esbuild/win32-arm64': 0.27.4 + '@esbuild/win32-ia32': 0.27.4 + '@esbuild/win32-x64': 0.27.4 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -16303,13 +16590,6 @@ snapshots: eyes@0.1.8: {} - family@0.1.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): - optionalDependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) - fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -16486,7 +16766,7 @@ snapshots: get-stream@8.0.1: {} - get-tsconfig@4.13.6: + get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 @@ -16516,7 +16796,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.3 + minimatch: 3.1.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -16550,12 +16830,12 @@ snapshots: gopd@1.2.0: {} - gql.tada@1.9.0(graphql@16.13.1)(typescript@5.9.3): + gql.tada@1.9.0(graphql@16.13.2)(typescript@5.9.3): dependencies: - '@0no-co/graphql.web': 1.2.0(graphql@16.13.1) - '@0no-co/graphqlsp': 1.15.2(graphql@16.13.1)(typescript@5.9.3) - '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.1)(typescript@5.9.3))(graphql@16.13.1)(typescript@5.9.3) - '@gql.tada/internal': 1.0.8(graphql@16.13.1)(typescript@5.9.3) + '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) + '@0no-co/graphqlsp': 1.15.2(graphql@16.13.2)(typescript@5.9.3) + '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@5.9.3))(graphql@16.13.2)(typescript@5.9.3) + '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - '@gql.tada/svelte-support' @@ -16564,16 +16844,16 @@ snapshots: graceful-fs@4.2.11: {} - graphql-config@5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(typescript@5.9.3)(utf-8-validate@5.0.10): + graphql-config@5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10): dependencies: - '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.13.1) - '@graphql-tools/json-file-loader': 8.0.26(graphql@16.13.1) - '@graphql-tools/load': 8.1.8(graphql@16.13.1) - '@graphql-tools/merge': 9.1.7(graphql@16.13.1) - '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.1)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.1) + '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.13.2) + '@graphql-tools/json-file-loader': 8.0.26(graphql@16.13.2) + '@graphql-tools/load': 8.1.8(graphql@16.13.2) + '@graphql-tools/merge': 9.1.7(graphql@16.13.2) + '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/utils': 10.11.0(graphql@16.13.2) cosmiconfig: 8.3.6(typescript@5.9.3) - graphql: 16.13.1 + graphql: 16.13.2 jiti: 2.6.1 minimatch: 9.0.6 string-env-interpolation: 1.0.1 @@ -16587,36 +16867,36 @@ snapshots: - typescript - utf-8-validate - graphql-request@6.1.0(graphql@16.13.1): + graphql-request@6.1.0(graphql@16.13.2): dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) cross-fetch: 3.2.0 - graphql: 16.13.1 + graphql: 16.13.2 transitivePeerDependencies: - encoding - graphql-request@7.4.0(graphql@16.13.1): + graphql-request@7.4.0(graphql@16.13.2): dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.1) - graphql: 16.13.1 + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) + graphql: 16.13.2 - graphql-tag@2.12.6(graphql@16.13.1): + graphql-tag@2.12.6(graphql@16.13.2): dependencies: - graphql: 16.13.1 + graphql: 16.13.2 tslib: 2.8.1 - graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.1)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + graphql-ws@6.0.7(crossws@0.3.5)(graphql@16.13.2)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): dependencies: - graphql: 16.13.1 + graphql: 16.13.2 optionalDependencies: crossws: 0.3.5 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) - graphql@16.13.1: {} + graphql@16.13.2: {} h3@1.15.5: dependencies: - cookie-es: 1.2.2 + cookie-es: 1.2.3 crossws: 0.3.5 defu: 6.1.4 destr: 2.0.5 @@ -17895,9 +18175,13 @@ snapshots: dependencies: brace-expansion: 5.0.3 - minimatch@3.1.3: + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 + + minimatch@3.1.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 1.1.13 minimatch@9.0.6: dependencies: @@ -19406,8 +19690,8 @@ snapshots: tsx@4.21.0: dependencies: - esbuild: 0.27.3 - get-tsconfig: 4.13.6 + esbuild: 0.27.4 + get-tsconfig: 4.13.7 optionalDependencies: fsevents: 2.3.3 @@ -19429,29 +19713,29 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typedoc-github-theme@0.3.1(typedoc@0.28.17(typescript@5.9.3)): + typedoc-github-theme@0.3.1(typedoc@0.28.18(typescript@5.9.3)): dependencies: - typedoc: 0.28.17(typescript@5.9.3) + typedoc: 0.28.18(typescript@5.9.3) - typedoc-plugin-inline-sources@1.3.0(typedoc@0.28.17(typescript@5.9.3)): + typedoc-plugin-inline-sources@1.3.0(typedoc@0.28.18(typescript@5.9.3)): dependencies: - typedoc: 0.28.17(typescript@5.9.3) + typedoc: 0.28.18(typescript@5.9.3) - typedoc-plugin-missing-exports@4.1.2(typedoc@0.28.17(typescript@5.9.3)): + typedoc-plugin-missing-exports@4.1.2(typedoc@0.28.18(typescript@5.9.3)): dependencies: - typedoc: 0.28.17(typescript@5.9.3) + typedoc: 0.28.18(typescript@5.9.3) - typedoc-plugin-rename-defaults@0.7.3(typedoc@0.28.17(typescript@5.9.3)): + typedoc-plugin-rename-defaults@0.7.3(typedoc@0.28.18(typescript@5.9.3)): dependencies: camelcase: 8.0.0 - typedoc: 0.28.17(typescript@5.9.3) + typedoc: 0.28.18(typescript@5.9.3) - typedoc@0.28.17(typescript@5.9.3): + typedoc@0.28.18(typescript@5.9.3): dependencies: - '@gerrit0/mini-shiki': 3.22.0 + '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 markdown-it: 14.1.1 - minimatch: 9.0.6 + minimatch: 10.2.5 typescript: 5.9.3 yaml: 2.8.2 @@ -19585,7 +19869,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - use-debounce@10.1.0(react@19.1.0): + use-debounce@10.1.1(react@19.1.0): dependencies: react: 19.1.0 diff --git a/typedoc.json b/typedoc.json index c2c7e15f..355b71ab 100644 --- a/typedoc.json +++ b/typedoc.json @@ -51,7 +51,16 @@ "visibilityFilters": { "inherited": true }, - "blockTags": ["@dev", "@source", "@name", "@description", "@param", "@returns", "@example", "@throws"], + "blockTags": [ + "@dev", + "@source", + "@name", + "@description", + "@param", + "@returns", + "@example", + "@throws" + ], "validation": { "invalidLink": true, "notDocumented": false From 0417756a10a34683f41715cb565848f6eb950468 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 15:16:55 -0300 Subject: [PATCH 028/115] chore: update minor dependencies - react 19.1.0 -> 19.2.4 - react-dom 19.1.0 -> 19.2.4 - vocs 1.0.11 -> 1.4.1 - @tanstack/react-query 5.95.2 -> 5.96.1 - @tanstack/react-query-devtools 5.95.2 -> 5.96.1 Part of #434. --- package.json | 10 +- pnpm-lock.yaml | 3544 +++++++++++++++++++++++++++++++----------------- 2 files changed, 2275 insertions(+), 1279 deletions(-) diff --git a/package.json b/package.json index 968105b3..4d8cb707 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "@reown/appkit": "^1.8.19", "@reown/appkit-adapter-wagmi": "^1.8.19", "@t3-oss/env-core": "^0.13.11", - "@tanstack/react-query": "^5.95.2", + "@tanstack/react-query": "^5.96.1", "@tanstack/react-router": "^1.168.10", "@tanstack/react-virtual": "^3.13.23", "@uniswap/default-token-list": "^13.33.0", @@ -45,8 +45,8 @@ "graphql-request": "^7.1.2", "next-themes": "^0.4.6", "porto": "^0.2.28", - "react": "19.1.0", - "react-dom": "19.1.0", + "react": "19.2.4", + "react-dom": "19.2.4", "react-error-boundary": "^6.0.0", "react-jazzicon": "^1.0.4", "react-number-format": "^5.4.5", @@ -62,7 +62,7 @@ "@graphql-codegen/cli": "^5.0.6", "@graphql-typed-document-node/core": "^3.2.0", "@parcel/watcher": "^2.5.1", - "@tanstack/react-query-devtools": "^5.95.2", + "@tanstack/react-query-devtools": "^5.96.1", "@tanstack/router-cli": "^1.166.25", "@tanstack/router-devtools": "^1.166.11", "@tanstack/router-plugin": "^1.167.12", @@ -89,7 +89,7 @@ "vite-plugin-sitemap": "^0.7.1", "vite-tsconfig-paths": "^5.1.4", "vitest": "^3.1.3", - "vocs": "1.0.11" + "vocs": "1.4.1" }, "packageManager": "pnpm@10.33.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fcf22cef..dfef68f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,52 +10,52 @@ importers: dependencies: '@bootnodedev/db-subgraph': specifier: ^0.1.2 - version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) '@chakra-ui/react': specifier: ^3.34.0 - version: 3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@19.2.14)(react@19.1.0) + version: 11.14.0(@types/react@19.2.14)(react@19.2.4) '@lifi/sdk': specifier: ^3.16.3 - version: 3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + version: 3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) '@rainbow-me/rainbowkit': specifier: ^2.2.9 - version: 2.2.10(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) '@reown/appkit': specifier: ^1.8.19 - version: 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) + version: 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-adapter-wagmi': specifier: ^1.8.19 - version: 1.8.19(3041b67b8915d842a532aec1c6c6eb72) + version: 1.8.19(c0f8bf6938db1ad3e3bcf55c52af5632) '@t3-oss/env-core': specifier: ^0.13.11 version: 0.13.11(typescript@5.9.3)(valibot@1.2.0(typescript@5.9.3))(zod@3.25.76) '@tanstack/react-query': - specifier: ^5.95.2 - version: 5.95.2(react@19.1.0) + specifier: ^5.96.1 + version: 5.96.1(react@19.2.4) '@tanstack/react-router': specifier: ^1.168.10 - version: 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/react-virtual': specifier: ^3.13.23 - version: 3.13.23(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 3.13.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@uniswap/default-token-list': specifier: ^13.33.0 version: 13.47.0 '@vercel/analytics': specifier: ^1.5.0 - version: 1.6.1(react@19.1.0) + version: 1.6.1(react@19.2.4) '@web3icons/core': specifier: ^4.0.13 version: 4.0.51(typescript@5.9.3) '@web3icons/react': specifier: ^4.0.13 - version: 4.1.17(react@19.1.0)(typescript@5.9.3) + version: 4.1.17(react@19.2.4)(typescript@5.9.3) connectkit: specifier: ^1.9.2 - version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.95.2(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) graphql: specifier: ^16.13.2 version: 16.13.2 @@ -64,34 +64,34 @@ importers: version: 7.4.0(graphql@16.13.2) next-themes: specifier: ^0.4.6 - version: 0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) porto: specifier: ^0.2.28 - version: 0.2.37(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) react: - specifier: 19.1.0 - version: 19.1.0 + specifier: 19.2.4 + version: 19.2.4 react-dom: - specifier: 19.1.0 - version: 19.1.0(react@19.1.0) + specifier: 19.2.4 + version: 19.2.4(react@19.2.4) react-error-boundary: specifier: ^6.0.0 - version: 6.1.1(react@19.1.0) + version: 6.1.1(react@19.2.4) react-jazzicon: specifier: ^1.0.4 - version: 1.0.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-number-format: specifier: ^5.4.5 - version: 5.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) use-debounce: specifier: ^10.1.1 - version: 10.1.1(react@19.1.0) + version: 10.1.1(react@19.2.4) viem: specifier: ^2.47.6 version: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) wagmi: specifier: ^2.17.5 - version: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + version: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) zod: specifier: ^3.24.4 version: 3.25.76 @@ -115,23 +115,23 @@ importers: specifier: ^2.5.1 version: 2.5.6 '@tanstack/react-query-devtools': - specifier: ^5.95.2 - version: 5.95.2(@tanstack/react-query@5.95.2(react@19.1.0))(react@19.1.0) + specifier: ^5.96.1 + version: 5.96.1(@tanstack/react-query@5.96.1(react@19.2.4))(react@19.2.4) '@tanstack/router-cli': specifier: ^1.166.25 version: 1.166.25 '@tanstack/router-devtools': specifier: ^1.166.11 - version: 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-plugin': specifier: ^1.167.12 - version: 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.9.1 '@testing-library/react': specifier: ^16.3.0 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@testing-library/user-event': specifier: ^14.6.1 version: 14.6.1(@testing-library/dom@10.4.1) @@ -196,8 +196,8 @@ importers: specifier: ^3.1.3 version: 3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) vocs: - specifier: 1.0.11 - version: 1.0.11(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) + specifier: 1.4.1 + version: 1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3) packages: @@ -242,6 +242,9 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/install-pkg@1.1.0': + resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@ardatan/relay-compiler@12.0.0': resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true @@ -629,6 +632,9 @@ packages: react: ^18 viem: ^2 + '@braintree/sanitize-url@7.1.2': + resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + '@chakra-ui/react@3.34.0': resolution: {integrity: sha512-VLhpVwv5IVxhwajO10KnS1VQT4hDqQMQP/A796Ya+uVu8AdoSX+5HHyTLTkYIeXIDMe0xLqJfov04OBKbBchJA==} peerDependencies: @@ -636,6 +642,21 @@ packages: react: '>=18' react-dom: '>=18' + '@chevrotain/cst-dts-gen@11.1.2': + resolution: {integrity: sha512-XTsjvDVB5nDZBQB8o0o/0ozNelQtn2KrUVteIHSlPd2VAV2utEb6JzyCJaJ8tGxACR4RiBNWy5uYUHX2eji88Q==} + + '@chevrotain/gast@11.1.2': + resolution: {integrity: sha512-Z9zfXR5jNZb1Hlsd/p+4XWeUFugrHirq36bKzPWDSIacV+GPSVXdk+ahVWZTwjhNwofAWg/sZg58fyucKSQx5g==} + + '@chevrotain/regexp-to-ast@11.1.2': + resolution: {integrity: sha512-nMU3Uj8naWer7xpZTYJdxbAs6RIv/dxYzkYU8GSwgUtcAAlzjcPfX1w+RKRcYG8POlzMeayOQ/znfwxEGo5ulw==} + + '@chevrotain/types@11.1.2': + resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} + + '@chevrotain/utils@11.1.2': + resolution: {integrity: sha512-4mudFAQ6H+MqBTfqLmU7G1ZwRzCLfJEooL/fsF6rCX5eePMbGhoy5n4g+G4vlh2muDcsCTJtL+uKbOzWxs5LHA==} + '@clack/core@0.3.5': resolution: {integrity: sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ==} @@ -834,12 +855,6 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.27.4': resolution: {integrity: sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==} engines: {node: '>=18'} @@ -852,12 +867,6 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.27.4': resolution: {integrity: sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==} engines: {node: '>=18'} @@ -870,12 +879,6 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.27.4': resolution: {integrity: sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==} engines: {node: '>=18'} @@ -888,12 +891,6 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.27.4': resolution: {integrity: sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==} engines: {node: '>=18'} @@ -906,12 +903,6 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.27.4': resolution: {integrity: sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==} engines: {node: '>=18'} @@ -924,12 +915,6 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.27.4': resolution: {integrity: sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==} engines: {node: '>=18'} @@ -942,12 +927,6 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.27.4': resolution: {integrity: sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==} engines: {node: '>=18'} @@ -960,12 +939,6 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.27.4': resolution: {integrity: sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==} engines: {node: '>=18'} @@ -978,12 +951,6 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.27.4': resolution: {integrity: sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==} engines: {node: '>=18'} @@ -996,12 +963,6 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.27.4': resolution: {integrity: sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==} engines: {node: '>=18'} @@ -1014,12 +975,6 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.27.4': resolution: {integrity: sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==} engines: {node: '>=18'} @@ -1032,12 +987,6 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.27.4': resolution: {integrity: sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==} engines: {node: '>=18'} @@ -1050,12 +999,6 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.27.4': resolution: {integrity: sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==} engines: {node: '>=18'} @@ -1068,12 +1011,6 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.27.4': resolution: {integrity: sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==} engines: {node: '>=18'} @@ -1086,12 +1023,6 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.27.4': resolution: {integrity: sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==} engines: {node: '>=18'} @@ -1104,12 +1035,6 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.27.4': resolution: {integrity: sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==} engines: {node: '>=18'} @@ -1122,12 +1047,6 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.27.4': resolution: {integrity: sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==} engines: {node: '>=18'} @@ -1140,12 +1059,6 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - '@esbuild/netbsd-arm64@0.27.4': resolution: {integrity: sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==} engines: {node: '>=18'} @@ -1158,12 +1071,6 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - '@esbuild/netbsd-x64@0.27.4': resolution: {integrity: sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==} engines: {node: '>=18'} @@ -1176,12 +1083,6 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - '@esbuild/openbsd-arm64@0.27.4': resolution: {integrity: sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==} engines: {node: '>=18'} @@ -1194,12 +1095,6 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.27.4': resolution: {integrity: sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==} engines: {node: '>=18'} @@ -1212,12 +1107,6 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - '@esbuild/openharmony-arm64@0.27.4': resolution: {integrity: sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==} engines: {node: '>=18'} @@ -1230,12 +1119,6 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.27.4': resolution: {integrity: sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==} engines: {node: '>=18'} @@ -1248,12 +1131,6 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.27.4': resolution: {integrity: sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==} engines: {node: '>=18'} @@ -1266,12 +1143,6 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.27.4': resolution: {integrity: sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==} engines: {node: '>=18'} @@ -1284,12 +1155,6 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.27.4': resolution: {integrity: sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==} engines: {node: '>=18'} @@ -1315,15 +1180,9 @@ packages: '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} - '@floating-ui/core@1.7.4': - resolution: {integrity: sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==} - '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} - '@floating-ui/dom@1.7.5': - resolution: {integrity: sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==} - '@floating-ui/dom@1.7.6': resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} @@ -1339,12 +1198,13 @@ packages: react: '>=17.0.0' react-dom: '>=17.0.0' - '@floating-ui/utils@0.2.10': - resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} - '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + '@fortawesome/fontawesome-free@6.7.2': + resolution: {integrity: sha512-JUOtgFW6k9u4Y+xeIaEiLr3+cjoUPiAuLXoyKOJSia6Duzb7pq+A76P9ZdPDoAoxHdHzq6gE9/jKBGXlZT8FbA==} + engines: {node: '>=6'} + '@gemini-wallet/core@0.3.2': resolution: {integrity: sha512-Z4aHi3ECFf5oWYWM3F1rW83GJfB9OvhBYPTmb5q+VyK3uvzvS48lwo+jwh2eOoCRWEuT/crpb9Vwp2QaS5JqgQ==} peerDependencies: @@ -1660,6 +1520,12 @@ packages: peerDependencies: hono: ^4 + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/utils@3.1.0': + resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@inquirer/external-editor@1.0.3': resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} @@ -1737,6 +1603,9 @@ packages: peerDependencies: rollup: '>=2' + '@mermaid-js/parser@1.1.0': + resolution: {integrity: sha512-gxK9ZX2+Fex5zu8LhRQoMeMPEHbc73UKZ0FQ54YrQtUxE1VVhMwzeNtKRPAu5aXks4FasbMe4xB4bWrmq6Jlxw==} + '@metamask/eth-json-rpc-provider@1.0.1': resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} engines: {node: '>=14.0.0'} @@ -2836,6 +2705,9 @@ packages: '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + '@rolldown/pluginutils@1.0.0-rc.3': + resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -3059,10 +2931,6 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3467,6 +3335,9 @@ packages: '@solana/web3.js@1.98.4': resolution: {integrity: sha512-vv9lfnvjUsRiq//+j5pBdXig0IQdtzA0BRZ3bXEP4KaIyF1CcaydWqgyzQgfZMNIsWNWmG+AUHwPy4AHOD6gpw==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@swc/core-darwin-arm64@1.15.13': resolution: {integrity: sha512-ztXusRuC5NV2w+a6pDhX13CGioMLq8CjX5P4XgVJ21ocqz9t19288Do0y8LklplDtwcEhYGTNdMbkmUT7+lDTg==} engines: {node: '>=10'} @@ -3566,106 +3437,118 @@ packages: zod: optional: true - '@tailwindcss/node@4.0.7': - resolution: {integrity: sha512-dkFXufkbRB2mu3FPsW5xLAUWJyexpJA+/VtQj18k3SUiJVLdpgzBd1v1gRRcIpEJj7K5KpxBKfOXlZxT3ZZRuA==} + '@tailwindcss/node@4.1.15': + resolution: {integrity: sha512-HF4+7QxATZWY3Jr8OlZrBSXmwT3Watj0OogeDvdUY/ByXJHQ+LBtqA2brDb3sBxYslIFx6UP94BJ4X6a4L9Bmw==} - '@tailwindcss/oxide-android-arm64@4.0.7': - resolution: {integrity: sha512-5iQXXcAeOHBZy8ASfHFm1k0O/9wR2E3tKh6+P+ilZZbQiMgu+qrnfpBWYPc3FPuQdWiWb73069WT5D+CAfx/tg==} + '@tailwindcss/oxide-android-arm64@4.1.15': + resolution: {integrity: sha512-TkUkUgAw8At4cBjCeVCRMc/guVLKOU1D+sBPrHt5uVcGhlbVKxrCaCW9OKUIBv1oWkjh4GbunD/u/Mf0ql6kEA==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.0.7': - resolution: {integrity: sha512-7yGZtEc5IgVYylqK/2B0yVqoofk4UAbkn1ygNpIJZyrOhbymsfr8uUFCueTu2fUxmAYIfMZ8waWo2dLg/NgLgg==} + '@tailwindcss/oxide-darwin-arm64@4.1.15': + resolution: {integrity: sha512-xt5XEJpn2piMSfvd1UFN6jrWXyaKCwikP4Pidcf+yfHTSzSpYhG3dcMktjNkQO3JiLCp+0bG0HoWGvz97K162w==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.0.7': - resolution: {integrity: sha512-tPQDV20fBjb26yWbPqT1ZSoDChomMCiXTKn4jupMSoMCFyU7+OJvIY1ryjqBuY622dEBJ8LnCDDWsnj1lX9nNQ==} + '@tailwindcss/oxide-darwin-x64@4.1.15': + resolution: {integrity: sha512-TnWaxP6Bx2CojZEXAV2M01Yl13nYPpp0EtGpUrY+LMciKfIXiLL2r/SiSRpagE5Fp2gX+rflp/Os1VJDAyqymg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.0.7': - resolution: {integrity: sha512-sZqJpTyTZiknU9LLHuByg5GKTW+u3FqM7q7myequAXxKOpAFiOfXpY710FuMY+gjzSapyRbDXJlsTQtCyiTo5w==} + '@tailwindcss/oxide-freebsd-x64@4.1.15': + resolution: {integrity: sha512-quISQDWqiB6Cqhjc3iWptXVZHNVENsWoI77L1qgGEHNIdLDLFnw3/AfY7DidAiiCIkGX/MjIdB3bbBZR/G2aJg==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.7': - resolution: {integrity: sha512-PBgvULgeSswjd8cbZ91gdIcIDMdc3TUHV5XemEpxlqt9M8KoydJzkuB/Dt910jYdofOIaTWRL6adG9nJICvU4A==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.15': + resolution: {integrity: sha512-ObG76+vPlab65xzVUQbExmDU9FIeYLQ5k2LrQdR2Ud6hboR+ZobXpDoKEYXf/uOezOfIYmy2Ta3w0ejkTg9yxg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.0.7': - resolution: {integrity: sha512-By/a2yeh+e9b+C67F88ndSwVJl2A3tcUDb29FbedDi+DZ4Mr07Oqw9Y1DrDrtHIDhIZ3bmmiL1dkH2YxrtV+zw==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.15': + resolution: {integrity: sha512-4WbBacRmk43pkb8/xts3wnOZMDKsPFyEH/oisCm2q3aLZND25ufvJKcDUpAu0cS+CBOL05dYa8D4U5OWECuH/Q==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-arm64-musl@4.0.7': - resolution: {integrity: sha512-WHYs3cpPEJb/ccyT20NOzopYQkl7JKncNBUbb77YFlwlXMVJLLV3nrXQKhr7DmZxz2ZXqjyUwsj2rdzd9stYdw==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.15': + resolution: {integrity: sha512-AbvmEiteEj1nf42nE8skdHv73NoR+EwXVSgPY6l39X12Ex8pzOwwfi3Kc8GAmjsnsaDEbk+aj9NyL3UeyHcTLg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] libc: [musl] - '@tailwindcss/oxide-linux-x64-gnu@4.0.7': - resolution: {integrity: sha512-7bP1UyuX9kFxbOwkeIJhBZNevKYPXB6xZI37v09fqi6rqRJR8elybwjMUHm54GVP+UTtJ14ueB1K54Dy1tIO6w==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.15': + resolution: {integrity: sha512-+rzMVlvVgrXtFiS+ES78yWgKqpThgV19ISKD58Ck+YO5pO5KjyxLt7AWKsWMbY0R9yBDC82w6QVGz837AKQcHg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [glibc] - '@tailwindcss/oxide-linux-x64-musl@4.0.7': - resolution: {integrity: sha512-gBQIV8nL/LuhARNGeroqzXymMzzW5wQzqlteVqOVoqwEfpHOP3GMird5pGFbnpY+NP0fOlsZGrxxOPQ4W/84bQ==} + '@tailwindcss/oxide-linux-x64-musl@4.1.15': + resolution: {integrity: sha512-fPdEy7a8eQN9qOIK3Em9D3TO1z41JScJn8yxl/76mp4sAXFDfV4YXxsiptJcOwy6bGR+70ZSwFIZhTXzQeqwQg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] libc: [musl] - '@tailwindcss/oxide-win32-arm64-msvc@4.0.7': - resolution: {integrity: sha512-aH530NFfx0kpQpvYMfWoeG03zGnRCMVlQG8do/5XeahYydz+6SIBxA1tl/cyITSJyWZHyVt6GVNkXeAD30v0Xg==} + '@tailwindcss/oxide-wasm32-wasi@4.1.15': + resolution: {integrity: sha512-sJ4yd6iXXdlgIMfIBXuVGp/NvmviEoMVWMOAGxtxhzLPp9LOj5k0pMEMZdjeMCl4C6Up+RM8T3Zgk+BMQ0bGcQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.15': + resolution: {integrity: sha512-sJGE5faXnNQ1iXeqmRin7Ds/ru2fgCiaQZQQz3ZGIDtvbkeV85rAZ0QJFMDg0FrqsffZG96H1U9AQlNBRLsHVg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.0.7': - resolution: {integrity: sha512-8Cva6bbJN7ZJx320k7vxGGdU0ewmpfS5A4PudyzUuofdi8MgeINuiiWiPQ0VZCda/GX88K6qp+6UpDZNVr8HMQ==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.15': + resolution: {integrity: sha512-NLeHE7jUV6HcFKS504bpOohyi01zPXi2PXmjFfkzTph8xRxDdxkRsXm/xDO5uV5K3brrE1cCwbUYmFUSHR3u1w==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.0.7': - resolution: {integrity: sha512-yr6w5YMgjy+B+zkJiJtIYGXW+HNYOPfRPtSs+aqLnKwdEzNrGv4ZuJh9hYJ3mcA+HMq/K1rtFV+KsEr65S558g==} + '@tailwindcss/oxide@4.1.15': + resolution: {integrity: sha512-krhX+UOOgnsUuks2SR7hFafXmLQrKxB4YyRTERuCE59JlYL+FawgaAlSkOYmDRJdf1Q+IFNDMl9iRnBW7QBDfQ==} engines: {node: '>= 10'} - '@tailwindcss/vite@4.0.7': - resolution: {integrity: sha512-GYx5sxArfIMtdZCsxfya3S/efMmf4RvfqdiLUozkhmSFBNUFnYVodatpoO/en4/BsOIGvq/RB6HwcTLn9prFnQ==} + '@tailwindcss/vite@4.1.15': + resolution: {integrity: sha512-B6s60MZRTUil+xKoZoGe6i0Iar5VuW+pmcGlda2FX+guDuQ1G1sjiIy1W0frneVpeL/ZjZ4KEgWZHNrIm++2qA==} peerDependencies: - vite: ^5.2.0 || ^6 + vite: ^5.2.0 || ^6 || ^7 '@tanstack/history@1.161.6': resolution: {integrity: sha512-NaOGLRrddszbQj9upGat6HG/4TKvXLvu+osAIgfxPYA+eIvYKv8GKDJOrY2D3/U9MRnKfMWD7bU4jeD4xmqyIg==} engines: {node: '>=20.19'} - '@tanstack/query-core@5.95.2': - resolution: {integrity: sha512-o4T8vZHZET4Bib3jZ/tCW9/7080urD4c+0/AUaYVpIqOsr7y0reBc1oX3ttNaSW5mYyvZHctiQ/UOP2PfdmFEQ==} + '@tanstack/query-core@5.96.1': + resolution: {integrity: sha512-u1yBgtavSy+N8wgtW3PiER6UpxcplMje65yXnnVgiHTqiMwLlxiw4WvQDrXyn+UD6lnn8kHaxmerJUzQcV/MMg==} - '@tanstack/query-devtools@5.95.2': - resolution: {integrity: sha512-QfaoqBn9uAZ+ICkA8brd1EHj+qBF6glCFgt94U8XP5BT6ppSsDBI8IJ00BU+cAGjQzp6wcKJL2EmRYvxy0TWIg==} + '@tanstack/query-devtools@5.96.1': + resolution: {integrity: sha512-A4+uQTWbiqZDgrLeyjpFYLfMaWaKWpkwTkR1cUfocVj6vPYgym7QTG2se9A01WSxceDdmgxOqvn1ivcTvgWD8w==} - '@tanstack/react-query-devtools@5.95.2': - resolution: {integrity: sha512-AFQFmbznVkbtfpx8VJ2DylW17wWagQel/qLstVLkYmNRo2CmJt3SNej5hvl6EnEeljJIdC3BTB+W7HZtpsH+3g==} + '@tanstack/react-query-devtools@5.96.1': + resolution: {integrity: sha512-3ZZ58fupIXtJFM0evj8YvWrauaZPUrQEqRYaq9e4ER/WPqTKeWEucqWCXn+KJLgWlcot5JIIUtQNynbovGjTTA==} peerDependencies: - '@tanstack/react-query': ^5.95.2 + '@tanstack/react-query': ^5.96.1 react: ^18 || ^19 - '@tanstack/react-query@5.95.2': - resolution: {integrity: sha512-/wGkvLj/st5Ud1Q76KF1uFxScV7WeqN1slQx5280ycwAyYkIPGaRZAEgHxe3bjirSd5Zpwkj6zNcR4cqYni/ZA==} + '@tanstack/react-query@5.96.1': + resolution: {integrity: sha512-2X7KYK5KKWUKGeWCVcqxXAkYefJtrKB7tSKWgeG++b0H6BRHxQaLSSi8AxcgjmUnnosHuh9WsFZqvE16P1WCzA==} peerDependencies: react: ^18 || ^19 @@ -3844,6 +3727,99 @@ packages: '@types/conventional-commits-parser@5.0.2': resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-shape@3.1.8': + resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + + '@types/d3-transition@3.0.9': + resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} + + '@types/d3-zoom@3.0.8': + resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} + + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -3859,6 +3835,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -3923,6 +3902,9 @@ packages: '@uniswap/default-token-list@13.47.0': resolution: {integrity: sha512-1ZxEAmSUejJGggU0F70/7QHqhQNuE7EFtJIccB/Gs4cOBQGIwCfNBfeDXvw+koGPhXeaBpQRmvMpD5wldjWpXw==} + '@upsetjs/venn.js@2.0.0': + resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} + '@vanilla-extract/babel-plugin-debug-ids@1.2.2': resolution: {integrity: sha512-MeDWGICAF9zA/OZLOKwhoRlsUW+fiMwnfuOAqFVohL31Agj7Q/RBWAYweqjHLgFBCsdnr6XIfwjJnmb2znEWxw==} @@ -3988,11 +3970,11 @@ packages: peerDependencies: vite: ^4 || ^5 || ^6 || ^7 - '@vitejs/plugin-react@4.7.0': - resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} - engines: {node: ^14.18.0 || >=16.0.0} + '@vitejs/plugin-react@5.2.0': + resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@vitest/coverage-v8@3.2.4': resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} @@ -4911,6 +4893,14 @@ packages: resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} + chevrotain-allstar@0.3.1: + resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} + peerDependencies: + chevrotain: ^11.0.0 + + chevrotain@11.1.2: + resolution: {integrity: sha512-opLQzEVriiH1uUQ4Kctsd49bRoFDXGGSC4GUqj7pGyxM3RehRhvTlZJc1FL/Flew2p5uwxa1tUDWKzI4wNM8pg==} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -5012,6 +5002,14 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -5078,6 +5076,12 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cose-base@1.0.3: + resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==} + + cose-base@2.2.0: + resolution: {integrity: sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==} + cosmiconfig-typescript-loader@6.2.0: resolution: {integrity: sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==} engines: {node: '>=v18'} @@ -5179,6 +5183,162 @@ packages: typescript: optional: true + cytoscape-cose-bilkent@4.1.0: + resolution: {integrity: sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape-fcose@2.2.0: + resolution: {integrity: sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==} + peerDependencies: + cytoscape: ^3.2.0 + + cytoscape@3.33.1: + resolution: {integrity: sha512-iJc4TwyANnOGR1OmWhsS9ayRS3s+XQ185FmuHObThD+5AeJCakAAbWv8KimMTt08xCCLNgneQwFp+JRJOr9qGQ==} + engines: {node: '>=0.10'} + + d3-array@2.12.1: + resolution: {integrity: sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@1.0.9: + resolution: {integrity: sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-sankey@0.12.3: + resolution: {integrity: sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@1.3.7: + resolution: {integrity: sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + + dagre-d3-es@7.0.14: + resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} + dargs@8.1.0: resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} engines: {node: '>=12'} @@ -5201,6 +5361,9 @@ packages: dayjs@1.11.13: resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + dayjs@1.11.20: + resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} + debounce@1.2.1: resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} @@ -5276,6 +5439,9 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delaunator@5.1.0: + resolution: {integrity: sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ==} + delay@5.0.0: resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} engines: {node: '>=10'} @@ -5354,6 +5520,9 @@ packages: dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dompurify@3.3.3: + resolution: {integrity: sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -5487,11 +5656,6 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} - engines: {node: '>=18'} - hasBin: true - esbuild@0.27.4: resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==} engines: {node: '>=18'} @@ -5736,6 +5900,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -5812,10 +5981,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -5886,6 +6051,9 @@ packages: h3@1.15.5: resolution: {integrity: sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==} + hachure-fill@0.5.2: + resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==} + has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} @@ -5912,6 +6080,18 @@ packages: hast-util-classnames@3.0.0: resolution: {integrity: sha512-tI3JjoGDEBVorMAWK4jNRsfLMYmih1BUOG3VV36pH36njs1IEl7xkNrVTD2mD2yYHmQCa5R/fj61a8IAF4bRaQ==} + hast-util-from-dom@5.0.1: + resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==} + + hast-util-from-html-isomorphic@2.0.0: + resolution: {integrity: sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==} + + hast-util-from-html@2.0.3: + resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} + + hast-util-from-parse5@8.0.3: + resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + hast-util-has-property@3.0.0: resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} @@ -5939,12 +6119,18 @@ packages: hast-util-to-string@3.0.1: resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} hastscript@8.0.0: resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} + hastscript@9.0.1: + resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==} + header-case@2.0.4: resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} @@ -6017,10 +6203,6 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - ignore@7.0.5: - resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} - engines: {node: '>= 4'} - immutable@3.7.6: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} @@ -6058,6 +6240,13 @@ packages: resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} engines: {node: '>=12.0.0'} + internmap@1.0.1: + resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} @@ -6332,6 +6521,10 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + katex@0.16.44: + resolution: {integrity: sha512-EkxoDTk8ufHqHlf9QxGwcxeLkWRR3iOuYfRpfORgYfqc8s13bgb+YtRY59NK5ZpRaCwq1kqA6a5lpX8C/eLphQ==} + hasBin: true + keccak@3.0.4: resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} engines: {node: '>=10.0.0'} @@ -6339,36 +6532,86 @@ packages: keyvaluestorage-interface@1.0.0: resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + khroma@2.1.0: + resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==} + + langium@4.2.1: + resolution: {integrity: sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==} + engines: {node: '>=20.10.0', npm: '>=10.2.3'} + + layout-base@1.0.2: + resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} + + layout-base@2.0.1: + resolution: {integrity: sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==} + + lightningcss-android-arm64@1.30.2: + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + lightningcss-android-arm64@1.31.1: resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] + lightningcss-darwin-arm64@1.30.2: + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + lightningcss-darwin-arm64@1.31.1: resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] + lightningcss-darwin-x64@1.30.2: + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + lightningcss-darwin-x64@1.31.1: resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + lightningcss-freebsd-x64@1.30.2: + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + lightningcss-freebsd-x64@1.31.1: resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + lightningcss-linux-arm-gnueabihf@1.30.2: + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + lightningcss-linux-arm-gnueabihf@1.31.1: resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + lightningcss-linux-arm64-gnu@1.30.2: + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + lightningcss-linux-arm64-gnu@1.31.1: resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} engines: {node: '>= 12.0.0'} @@ -6376,6 +6619,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-arm64-musl@1.30.2: + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + lightningcss-linux-arm64-musl@1.31.1: resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} @@ -6383,6 +6633,13 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-x64-gnu@1.30.2: + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + lightningcss-linux-x64-gnu@1.31.1: resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} @@ -6390,6 +6647,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-x64-musl@1.30.2: + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + lightningcss-linux-x64-musl@1.31.1: resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} @@ -6397,18 +6661,34 @@ packages: os: [linux] libc: [musl] + lightningcss-win32-arm64-msvc@1.30.2: + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + lightningcss-win32-arm64-msvc@1.31.1: resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] + lightningcss-win32-x64-msvc@1.30.2: + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss-win32-x64-msvc@1.31.1: resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + lightningcss@1.30.2: + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} + engines: {node: '>= 12.0.0'} + lightningcss@1.31.1: resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} @@ -6466,6 +6746,9 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash-es@4.17.23: + resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -6579,6 +6862,11 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + marked@16.4.2: + resolution: {integrity: sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==} + engines: {node: '>= 20'} + hasBin: true + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -6657,6 +6945,17 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mermaid-isomorphic@3.1.0: + resolution: {integrity: sha512-mzrvfEVjnJIkJlEqxp3eMuR1wS0TeLCH1VK5E/T5yzWaBwI3JqjJuw70yUIThSCDJ5bRs6O3rgfp00oBAbvSeQ==} + peerDependencies: + playwright: '1' + peerDependenciesMeta: + playwright: + optional: true + + mermaid@11.14.0: + resolution: {integrity: sha512-GSGloRsBs+JINmmhl0JDwjpuezCsHB4WGI4NASHxL3fHo3o/BRXTxhDLKnln8/Q0lRFRyDdEjmk1/d5Sn1Xz8g==} + meros@1.3.2: resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==} engines: {node: '>=13'} @@ -6820,6 +7119,10 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + minimatch@10.2.2: resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} engines: {node: 18 || 20 || >=22} @@ -6842,8 +7145,8 @@ packages: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - minisearch@6.3.0: - resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} + minisearch@7.2.0: + resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} mipd@0.0.7: resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} @@ -6957,6 +7260,27 @@ packages: nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + nuqs@2.8.9: + resolution: {integrity: sha512-8ou6AEwsxMWSYo2qkfZtYFVzngwbKmg4c00HVxC1fF6CEJv3Fwm6eoZmfVPALB+vw8Udo7KL5uy96PFcYe1BIQ==} + peerDependencies: + '@remix-run/react': '>=2' + '@tanstack/react-router': ^1 + next: '>=14.2.0' + react: '>=18.2.0 || ^19.0.0-0' + react-router: ^5 || ^6 || ^7 + react-router-dom: ^5 || ^6 || ^7 + peerDependenciesMeta: + '@remix-run/react': + optional: true + '@tanstack/react-router': + optional: true + next: + optional: true + react-router: + optional: true + react-router-dom: + optional: true + nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} @@ -7096,6 +7420,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + param-case@3.0.4: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} @@ -7127,6 +7454,9 @@ packages: path-case@3.0.4: resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + path-data-parser@0.1.0: + resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -7166,10 +7496,6 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -7234,10 +7560,26 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} + points-on-curve@0.2.0: + resolution: {integrity: sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==} + + points-on-path@0.2.1: + resolution: {integrity: sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==} + pony-cause@2.1.11: resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} engines: {node: '>=12.0.0'} @@ -7423,10 +7765,10 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - react-dom@19.1.0: - resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + react-dom@19.2.4: + resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} peerDependencies: - react: ^19.1.0 + react: ^19.2.4 react-error-boundary@6.1.1: resolution: {integrity: sha512-BrYwPOdXi5mqkk5lw+Uvt0ThHx32rCt3BkukS4X23A2AIWDPSGX6iaWTc0y9TU/mHDA/6qOSGel+B2ERkOvD1w==} @@ -7460,8 +7802,8 @@ packages: react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-refresh@0.17.0: - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + react-refresh@0.18.0: + resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} react-remove-scroll-bar@2.3.8: @@ -7529,8 +7871,8 @@ packages: react-dom: optional: true - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + react@19.2.4: + resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -7597,6 +7939,14 @@ packages: rehype-class-names@2.0.0: resolution: {integrity: sha512-jldCIiAEvXKdq8hqr5f5PzNdIDkvHC6zfKhwta9oRoMu7bn0W7qLES/JrrjBvr9rKz3nJ8x4vY1EWI+dhjHVZQ==} + rehype-mermaid@3.0.0: + resolution: {integrity: sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==} + peerDependencies: + playwright: '1' + peerDependenciesMeta: + playwright: + optional: true + rehype-recma@1.0.0: resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} @@ -7691,11 +8041,17 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + robust-predicates@3.0.3: + resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + rollup@4.59.0: resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + roughjs@4.6.6: + resolution: {integrity: sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==} + rpc-websockets@9.3.3: resolution: {integrity: sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA==} @@ -7709,6 +8065,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -7733,8 +8092,8 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.26.0: - resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} scuid@1.1.0: resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} @@ -7833,10 +8192,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - slice-ansi@3.0.0: resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} engines: {node: '>=8'} @@ -8005,6 +8360,9 @@ packages: stylis@4.2.0: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + stylis@4.3.6: + resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + superstruct@1.0.4: resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} engines: {node: '>=14.0.0'} @@ -8042,8 +8400,8 @@ packages: tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} - tailwindcss@4.0.7: - resolution: {integrity: sha512-yH5bPPyapavo7L+547h3c4jcBXcrKwybQRjwdEIVAd9iXRvy/3T1CC6XSQEgZtRySjKfqvo3Cc0ZF1DTheuIdA==} + tailwindcss@4.1.15: + resolution: {integrity: sha512-k2WLnWkYFkdpRv+Oby3EBXIyQC8/s1HOFMBUViwtAh6Z5uAozeUSMQlIsn/c6Q2iJzqG6aJT3wdPaRNj70iYxQ==} tapable@2.3.0: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} @@ -8144,6 +8502,10 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + ts-log@2.2.7: resolution: {integrity: sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg==} @@ -8191,11 +8553,19 @@ packages: twoslash-protocol@0.2.12: resolution: {integrity: sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg==} + twoslash-protocol@0.3.6: + resolution: {integrity: sha512-FHGsJ9Q+EsNr5bEbgG3hnbkvEBdW5STgPU824AHUjB4kw0Dn4p8tABT7Ncg1Ie6V0+mDg3Qpy41VafZXcQhWMA==} + twoslash@0.2.12: resolution: {integrity: sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw==} peerDependencies: typescript: '*' + twoslash@0.3.6: + resolution: {integrity: sha512-VuI5OKl+MaUO9UIW3rXKoPgHI3X40ZgB/j12VY6h98Ae1mCBihjPvhOPeJWlxCYcmSbmeZt5ZKkK0dsVtp+6pA==} + peerDependencies: + typescript: ^5.5.0 + type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} @@ -8278,13 +8648,12 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} @@ -8297,6 +8666,9 @@ packages: unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-remove-position@5.0.0: + resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} + unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} @@ -8449,6 +8821,10 @@ packages: util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} + hasBin: true + uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -8499,6 +8875,12 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + vfile-location@5.0.3: + resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} + + vfile-matter@5.0.1: + resolution: {integrity: sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==} + vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} @@ -8577,6 +8959,46 @@ packages: yaml: optional: true + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest@3.2.4: resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -8605,13 +9027,34 @@ packages: jsdom: optional: true - vocs@1.0.11: - resolution: {integrity: sha512-/hx66HYeqUaoF+RHl3t4CqNrHDQQSLdGrsAMIT8GmCspg0aOSpNxgrBxzqilKKQTNdsyRAZ7MgzSpp93e3T2jw==} + vocs@1.4.1: + resolution: {integrity: sha512-PwCODbht+/0f6wtAyz5czqdWaMX80KlxOc6Mkqfd0u6bboTZ+YcyBuZaiQwJ4lkDE6NvSrCosPVD5CxGyvtitg==} + engines: {node: '>=22'} hasBin: true peerDependencies: react: ^19 react-dom: ^19 + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -8630,6 +9073,9 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-namespaces@2.0.1: + resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -8908,12 +9354,12 @@ snapshots: graphql: 16.13.2 typescript: 5.9.3 - '@aave/account@0.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': + '@aave/account@0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': optionalDependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) '@adobe/css-tools@4.4.4': {} @@ -8924,6 +9370,11 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.0.2 + '@ardatan/relay-compiler@12.0.0(graphql@16.13.2)': dependencies: '@babel/core': 7.29.0 @@ -8964,7 +9415,7 @@ snapshots: transitivePeerDependencies: - encoding - '@ark-ui/react@5.34.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@ark-ui/react@5.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@internationalized/date': 3.11.0 '@zag-js/accordion': 1.35.3 @@ -9012,7 +9463,7 @@ snapshots: '@zag-js/qr-code': 1.35.3 '@zag-js/radio-group': 1.35.3 '@zag-js/rating-group': 1.35.3 - '@zag-js/react': 1.35.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@zag-js/react': 1.35.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@zag-js/scroll-area': 1.35.3 '@zag-js/select': 1.35.3 '@zag-js/signature-pad': 1.35.3 @@ -9031,8 +9482,8 @@ snapshots: '@zag-js/tree-view': 1.35.3 '@zag-js/types': 1.35.3 '@zag-js/utils': 1.35.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@asamuzakjp/css-color@3.2.0': dependencies: @@ -9383,7 +9834,7 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@coinbase/cdp-sdk': 1.44.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@noble/hashes': 1.4.0 @@ -9393,7 +9844,7 @@ snapshots: ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) preact: 10.24.2 viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 5.0.3(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.3(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' - bufferutil @@ -9409,14 +9860,14 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@bigmi/core@0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))': + '@bigmi/core@0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))': dependencies: '@noble/hashes': 1.8.0 bech32: 2.0.0 bitcoinjs-lib: 7.0.1(typescript@5.9.3) bs58: 6.0.0 eventemitter3: 5.0.4 - zustand: 5.0.12(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.12(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' - immer @@ -9463,14 +9914,14 @@ snapshots: dependencies: '@noble/curves': 1.9.7 - '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: '@graphql-codegen/cli': 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) '@graphql-codegen/typescript-graphql-request': 6.4.0(graphql-request@6.1.0(graphql@16.13.2))(graphql-tag@2.12.6(graphql@16.13.2))(graphql@16.13.2) - '@tanstack/react-query': 5.95.2(react@19.1.0) + '@tanstack/react-query': 5.96.1(react@19.2.4) graphql: 16.13.2 graphql-request: 6.1.0(graphql@16.13.2) - react: 19.1.0 + react: 19.2.4 viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@fastify/websocket' @@ -9487,18 +9938,37 @@ snapshots: - typescript - utf-8-validate - '@chakra-ui/react@3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@braintree/sanitize-url@7.1.2': {} + + '@chakra-ui/react@3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@ark-ui/react': 5.34.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@ark-ui/react': 5.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.1.0) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) '@emotion/utils': 1.4.2 '@pandacss/is-valid-prop': 1.8.2 csstype: 3.2.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + + '@chevrotain/cst-dts-gen@11.1.2': + dependencies: + '@chevrotain/gast': 11.1.2 + '@chevrotain/types': 11.1.2 + lodash-es: 4.17.23 + + '@chevrotain/gast@11.1.2': + dependencies: + '@chevrotain/types': 11.1.2 + lodash-es: 4.17.23 + + '@chevrotain/regexp-to-ast@11.1.2': {} + + '@chevrotain/types@11.1.2': {} + + '@chevrotain/utils@11.1.2': {} '@clack/core@0.3.5': dependencies: @@ -9547,7 +10017,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 @@ -9556,7 +10026,7 @@ snapshots: ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) preact: 10.24.2 viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 5.0.3(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.3(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' - bufferutil @@ -9745,17 +10215,17 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.1.0)': + '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.1.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) '@emotion/utils': 1.4.2 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 transitivePeerDependencies: @@ -9777,9 +10247,9 @@ snapshots: '@emotion/unitless@0.7.5': {} - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.1.0)': + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 '@emotion/utils@1.4.2': {} @@ -9805,234 +10275,156 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.3': - optional: true - '@esbuild/aix-ppc64@0.27.4': optional: true '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.3': - optional: true - '@esbuild/android-arm64@0.27.4': optional: true '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.3': - optional: true - '@esbuild/android-arm@0.27.4': optional: true '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.3': - optional: true - '@esbuild/android-x64@0.27.4': optional: true '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.3': - optional: true - '@esbuild/darwin-arm64@0.27.4': optional: true '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.3': - optional: true - '@esbuild/darwin-x64@0.27.4': optional: true '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.3': - optional: true - '@esbuild/freebsd-arm64@0.27.4': optional: true '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.3': - optional: true - '@esbuild/freebsd-x64@0.27.4': optional: true '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.3': - optional: true - '@esbuild/linux-arm64@0.27.4': optional: true '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.3': - optional: true - '@esbuild/linux-arm@0.27.4': optional: true '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.3': - optional: true - '@esbuild/linux-ia32@0.27.4': optional: true '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.3': - optional: true - '@esbuild/linux-loong64@0.27.4': optional: true '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.3': - optional: true - '@esbuild/linux-mips64el@0.27.4': optional: true '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.3': - optional: true - '@esbuild/linux-ppc64@0.27.4': optional: true '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.3': - optional: true - '@esbuild/linux-riscv64@0.27.4': optional: true '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.3': - optional: true - '@esbuild/linux-s390x@0.27.4': optional: true '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.3': - optional: true - '@esbuild/linux-x64@0.27.4': optional: true '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.3': - optional: true - '@esbuild/netbsd-arm64@0.27.4': optional: true '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.3': - optional: true - '@esbuild/netbsd-x64@0.27.4': optional: true '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.3': - optional: true - '@esbuild/openbsd-arm64@0.27.4': optional: true '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.3': - optional: true - '@esbuild/openbsd-x64@0.27.4': optional: true '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.3': - optional: true - '@esbuild/openharmony-arm64@0.27.4': optional: true '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.3': - optional: true - '@esbuild/sunos-x64@0.27.4': optional: true '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.3': - optional: true - '@esbuild/win32-arm64@0.27.4': optional: true '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.3': - optional: true - '@esbuild/win32-ia32@0.27.4': optional: true '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.3': - optional: true - '@esbuild/win32-x64@0.27.4': optional: true @@ -10058,42 +10450,33 @@ snapshots: '@fastify/busboy@3.2.0': {} - '@floating-ui/core@1.7.4': - dependencies: - '@floating-ui/utils': 0.2.10 - '@floating-ui/core@1.7.5': dependencies: '@floating-ui/utils': 0.2.11 - '@floating-ui/dom@1.7.5': - dependencies: - '@floating-ui/core': 1.7.4 - '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.6': dependencies: '@floating-ui/core': 1.7.5 '@floating-ui/utils': 0.2.11 - '@floating-ui/react-dom@2.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@floating-ui/dom': 1.7.5 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@floating-ui/dom': 1.7.6 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@floating-ui/react@0.27.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react@0.27.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@floating-ui/react-dom': 2.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@floating-ui/utils': 0.2.10 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@floating-ui/react-dom': 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@floating-ui/utils': 0.2.11 + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) tabbable: 6.4.0 - '@floating-ui/utils@0.2.10': {} - '@floating-ui/utils@0.2.11': {} + '@fortawesome/fontawesome-free@6.7.2': {} + '@gemini-wallet/core@0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: '@metamask/rpc-errors': 7.0.2 @@ -10646,6 +11029,14 @@ snapshots: dependencies: hono: 4.12.2 + '@iconify/types@2.0.0': {} + + '@iconify/utils@3.1.0': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@iconify/types': 2.0.0 + mlly: 1.8.0 + '@inquirer/external-editor@1.0.3(@types/node@25.3.0)': dependencies: chardet: 2.1.1 @@ -10696,9 +11087,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@lifi/sdk@3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)': + '@lifi/sdk@3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)': dependencies: - '@bigmi/core': 0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0)) + '@bigmi/core': 0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4)) '@bitcoinerlab/secp256k1': 1.2.0 '@lifi/types': 17.65.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@mysten/sui': 1.45.2(typescript@5.9.3) @@ -10772,11 +11163,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.1.0)': + '@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: '@types/mdx': 2.0.13 '@types/react': 19.2.14 - react: 19.1.0 + react: 19.2.4 '@mdx-js/rollup@3.1.1(rollup@4.59.0)': dependencies: @@ -10788,6 +11179,10 @@ snapshots: transitivePeerDependencies: - supports-color + '@mermaid-js/parser@1.1.0': + dependencies: + langium: 4.2.1 + '@metamask/eth-json-rpc-provider@1.0.1': dependencies: '@metamask/json-rpc-engine': 7.3.3 @@ -11186,813 +11581,813 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-icons@1.3.2(react@19.1.0)': + '@radix-ui/react-icons@1.3.2(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 - '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@floating-ui/react-dom': 2.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.1.0) + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + dependencies: + '@floating-ui/react-dom': 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) '@radix-ui/rect': 1.1.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 - use-sync-external-store: 1.6.0(react@19.1.0) + react: 19.2.4 + use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.1.0 + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.1.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.4 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) '@radix-ui/rect@1.1.1': {} - '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': + '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': dependencies: - '@tanstack/react-query': 5.95.2(react@19.1.0) + '@tanstack/react-query': 5.96.1(react@19.2.4) '@vanilla-extract/css': 1.17.3(babel-plugin-macros@3.1.0) '@vanilla-extract/dynamic': 2.1.4 '@vanilla-extract/sprinkles': 1.6.4(@vanilla-extract/css@1.17.3(babel-plugin-macros@3.1.0)) clsx: 2.1.1 - cuer: 0.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.1.0) + cuer: 0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.2.4) ua-parser-js: 1.0.41 viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - babel-plugin-macros - typescript - '@reown/appkit-adapter-wagmi@1.8.19(3041b67b8915d842a532aec1c6c6eb72)': + '@reown/appkit-adapter-wagmi@1.8.19(c0f8bf6938db1ad3e3bcf55c52af5632)': dependencies: - '@reown/appkit': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.8.19 - '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@wagmi/core': 3.4.0(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 2.1.7(@types/react@19.2.14)(react@19.1.0) + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) optionalDependencies: - '@wagmi/connectors': 7.2.1(7a3af5fbb3d5f20af6e588f956426ab3) + '@wagmi/connectors': 7.2.1(2029316eabd53470a7a21d496ab8520c) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12076,12 +12471,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' @@ -12111,12 +12506,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 2.1.7(@types/react@19.2.14)(react@19.1.0) + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' @@ -12146,14 +12541,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) lit: 3.3.0 - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12182,14 +12577,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) lit: 3.3.0 - valtio: 2.1.7(@types/react@19.2.14)(react@19.1.0) + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12230,12 +12625,12 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: @@ -12267,13 +12662,13 @@ snapshots: - valtio - zod - '@reown/appkit-scaffold-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: @@ -12309,10 +12704,10 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 @@ -12344,11 +12739,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@phosphor-icons/webcomponents': 2.1.5 '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 @@ -12380,15 +12775,15 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76)': + '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.8 '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' @@ -12418,19 +12813,19 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76)': + '@reown/appkit-utils@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.8.19 '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@wallet-standard/wallet': 1.1.0 '@walletconnect/logger': 3.0.2 '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - valtio: 2.1.7(@types/react@19.2.14)(react@19.1.0) + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: @@ -12487,20 +12882,20 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@walletconnect/types': 2.21.0 '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' @@ -12530,20 +12925,20 @@ snapshots: - utf-8-validate - zod - '@reown/appkit@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.8.19 - '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.1.0))(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 semver: 7.7.2 - valtio: 2.1.7(@types/react@19.2.14)(react@19.1.0) + valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: '@lit/react': 1.0.8(@types/react@19.2.14) @@ -12583,6 +12978,8 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.27': {} + '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 @@ -12801,8 +13198,6 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@socket.io/component-emitter@3.1.2': {} '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': @@ -13294,6 +13689,8 @@ snapshots: - typescript - utf-8-validate + '@standard-schema/spec@1.0.0': {} + '@swc/core-darwin-arm64@1.15.13': optional: true @@ -13357,116 +13754,123 @@ snapshots: valibot: 1.2.0(typescript@5.9.3) zod: 3.25.76 - '@tailwindcss/node@4.0.7': + '@tailwindcss/node@4.1.15': dependencies: + '@jridgewell/remapping': 2.3.5 enhanced-resolve: 5.19.0 jiti: 2.6.1 - tailwindcss: 4.0.7 + lightningcss: 1.30.2 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.1.15 - '@tailwindcss/oxide-android-arm64@4.0.7': + '@tailwindcss/oxide-android-arm64@4.1.15': optional: true - '@tailwindcss/oxide-darwin-arm64@4.0.7': + '@tailwindcss/oxide-darwin-arm64@4.1.15': optional: true - '@tailwindcss/oxide-darwin-x64@4.0.7': + '@tailwindcss/oxide-darwin-x64@4.1.15': optional: true - '@tailwindcss/oxide-freebsd-x64@4.0.7': + '@tailwindcss/oxide-freebsd-x64@4.1.15': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.0.7': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.15': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.0.7': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.15': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.0.7': + '@tailwindcss/oxide-linux-arm64-musl@4.1.15': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.0.7': + '@tailwindcss/oxide-linux-x64-gnu@4.1.15': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.0.7': + '@tailwindcss/oxide-linux-x64-musl@4.1.15': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.0.7': + '@tailwindcss/oxide-wasm32-wasi@4.1.15': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.0.7': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.15': optional: true - '@tailwindcss/oxide@4.0.7': + '@tailwindcss/oxide-win32-x64-msvc@4.1.15': + optional: true + + '@tailwindcss/oxide@4.1.15': optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.0.7 - '@tailwindcss/oxide-darwin-arm64': 4.0.7 - '@tailwindcss/oxide-darwin-x64': 4.0.7 - '@tailwindcss/oxide-freebsd-x64': 4.0.7 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.0.7 - '@tailwindcss/oxide-linux-arm64-gnu': 4.0.7 - '@tailwindcss/oxide-linux-arm64-musl': 4.0.7 - '@tailwindcss/oxide-linux-x64-gnu': 4.0.7 - '@tailwindcss/oxide-linux-x64-musl': 4.0.7 - '@tailwindcss/oxide-win32-arm64-msvc': 4.0.7 - '@tailwindcss/oxide-win32-x64-msvc': 4.0.7 - - '@tailwindcss/vite@4.0.7(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@tailwindcss/node': 4.0.7 - '@tailwindcss/oxide': 4.0.7 - lightningcss: 1.31.1 - tailwindcss: 4.0.7 - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + '@tailwindcss/oxide-android-arm64': 4.1.15 + '@tailwindcss/oxide-darwin-arm64': 4.1.15 + '@tailwindcss/oxide-darwin-x64': 4.1.15 + '@tailwindcss/oxide-freebsd-x64': 4.1.15 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.15 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.15 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.15 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.15 + '@tailwindcss/oxide-linux-x64-musl': 4.1.15 + '@tailwindcss/oxide-wasm32-wasi': 4.1.15 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.15 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.15 + + '@tailwindcss/vite@4.1.15(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@tailwindcss/node': 4.1.15 + '@tailwindcss/oxide': 4.1.15 + tailwindcss: 4.1.15 + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) '@tanstack/history@1.161.6': {} - '@tanstack/query-core@5.95.2': {} + '@tanstack/query-core@5.96.1': {} - '@tanstack/query-devtools@5.95.2': {} + '@tanstack/query-devtools@5.96.1': {} - '@tanstack/react-query-devtools@5.95.2(@tanstack/react-query@5.95.2(react@19.1.0))(react@19.1.0)': + '@tanstack/react-query-devtools@5.96.1(@tanstack/react-query@5.96.1(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/query-devtools': 5.95.2 - '@tanstack/react-query': 5.95.2(react@19.1.0) - react: 19.1.0 + '@tanstack/query-devtools': 5.96.1 + '@tanstack/react-query': 5.96.1(react@19.2.4) + react: 19.2.4 - '@tanstack/react-query@5.95.2(react@19.1.0)': + '@tanstack/react-query@5.96.1(react@19.2.4)': dependencies: - '@tanstack/query-core': 5.95.2 - react: 19.1.0 + '@tanstack/query-core': 5.96.1 + react: 19.2.4 - '@tanstack/react-router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/react-router': 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-devtools-core': 1.167.1(@tanstack/router-core@1.168.9)(csstype@3.2.3) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@tanstack/router-core': 1.168.9 transitivePeerDependencies: - csstype - '@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/history': 1.161.6 - '@tanstack/react-store': 0.9.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-store': 0.9.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-core': 1.168.9 isbot: 5.1.35 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - '@tanstack/react-store@0.9.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-store@0.9.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/store': 0.9.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - use-sync-external-store: 1.6.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.4) - '@tanstack/react-virtual@3.13.23(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-virtual@3.13.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@tanstack/virtual-core': 3.13.23 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@tanstack/router-cli@1.166.25': dependencies: @@ -13491,14 +13895,14 @@ snapshots: optionalDependencies: csstype: 3.2.3 - '@tanstack/router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@tanstack/router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tanstack/react-router': 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@tanstack/react-router-devtools': 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tanstack/react-router-devtools': 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) clsx: 2.1.1 goober: 2.1.18(csstype@3.2.3) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: csstype: 3.2.3 transitivePeerDependencies: @@ -13517,7 +13921,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) @@ -13533,7 +13937,7 @@ snapshots: unplugin: 2.3.11 zod: 3.25.76 optionalDependencies: - '@tanstack/react-router': 1.168.10(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -13578,12 +13982,12 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/runtime': 7.28.6 '@testing-library/dom': 10.4.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -13646,6 +14050,123 @@ snapshots: dependencies: '@types/node': 25.3.0 + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-chord@3.0.6': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.2 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-shape@3.1.8': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + + '@types/d3-transition@3.0.9': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-zoom@3.0.8': + dependencies: + '@types/d3-interpolate': 3.0.4 + '@types/d3-selection': 3.0.11 + + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.3 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.4 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.11 + '@types/d3-shape': 3.1.8 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.9 + '@types/d3-zoom': 3.0.8 + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -13662,6 +14183,8 @@ snapshots: '@types/estree@1.0.8': {} + '@types/geojson@7946.0.16': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -13721,6 +14244,11 @@ snapshots: '@uniswap/default-token-list@13.47.0': {} + '@upsetjs/venn.js@2.0.0': + optionalDependencies: + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + '@vanilla-extract/babel-plugin-debug-ids@1.2.2': dependencies: '@babel/core': 7.29.0 @@ -13797,7 +14325,7 @@ snapshots: '@vanilla-extract/babel-plugin-debug-ids': 1.2.2 '@vanilla-extract/css': 1.18.0(babel-plugin-macros@3.1.0) dedent: 1.7.1(babel-plugin-macros@3.1.0) - esbuild: 0.27.3 + esbuild: 0.27.4 eval: 0.1.8 find-up: 5.0.0 javascript-stringify: 2.1.0 @@ -13812,11 +14340,11 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.3(babel-plugin-macros@3.1.0) - '@vanilla-extract/vite-plugin@5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': + '@vanilla-extract/vite-plugin@5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': dependencies: '@vanilla-extract/compiler': 0.3.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) '@vanilla-extract/integration': 8.0.7(babel-plugin-macros@3.1.0) - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -13832,9 +14360,9 @@ snapshots: - tsx - yaml - '@vercel/analytics@1.6.1(react@19.1.0)': + '@vercel/analytics@1.6.1(react@19.2.4)': optionalDependencies: - react: 19.1.0 + react: 19.2.4 '@vitejs/plugin-react-swc@3.11.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: @@ -13844,15 +14372,15 @@ snapshots: transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-beta.27 + '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + react-refresh: 0.18.0 + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -13943,18 +14471,18 @@ snapshots: - bufferutil - utf-8-validate - '@wagmi/connectors@6.2.0(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76)': + '@wagmi/connectors@6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76)': dependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@gemini-wallet/core': 0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - porto: 0.2.35(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + porto: 0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: typescript: 5.9.3 @@ -13996,28 +14524,28 @@ snapshots: - wagmi - zod - '@wagmi/connectors@7.2.1(7a3af5fbb3d5f20af6e588f956426ab3)': + '@wagmi/connectors@7.2.1(2029316eabd53470a7a21d496ab8520c)': dependencies: - '@wagmi/core': 3.4.0(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(zod@3.25.76) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - porto: 0.2.37(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + porto: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) typescript: 5.9.3 optional: true - '@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.9.3) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 5.0.0(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.0(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: - '@tanstack/query-core': 5.95.2 + '@tanstack/query-core': 5.96.1 typescript: 5.9.3 transitivePeerDependencies: - '@types/react' @@ -14025,14 +14553,14 @@ snapshots: - react - use-sync-external-store - '@wagmi/core@3.4.0(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.9.3) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - zustand: 5.0.0(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.0(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: - '@tanstack/query-core': 5.95.2 + '@tanstack/query-core': 5.96.1 ox: 0.14.7(typescript@5.9.3)(zod@3.25.76) typescript: 5.9.3 transitivePeerDependencies: @@ -14204,9 +14732,9 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 @@ -14812,10 +15340,10 @@ snapshots: '@web3icons/common': 0.11.46(typescript@5.9.3) typescript: 5.9.3 - '@web3icons/react@4.1.17(react@19.1.0)(typescript@5.9.3)': + '@web3icons/react@4.1.17(react@19.2.4)(typescript@5.9.3)': dependencies: '@web3icons/common': 0.11.46(typescript@5.9.3) - react: 19.1.0 + react: 19.2.4 transitivePeerDependencies: - typescript @@ -15222,14 +15750,14 @@ snapshots: '@zag-js/types': 1.35.3 '@zag-js/utils': 1.35.3 - '@zag-js/react@1.35.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@zag-js/react@1.35.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@zag-js/core': 1.35.3 '@zag-js/store': 1.35.3 '@zag-js/types': 1.35.3 '@zag-js/utils': 1.35.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) '@zag-js/rect-utils@1.35.3': {} @@ -15568,14 +16096,14 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.11 - babel-plugin-styled-components@2.1.4(@babel/core@7.29.0)(styled-components@5.3.11(@babel/core@7.29.0)(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0))(supports-color@5.5.0): + babel-plugin-styled-components@2.1.4(@babel/core@7.29.0)(styled-components@5.3.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4))(supports-color@5.5.0): dependencies: '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.28.6(supports-color@5.5.0) '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) lodash: 4.17.23 picomatch: 2.3.1 - styled-components: 5.3.11(@babel/core@7.29.0)(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0) + styled-components: 5.3.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4) transitivePeerDependencies: - '@babel/core' - supports-color @@ -15846,6 +16374,20 @@ snapshots: check-error@2.1.3: {} + chevrotain-allstar@0.3.1(chevrotain@11.1.2): + dependencies: + chevrotain: 11.1.2 + lodash-es: 4.17.23 + + chevrotain@11.1.2: + dependencies: + '@chevrotain/cst-dts-gen': 11.1.2 + '@chevrotain/gast': 11.1.2 + '@chevrotain/regexp-to-ast': 11.1.2 + '@chevrotain/types': 11.1.2 + '@chevrotain/utils': 11.1.2 + lodash-es: 4.17.23 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -15938,6 +16480,10 @@ snapshots: commander@2.20.3: {} + commander@7.2.0: {} + + commander@8.3.0: {} + common-tags@1.8.2: {} compare-func@2.0.0: @@ -15965,22 +16511,22 @@ snapshots: confbox@0.1.8: {} - connectkit@1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.95.2(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + connectkit@1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): dependencies: - '@aave/account': 0.2.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) - '@tanstack/react-query': 5.95.2(react@19.1.0) + '@aave/account': 0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + '@tanstack/react-query': 5.96.1(react@19.2.4) buffer: 6.0.3 detect-browser: 5.3.0 - framer-motion: 6.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + framer-motion: 6.5.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) qrcode: 1.5.4 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-transition-state: 1.1.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react-use-measure: 2.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-transition-state: 1.1.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-use-measure: 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) resize-observer-polyfill: 1.5.1 - styled-components: 5.3.11(@babel/core@7.29.0)(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0) + styled-components: 5.3.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@babel/core' - react-is @@ -16018,6 +16564,14 @@ snapshots: core-util-is@1.0.3: {} + cose-base@1.0.3: + dependencies: + layout-base: 1.0.2 + + cose-base@2.2.0: + dependencies: + layout-base: 2.0.1 + cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): dependencies: '@types/node': 25.3.0 @@ -16114,14 +16668,198 @@ snapshots: csstype@3.2.3: {} - cuer@0.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(typescript@5.9.3): + cuer@0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: qr: 0.5.4 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: typescript: 5.9.3 + cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): + dependencies: + cose-base: 1.0.3 + cytoscape: 3.33.1 + + cytoscape-fcose@2.2.0(cytoscape@3.33.1): + dependencies: + cose-base: 2.2.0 + cytoscape: 3.33.1 + + cytoscape@3.33.1: {} + + d3-array@2.12.1: + dependencies: + internmap: 1.0.1 + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + + d3-color@3.1.0: {} + + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.1.0 + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + + d3-ease@3.0.1: {} + + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.2: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@1.0.9: {} + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-sankey@0.12.3: + dependencies: + d3-array: 2.12.1 + d3-shape: 1.3.7 + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@1.3.7: + dependencies: + d3-path: 1.0.9 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.2 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + + dagre-d3-es@7.0.14: + dependencies: + d3: 7.9.0 + lodash-es: 4.17.23 + dargs@8.1.0: {} data-uri-to-buffer@4.0.1: {} @@ -16139,6 +16877,8 @@ snapshots: dayjs@1.11.13: {} + dayjs@1.11.20: {} + debounce@1.2.1: {} debug@2.6.9: @@ -16189,6 +16929,10 @@ snapshots: defu@6.1.4: {} + delaunator@5.1.0: + dependencies: + robust-predicates: 3.0.3 + delay@5.0.0: {} delayed-stream@1.0.0: {} @@ -16199,9 +16943,9 @@ snapshots: dequal@2.0.3: {} - derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0)): + derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4)): dependencies: - valtio: 1.13.2(@types/react@19.2.14)(react@19.1.0) + valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) destr@2.0.5: {} @@ -16239,6 +16983,10 @@ snapshots: dom-accessibility-api@0.6.3: {} + dompurify@3.3.3: + optionalDependencies: + '@types/trusted-types': 2.0.7 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -16397,35 +17145,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 - esbuild@0.27.4: optionalDependencies: '@esbuild/aix-ppc64': 0.27.4 @@ -16702,14 +17421,14 @@ snapshots: fraction.js@5.3.4: {} - framer-motion@6.5.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + framer-motion@6.5.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@motionone/dom': 10.12.0 framesync: 6.0.1 hey-listen: 1.0.8 popmotion: 11.0.3 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) style-value-types: 5.0.0 tslib: 2.8.1 optionalDependencies: @@ -16729,6 +17448,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -16813,15 +17535,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - globrex@0.1.2: {} goober@2.1.18(csstype@3.2.3): @@ -16906,6 +17619,8 @@ snapshots: ufo: 1.6.3 uncrypto: 0.1.3 + hachure-fill@0.5.2: {} + has-flag@3.0.0: {} has-flag@4.0.0: {} @@ -16929,6 +17644,39 @@ snapshots: '@types/hast': 3.0.4 space-separated-tokens: 2.0.2 + hast-util-from-dom@5.0.1: + dependencies: + '@types/hast': 3.0.4 + hastscript: 9.0.1 + web-namespaces: 2.0.1 + + hast-util-from-html-isomorphic@2.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-from-dom: 5.0.1 + hast-util-from-html: 2.0.3 + unist-util-remove-position: 5.0.0 + + hast-util-from-html@2.0.3: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + hast-util-from-parse5: 8.0.3 + parse5: 7.3.0 + vfile: 6.0.3 + vfile-message: 4.0.3 + + hast-util-from-parse5@8.0.3: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + devlop: 1.1.0 + hastscript: 9.0.1 + property-information: 7.1.0 + vfile: 6.0.3 + vfile-location: 5.0.3 + web-namespaces: 2.0.1 + hast-util-has-property@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -17022,6 +17770,13 @@ snapshots: dependencies: '@types/hast': 3.0.4 + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -17034,6 +17789,14 @@ snapshots: property-information: 6.5.0 space-separated-tokens: 2.0.2 + hastscript@9.0.1: + dependencies: + '@types/hast': 3.0.4 + comma-separated-tokens: 2.0.3 + hast-util-parse-selector: 4.0.0 + property-information: 7.1.0 + space-separated-tokens: 2.0.2 + header-case@2.0.4: dependencies: capital-case: 1.0.4 @@ -17103,8 +17866,6 @@ snapshots: ignore@5.3.2: {} - ignore@7.0.5: {} - immutable@3.7.6: {} import-fresh@3.3.1: @@ -17149,6 +17910,10 @@ snapshots: transitivePeerDependencies: - '@types/node' + internmap@1.0.1: {} + + internmap@2.0.3: {} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 @@ -17413,6 +18178,10 @@ snapshots: jsonparse@1.3.1: {} + katex@0.16.44: + dependencies: + commander: 8.3.0 + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 @@ -17421,39 +18190,102 @@ snapshots: keyvaluestorage-interface@1.0.0: {} + khroma@2.1.0: {} + + langium@4.2.1: + dependencies: + chevrotain: 11.1.2 + chevrotain-allstar: 0.3.1(chevrotain@11.1.2) + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + layout-base@1.0.2: {} + + layout-base@2.0.1: {} + + lightningcss-android-arm64@1.30.2: + optional: true + lightningcss-android-arm64@1.31.1: optional: true + lightningcss-darwin-arm64@1.30.2: + optional: true + lightningcss-darwin-arm64@1.31.1: optional: true + lightningcss-darwin-x64@1.30.2: + optional: true + lightningcss-darwin-x64@1.31.1: optional: true + lightningcss-freebsd-x64@1.30.2: + optional: true + lightningcss-freebsd-x64@1.31.1: optional: true + lightningcss-linux-arm-gnueabihf@1.30.2: + optional: true + lightningcss-linux-arm-gnueabihf@1.31.1: optional: true + lightningcss-linux-arm64-gnu@1.30.2: + optional: true + lightningcss-linux-arm64-gnu@1.31.1: optional: true + lightningcss-linux-arm64-musl@1.30.2: + optional: true + lightningcss-linux-arm64-musl@1.31.1: optional: true + lightningcss-linux-x64-gnu@1.30.2: + optional: true + lightningcss-linux-x64-gnu@1.31.1: optional: true + lightningcss-linux-x64-musl@1.30.2: + optional: true + lightningcss-linux-x64-musl@1.31.1: optional: true + lightningcss-win32-arm64-msvc@1.30.2: + optional: true + lightningcss-win32-arm64-msvc@1.31.1: optional: true + lightningcss-win32-x64-msvc@1.30.2: + optional: true + lightningcss-win32-x64-msvc@1.31.1: optional: true + lightningcss@1.30.2: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.30.2 + lightningcss-darwin-arm64: 1.30.2 + lightningcss-darwin-x64: 1.30.2 + lightningcss-freebsd-x64: 1.30.2 + lightningcss-linux-arm-gnueabihf: 1.30.2 + lightningcss-linux-arm64-gnu: 1.30.2 + lightningcss-linux-arm64-musl: 1.30.2 + lightningcss-linux-x64-gnu: 1.30.2 + lightningcss-linux-x64-musl: 1.30.2 + lightningcss-win32-arm64-msvc: 1.30.2 + lightningcss-win32-x64-msvc: 1.30.2 + lightningcss@1.31.1: dependencies: detect-libc: 2.1.2 @@ -17469,6 +18301,7 @@ snapshots: lightningcss-linux-x64-musl: 1.31.1 lightningcss-win32-arm64-msvc: 1.31.1 lightningcss-win32-x64-msvc: 1.31.1 + optional: true lilconfig@3.1.3: {} @@ -17543,6 +18376,8 @@ snapshots: dependencies: p-locate: 6.0.0 + lodash-es@4.17.23: {} + lodash.camelcase@4.3.0: {} lodash.isplainobject@4.0.6: {} @@ -17651,6 +18486,8 @@ snapshots: markdown-table@3.0.4: {} + marked@16.4.2: {} + math-intrinsics@1.1.0: {} md5@2.3.0: @@ -17859,6 +18696,38 @@ snapshots: merge2@1.4.1: {} + mermaid-isomorphic@3.1.0(playwright@1.59.1): + dependencies: + '@fortawesome/fontawesome-free': 6.7.2 + katex: 0.16.44 + mermaid: 11.14.0 + optionalDependencies: + playwright: 1.59.1 + + mermaid@11.14.0: + dependencies: + '@braintree/sanitize-url': 7.1.2 + '@iconify/utils': 3.1.0 + '@mermaid-js/parser': 1.1.0 + '@types/d3': 7.4.3 + '@upsetjs/venn.js': 2.0.0 + cytoscape: 3.33.1 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.33.1) + cytoscape-fcose: 2.2.0(cytoscape@3.33.1) + d3: 7.9.0 + d3-sankey: 0.12.3 + dagre-d3-es: 7.0.14 + dayjs: 1.11.20 + dompurify: 3.3.3 + katex: 0.16.44 + khroma: 2.1.0 + lodash-es: 4.17.23 + marked: 16.4.2 + roughjs: 4.6.6 + stylis: 4.3.6 + ts-dedent: 2.2.0 + uuid: 11.1.0 + meros@1.3.2(@types/node@25.3.0): optionalDependencies: '@types/node': 25.3.0 @@ -18128,7 +18997,7 @@ snapshots: micromark@4.0.2: dependencies: - '@types/debug': 4.1.12 + '@types/debug': 4.1.13 debug: 4.4.3(supports-color@5.5.0) decode-named-character-reference: 1.3.0 devlop: 1.1.0 @@ -18171,6 +19040,8 @@ snapshots: min-indent@1.0.1: {} + mini-svg-data-uri@1.4.4: {} + minimatch@10.2.2: dependencies: brace-expansion: 5.0.3 @@ -18191,7 +19062,7 @@ snapshots: minipass@7.1.3: {} - minisearch@6.3.0: {} + minisearch@7.2.0: {} mipd@0.0.7(typescript@5.9.3): optionalDependencies: @@ -18224,10 +19095,10 @@ snapshots: negotiator@0.6.4: {} - next-themes@0.4.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) no-case@3.0.4: dependencies: @@ -18280,6 +19151,14 @@ snapshots: nullthrows@1.1.1: {} + nuqs@2.8.9(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4): + dependencies: + '@standard-schema/spec': 1.0.0 + react: 19.2.4 + optionalDependencies: + '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + nwsapi@2.2.23: {} obj-multiplex@1.0.0: @@ -18497,6 +19376,8 @@ snapshots: package-json-from-dist@1.0.1: {} + package-manager-detector@1.6.0: {} + param-case@3.0.4: dependencies: dot-case: 3.0.4 @@ -18545,6 +19426,8 @@ snapshots: dot-case: 3.0.4 tslib: 2.8.1 + path-data-parser@0.1.0: {} + path-exists@4.0.0: {} path-exists@5.0.0: {} @@ -18570,8 +19453,6 @@ snapshots: path-type@4.0.0: {} - path-type@6.0.0: {} - pathe@1.1.2: {} pathe@2.0.3: {} @@ -18641,8 +19522,23 @@ snapshots: mlly: 1.8.0 pathe: 2.0.3 + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 + pngjs@5.0.0: {} + points-on-curve@0.2.0: {} + + points-on-path@0.2.1: + dependencies: + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + pony-cause@2.1.11: {} popmotion@11.0.3: @@ -18652,41 +19548,41 @@ snapshots: style-value-types: 5.0.0 tslib: 2.8.1 - porto@0.2.35(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + porto@0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): dependencies: - '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) hono: 4.12.2 idb-keyval: 6.2.2 mipd: 0.0.7(typescript@5.9.3) ox: 0.9.17(typescript@5.9.3)(zod@4.3.6) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) zod: 4.3.6 - zustand: 5.0.11(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: - '@tanstack/react-query': 5.95.2(react@19.1.0) - react: 19.1.0 + '@tanstack/react-query': 5.96.1(react@19.2.4) + react: 19.2.4 typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - immer - use-sync-external-store - porto@0.2.37(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + porto@0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): dependencies: - '@wagmi/core': 3.4.0(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) hono: 4.12.2 idb-keyval: 6.2.2 mipd: 0.0.7(typescript@5.9.3) ox: 0.9.17(typescript@5.9.3)(zod@4.3.6) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) zod: 4.3.6 - zustand: 5.0.11(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)) + zustand: 5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: - '@tanstack/react-query': 5.95.2(react@19.1.0) - react: 19.1.0 + '@tanstack/react-query': 5.96.1(react@19.2.4) + react: 19.2.4 typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - immer @@ -18775,65 +19671,65 @@ snapshots: quick-format-unescaped@4.0.4: {} - radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -18842,96 +19738,96 @@ snapshots: range-parser@1.2.1: {} - react-dom@19.1.0(react@19.1.0): + react-dom@19.2.4(react@19.2.4): dependencies: - react: 19.1.0 - scheduler: 0.26.0 + react: 19.2.4 + scheduler: 0.27.0 - react-error-boundary@6.1.1(react@19.1.0): + react-error-boundary@6.1.1(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 - react-intersection-observer@9.16.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-intersection-observer@9.16.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: - react-dom: 19.1.0(react@19.1.0) + react-dom: 19.2.4(react@19.2.4) react-is@16.13.1: {} react-is@17.0.2: {} - react-jazzicon@1.0.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-jazzicon@1.0.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: mersenne-twister: 1.1.0 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-number-format@5.4.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-number-format@5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-refresh@0.17.0: {} + react-refresh@0.18.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.1.0) + react: 19.2.4 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react-remove-scroll@2.6.2(@types/react@19.2.14)(react@19.1.0): + react-remove-scroll@2.6.2(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.1.0) + react: 19.2.4 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 - react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.1.0): + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.1.0) + react: 19.2.4 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 - react-router@7.13.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: cookie: 1.1.1 - react: 19.1.0 + react: 19.2.4 set-cookie-parser: 2.7.2 optionalDependencies: - react-dom: 19.1.0(react@19.1.0) + react-dom: 19.2.4(react@19.2.4) - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): dependencies: get-nonce: 1.0.1 - react: 19.1.0 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react-transition-state@1.1.5(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-transition-state@1.1.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) - react-use-measure@2.1.7(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-use-measure@2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 optionalDependencies: - react-dom: 19.1.0(react@19.1.0) + react-dom: 19.2.4(react@19.2.4) - react@19.1.0: {} + react@19.2.4: {} readable-stream@2.3.8: dependencies: @@ -19030,6 +19926,20 @@ snapshots: hast-util-select: 6.0.4 unified: 11.0.5 + rehype-mermaid@3.0.0(playwright@1.59.1): + dependencies: + '@types/hast': 3.0.4 + hast-util-from-html-isomorphic: 2.0.0 + hast-util-to-text: 4.0.2 + mermaid-isomorphic: 3.1.0(playwright@1.59.1) + mini-svg-data-uri: 1.4.4 + space-separated-tokens: 2.0.2 + unified: 11.0.5 + unist-util-visit-parents: 6.0.2 + vfile: 6.0.3 + optionalDependencies: + playwright: 1.59.1 + rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.8 @@ -19169,6 +20079,8 @@ snapshots: rfdc@1.4.1: {} + robust-predicates@3.0.3: {} + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 @@ -19200,6 +20112,13 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 + roughjs@4.6.6: + dependencies: + hachure-fill: 0.5.2 + path-data-parser: 0.1.0 + points-on-curve: 0.2.0 + points-on-path: 0.2.1 + rpc-websockets@9.3.3: dependencies: '@swc/helpers': 0.5.19 @@ -19221,6 +20140,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -19243,7 +20164,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.26.0: {} + scheduler@0.27.0: {} scuid@1.1.0: {} @@ -19348,8 +20269,6 @@ snapshots: slash@3.0.0: {} - slash@5.1.0: {} - slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 @@ -19517,18 +20436,18 @@ snapshots: hey-listen: 1.0.8 tslib: 2.8.1 - styled-components@5.3.11(@babel/core@7.29.0)(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0): + styled-components@5.3.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4): dependencies: '@babel/helper-module-imports': 7.28.6(supports-color@5.5.0) '@babel/traverse': 7.29.0(supports-color@5.5.0) '@emotion/is-prop-valid': 1.4.0 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.1.4(@babel/core@7.29.0)(styled-components@5.3.11(@babel/core@7.29.0)(react-dom@19.1.0(react@19.1.0))(react-is@17.0.2)(react@19.1.0))(supports-color@5.5.0) + babel-plugin-styled-components: 2.1.4(@babel/core@7.29.0)(styled-components@5.3.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4))(supports-color@5.5.0) css-to-react-native: 3.2.0 hoist-non-react-statics: 3.3.2 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) react-is: 17.0.2 shallowequal: 1.1.0 supports-color: 5.5.0 @@ -19537,6 +20456,8 @@ snapshots: stylis@4.2.0: {} + stylis@4.3.6: {} + superstruct@1.0.4: {} superstruct@2.0.2: {} @@ -19571,7 +20492,7 @@ snapshots: tabbable@6.4.0: {} - tailwindcss@4.0.7: {} + tailwindcss@4.1.15: {} tapable@2.3.0: {} @@ -19654,6 +20575,8 @@ snapshots: trough@2.2.0: {} + ts-dedent@2.2.0: {} + ts-log@2.2.7: {} ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@5.9.3): @@ -19697,6 +20620,8 @@ snapshots: twoslash-protocol@0.2.12: {} + twoslash-protocol@0.3.6: {} + twoslash@0.2.12(typescript@5.9.3): dependencies: '@typescript/vfs': 1.6.4(typescript@5.9.3) @@ -19705,6 +20630,14 @@ snapshots: transitivePeerDependencies: - supports-color + twoslash@0.3.6(typescript@5.9.3): + dependencies: + '@typescript/vfs': 1.6.4(typescript@5.9.3) + twoslash-protocol: 0.3.6 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + type-fest@0.21.3: {} typed-array-buffer@1.0.3: @@ -19769,8 +20702,6 @@ snapshots: unicorn-magic@0.1.0: {} - unicorn-magic@0.3.0: {} - unified@11.0.5: dependencies: '@types/unist': 3.0.3 @@ -19781,6 +20712,11 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.1 + unist-util-is@6.0.1: dependencies: '@types/unist': 3.0.3 @@ -19803,6 +20739,11 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-remove-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-visit: 5.1.0 + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -19862,36 +20803,36 @@ snapshots: urlpattern-polyfill@10.1.0: {} - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.1.0): + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-debounce@10.1.1(react@19.1.0): + use-debounce@10.1.1(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): dependencies: detect-node-es: 1.1.0 - react: 19.1.0 + react: 19.2.4 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-sync-external-store@1.2.0(react@19.1.0): + use-sync-external-store@1.2.0(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 - use-sync-external-store@1.4.0(react@19.1.0): + use-sync-external-store@1.4.0(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 - use-sync-external-store@1.6.0(react@19.1.0): + use-sync-external-store@1.6.0(react@19.2.4): dependencies: - react: 19.1.0 + react: 19.2.4 utf-8-validate@5.0.10: dependencies: @@ -19907,6 +20848,8 @@ snapshots: is-typed-array: 1.1.15 which-typed-array: 1.1.20 + uuid@11.1.0: {} + uuid@8.3.2: {} uuid@9.0.1: {} @@ -19917,21 +20860,21 @@ snapshots: optionalDependencies: typescript: 5.9.3 - valtio@1.13.2(@types/react@19.2.14)(react@19.1.0): + valtio@1.13.2(@types/react@19.2.14)(react@19.2.4): dependencies: - derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.1.0)) + derive-valtio: 0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4)) proxy-compare: 2.6.0 - use-sync-external-store: 1.2.0(react@19.1.0) + use-sync-external-store: 1.2.0(react@19.2.4) optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 + react: 19.2.4 - valtio@2.1.7(@types/react@19.2.14)(react@19.1.0): + valtio@2.1.7(@types/react@19.2.14)(react@19.2.4): dependencies: proxy-compare: 3.0.1 optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 + react: 19.2.4 varuint-bitcoin@2.0.0: dependencies: @@ -19939,6 +20882,16 @@ snapshots: vary@1.1.2: {} + vfile-location@5.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile: 6.0.3 + + vfile-matter@5.0.1: + dependencies: + vfile: 6.0.3 + yaml: 2.8.2 + vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -20067,6 +21020,22 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 + vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + esbuild: 0.27.4 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + postcss: 8.5.6 + rollup: 4.59.0 + tinyglobby: 0.2.15 + optionalDependencies: + '@types/node': 25.3.0 + fsevents: 2.3.3 + jiti: 2.6.1 + lightningcss: 1.31.1 + tsx: 4.21.0 + yaml: 2.8.2 + vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: '@types/chai': 5.2.3 @@ -20110,29 +21079,30 @@ snapshots: - tsx - yaml - vocs@1.0.11(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + vocs@1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3): dependencies: - '@floating-ui/react': 0.27.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@floating-ui/react': 0.27.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@hono/node-server': 1.19.9(hono@4.12.2) - '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.1.0) + '@mdx-js/mdx': 3.1.1 + '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) '@mdx-js/rollup': 3.1.1(rollup@4.59.0) '@noble/hashes': 1.8.0 '@radix-ui/colors': 3.0.0 - '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-icons': 1.3.2(react@19.1.0) - '@radix-ui/react-label': 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-icons': 1.3.2(react@19.2.4) + '@radix-ui/react-label': 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@shikijs/rehype': 1.29.2 '@shikijs/transformers': 1.29.2 '@shikijs/twoslash': 1.29.2(typescript@5.9.3) - '@tailwindcss/vite': 4.0.7(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + '@tailwindcss/vite': 4.1.15(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) '@vanilla-extract/css': 1.18.0(babel-plugin-macros@3.1.0) '@vanilla-extract/dynamic': 2.1.5 - '@vanilla-extract/vite-plugin': 5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) - '@vitejs/plugin-react': 4.7.0(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vanilla-extract/vite-plugin': 5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) + '@vitejs/plugin-react': 5.2.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) autoprefixer: 10.4.24(postcss@8.5.6) cac: 6.7.14 chroma-js: 3.2.0 @@ -20141,7 +21111,6 @@ snapshots: create-vocs: 1.0.0 cross-spawn: 7.0.6 fs-extra: 11.3.3 - globby: 14.1.0 hastscript: 8.0.0 hono: 4.12.2 mark.js: 8.11.1 @@ -20153,18 +21122,21 @@ snapshots: mdast-util-mdx-jsx: 3.2.0 mdast-util-to-hast: 13.2.1 mdast-util-to-markdown: 2.1.2 - minimatch: 9.0.6 - minisearch: 6.3.0 + minisearch: 7.2.0 + nuqs: 2.8.9(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-router@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) ora: 7.0.1 p-limit: 5.0.0 + picomatch: 4.0.3 + playwright: 1.59.1 postcss: 8.5.6 - radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-intersection-observer: 9.16.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react-router: 7.13.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + react-intersection-observer: 9.16.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) rehype-autolink-headings: 7.1.0 rehype-class-names: 2.0.0 + rehype-mermaid: 3.0.0(playwright@1.59.1) rehype-slug: 6.0.0 remark-directive: 3.0.1 remark-frontmatter: 5.0.0 @@ -20175,12 +21147,16 @@ snapshots: serve-static: 1.16.3 shiki: 1.29.2 toml: 3.0.0 - twoslash: 0.2.12(typescript@5.9.3) + twoslash: 0.3.6(typescript@5.9.3) ua-parser-js: 1.0.41 unified: 11.0.5 unist-util-visit: 5.1.0 - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vfile-matter: 5.0.1 + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + yaml: 2.8.2 transitivePeerDependencies: + - '@remix-run/react' + - '@tanstack/react-router' - '@types/node' - '@types/react' - '@types/react-dom' @@ -20188,6 +21164,8 @@ snapshots: - jiti - less - lightningcss + - next + - react-router-dom - rollup - sass - sass-embedded @@ -20197,19 +21175,35 @@ snapshots: - terser - tsx - typescript - - yaml + + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-uri@3.1.0: {} w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): + wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): dependencies: - '@tanstack/react-query': 5.95.2(react@19.1.0) - '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.95.2)(@tanstack/react-query@5.95.2(react@19.1.0))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.95.2)(@types/react@19.2.14)(react@19.1.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.1.0))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + '@tanstack/react-query': 5.96.1(react@19.2.4) + '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + react: 19.2.4 + use-sync-external-store: 1.4.0(react@19.2.4) viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: typescript: 5.9.3 @@ -20252,6 +21246,8 @@ snapshots: dependencies: defaults: 1.0.4 + web-namespaces@2.0.1: {} + web-streams-polyfill@3.3.3: {} webextension-polyfill@0.10.0: {} @@ -20408,28 +21404,28 @@ snapshots: zod@4.3.6: {} - zustand@5.0.0(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): + zustand@5.0.0(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)): optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + react: 19.2.4 + use-sync-external-store: 1.4.0(react@19.2.4) - zustand@5.0.11(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): + zustand@5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)): optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + react: 19.2.4 + use-sync-external-store: 1.4.0(react@19.2.4) - zustand@5.0.12(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): + zustand@5.0.12(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)): optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + react: 19.2.4 + use-sync-external-store: 1.4.0(react@19.2.4) - zustand@5.0.3(@types/react@19.2.14)(react@19.1.0)(use-sync-external-store@1.4.0(react@19.1.0)): + zustand@5.0.3(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)): optionalDependencies: '@types/react': 19.2.14 - react: 19.1.0 - use-sync-external-store: 1.4.0(react@19.1.0) + react: 19.2.4 + use-sync-external-store: 1.4.0(react@19.2.4) zwitch@2.0.4: {} From 12126f39aa48e7811ffb876df188c92fa278641c Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 15:17:08 -0300 Subject: [PATCH 029/115] chore: update typedoc-github-theme and uniswap token list - typedoc-github-theme ^0.3.0 -> ^0.4.0 - @uniswap/default-token-list ^13.33.0 -> ^18.12.0 The token list is data-only (token metadata JSON), so the major version bump carries no API risk. Part of #434. --- package.json | 4 ++-- pnpm-lock.yaml | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 4d8cb707..5a16104b 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@tanstack/react-query": "^5.96.1", "@tanstack/react-router": "^1.168.10", "@tanstack/react-virtual": "^3.13.23", - "@uniswap/default-token-list": "^13.33.0", + "@uniswap/default-token-list": "^18.12.0", "@vercel/analytics": "^1.5.0", "@web3icons/core": "^4.0.13", "@web3icons/react": "^4.0.13", @@ -80,7 +80,7 @@ "lint-staged": "^15.5.2", "ts-node": "^10.9.2", "typedoc": "^0.28.18", - "typedoc-github-theme": "^0.3.0", + "typedoc-github-theme": "^0.4.0", "typedoc-plugin-inline-sources": "^1.3.0", "typedoc-plugin-missing-exports": "^4.0.0", "typedoc-plugin-rename-defaults": "^0.7.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dfef68f0..861dc9f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: ^3.13.23 version: 3.13.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@uniswap/default-token-list': - specifier: ^13.33.0 - version: 13.47.0 + specifier: ^18.12.0 + version: 18.12.0 '@vercel/analytics': specifier: ^1.5.0 version: 1.6.1(react@19.2.4) @@ -169,8 +169,8 @@ importers: specifier: ^0.28.18 version: 0.28.18(typescript@5.9.3) typedoc-github-theme: - specifier: ^0.3.0 - version: 0.3.1(typedoc@0.28.18(typescript@5.9.3)) + specifier: ^0.4.0 + version: 0.4.0(typedoc@0.28.18(typescript@5.9.3)) typedoc-plugin-inline-sources: specifier: ^1.3.0 version: 1.3.0(typedoc@0.28.18(typescript@5.9.3)) @@ -3899,8 +3899,8 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@uniswap/default-token-list@13.47.0': - resolution: {integrity: sha512-1ZxEAmSUejJGggU0F70/7QHqhQNuE7EFtJIccB/Gs4cOBQGIwCfNBfeDXvw+koGPhXeaBpQRmvMpD5wldjWpXw==} + '@uniswap/default-token-list@18.12.0': + resolution: {integrity: sha512-M2D7gGuf9rAqgEE3YmA4+p2kwKDr6dxd0GwQRQMlkFHJBvEQldudVBMX9z9SUP3Z1VigBV2E7I107xFbx9ovlg==} '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} @@ -8574,8 +8574,8 @@ packages: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} - typedoc-github-theme@0.3.1: - resolution: {integrity: sha512-j6PmkAGmf/MGCzYjQcUH6jS9djPsNl/IoTXooxC+MoeMkBhbmPyKJlpR6Lw12BLoe2OYpYA2J1KMktUJXp/8Sw==} + typedoc-github-theme@0.4.0: + resolution: {integrity: sha512-lo/hr4EFZxq0SsMGeAscKUzljIKFgrJf5fb4nOAJcqaiSShQv7kzwF6M1s2fVRvUyx6UsmD4zEb+MtKkbucYpg==} engines: {node: '>=18.0.0'} peerDependencies: typedoc: ~0.28.0 @@ -14242,7 +14242,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@uniswap/default-token-list@13.47.0': {} + '@uniswap/default-token-list@18.12.0': {} '@upsetjs/venn.js@2.0.0': optionalDependencies: @@ -20646,7 +20646,7 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typedoc-github-theme@0.3.1(typedoc@0.28.18(typescript@5.9.3)): + typedoc-github-theme@0.4.0(typedoc@0.28.18(typescript@5.9.3)): dependencies: typedoc: 0.28.18(typescript@5.9.3) From eadb01f7a1641aa2d8d308d0c53e6a42fd45a55b Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 16:11:41 -0300 Subject: [PATCH 030/115] chore: update medium-risk dependencies Update dev tooling and build dependencies to their latest major versions: - @biomejs/biome 1.9.4 -> 2.4.10 (config migrated via biome migrate) - vitest 3.x -> 4.1.2, @vitest/coverage-v8 3.x -> 4.1.2 - jsdom 26.x -> 29.0.1 - @commitlint/cli 19.x -> 20.5.0, config-conventional 19.x -> 20.5.0 - lint-staged 15.x -> 16.4.0 - @vitejs/plugin-react-swc 3.x -> 4.3.0 - vite-tsconfig-paths 5.x -> 6.1.1 - vite-plugin-sitemap 0.7.x -> 0.8.2 - @vercel/analytics 1.x -> 2.0.1 Closes #435 --- biome.json | 8 +- package.json | 22 +- pnpm-lock.yaml | 1451 +++++++---------- src/components/pageComponents/NotFound404.tsx | 2 +- .../home/Examples/Item/index.tsx | 4 +- .../home/Examples/List/index.tsx | 2 +- .../home/Examples/demos/EnsName/index.tsx | 6 +- .../home/Examples/demos/HashHandling/Hash.tsx | 6 +- .../Examples/demos/HashHandling/index.tsx | 12 +- .../OptimismCrossDomainMessenger/index.tsx | 18 +- .../Examples/demos/OptionsDropdown/index.tsx | 2 +- .../home/Examples/demos/SignMessage/index.tsx | 2 +- .../Examples/demos/SwitchNetwork/index.tsx | 8 +- .../Examples/demos/TokenDropdown/index.tsx | 2 +- .../Examples/demos/TokenInput/index.test.tsx | 2 +- .../home/Examples/demos/TokenInput/index.tsx | 18 +- .../ERC20ApproveAndTransferButton.tsx | 8 +- .../MintUSDC.tsx | 4 +- .../ERC20ApproveAndTransferButton/index.tsx | 8 +- .../demos/TransactionButton/NativeToken.tsx | 10 +- .../demos/TransactionButton/index.test.tsx | 2 +- .../demos/TransactionButton/index.tsx | 6 +- .../demos/subgraphs/Subgraph/index.tsx | 14 +- .../demos/subgraphs/SubgraphStatus/index.tsx | 8 +- .../pageComponents/home/Examples/index.tsx | 10 +- .../pageComponents/home/Welcome/index.tsx | 4 +- .../pageComponents/home/index.test.tsx | 2 +- .../sharedComponents/BigNumberInput.tsx | 2 +- .../sharedComponents/ConnectButton/index.tsx | 2 +- .../sharedComponents/ExplorerLink.tsx | 4 +- src/components/sharedComponents/Hash.tsx | 4 +- src/components/sharedComponents/HashInput.tsx | 4 +- .../sharedComponents/NotificationToast.tsx | 2 +- .../sharedComponents/SignButton.tsx | 6 +- .../sharedComponents/SwitchNetwork.test.tsx | 2 +- .../sharedComponents/SwitchNetwork.tsx | 6 +- .../sharedComponents/TokenDropdown.tsx | 6 +- .../TokenInput/Components.tsx | 2 +- .../sharedComponents/TokenInput/index.tsx | 8 +- .../TokenInput/useTokenInput.tsx | 6 +- .../sharedComponents/TokenLogo.test.tsx | 2 +- src/components/sharedComponents/TokenLogo.tsx | 2 +- .../TokenSelect/List/AddERC20TokenButton.tsx | 4 +- .../sharedComponents/TokenSelect/List/Row.tsx | 4 +- .../TokenSelect/List/TokenBalance.tsx | 4 +- .../TokenSelect/List/index.tsx | 4 +- .../TokenSelect/Search/index.tsx | 4 +- .../TokenSelect/TopTokens/Item.tsx | 4 +- .../TokenSelect/TopTokens/index.tsx | 4 +- .../sharedComponents/TokenSelect/index.tsx | 6 +- .../TransactionButton.test.tsx | 2 +- .../sharedComponents/TransactionButton.tsx | 10 +- .../WalletStatusVerifier.test.tsx | 4 +- .../sharedComponents/WalletStatusVerifier.tsx | 4 +- .../dev/TanStackReactQueryDevtools.tsx | 2 +- .../dev/TanStackRouterDevtools.tsx | 2 +- .../sharedComponents/ui/DropdownButton.tsx | 2 +- .../ui/ExternalLink/index.tsx | 2 +- .../ui/Footer/Socials/index.tsx | 4 +- .../sharedComponents/ui/Footer/index.tsx | 6 +- .../sharedComponents/ui/Header/Logo.tsx | 2 +- .../sharedComponents/ui/Header/MainMenu.tsx | 2 +- .../ui/Header/MobileMenu/MobileMenu.tsx | 7 +- .../sharedComponents/ui/Header/index.tsx | 8 +- .../sharedComponents/ui/Modal/index.tsx | 2 +- .../ui/PrimaryButton/index.tsx | 2 +- .../ui/SecondaryButton/index.tsx | 2 +- .../sharedComponents/ui/SwitchChainButton.tsx | 2 +- .../ui/SwitchThemeButton/assets/Dark.tsx | 2 +- .../ui/SwitchThemeButton/assets/Light.tsx | 2 +- .../ui/SwitchThemeButton/index.tsx | 4 +- src/components/ui/toaster.tsx | 2 +- src/constants/contracts/contracts.ts | 9 +- src/hooks/useErc20Balance.test.ts | 2 +- src/hooks/useNetworkBlockNumber.ts | 5 +- src/hooks/useOPL1CrossDomainMessengerProxy.ts | 2 +- src/hooks/useTokenLists.test.ts | 6 +- src/hooks/useTokenLists.ts | 5 +- src/hooks/useTokens.ts | 15 +- src/hooks/useWalletStatus.ts | 2 +- src/hooks/useWeb3Status.test.ts | 4 +- src/lib/wallets/connectkit.config.tsx | 11 +- src/lib/wallets/portoInit.ts | 2 +- src/lib/wallets/web3modal.config.tsx | 8 +- src/main.tsx | 3 +- .../TransactionNotificationProvider.tsx | 14 +- src/providers/Web3Provider.tsx | 5 +- src/routes/__root.tsx | 8 +- src/utils/getExplorerLink.test.ts | 2 +- src/utils/getTransactionOutputs.test.ts | 4 +- src/utils/getTransactionOutputs.ts | 2 +- src/utils/hash.test.ts | 2 +- src/utils/hash.ts | 6 +- src/utils/numberFormat.test.ts | 2 +- src/utils/suspenseWrapper.tsx | 9 +- vite.config.ts | 2 +- vocs.config.ts | 2 +- 97 files changed, 832 insertions(+), 1108 deletions(-) diff --git a/biome.json b/biome.json index da16e165..2a2495da 100644 --- a/biome.json +++ b/biome.json @@ -1,15 +1,13 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "organizeImports": { - "enabled": true - }, + "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json", + "assist": { "actions": { "source": { "organizeImports": "on" } } }, "vcs": { "clientKind": "git", "enabled": true, "useIgnoreFile": true }, "files": { - "ignore": ["src/routeTree.gen.ts", ".install-files/**/*"] + "includes": ["**", "!**/src/routeTree.gen.ts", "!**/.install-files/**/*"] }, "formatter": { "attributePosition": "multiline", diff --git a/package.json b/package.json index 5a16104b..c9b3f901 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@tanstack/react-router": "^1.168.10", "@tanstack/react-virtual": "^3.13.23", "@uniswap/default-token-list": "^18.12.0", - "@vercel/analytics": "^1.5.0", + "@vercel/analytics": "^2.0.1", "@web3icons/core": "^4.0.13", "@web3icons/react": "^4.0.13", "connectkit": "^1.9.2", @@ -56,9 +56,9 @@ "zod": "^3.24.4" }, "devDependencies": { - "@biomejs/biome": "1.9.4", - "@commitlint/cli": "^19.8.1", - "@commitlint/config-conventional": "^19.8.1", + "@biomejs/biome": "2.4.10", + "@commitlint/cli": "^20.5.0", + "@commitlint/config-conventional": "^20.5.0", "@graphql-codegen/cli": "^5.0.6", "@graphql-typed-document-node/core": "^3.2.0", "@parcel/watcher": "^2.5.1", @@ -71,13 +71,13 @@ "@testing-library/user-event": "^14.6.1", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", - "@vitejs/plugin-react-swc": "^3.9.0", - "@vitest/coverage-v8": "^3.1.3", + "@vitejs/plugin-react-swc": "^4.3.0", + "@vitest/coverage-v8": "^4.1.2", "@wagmi/cli": "^2.3.1", "change-case": "^5.4.4", "husky": "^9.1.7", - "jsdom": "^26.1.0", - "lint-staged": "^15.5.2", + "jsdom": "^29.0.1", + "lint-staged": "^16.4.0", "ts-node": "^10.9.2", "typedoc": "^0.28.18", "typedoc-github-theme": "^0.4.0", @@ -86,9 +86,9 @@ "typedoc-plugin-rename-defaults": "^0.7.3", "typescript": "^5.8.3", "vite": "^6.3.5", - "vite-plugin-sitemap": "^0.7.1", - "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.1.3", + "vite-plugin-sitemap": "^0.8.2", + "vite-tsconfig-paths": "^6.1.1", + "vitest": "^4.1.2", "vocs": "1.4.1" }, "packageManager": "pnpm@10.33.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 861dc9f6..0f948e86 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^18.12.0 version: 18.12.0 '@vercel/analytics': - specifier: ^1.5.0 - version: 1.6.1(react@19.2.4) + specifier: ^2.0.1 + version: 2.0.1(react@19.2.4) '@web3icons/core': specifier: ^4.0.13 version: 4.0.51(typescript@5.9.3) @@ -97,14 +97,14 @@ importers: version: 3.25.76 devDependencies: '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + specifier: 2.4.10 + version: 2.4.10 '@commitlint/cli': - specifier: ^19.8.1 - version: 19.8.1(@types/node@25.3.0)(typescript@5.9.3) + specifier: ^20.5.0 + version: 20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@5.9.3) '@commitlint/config-conventional': - specifier: ^19.8.1 - version: 19.8.1 + specifier: ^20.5.0 + version: 20.5.0 '@graphql-codegen/cli': specifier: ^5.0.6 version: 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) @@ -142,11 +142,11 @@ importers: specifier: ^19.1.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react-swc': - specifier: ^3.9.0 - version: 3.11.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^4.3.0 + version: 4.3.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/coverage-v8': - specifier: ^3.1.3 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^4.1.2 + version: 4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))) '@wagmi/cli': specifier: ^2.3.1 version: 2.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) @@ -157,11 +157,11 @@ importers: specifier: ^9.1.7 version: 9.1.7 jsdom: - specifier: ^26.1.0 - version: 26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + specifier: ^29.0.1 + version: 29.0.1(@noble/hashes@1.8.0) lint-staged: - specifier: ^15.5.2 - version: 15.5.2 + specifier: ^16.4.0 + version: 16.4.0 ts-node: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@5.9.3) @@ -187,14 +187,14 @@ importers: specifier: ^6.3.5 version: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-sitemap: - specifier: ^0.7.1 - version: 0.7.1 + specifier: ^0.8.2 + version: 0.8.2 vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^6.1.1 + version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: - specifier: ^3.1.3 - version: 3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: ^4.1.2 + version: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) vocs: specifier: 1.4.1 version: 1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3) @@ -238,10 +238,6 @@ packages: '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -263,8 +259,16 @@ packages: react: '>=18.0.0' react-dom: '>=18.0.0' - '@asamuzakjp/css-color@3.2.0': - resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@asamuzakjp/css-color@5.1.1': + resolution: {integrity: sha512-iGWN8E45Ws0XWx3D44Q1t6vX2LqhCKcwfmwBYCDsFrYFS6m4q/Ks61L2veETaLv+ckDC6+dTETJoaAAb7VjLiw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.0.4': + resolution: {integrity: sha512-jXR6x4AcT3eIrS2fSNAwJpwirOkGcd+E7F7CP3zjdTqz9B/2huHOL8YJZBgekKwLML+u7qB/6P1LXQuMScsx0w==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} @@ -565,59 +569,59 @@ packages: peerDependencies: bs58: ^6.0.0 - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@biomejs/biome@2.4.10': + resolution: {integrity: sha512-xxA3AphFQ1geij4JTHXv4EeSTda1IFn22ye9LdyVPoJU19fNVl0uzfEuhsfQ4Yue/0FaLs2/ccVi4UDiE7R30w==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.4.10': + resolution: {integrity: sha512-vuzzI1cWqDVzOMIkYyHbKqp+AkQq4K7k+UCXWpkYcY/HDn1UxdsbsfgtVpa40shem8Kax4TLDLlx8kMAecgqiw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.4.10': + resolution: {integrity: sha512-14fzASRo+BPotwp7nWULy2W5xeUyFnTaq1V13Etrrxkrih+ez/2QfgFm5Ehtf5vSjtgx/IJycMMpn5kPd5ZNaA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.4.10': + resolution: {integrity: sha512-WrJY6UuiSD/Dh+nwK2qOTu8kdMDlLV3dLMmychIghHPAysWFq1/DGC1pVZx8POE3ZkzKR3PUUnVrtZfMfaJjyQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [musl] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.4.10': + resolution: {integrity: sha512-7MH1CMW5uuxQ/s7FLST63qF8B3Hgu2HRdZ7tA1X1+mk+St4JOuIrqdhIBnnyqeyWJNI+Bww7Es5QZ0wIc1Cmkw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [glibc] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.4.10': + resolution: {integrity: sha512-kDTi3pI6PBN6CiczsWYOyP2zk0IJI08EWEQyDMQWW221rPaaEz6FvjLhnU07KMzLv8q3qSuoB93ua6inSQ55Tw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [musl] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.4.10': + resolution: {integrity: sha512-tZLvEEi2u9Xu1zAqRjTcpIDGVtldigVvzug2fTuPG0ME/g8/mXpRPcNgLB22bGn6FvLJpHHnqLnwliOu8xjYrg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [glibc] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.4.10': + resolution: {integrity: sha512-umwQU6qPzH+ISTf/eHyJ/QoQnJs3V9Vpjz2OjZXe9MVBZ7prgGafMy7yYeRGnlmDAn87AKTF3Q6weLoMGpeqdQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.4.10': + resolution: {integrity: sha512-aW/JU5GuyH4uxMrNYpoC2kjaHlyJGLgIa3XkhPEZI0uKhZhJZU8BuEyJmvgzSPQNGozBwWjC972RaNdcJ9KyJg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -635,6 +639,10 @@ packages: '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + '@chakra-ui/react@3.34.0': resolution: {integrity: sha512-VLhpVwv5IVxhwajO10KnS1VQT4hDqQMQP/A796Ya+uVu8AdoSX+5HHyTLTkYIeXIDMe0xLqJfov04OBKbBchJA==} peerDependencies: @@ -674,106 +682,126 @@ packages: '@coinbase/wallet-sdk@4.3.6': resolution: {integrity: sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA==} - '@commitlint/cli@19.8.1': - resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} + '@commitlint/cli@20.5.0': + resolution: {integrity: sha512-yNkyN/tuKTJS3wdVfsZ2tXDM4G4Gi7z+jW54Cki8N8tZqwKBltbIvUUrSbT4hz1bhW/h0CdR+5sCSpXD+wMKaQ==} engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@19.8.1': - resolution: {integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==} + '@commitlint/config-conventional@20.5.0': + resolution: {integrity: sha512-t3Ni88rFw1XMa4nZHgOKJ8fIAT9M2j5TnKyTqJzsxea7FUetlNdYFus9dz+MhIRZmc16P0PPyEfh6X2d/qw8SA==} engines: {node: '>=v18'} - '@commitlint/config-validator@19.8.1': - resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==} + '@commitlint/config-validator@20.5.0': + resolution: {integrity: sha512-T/Uh6iJUzyx7j35GmHWdIiGRQB+ouZDk0pwAaYq4SXgB54KZhFdJ0vYmxiW6AMYICTIWuyMxDBl1jK74oFp/Gw==} engines: {node: '>=v18'} - '@commitlint/ensure@19.8.1': - resolution: {integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==} + '@commitlint/ensure@20.5.0': + resolution: {integrity: sha512-IpHqAUesBeW1EDDdjzJeaOxU9tnogLAyXLRBn03SHlj1SGENn2JGZqSWGkFvBJkJzfXAuCNtsoYzax+ZPS+puw==} engines: {node: '>=v18'} - '@commitlint/execute-rule@19.8.1': - resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==} + '@commitlint/execute-rule@20.0.0': + resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} engines: {node: '>=v18'} - '@commitlint/format@19.8.1': - resolution: {integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==} + '@commitlint/format@20.5.0': + resolution: {integrity: sha512-TI9EwFU/qZWSK7a5qyXMpKPPv3qta7FO4tKW+Wt2al7sgMbLWTsAcDpX1cU8k16TRdsiiet9aOw0zpvRXNJu7Q==} engines: {node: '>=v18'} - '@commitlint/is-ignored@19.8.1': - resolution: {integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==} + '@commitlint/is-ignored@20.5.0': + resolution: {integrity: sha512-JWLarAsurHJhPozbuAH6GbP4p/hdOCoqS9zJMfqwswne+/GPs5V0+rrsfOkP68Y8PSLphwtFXV0EzJ+GTXTTGg==} engines: {node: '>=v18'} - '@commitlint/lint@19.8.1': - resolution: {integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==} + '@commitlint/lint@20.5.0': + resolution: {integrity: sha512-jiM3hNUdu04jFBf1VgPdjtIPvbuVfDTBAc6L98AWcoLjF5sYqkulBHBzlVWll4rMF1T5zeQFB6r//a+s+BBKlA==} engines: {node: '>=v18'} - '@commitlint/load@19.8.1': - resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} + '@commitlint/load@20.5.0': + resolution: {integrity: sha512-sLhhYTL/KxeOTZjjabKDhwidGZan84XKK1+XFkwDYL/4883kIajcz/dZFAhBJmZPtL8+nBx6bnkzA95YxPeDPw==} engines: {node: '>=v18'} - '@commitlint/message@19.8.1': - resolution: {integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==} + '@commitlint/message@20.4.3': + resolution: {integrity: sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==} engines: {node: '>=v18'} - '@commitlint/parse@19.8.1': - resolution: {integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==} + '@commitlint/parse@20.5.0': + resolution: {integrity: sha512-SeKWHBMk7YOTnnEWUhx+d1a9vHsjjuo6Uo1xRfPNfeY4bdYFasCH1dDpAv13Lyn+dDPOels+jP6D2GRZqzc5fA==} engines: {node: '>=v18'} - '@commitlint/read@19.8.1': - resolution: {integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==} + '@commitlint/read@20.5.0': + resolution: {integrity: sha512-JDEIJ2+GnWpK8QqwfmW7O42h0aycJEWNqcdkJnyzLD11nf9dW2dWLTVEa8Wtlo4IZFGLPATjR5neA5QlOvIH1w==} engines: {node: '>=v18'} - '@commitlint/resolve-extends@19.8.1': - resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==} + '@commitlint/resolve-extends@20.5.0': + resolution: {integrity: sha512-3SHPWUW2v0tyspCTcfSsYml0gses92l6TlogwzvM2cbxDgmhSRc+fldDjvGkCXJrjSM87BBaWYTPWwwyASZRrg==} engines: {node: '>=v18'} - '@commitlint/rules@19.8.1': - resolution: {integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==} + '@commitlint/rules@20.5.0': + resolution: {integrity: sha512-5NdQXQEdnDPT5pK8O39ZA7HohzPRHEsDGU23cyVCNPQy4WegAbAwrQk3nIu7p2sl3dutPk8RZd91yKTrMTnRkQ==} engines: {node: '>=v18'} - '@commitlint/to-lines@19.8.1': - resolution: {integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==} + '@commitlint/to-lines@20.0.0': + resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} engines: {node: '>=v18'} - '@commitlint/top-level@19.8.1': - resolution: {integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==} + '@commitlint/top-level@20.4.3': + resolution: {integrity: sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==} engines: {node: '>=v18'} - '@commitlint/types@19.8.1': - resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} + '@commitlint/types@20.5.0': + resolution: {integrity: sha512-ZJoS8oSq2CAZEpc/YI9SulLrdiIyXeHb/OGqGrkUP6Q7YV+0ouNAa7GjqRdXeQPncHQIDz/jbCTlHScvYvO/gA==} engines: {node: '>=v18'} + '@conventional-changelog/git-client@2.6.0': + resolution: {integrity: sha512-T+uPDciKf0/ioNNDpMGc8FDsehJClZP0yR3Q5MN6wE/Y/1QZ7F+80OgznnTCOlMEG4AV0LvH2UJi3C/nBnaBUg==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.3.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + '@csstools/css-color-parser@4.0.2': + resolution: {integrity: sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + '@csstools/css-syntax-patches-for-csstree@1.1.2': + resolution: {integrity: sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} '@ecies/ciphers@0.2.5': resolution: {integrity: sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A==} @@ -1177,6 +1205,15 @@ packages: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} + '@exodus/bytes@1.15.0': + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} @@ -1541,14 +1578,6 @@ packages: '@internationalized/number@3.6.5': resolution: {integrity: sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1878,10 +1907,6 @@ packages: '@phosphor-icons/webcomponents@2.1.5': resolution: {integrity: sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@protobuf-ts/grpcweb-transport@2.11.1': resolution: {integrity: sha512-1W4utDdvOB+RHMFQ0soL4JdnxjXV+ddeGIUg08DvZrA8Ms6k5NN6GBFU2oHZdTOcJVpPrDJ02RJlqtaoCMNBtw==} @@ -2702,12 +2727,12 @@ packages: '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rolldown/pluginutils@1.0.0-rc.3': resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -2931,6 +2956,14 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@simple-libs/child-process-utils@1.0.2': + resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} + engines: {node: '>=18'} + + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} + engines: {node: '>=18'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3338,6 +3371,9 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@swc/core-darwin-arm64@1.15.13': resolution: {integrity: sha512-ztXusRuC5NV2w+a6pDhX13CGioMLq8CjX5P4XgVJ21ocqz9t19288Do0y8LklplDtwcEhYGTNdMbkmUT7+lDTg==} engines: {node: '>=10'} @@ -3724,9 +3760,6 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/conventional-commits-parser@5.0.2': - resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} - '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -3939,12 +3972,13 @@ packages: peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vercel/analytics@1.6.1': - resolution: {integrity: sha512-oH9He/bEM+6oKlv3chWuOOcp8Y6fo6/PSro8hEkgCW3pu9/OiCXiUpRUogDh3Fs3LH2sosDrx8CxeOLBEE+afg==} + '@vercel/analytics@2.0.1': + resolution: {integrity: sha512-MTQG6V9qQrt1tsDeF+2Uoo5aPjqbVPys1xvnIftXSJYG2SrwXRHnqEvVoYID7BTruDz4lCd2Z7rM1BdkUehk2g==} peerDependencies: '@remix-run/react': ^2 '@sveltejs/kit': ^1 || ^2 next: '>= 13' + nuxt: '>= 3' react: ^18 || ^19 || ^19.0.0-rc svelte: '>= 4' vue: ^3 @@ -3956,6 +3990,8 @@ packages: optional: true next: optional: true + nuxt: + optional: true react: optional: true svelte: @@ -3965,10 +4001,11 @@ packages: vue-router: optional: true - '@vitejs/plugin-react-swc@3.11.0': - resolution: {integrity: sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==} + '@vitejs/plugin-react-swc@4.3.0': + resolution: {integrity: sha512-mOkXCII839dHyAt/gpoSlm28JIVDwhZ6tnG6wJxUy2bmOx7UaPjvOyIDf3SFv5s7Eo7HVaq6kRcu6YMEzt5Z7w==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4 || ^5 || ^6 || ^7 + vite: ^4 || ^5 || ^6 || ^7 || ^8 '@vitejs/plugin-react@5.2.0': resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} @@ -3976,43 +4013,43 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vitest/coverage-v8@3.2.4': - resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + '@vitest/coverage-v8@4.1.2': + resolution: {integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==} peerDependencies: - '@vitest/browser': 3.2.4 - vitest: 3.2.4 + '@vitest/browser': 4.1.2 + vitest: 4.1.2 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.1.2': + resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.1.2': + resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.1.2': + resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.1.2': + resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.1.2': + resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.1.2': + resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.1.2': + resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} '@wagmi/cli@2.10.0': resolution: {integrity: sha512-2tYt6Bp1q26mWexH+XE6dMpPB5/Gp/3OVtE2SeeJ/gNHKLZmVF/TuoZR75mpJKTpofyvpz/fnuMCkUxzbc/kRw==} @@ -4488,10 +4525,6 @@ packages: '@zag-js/utils@1.35.3': resolution: {integrity: sha512-LHcC+9y6TFhDsIz9I3koYxONl2JFfx5yQDzc6ZEQO2cqzXedRcN0R9IPqNGCX7JuhGt14ctDkVCm1JWGP2J6Wg==} - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - abitype@1.0.6: resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} peerDependencies: @@ -4625,8 +4658,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.11: - resolution: {integrity: sha512-Qya9fkoofMjCBNVdWINMjB5KZvkYfaO9/anwkWnjxibpWUxo5iHl2sOdP7/uAqaRuUYuoo8rDwnbaaKVFxoUvw==} + ast-v8-to-istanbul@1.0.0: + resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -4719,6 +4752,9 @@ packages: bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} @@ -4850,8 +4886,8 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@4.1.2: @@ -4889,10 +4925,6 @@ packages: charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - check-error@2.1.3: - resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} - engines: {node: '>= 16'} - chevrotain-allstar@0.3.1: resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} peerDependencies: @@ -4940,9 +4972,9 @@ packages: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} @@ -5044,17 +5076,17 @@ packages: constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} + conventional-changelog-angular@8.3.1: + resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} + engines: {node: '>=18'} - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} + conventional-changelog-conventionalcommits@9.3.1: + resolution: {integrity: sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==} + engines: {node: '>=18'} - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} + engines: {node: '>=18'} hasBin: true convert-source-map@1.9.0: @@ -5103,8 +5135,8 @@ packages: typescript: optional: true - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -5154,6 +5186,10 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -5166,10 +5202,6 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@4.6.0: - resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} - engines: {node: '>=18'} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -5339,17 +5371,13 @@ packages: dagre-d3-es@7.0.14: resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} - dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dataloader@2.2.3: resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} @@ -5418,10 +5446,6 @@ packages: babel-plugin-macros: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-object-diff@1.1.9: resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} @@ -5571,9 +5595,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -5625,6 +5646,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -5754,10 +5778,6 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} @@ -5844,10 +5864,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} - follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -5861,10 +5877,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -5945,16 +5957,12 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-tsconfig@4.13.7: resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} - git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} + git-raw-commits@5.0.1: + resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==} + engines: {node: '>=18'} hasBin: true github-slugger@2.0.0: @@ -5964,11 +5972,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -6144,9 +6147,9 @@ packages: resolution: {integrity: sha512-gJnaDHXKDayjt8ue0n8Gs0A007yKXj4Xzb8+cNjZeYsSzzwKc0Lr+OZgYwVfB0pHfUs17EPoLvrOsEaJ9mj+Tg==} engines: {node: '>=16.9.0'} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -6170,10 +6173,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -6296,10 +6295,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - is-fullwidth-code-point@5.1.0: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} @@ -6357,14 +6352,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -6429,17 +6416,10 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} @@ -6468,16 +6448,13 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsdom@26.1.0: - resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} - engines: {node: '>=18'} + jsdom@29.0.1: + resolution: {integrity: sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -6517,10 +6494,6 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - katex@0.16.44: resolution: {integrity: sha512-EkxoDTk8ufHqHlf9QxGwcxeLkWRR3iOuYfRpfORgYfqc8s13bgb+YtRY59NK5ZpRaCwq1kqA6a5lpX8C/eLphQ==} hasBin: true @@ -6693,19 +6666,15 @@ packages: resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@15.5.2: - resolution: {integrity: sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==} - engines: {node: '>=18.12.0'} + lint-staged@16.4.0: + resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} + engines: {node: '>=20.17'} hasBin: true listr2@4.0.5: @@ -6717,9 +6686,9 @@ packages: enquirer: optional: true - listr2@8.3.3: - resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} - engines: {node: '>=18.0.0'} + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} lit-element@4.2.2: resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} @@ -6742,25 +6711,15 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} @@ -6773,9 +6732,6 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} @@ -6805,9 +6761,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} @@ -6821,6 +6774,10 @@ packages: resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} engines: {node: 20 || >=22} + lru-cache@11.2.7: + resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6834,8 +6791,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -6928,15 +6885,18 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -7107,10 +7067,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -7123,10 +7079,6 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - minimatch@10.2.2: - resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} - engines: {node: 18 || 20 || >=22} - minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -7141,10 +7093,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - minisearch@7.2.0: resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} @@ -7250,10 +7198,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -7281,9 +7225,6 @@ packages: react-router-dom: optional: true - nwsapi@2.2.23: - resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - obj-multiplex@1.0.0: resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} @@ -7291,6 +7232,9 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -7316,10 +7260,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - onetime@7.0.0: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} @@ -7389,10 +7329,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} @@ -7405,10 +7341,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -7417,9 +7349,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} @@ -7444,6 +7373,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -7461,10 +7393,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -7473,10 +7401,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -7488,10 +7412,6 @@ packages: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -7502,10 +7422,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - perfect-freehand@1.2.3: resolution: {integrity: sha512-bHZSfqDHGNlPpgH2yxXgPHlQSPpEbo+qg7li0M78J9vNAi2yjwLeA4x79BEQhX44lEWpCLSFCeRZwpw0niiXPA==} @@ -7524,11 +7440,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -8055,9 +7966,6 @@ packages: rpc-websockets@9.3.3: resolution: {integrity: sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA==} - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -8200,14 +8108,14 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - slice-ansi@7.1.2: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + slow-redact@0.3.2: resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} @@ -8265,8 +8173,8 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} stdin-discarder@0.1.0: resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} @@ -8296,10 +8204,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string-width@6.1.0: resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} engines: {node: '>=16'} @@ -8308,6 +8212,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + engines: {node: '>=20'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -8329,17 +8237,10 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} - style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} @@ -8407,17 +8308,9 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - test-exclude@7.0.2: - resolution: {integrity: sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==} - engines: {node: '>=18'} - text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} @@ -8437,37 +8330,30 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.4: - resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} - tldts-core@6.1.86: - resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + tldts-core@7.0.27: + resolution: {integrity: sha512-YQ7uPjgWUibIK6DW5lrKujGwUKhLevU4hcGbP5O6TcIUb+oTjJYJVWPS4nZsIHrEEEG6myk/oqAJUEQmpZrHsg==} - tldts@6.1.86: - resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + tldts@7.0.27: + resolution: {integrity: sha512-I4FZcVFcqCRuT0ph6dCDpPuO4Xgzvh+spkcTr1gK7peIvxWauoloVO0vuy1FQnijT63ss6AsHB6+OIM4aXHbPg==} hasBin: true to-buffer@1.2.2: @@ -8485,16 +8371,16 @@ packages: toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - tough-cookie@5.1.2: - resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: - resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} - engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -8644,9 +8530,9 @@ packages: undici-types@7.22.0: resolution: {integrity: sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} + undici@7.24.7: + resolution: {integrity: sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ==} + engines: {node: '>=20.18.1'} unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -8908,16 +8794,13 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-plugin-sitemap@0.7.1: - resolution: {integrity: sha512-4NRTkiWytLuAmcikckrLcLl9iYA20+5v6l8XshcOrzxH1WR8H0O3S6sTQYfjMrE8su/LG6Y0cTodvOdcOIxaLw==} + vite-plugin-sitemap@0.8.2: + resolution: {integrity: sha512-bqIw6NVOXg6je81lzX8Lm0vjf8/QSAp8di8fYQzZ3ZdVicOm8+6idBGALJiy1R1FiXNIK8rgORO6HBqXyHW+iQ==} - vite-tsconfig-paths@5.1.4: - resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} + vite-tsconfig-paths@6.1.1: + resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} peerDependencies: vite: '*' - peerDependenciesMeta: - vite: - optional: true vite@6.4.1: resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} @@ -8999,26 +8882,33 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.1.2: + resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.2 + '@vitest/browser-preview': 4.1.2 + '@vitest/browser-webdriverio': 4.1.2 + '@vitest/ui': 4.1.2 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': optional: true '@vitest/ui': optional: true @@ -9086,25 +8976,24 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -9134,10 +9023,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -9365,11 +9250,6 @@ snapshots: '@adraffy/ens-normalize@1.11.1': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 @@ -9485,13 +9365,23 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@asamuzakjp/css-color@3.2.0': + '@asamuzakjp/css-color@5.1.1': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 10.4.3 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.2.7 + + '@asamuzakjp/dom-selector@7.0.4': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.7 + + '@asamuzakjp/nwsapi@2.3.9': {} '@babel/code-frame@7.29.0': dependencies: @@ -9875,39 +9765,39 @@ snapshots: - typescript - use-sync-external-store - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.4.10': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64': 2.4.10 + '@biomejs/cli-darwin-x64': 2.4.10 + '@biomejs/cli-linux-arm64': 2.4.10 + '@biomejs/cli-linux-arm64-musl': 2.4.10 + '@biomejs/cli-linux-x64': 2.4.10 + '@biomejs/cli-linux-x64-musl': 2.4.10 + '@biomejs/cli-win32-arm64': 2.4.10 + '@biomejs/cli-win32-x64': 2.4.10 + + '@biomejs/cli-darwin-arm64@2.4.10': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.4.10': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.4.10': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.4.10': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.4.10': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.4.10': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.4.10': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.4.10': optional: true '@bitcoinerlab/secp256k1@1.2.0': @@ -9940,6 +9830,10 @@ snapshots: '@braintree/sanitize-url@7.1.2': {} + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + '@chakra-ui/react@3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@ark-ui/react': 5.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -10037,139 +9931,155 @@ snapshots: - utf-8-validate - zod - '@commitlint/cli@19.8.1(@types/node@25.3.0)(typescript@5.9.3)': + '@commitlint/cli@20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@5.9.3)': dependencies: - '@commitlint/format': 19.8.1 - '@commitlint/lint': 19.8.1 - '@commitlint/load': 19.8.1(@types/node@25.3.0)(typescript@5.9.3) - '@commitlint/read': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/format': 20.5.0 + '@commitlint/lint': 20.5.0 + '@commitlint/load': 20.5.0(@types/node@25.3.0)(typescript@5.9.3) + '@commitlint/read': 20.5.0(conventional-commits-parser@6.4.0) + '@commitlint/types': 20.5.0 tinyexec: 1.0.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' + - conventional-commits-filter + - conventional-commits-parser - typescript - '@commitlint/config-conventional@19.8.1': + '@commitlint/config-conventional@20.5.0': dependencies: - '@commitlint/types': 19.8.1 - conventional-changelog-conventionalcommits: 7.0.2 + '@commitlint/types': 20.5.0 + conventional-changelog-conventionalcommits: 9.3.1 - '@commitlint/config-validator@19.8.1': + '@commitlint/config-validator@20.5.0': dependencies: - '@commitlint/types': 19.8.1 + '@commitlint/types': 20.5.0 ajv: 8.18.0 - '@commitlint/ensure@19.8.1': + '@commitlint/ensure@20.5.0': dependencies: - '@commitlint/types': 19.8.1 + '@commitlint/types': 20.5.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - '@commitlint/execute-rule@19.8.1': {} + '@commitlint/execute-rule@20.0.0': {} - '@commitlint/format@19.8.1': + '@commitlint/format@20.5.0': dependencies: - '@commitlint/types': 19.8.1 - chalk: 5.6.2 + '@commitlint/types': 20.5.0 + picocolors: 1.1.1 - '@commitlint/is-ignored@19.8.1': + '@commitlint/is-ignored@20.5.0': dependencies: - '@commitlint/types': 19.8.1 + '@commitlint/types': 20.5.0 semver: 7.7.4 - '@commitlint/lint@19.8.1': + '@commitlint/lint@20.5.0': dependencies: - '@commitlint/is-ignored': 19.8.1 - '@commitlint/parse': 19.8.1 - '@commitlint/rules': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/is-ignored': 20.5.0 + '@commitlint/parse': 20.5.0 + '@commitlint/rules': 20.5.0 + '@commitlint/types': 20.5.0 - '@commitlint/load@19.8.1(@types/node@25.3.0)(typescript@5.9.3)': + '@commitlint/load@20.5.0(@types/node@25.3.0)(typescript@5.9.3)': dependencies: - '@commitlint/config-validator': 19.8.1 - '@commitlint/execute-rule': 19.8.1 - '@commitlint/resolve-extends': 19.8.1 - '@commitlint/types': 19.8.1 - chalk: 5.6.2 - cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 + '@commitlint/config-validator': 20.5.0 + '@commitlint/execute-rule': 20.0.0 + '@commitlint/resolve-extends': 20.5.0 + '@commitlint/types': 20.5.0 + cosmiconfig: 9.0.1(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3) + is-plain-obj: 4.1.0 + lodash.mergewith: 4.6.2 + picocolors: 1.1.1 transitivePeerDependencies: - '@types/node' - typescript - '@commitlint/message@19.8.1': {} + '@commitlint/message@20.4.3': {} - '@commitlint/parse@19.8.1': + '@commitlint/parse@20.5.0': dependencies: - '@commitlint/types': 19.8.1 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 + '@commitlint/types': 20.5.0 + conventional-changelog-angular: 8.3.1 + conventional-commits-parser: 6.4.0 - '@commitlint/read@19.8.1': + '@commitlint/read@20.5.0(conventional-commits-parser@6.4.0)': dependencies: - '@commitlint/top-level': 19.8.1 - '@commitlint/types': 19.8.1 - git-raw-commits: 4.0.0 + '@commitlint/top-level': 20.4.3 + '@commitlint/types': 20.5.0 + git-raw-commits: 5.0.1(conventional-commits-parser@6.4.0) minimist: 1.2.8 tinyexec: 1.0.2 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser - '@commitlint/resolve-extends@19.8.1': + '@commitlint/resolve-extends@20.5.0': dependencies: - '@commitlint/config-validator': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/config-validator': 20.5.0 + '@commitlint/types': 20.5.0 global-directory: 4.0.1 import-meta-resolve: 4.2.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - '@commitlint/rules@19.8.1': + '@commitlint/rules@20.5.0': dependencies: - '@commitlint/ensure': 19.8.1 - '@commitlint/message': 19.8.1 - '@commitlint/to-lines': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/ensure': 20.5.0 + '@commitlint/message': 20.4.3 + '@commitlint/to-lines': 20.0.0 + '@commitlint/types': 20.5.0 - '@commitlint/to-lines@19.8.1': {} + '@commitlint/to-lines@20.0.0': {} - '@commitlint/top-level@19.8.1': + '@commitlint/top-level@20.4.3': dependencies: - find-up: 7.0.0 + escalade: 3.2.0 - '@commitlint/types@19.8.1': + '@commitlint/types@20.5.0': dependencies: - '@types/conventional-commits-parser': 5.0.2 - chalk: 5.6.2 + conventional-commits-parser: 6.4.0 + picocolors: 1.1.1 + + '@conventional-changelog/git-client@2.6.0(conventional-commits-parser@6.4.0)': + dependencies: + '@simple-libs/child-process-utils': 1.0.2 + '@simple-libs/stream-utils': 1.2.0 + semver: 7.7.4 + optionalDependencies: + conventional-commits-parser: 6.4.0 '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@5.1.0': {} + '@csstools/color-helpers@6.0.2': {} - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 - '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.0': {} '@ecies/ciphers@0.2.5(@noble/ciphers@1.3.0)': dependencies: @@ -10448,6 +10358,10 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 + '@exodus/bytes@1.15.0(@noble/hashes@1.8.0)': + optionalDependencies: + '@noble/hashes': 1.8.0 + '@fastify/busboy@3.2.0': {} '@floating-ui/core@1.7.5': @@ -11052,17 +10966,6 @@ snapshots: dependencies: '@swc/helpers': 0.5.19 - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@istanbuljs/schema@0.1.3': {} - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -11347,7 +11250,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.4.3(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.4 uuid: 9.0.1 @@ -11361,7 +11264,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.4.3(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.4 uuid: 9.0.1 @@ -11561,9 +11464,6 @@ snapshots: dependencies: lit: 3.3.0 - '@pkgjs/parseargs@0.11.0': - optional: true - '@protobuf-ts/grpcweb-transport@2.11.1': dependencies: '@protobuf-ts/runtime': 2.11.1 @@ -12976,10 +12876,10 @@ snapshots: '@repeaterjs/repeater@3.0.6': {} - '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rolldown/pluginutils@1.0.0-rc.7': {} + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 @@ -13198,6 +13098,12 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@simple-libs/child-process-utils@1.0.2': + dependencies: + '@simple-libs/stream-utils': 1.2.0 + + '@simple-libs/stream-utils@1.2.0': {} + '@socket.io/component-emitter@3.1.2': {} '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': @@ -13691,6 +13597,8 @@ snapshots: '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} + '@swc/core-darwin-arm64@1.15.13': optional: true @@ -14046,10 +13954,6 @@ snapshots: dependencies: '@types/node': 12.20.55 - '@types/conventional-commits-parser@5.0.2': - dependencies: - '@types/node': 25.3.0 - '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -14360,13 +14264,13 @@ snapshots: - tsx - yaml - '@vercel/analytics@1.6.1(react@19.2.4)': + '@vercel/analytics@2.0.1(react@19.2.4)': optionalDependencies: react: 19.2.4 - '@vitejs/plugin-react-swc@3.11.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react-swc@4.3.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.27 + '@rolldown/pluginutils': 1.0.0-rc.7 '@swc/core': 1.15.13(@swc/helpers@0.5.19) vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: @@ -14384,66 +14288,60 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.11 - debug: 4.4.3(supports-color@5.5.0) + '@vitest/utils': 4.1.2 + ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magic-string: 0.30.21 - magicast: 0.3.5 - std-env: 3.10.0 - test-exclude: 7.0.2 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + magicast: 0.5.2 + obug: 2.1.1 + std-env: 4.0.0 + tinyrainbow: 3.1.0 + vitest: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/expect@3.2.4': + '@vitest/expect@4.1.2': dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vitest/mocker@3.2.4(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.2(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.1.2': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.1.0 - '@vitest/runner@3.2.4': + '@vitest/runner@4.1.2': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.1.2 pathe: 2.0.3 - strip-literal: 3.1.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.1.2': dependencies: - '@vitest/pretty-format': 3.2.4 + '@vitest/pretty-format': 4.1.2 + '@vitest/utils': 4.1.2 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.4 + '@vitest/spy@4.1.2': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.1.2': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.1.2 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 '@wagmi/cli@2.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: @@ -15924,11 +15822,6 @@ snapshots: '@zag-js/utils@1.35.3': {} - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - abitype@1.0.6(typescript@5.9.3)(zod@3.25.76): optionalDependencies: typescript: 5.9.3 @@ -16035,7 +15928,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.11: + ast-v8-to-istanbul@1.0.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -16163,6 +16056,10 @@ snapshots: bech32@2.0.0: {} + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + big.js@6.2.2: {} binary-extensions@2.3.0: {} @@ -16315,13 +16212,7 @@ snapshots: ccount@2.0.1: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.3 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.2: {} chalk@4.1.2: dependencies: @@ -16372,8 +16263,6 @@ snapshots: charenc@0.0.2: {} - check-error@2.1.3: {} - chevrotain-allstar@0.3.1(chevrotain@11.1.2): dependencies: chevrotain: 11.1.2 @@ -16431,10 +16320,10 @@ snapshots: slice-ansi: 3.0.0 string-width: 4.2.3 - cli-truncate@4.0.0: + cli-truncate@5.2.0: dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 + slice-ansi: 8.0.0 + string-width: 8.2.0 cli-width@3.0.0: {} @@ -16537,20 +16426,18 @@ snapshots: tslib: 2.8.1 upper-case: 2.0.2 - conventional-changelog-angular@7.0.0: + conventional-changelog-angular@8.3.1: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@7.0.2: + conventional-changelog-conventionalcommits@9.3.1: dependencies: compare-func: 2.0.0 - conventional-commits-parser@5.0.0: + conventional-commits-parser@6.4.0: dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 + '@simple-libs/stream-utils': 1.2.0 + meow: 13.2.0 convert-source-map@1.9.0: {} @@ -16572,10 +16459,10 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3): dependencies: '@types/node': 25.3.0 - cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig: 9.0.1(typescript@5.9.3) jiti: 2.6.1 typescript: 5.9.3 @@ -16596,7 +16483,7 @@ snapshots: optionalDependencies: typescript: 5.9.3 - cosmiconfig@9.0.0(typescript@5.9.3): + cosmiconfig@9.0.1(typescript@5.9.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 @@ -16655,17 +16542,17 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + css-what@6.2.2: {} css.escape@1.5.1: {} cssesc@3.0.0: {} - cssstyle@4.6.0: - dependencies: - '@asamuzakjp/css-color': 3.2.0 - rrweb-cssom: 0.8.0 - csstype@3.2.3: {} cuer@0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): @@ -16860,14 +16747,14 @@ snapshots: d3: 7.9.0 lodash-es: 4.17.23 - dargs@8.1.0: {} - data-uri-to-buffer@4.0.1: {} - data-urls@5.0.0: + data-urls@7.0.0(@noble/hashes@1.8.0): dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@1.8.0) + transitivePeerDependencies: + - '@noble/hashes' dataloader@2.2.3: {} @@ -16911,8 +16798,6 @@ snapshots: optionalDependencies: babel-plugin-macros: 3.1.0 - deep-eql@5.0.2: {} - deep-object-diff@1.1.9: {} deepmerge@4.3.1: {} @@ -17034,8 +16919,6 @@ snapshots: emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - encode-utf8@1.0.3: {} encodeurl@2.0.0: {} @@ -17081,6 +16964,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -17286,18 +17171,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - expect-type@1.3.0: {} extend@3.0.2: {} @@ -17388,23 +17261,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - follow-redirects@1.15.11: {} for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data@4.0.5: dependencies: asynckit: 0.4.0 @@ -17486,17 +17348,17 @@ snapshots: get-stream@6.0.1: {} - get-stream@8.0.1: {} - get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 - git-raw-commits@4.0.0: + git-raw-commits@5.0.1(conventional-commits-parser@6.4.0): dependencies: - dargs: 8.1.0 - meow: 12.1.1 - split2: 4.2.0 + '@conventional-changelog/git-client': 2.6.0(conventional-commits-parser@6.4.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser github-slugger@2.0.0: {} @@ -17504,15 +17366,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.6 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -17810,9 +17663,11 @@ snapshots: hono@4.12.2: {} - html-encoding-sniffer@4.0.0: + html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): dependencies: - whatwg-encoding: 3.1.1 + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) + transitivePeerDependencies: + - '@noble/hashes' html-escaper@2.0.2: {} @@ -17842,8 +17697,6 @@ snapshots: human-signals@2.1.0: {} - human-signals@5.0.0: {} - humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -17957,8 +17810,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.1.0: dependencies: get-east-asian-width: 1.5.0 @@ -18008,12 +17859,6 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.20 @@ -18064,25 +17909,11 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3(supports-color@5.5.0) - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - javascript-stringify@2.1.0: {} jayson@4.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): @@ -18115,38 +17946,35 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - js-yaml@4.1.1: dependencies: argparse: 2.0.1 - jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + jsdom@29.0.1(@noble/hashes@1.8.0): dependencies: - cssstyle: 4.6.0 - data-urls: 5.0.0 + '@asamuzakjp/css-color': 5.1.1 + '@asamuzakjp/dom-selector': 7.0.4 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) + css-tree: 3.2.1 + data-urls: 7.0.0(@noble/hashes@1.8.0) decimal.js: 10.6.0 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 + html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.23 - parse5: 7.3.0 - rrweb-cssom: 0.8.0 + lru-cache: 11.2.7 + parse5: 8.0.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.2 + tough-cookie: 6.0.1 + undici: 7.24.7 w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 - ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@1.8.0) xml-name-validator: 5.0.0 transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + - '@noble/hashes' jsesc@3.1.0: {} @@ -18176,8 +18004,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonparse@1.3.1: {} - katex@0.16.44: dependencies: commander: 8.3.0 @@ -18303,28 +18129,20 @@ snapshots: lightningcss-win32-x64-msvc: 1.31.1 optional: true - lilconfig@3.1.3: {} - lines-and-columns@1.2.4: {} linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 - lint-staged@15.5.2: + lint-staged@16.4.0: dependencies: - chalk: 5.6.2 - commander: 13.1.0 - debug: 4.4.3(supports-color@5.5.0) - execa: 8.0.1 - lilconfig: 3.1.3 - listr2: 8.3.3 - micromatch: 4.0.8 - pidtree: 0.6.0 + commander: 14.0.3 + listr2: 9.0.5 + picomatch: 4.0.3 string-argv: 0.3.2 + tinyexec: 1.0.4 yaml: 2.8.2 - transitivePeerDependencies: - - supports-color listr2@4.0.5: dependencies: @@ -18337,9 +18155,9 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 - listr2@8.3.3: + listr2@9.0.5: dependencies: - cli-truncate: 4.0.0 + cli-truncate: 5.2.0 colorette: 2.0.20 eventemitter3: 5.0.4 log-update: 6.1.0 @@ -18372,20 +18190,12 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - lodash-es@4.17.23: {} lodash.camelcase@4.3.0: {} - lodash.isplainobject@4.0.6: {} - lodash.kebabcase@4.1.1: {} - lodash.merge@4.6.2: {} - lodash.mergewith@4.6.2: {} lodash.snakecase@4.1.1: {} @@ -18394,8 +18204,6 @@ snapshots: lodash.startcase@4.4.0: {} - lodash.uniq@4.5.0: {} - lodash.upperfirst@4.3.1: {} lodash@4.17.23: {} @@ -18431,8 +18239,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.2.1: {} - lower-case-first@2.0.2: dependencies: tslib: 2.8.1 @@ -18445,6 +18251,8 @@ snapshots: lru-cache@11.2.6: {} + lru-cache@11.2.7: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -18457,7 +18265,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: + magicast@0.5.2: dependencies: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 @@ -18684,13 +18492,15 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.27.1: {} + mdurl@2.0.0: {} media-query-parser@2.0.2: dependencies: '@babel/runtime': 7.28.6 - meow@12.1.1: {} + meow@13.2.0: {} merge-stream@2.0.0: {} @@ -19034,18 +18844,12 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} min-indent@1.0.1: {} mini-svg-data-uri@1.4.4: {} - minimatch@10.2.2: - dependencies: - brace-expansion: 5.0.3 - minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 @@ -19060,8 +18864,6 @@ snapshots: minimist@1.2.8: {} - minipass@7.1.3: {} - minisearch@7.2.0: {} mipd@0.0.7(typescript@5.9.3): @@ -19141,10 +18943,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -19159,8 +18957,6 @@ snapshots: '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - nwsapi@2.2.23: {} - obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.5 @@ -19169,6 +18965,8 @@ snapshots: object-assign@4.1.1: {} + obug@2.1.1: {} + ofetch@1.5.1: dependencies: destr: 2.0.5 @@ -19193,10 +18991,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - onetime@7.0.0: dependencies: mimic-function: 5.0.1 @@ -19348,10 +19142,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.2.2 - p-limit@5.0.0: dependencies: yocto-queue: 1.2.2 @@ -19364,18 +19154,12 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - p-map@4.0.0: dependencies: aggregate-error: 3.1.0 p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} - package-manager-detector@1.6.0: {} param-case@3.0.4: @@ -19414,6 +19198,10 @@ snapshots: dependencies: entities: 6.0.1 + parse5@8.0.0: + dependencies: + entities: 6.0.1 + parseurl@1.3.3: {} pascal-case@3.1.2: @@ -19430,14 +19218,10 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-root-regex@0.1.2: {} @@ -19446,19 +19230,12 @@ snapshots: dependencies: path-root-regex: 0.1.2 - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - path-type@4.0.0: {} pathe@1.1.2: {} pathe@2.0.3: {} - pathval@2.0.1: {} - perfect-freehand@1.2.3: {} picocolors@1.1.1: {} @@ -19469,8 +19246,6 @@ snapshots: picomatch@4.0.3: {} - pidtree@0.6.0: {} - pify@3.0.0: {} pify@5.0.0: {} @@ -20125,15 +19900,13 @@ snapshots: '@types/uuid': 8.3.4 '@types/ws': 8.18.1 buffer: 6.0.3 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 uuid: 8.3.2 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.1.0 utf-8-validate: 5.0.10 - rrweb-cssom@0.8.0: {} - run-async@2.4.1: {} run-parallel@1.2.0: @@ -20281,12 +20054,12 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@5.0.0: + slice-ansi@7.1.2: dependencies: ansi-styles: 6.2.3 - is-fullwidth-code-point: 4.0.0 + is-fullwidth-code-point: 5.1.0 - slice-ansi@7.1.2: + slice-ansi@8.0.0: dependencies: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 @@ -20346,7 +20119,7 @@ snapshots: statuses@2.0.2: {} - std-env@3.10.0: {} + std-env@4.0.0: {} stdin-discarder@0.1.0: dependencies: @@ -20372,12 +20145,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.2 - string-width@6.1.0: dependencies: eastasianwidth: 0.2.0 @@ -20390,6 +20157,11 @@ snapshots: get-east-asian-width: 1.5.0 strip-ansi: 7.1.2 + string-width@8.2.0: + dependencies: + get-east-asian-width: 1.5.0 + strip-ansi: 7.1.2 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -20413,16 +20185,10 @@ snapshots: strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - strip-literal@3.1.0: - dependencies: - js-tokens: 9.0.1 - style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 @@ -20496,16 +20262,8 @@ snapshots: tapable@2.3.0: {} - test-exclude@7.0.2: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.5.0 - minimatch: 10.2.2 - text-encoding-utf-8@1.0.2: {} - text-extensions@2.4.0: {} - thread-stream@0.15.2: dependencies: real-require: 0.1.0 @@ -20522,30 +20280,26 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} - tinyexec@1.0.2: {} + tinyexec@1.0.4: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.4: {} + tinyrainbow@3.1.0: {} title-case@3.0.3: dependencies: tslib: 2.8.1 - tldts-core@6.1.86: {} + tldts-core@7.0.27: {} - tldts@6.1.86: + tldts@7.0.27: dependencies: - tldts-core: 6.1.86 + tldts-core: 7.0.27 to-buffer@1.2.2: dependencies: @@ -20561,13 +20315,13 @@ snapshots: toml@3.0.0: {} - tough-cookie@5.1.2: + tough-cookie@6.0.1: dependencies: - tldts: 6.1.86 + tldts: 7.0.27 tr46@0.0.3: {} - tr46@5.1.1: + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -20700,7 +20454,7 @@ snapshots: undici-types@7.22.0: {} - unicorn-magic@0.1.0: {} + undici@7.24.7: {} unified@11.0.5: dependencies: @@ -20991,14 +20745,13 @@ snapshots: - tsx - yaml - vite-plugin-sitemap@0.7.1: {} + vite-plugin-sitemap@0.8.2: {} - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: debug: 4.4.3(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - optionalDependencies: vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -21036,48 +20789,33 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3(supports-color@5.5.0) + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.10.0 + std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 + tinyrainbow: 3.1.0 vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.13 '@types/node': 25.3.0 - jsdom: 26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + jsdom: 29.0.1(@noble/hashes@1.8.0) transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml vocs@1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3): dependencies: @@ -21254,20 +20992,21 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} + webidl-conversions@8.0.1: {} webpack-virtual-modules@0.6.2: {} - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-mimetype@4.0.0: {} - whatwg-url@14.2.0: + whatwg-mimetype@5.0.0: {} + + whatwg-url@16.0.1(@noble/hashes@1.8.0): dependencies: - tr46: 5.1.1 - webidl-conversions: 7.0.0 + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' whatwg-url@5.0.0: dependencies: @@ -21307,12 +21046,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.1.2 - wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 diff --git a/src/components/pageComponents/NotFound404.tsx b/src/components/pageComponents/NotFound404.tsx index 3cbb7fea..7bfbb871 100644 --- a/src/components/pageComponents/NotFound404.tsx +++ b/src/components/pageComponents/NotFound404.tsx @@ -1,6 +1,6 @@ +import { useNavigate } from '@tanstack/react-router' import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { useNavigate } from '@tanstack/react-router' const Icon = () => ( <svg diff --git a/src/components/pageComponents/home/Examples/Item/index.tsx b/src/components/pageComponents/home/Examples/Item/index.tsx index 1e2900db..1f3c0ad8 100644 --- a/src/components/pageComponents/home/Examples/Item/index.tsx +++ b/src/components/pageComponents/home/Examples/Item/index.tsx @@ -1,8 +1,8 @@ +import { Dialog, Flex, type FlexProps, Heading, Portal, Text } from '@chakra-ui/react' +import { type FC, type ReactNode, useState } from 'react' import DemoButton from '@/src/components/pageComponents/home/Examples/Item/buttons/DemoButton' import DocumentationButton from '@/src/components/pageComponents/home/Examples/Item/buttons/DocumentationButton' import Modal from '@/src/components/sharedComponents/ui/Modal' -import { Dialog, Flex, type FlexProps, Heading, Portal, Text } from '@chakra-ui/react' -import { type FC, type ReactNode, useState } from 'react' import styles from './styles' export interface Props extends FlexProps { diff --git a/src/components/pageComponents/home/Examples/List/index.tsx b/src/components/pageComponents/home/Examples/List/index.tsx index ef7e9baf..2d45bd72 100644 --- a/src/components/pageComponents/home/Examples/List/index.tsx +++ b/src/components/pageComponents/home/Examples/List/index.tsx @@ -1,6 +1,6 @@ -import Item, { type Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' import { Grid, type GridProps } from '@chakra-ui/react' import type { FC } from 'react' +import Item, { type Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' interface Props extends GridProps { items: ItemProps[] diff --git a/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx b/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx index c8b6f952..69cf3741 100644 --- a/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx @@ -1,12 +1,12 @@ -import Icon from '@/src/components/pageComponents/home/Examples/demos/EnsName/Icon' -import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' -import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { Flex, Heading, Input } from '@chakra-ui/react' import { type ChangeEvent, useEffect, useState } from 'react' import { useDebouncedCallback } from 'use-debounce' import type { Address } from 'viem' import { useEnsName } from 'wagmi' import { mainnet } from 'wagmi/chains' +import Icon from '@/src/components/pageComponents/home/Examples/demos/EnsName/Icon' +import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' +import Spinner from '@/src/components/sharedComponents/ui/Spinner' const EnsNameSearch = ({ address }: { address?: Address }) => { const { data, error, status } = useEnsName({ diff --git a/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx b/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx index 11d841fe..377300a9 100644 --- a/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx +++ b/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx @@ -1,9 +1,9 @@ -import BaseHash from '@/src/components/sharedComponents/Hash' -import { toaster } from '@/src/components/ui/toaster' -import { getExplorerLink } from '@/src/utils/getExplorerLink' import type { FlexProps } from '@chakra-ui/react' import type { FC } from 'react' import type { Address, Chain } from 'viem' +import BaseHash from '@/src/components/sharedComponents/Hash' +import { toaster } from '@/src/components/ui/toaster' +import { getExplorerLink } from '@/src/utils/getExplorerLink' interface Props extends FlexProps { chain: Chain diff --git a/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx b/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx index 2b538551..844da2d9 100644 --- a/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx @@ -1,16 +1,14 @@ +import { Box, chakra, Flex, Input } from '@chakra-ui/react' +import { useState } from 'react' +import type { Address } from 'viem' +import * as chains from 'viem/chains' import Hash from '@/src/components/pageComponents/home/Examples/demos/HashHandling/Hash' -import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' - import Icon from '@/src/components/pageComponents/home/Examples/demos/HashHandling/Icon' +import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import HashInput from '@/src/components/sharedComponents/HashInput' - import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { DetectedHash } from '@/src/utils/hash' -import { Box, Flex, Input, chakra } from '@chakra-ui/react' -import { useState } from 'react' -import type { Address } from 'viem' -import * as chains from 'viem/chains' const AlertIcon = () => ( <chakra.svg diff --git a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx index 8a92f454..69ef71fc 100644 --- a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx @@ -1,19 +1,21 @@ +import { Flex, Span } from '@chakra-ui/react' +import { useState } from 'react' +import type { Address } from 'viem' +import { parseEther } from 'viem' +import { optimismSepolia, sepolia } from 'viem/chains' +import { extractTransactionDepositedLogs, getL2TransactionHash } from 'viem/op-stack' import Icon from '@/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/Icon' import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import Hash from '@/src/components/sharedComponents/Hash' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' -import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { + useWeb3StatusConnected, + WalletStatusVerifier, +} from '@/src/components/sharedComponents/WalletStatusVerifier' import { getContract } from '@/src/constants/contracts/contracts' import { useL1CrossDomainMessengerProxy } from '@/src/hooks/useOPL1CrossDomainMessengerProxy' import { getExplorerLink } from '@/src/utils/getExplorerLink' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { Flex, Span } from '@chakra-ui/react' -import { useState } from 'react' -import type { Address } from 'viem' -import { parseEther } from 'viem' -import { optimismSepolia, sepolia } from 'viem/chains' -import { extractTransactionDepositedLogs, getL2TransactionHash } from 'viem/op-stack' const OptimismCrossDomainMessenger = withSuspenseAndRetry(() => { // https://sepolia-optimism.etherscan.io/address/0xb50201558b00496a145fe76f7424749556e326d8 diff --git a/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx b/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx index 7fdbacd2..c6d31084 100644 --- a/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx @@ -1,4 +1,4 @@ -import { Box, type BoxProps, Menu, chakra } from '@chakra-ui/react' +import { Box, type BoxProps, chakra, Menu } from '@chakra-ui/react' import { type FC, useState } from 'react' import { buttonStyles, dropdownStyles } from './styles' diff --git a/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx b/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx index 0dd780f2..b3bbff9b 100644 --- a/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx @@ -1,8 +1,8 @@ import Icon from '@/src/components/pageComponents/home/Examples/demos/SignMessage/Icon' import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import SignButton from '@/src/components/sharedComponents/SignButton' -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' const message = ` 👻🚀 Welcome to dAppBooster! 🚀👻 diff --git a/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx b/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx index 5bc08029..8764854f 100644 --- a/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx @@ -1,7 +1,3 @@ -import Icon from '@/src/components/pageComponents/home/Examples/demos/SwitchNetwork/Icon' -import BaseSwitchNetwork, { type Networks } from '@/src/components/sharedComponents/SwitchNetwork' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { ConnectWalletButton } from '@/src/providers/Web3Provider' import { NetworkArbitrumOne, NetworkEthereum, @@ -9,6 +5,10 @@ import { NetworkPolygon, } from '@web3icons/react' import { arbitrum, mainnet, optimism, polygon } from 'viem/chains' +import Icon from '@/src/components/pageComponents/home/Examples/demos/SwitchNetwork/Icon' +import BaseSwitchNetwork, { type Networks } from '@/src/components/sharedComponents/SwitchNetwork' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { ConnectWalletButton } from '@/src/providers/Web3Provider' const SwitchNetwork = () => { const { isWalletConnected } = useWeb3Status() diff --git a/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx b/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx index 6d4fcfea..98da81c7 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx @@ -1,8 +1,8 @@ +import { type FC, useState } from 'react' import Icon from '@/src/components/pageComponents/home/Examples/demos/TokenDropdown/Icon' import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import BaseTokenDropdown from '@/src/components/sharedComponents/TokenDropdown' import type { Token } from '@/src/types/token' -import { type FC, useState } from 'react' const TokenDropdown: FC = ({ ...restProps }) => { const [currentToken, setCurrentToken] = useState<Token>() diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx index 9e86b8b7..eb6848cf 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx @@ -1,7 +1,7 @@ -import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { screen } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' +import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import tokenInput from './index' vi.mock('@/src/hooks/useWeb3Status', () => ({ diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx index c4544c5e..38a3eba9 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx @@ -1,12 +1,3 @@ -import OptionsDropdown from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' -import Icon from '@/src/components/pageComponents/home/Examples/demos/TokenInput/Icon' -import BaseTokenInput from '@/src/components/sharedComponents/TokenInput' -import { useTokenInput } from '@/src/components/sharedComponents/TokenInput/useTokenInput' -import type { Networks } from '@/src/components/sharedComponents/TokenSelect/types' -import { useTokenLists } from '@/src/hooks/useTokenLists' -import { useTokenSearch } from '@/src/hooks/useTokenSearch' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' import { Box, Flex, Skeleton } from '@chakra-ui/react' import { NetworkArbitrumOne, @@ -16,6 +7,15 @@ import { } from '@web3icons/react' import { useState } from 'react' import { arbitrum, mainnet, optimism, polygon } from 'viem/chains' +import OptionsDropdown from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' +import Icon from '@/src/components/pageComponents/home/Examples/demos/TokenInput/Icon' +import BaseTokenInput from '@/src/components/sharedComponents/TokenInput' +import { useTokenInput } from '@/src/components/sharedComponents/TokenInput/useTokenInput' +import type { Networks } from '@/src/components/sharedComponents/TokenSelect/types' +import { useTokenLists } from '@/src/hooks/useTokenLists' +import { useTokenSearch } from '@/src/hooks/useTokenSearch' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' type Options = 'single' | 'multi' diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx index 9cb5fdcb..973ce924 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx @@ -1,3 +1,7 @@ +import type { FC } from 'react' +import { type Address, erc20Abi, type Hash, type TransactionReceipt } from 'viem' +import * as chains from 'viem/chains' +import { useWriteContract } from 'wagmi' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' @@ -5,10 +9,6 @@ import { useSuspenseReadErc20Allowance } from '@/src/hooks/generated' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import { getExplorerLink } from '@/src/utils/getExplorerLink' -import type { FC } from 'react' -import { type Address, type Hash, type TransactionReceipt, erc20Abi } from 'viem' -import * as chains from 'viem/chains' -import { useWriteContract } from 'wagmi' interface Props { amount: bigint diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx index c17124e2..10c1e59f 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx @@ -1,9 +1,9 @@ +import { sepolia } from 'viem/chains' +import { useWriteContract } from 'wagmi' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { AaveFaucetABI } from '@/src/constants/contracts/abis/AaveFaucet' import { getContract } from '@/src/constants/contracts/contracts' -import { sepolia } from 'viem/chains' -import { useWriteContract } from 'wagmi' export default function MintUSDC({ onSuccess }: { onSuccess: () => void }) { const { address } = useWeb3StatusConnected() diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx index dad63df9..5aabb626 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx @@ -1,14 +1,14 @@ +import { type Address, formatUnits } from 'viem' +import { sepolia } from 'viem/chains' +import { useWriteContract } from 'wagmi' import BaseERC20ApproveAndTransferButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton' import MintUSDC from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { useSuspenseReadErc20BalanceOf } from '@/src/hooks/generated' import type { Token } from '@/src/types/token' -import { NumberType, formatNumberOrString } from '@/src/utils/numberFormat' +import { formatNumberOrString, NumberType } from '@/src/utils/numberFormat' import { withSuspense } from '@/src/utils/suspenseWrapper' -import { type Address, formatUnits } from 'viem' -import { sepolia } from 'viem/chains' -import { useWriteContract } from 'wagmi' // USDC token on Sepolia chain const tokenUSDC_sepolia: Token = { diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx index 99505f53..890f4225 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx @@ -1,12 +1,12 @@ +import { Dialog } from '@chakra-ui/react' +import { type ReactElement, useState } from 'react' +import { type Hash, parseEther, type TransactionReceipt } from 'viem' +import { useSendTransaction } from 'wagmi' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' -import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { Dialog } from '@chakra-ui/react' -import { type ReactElement, useState } from 'react' -import { type Hash, type TransactionReceipt, parseEther } from 'viem' -import { useSendTransaction } from 'wagmi' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' /** * This demo shows how to send a native token transaction. diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx index 1d7d3be8..fd29ee05 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx @@ -1,6 +1,6 @@ -import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import { screen } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' +import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import transactionButton from './index' vi.mock('@/src/hooks/useWeb3Status', () => ({ diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx index a77c0dc4..c3f89571 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx @@ -1,11 +1,11 @@ +import { Flex } from '@chakra-ui/react' +import { useState } from 'react' +import { sepolia } from 'wagmi/chains' import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' import ERC20ApproveAndTransferButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton' import Icon from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Icon' import NativeToken from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken' import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' -import { Flex } from '@chakra-ui/react' -import { useState } from 'react' -import { sepolia } from 'wagmi/chains' type Options = 'erc20' | 'native' diff --git a/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx b/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx index b1a16931..ada82963 100644 --- a/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx @@ -1,3 +1,10 @@ +import { generateSchemasMapping } from '@bootnodedev/db-subgraph' +import { Box, Flex, Skeleton } from '@chakra-ui/react' +import { useSuspenseQuery } from '@tanstack/react-query' +import { NetworkArbitrumOne, NetworkBase, NetworkOptimism, NetworkPolygon } from '@web3icons/react' +import request from 'graphql-request' +import { useState } from 'react' +import { arbitrum, base, type Chain, optimism, polygon } from 'viem/chains' import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' import { Row, @@ -15,13 +22,6 @@ import { env } from '@/src/env' import { allAaveReservesQueryDocument } from '@/src/subgraphs/queries/aave/reserves' import { allUniswapPoolsQueryDocument } from '@/src/subgraphs/queries/uniswap/pools' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { generateSchemasMapping } from '@bootnodedev/db-subgraph' -import { Box, Flex, Skeleton } from '@chakra-ui/react' -import { useSuspenseQuery } from '@tanstack/react-query' -import { NetworkArbitrumOne, NetworkBase, NetworkOptimism, NetworkPolygon } from '@web3icons/react' -import request from 'graphql-request' -import { useState } from 'react' -import { type Chain, arbitrum, base, optimism, polygon } from 'viem/chains' const chainNameMapping: { [key: number]: string } = { [arbitrum.id]: 'arbitrum', diff --git a/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx b/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx index 1b8cba4b..e61b3766 100644 --- a/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx @@ -1,3 +1,7 @@ +import { type SchemaMappingConfig, useSubgraphIndexingStatus } from '@bootnodedev/db-subgraph' +import { Box, Flex, Skeleton, Span, Text } from '@chakra-ui/react' +import { type FC, useState } from 'react' +import { arbitrum, base, type Chain, optimism, polygon } from 'viem/chains' import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' import { getNetworkIcon } from '@/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph' import { @@ -11,10 +15,6 @@ import Icon from '@/src/components/pageComponents/home/Examples/demos/subgraphs/ import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { env } from '@/src/env' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { type SchemaMappingConfig, useSubgraphIndexingStatus } from '@bootnodedev/db-subgraph' -import { Box, Flex, Skeleton, Span, Text } from '@chakra-ui/react' -import { type FC, useState } from 'react' -import { type Chain, arbitrum, base, optimism, polygon } from 'viem/chains' export const SkeletonLoadingItem = () => ( <Flex diff --git a/src/components/pageComponents/home/Examples/index.tsx b/src/components/pageComponents/home/Examples/index.tsx index 7746646c..926fc1a3 100644 --- a/src/components/pageComponents/home/Examples/index.tsx +++ b/src/components/pageComponents/home/Examples/index.tsx @@ -1,18 +1,18 @@ -import type { Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' -import List from '@/src/components/pageComponents/home/Examples/List' +import { Box, type BoxProps, chakra, Flex, Heading, Text } from '@chakra-ui/react' +import type { FC } from 'react' import connectWallet from '@/src/components/pageComponents/home/Examples/demos/ConnectWallet' import ensName from '@/src/components/pageComponents/home/Examples/demos/EnsName' import hashHandling from '@/src/components/pageComponents/home/Examples/demos/HashHandling' import optimismCrossDomainMessenger from '@/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger' import signMessage from '@/src/components/pageComponents/home/Examples/demos/SignMessage' import switchNetwork from '@/src/components/pageComponents/home/Examples/demos/SwitchNetwork' +import subgraphs from '@/src/components/pageComponents/home/Examples/demos/subgraphs' import tokenDropdown from '@/src/components/pageComponents/home/Examples/demos/TokenDropdown' import tokenInput from '@/src/components/pageComponents/home/Examples/demos/TokenInput' import transactionButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton' -import subgraphs from '@/src/components/pageComponents/home/Examples/demos/subgraphs' +import type { Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' +import List from '@/src/components/pageComponents/home/Examples/List' import { Inner } from '@/src/components/sharedComponents/ui/Inner' -import { Box, type BoxProps, Flex, Heading, Text, chakra } from '@chakra-ui/react' -import type { FC } from 'react' import styles from './styles' const Examples: FC<BoxProps> = ({ css, ...restProps }) => { diff --git a/src/components/pageComponents/home/Welcome/index.tsx b/src/components/pageComponents/home/Welcome/index.tsx index e1b1ca25..dcb1c64c 100644 --- a/src/components/pageComponents/home/Welcome/index.tsx +++ b/src/components/pageComponents/home/Welcome/index.tsx @@ -1,6 +1,6 @@ -import { Inner } from '@/src/components/sharedComponents/ui/Inner' -import { type FlexProps, Heading, Link, Span, Text, chakra } from '@chakra-ui/react' +import { chakra, type FlexProps, Heading, Link, Span, Text } from '@chakra-ui/react' import type { FC } from 'react' +import { Inner } from '@/src/components/sharedComponents/ui/Inner' import styles from './styles' const Arrow = () => ( diff --git a/src/components/pageComponents/home/index.test.tsx b/src/components/pageComponents/home/index.test.tsx index d498d8a1..529bfe7b 100644 --- a/src/components/pageComponents/home/index.test.tsx +++ b/src/components/pageComponents/home/index.test.tsx @@ -1,6 +1,6 @@ -import { renderWithProviders } from '@/src/test-utils' import { screen } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' +import { renderWithProviders } from '@/src/test-utils' import { Home } from './index' // Mock sub-components that pull in Web3 dependencies to keep this a pure structural test diff --git a/src/components/sharedComponents/BigNumberInput.tsx b/src/components/sharedComponents/BigNumberInput.tsx index b9cce87b..e72a49f6 100644 --- a/src/components/sharedComponents/BigNumberInput.tsx +++ b/src/components/sharedComponents/BigNumberInput.tsx @@ -1,4 +1,4 @@ -import { type InputProps, chakra } from '@chakra-ui/react' +import { chakra, type InputProps } from '@chakra-ui/react' import { type ChangeEvent, type FC, diff --git a/src/components/sharedComponents/ConnectButton/index.tsx b/src/components/sharedComponents/ConnectButton/index.tsx index ee20c3cc..b5efd19b 100644 --- a/src/components/sharedComponents/ConnectButton/index.tsx +++ b/src/components/sharedComponents/ConnectButton/index.tsx @@ -1,6 +1,6 @@ -import { Button } from '@/src/components/sharedComponents/ui/Button' import { type ButtonProps, chakra } from '@chakra-ui/react' import type { FC } from 'react' +import { Button } from '@/src/components/sharedComponents/ui/Button' import styles from './styles' const BaseChevronDown = ({ ...restProps }) => ( diff --git a/src/components/sharedComponents/ExplorerLink.tsx b/src/components/sharedComponents/ExplorerLink.tsx index a8a05646..f342e87d 100644 --- a/src/components/sharedComponents/ExplorerLink.tsx +++ b/src/components/sharedComponents/ExplorerLink.tsx @@ -1,6 +1,6 @@ -import { type GetExplorerUrlParams, getExplorerLink } from '@/src/utils/getExplorerLink' -import { type LinkProps, chakra } from '@chakra-ui/react' +import { chakra, type LinkProps } from '@chakra-ui/react' import type { FC } from 'react' +import { type GetExplorerUrlParams, getExplorerLink } from '@/src/utils/getExplorerLink' interface ExplorerLinkProps extends GetExplorerUrlParams, LinkProps { text?: string diff --git a/src/components/sharedComponents/Hash.tsx b/src/components/sharedComponents/Hash.tsx index f44594df..6d091534 100644 --- a/src/components/sharedComponents/Hash.tsx +++ b/src/components/sharedComponents/Hash.tsx @@ -1,8 +1,8 @@ +import { Flex, type FlexProps, Span } from '@chakra-ui/react' +import type { FC, MouseEventHandler } from 'react' import CopyButton from '@/src/components/sharedComponents/ui/CopyButton' import ExternalLink from '@/src/components/sharedComponents/ui/ExternalLink' import { getTruncatedHash } from '@/src/utils/strings' -import { Flex, type FlexProps, Span } from '@chakra-ui/react' -import type { FC, MouseEventHandler } from 'react' interface HashProps extends Omit<FlexProps, 'onCopy'> { explorerURL?: string diff --git a/src/components/sharedComponents/HashInput.tsx b/src/components/sharedComponents/HashInput.tsx index a4addc93..b90c4406 100644 --- a/src/components/sharedComponents/HashInput.tsx +++ b/src/components/sharedComponents/HashInput.tsx @@ -1,5 +1,4 @@ -import detectHash, { type DetectedHash } from '@/src/utils/hash' -import { type InputProps, chakra } from '@chakra-ui/react' +import { chakra, type InputProps } from '@chakra-ui/react' import { type ChangeEvent, type FC, @@ -10,6 +9,7 @@ import { } from 'react' import { useDebouncedCallback } from 'use-debounce' import type { Chain } from 'viem' +import detectHash, { type DetectedHash } from '@/src/utils/hash' interface HashInputProps extends InputProps { chain: Chain diff --git a/src/components/sharedComponents/NotificationToast.tsx b/src/components/sharedComponents/NotificationToast.tsx index 3da3e540..1d5595aa 100644 --- a/src/components/sharedComponents/NotificationToast.tsx +++ b/src/components/sharedComponents/NotificationToast.tsx @@ -1,8 +1,8 @@ 'use client' +import { Toaster as ChakraToaster, createToaster, Portal, Stack, Toast } from '@chakra-ui/react' import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { Toaster as ChakraToaster, Portal, Stack, Toast, createToaster } from '@chakra-ui/react' export const notificationToaster = createToaster({ placement: 'bottom-end', diff --git a/src/components/sharedComponents/SignButton.tsx b/src/components/sharedComponents/SignButton.tsx index 84b09906..da5d6f2c 100644 --- a/src/components/sharedComponents/SignButton.tsx +++ b/src/components/sharedComponents/SignButton.tsx @@ -1,11 +1,11 @@ +import { type ButtonProps, chakra } from '@chakra-ui/react' +import type { FC, ReactElement } from 'react' +import { useSignMessage } from 'wagmi' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' import type { ChainsIds } from '@/src/lib/networks.config' import { useTransactionNotification } from '@/src/providers/TransactionNotificationProvider' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import { type ButtonProps, chakra } from '@chakra-ui/react' -import type { FC, ReactElement } from 'react' -import { useSignMessage } from 'wagmi' interface SignButtonProps extends Omit<ButtonProps, 'onError'> { /** Target chain ID for wallet status verification. */ diff --git a/src/components/sharedComponents/SwitchNetwork.test.tsx b/src/components/sharedComponents/SwitchNetwork.test.tsx index edbe1408..9cfad6a4 100644 --- a/src/components/sharedComponents/SwitchNetwork.test.tsx +++ b/src/components/sharedComponents/SwitchNetwork.test.tsx @@ -13,8 +13,8 @@ vi.mock('wagmi', () => ({ useSwitchChain: vi.fn(), })) -import * as useWeb3StatusModule from '@/src/hooks/useWeb3Status' import * as wagmiModule from 'wagmi' +import * as useWeb3StatusModule from '@/src/hooks/useWeb3Status' const mockNetworks: Networks = [ { id: 1, label: 'Ethereum', icon: <span>ETH</span> }, diff --git a/src/components/sharedComponents/SwitchNetwork.tsx b/src/components/sharedComponents/SwitchNetwork.tsx index d3308dcf..7e1ac77e 100644 --- a/src/components/sharedComponents/SwitchNetwork.tsx +++ b/src/components/sharedComponents/SwitchNetwork.tsx @@ -1,6 +1,3 @@ -import DropdownButton from '@/src/components/sharedComponents/ui/DropdownButton' -import { MenuContent, MenuItem } from '@/src/components/sharedComponents/ui/Menu' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { Box, Flex, Menu } from '@chakra-ui/react' import { type ComponentPropsWithoutRef, @@ -11,6 +8,9 @@ import { } from 'react' import * as chains from 'viem/chains' import { useSwitchChain } from 'wagmi' +import DropdownButton from '@/src/components/sharedComponents/ui/DropdownButton' +import { MenuContent, MenuItem } from '@/src/components/sharedComponents/ui/Menu' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' type NetworkItem = { icon: ReactElement diff --git a/src/components/sharedComponents/TokenDropdown.tsx b/src/components/sharedComponents/TokenDropdown.tsx index c81fbfb0..5e68f989 100644 --- a/src/components/sharedComponents/TokenDropdown.tsx +++ b/src/components/sharedComponents/TokenDropdown.tsx @@ -1,11 +1,11 @@ +import { Flex, Menu } from '@chakra-ui/react' +import type { ComponentPropsWithoutRef, FC } from 'react' +import { useState } from 'react' import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import TokenSelect, { type TokenSelectProps } from '@/src/components/sharedComponents/TokenSelect' import DropdownButton from '@/src/components/sharedComponents/ui/DropdownButton' import { MenuContent } from '@/src/components/sharedComponents/ui/Menu' import type { Token } from '@/src/types/token' -import { Flex, Menu } from '@chakra-ui/react' -import type { ComponentPropsWithoutRef, FC } from 'react' -import { useState } from 'react' export interface TokenDropdownProps extends TokenSelectProps { currentToken?: Token | undefined diff --git a/src/components/sharedComponents/TokenInput/Components.tsx b/src/components/sharedComponents/TokenInput/Components.tsx index a5a6c059..51be2218 100644 --- a/src/components/sharedComponents/TokenInput/Components.tsx +++ b/src/components/sharedComponents/TokenInput/Components.tsx @@ -1,5 +1,6 @@ import { type ButtonProps, + chakra, Flex, type FlexProps, Heading, @@ -8,7 +9,6 @@ import { type InputProps, Span, type SpanProps, - chakra, } from '@chakra-ui/react' import type { FC } from 'react' diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index d558d39b..85d8a409 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -1,3 +1,7 @@ +import { Dialog, type FlexProps, Portal } from '@chakra-ui/react' +import { type FC, useMemo, useState } from 'react' +import { type NumberFormatValues, NumericFormat } from 'react-number-format' +import { formatUnits } from 'viem' import { BigNumberInput, type BigNumberInputProps, @@ -24,10 +28,6 @@ import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import TokenSelect, { type TokenSelectProps } from '@/src/components/sharedComponents/TokenSelect' import Spinner from '@/src/components/sharedComponents/ui/Spinner' import type { Token } from '@/src/types/token' -import { Dialog, type FlexProps, Portal } from '@chakra-ui/react' -import { type FC, useMemo, useState } from 'react' -import { type NumberFormatValues, NumericFormat } from 'react-number-format' -import { formatUnits } from 'viem' import styles from './styles' interface TokenInputProps extends Omit<TokenSelectProps, 'onTokenSelect'> { diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index 12b94dd2..7bc881a2 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -1,10 +1,10 @@ -import { useErc20Balance } from '@/src/hooks/useErc20Balance' -import type { Token } from '@/src/types/token' -import { isNativeToken } from '@/src/utils/address' import { useQuery } from '@tanstack/react-query' import { useEffect, useState } from 'react' import { getAddress } from 'viem' import { useAccount, usePublicClient } from 'wagmi' +import { useErc20Balance } from '@/src/hooks/useErc20Balance' +import type { Token } from '@/src/types/token' +import { isNativeToken } from '@/src/utils/address' export type UseTokenInputReturnType = ReturnType<typeof useTokenInput> diff --git a/src/components/sharedComponents/TokenLogo.test.tsx b/src/components/sharedComponents/TokenLogo.test.tsx index b71166ed..b8d4aa93 100644 --- a/src/components/sharedComponents/TokenLogo.test.tsx +++ b/src/components/sharedComponents/TokenLogo.test.tsx @@ -1,7 +1,7 @@ -import type { Token } from '@/src/types/token' import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { fireEvent, render, screen } from '@testing-library/react' import { describe, expect, it } from 'vitest' +import type { Token } from '@/src/types/token' import TokenLogo from './TokenLogo' const system = createSystem(defaultConfig) diff --git a/src/components/sharedComponents/TokenLogo.tsx b/src/components/sharedComponents/TokenLogo.tsx index 87627cdf..de2f6041 100644 --- a/src/components/sharedComponents/TokenLogo.tsx +++ b/src/components/sharedComponents/TokenLogo.tsx @@ -1,6 +1,6 @@ -import type { Token } from '@/src/types/token' import { Flex } from '@chakra-ui/react' import { type ComponentProps, type FC, useCallback, useEffect, useState } from 'react' +import type { Token } from '@/src/types/token' interface PlaceholderProps extends ComponentProps<'div'> { size: number diff --git a/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx b/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx index 836a2975..f1501a15 100644 --- a/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx +++ b/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx @@ -1,8 +1,8 @@ +import { chakra } from '@chakra-ui/react' +import type { ComponentPropsWithoutRef, FC, MouseEventHandler } from 'react' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import { isNativeToken } from '@/src/utils/address' -import { chakra } from '@chakra-ui/react' -import type { ComponentPropsWithoutRef, FC, MouseEventHandler } from 'react' interface AddERC20TokenButtonProps extends ComponentPropsWithoutRef<'button'> { $token: Token diff --git a/src/components/sharedComponents/TokenSelect/List/Row.tsx b/src/components/sharedComponents/TokenSelect/List/Row.tsx index 88b6a2a9..5e981137 100644 --- a/src/components/sharedComponents/TokenSelect/List/Row.tsx +++ b/src/components/sharedComponents/TokenSelect/List/Row.tsx @@ -1,9 +1,9 @@ +import { Box, Flex, type FlexProps, Skeleton } from '@chakra-ui/react' +import type { FC } from 'react' import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import AddERC20TokenButton from '@/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton' import TokenBalance from '@/src/components/sharedComponents/TokenSelect/List/TokenBalance' import type { Token } from '@/src/types/token' -import { Box, Flex, type FlexProps, Skeleton } from '@chakra-ui/react' -import type { FC } from 'react' const Icon: FC<{ size: number } & FlexProps> = ({ size, children, ...restProps }) => ( <Flex diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx index 59a539b9..4a0fec9e 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx @@ -1,7 +1,7 @@ -import type { Token } from '@/src/types/token' -import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' import { Box, Flex } from '@chakra-ui/react' import { formatUnits } from 'viem' +import type { Token } from '@/src/types/token' +import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' interface TokenBalanceProps { isLoading?: boolean diff --git a/src/components/sharedComponents/TokenSelect/List/index.tsx b/src/components/sharedComponents/TokenSelect/List/index.tsx index 8a634367..5aea0c56 100644 --- a/src/components/sharedComponents/TokenSelect/List/index.tsx +++ b/src/components/sharedComponents/TokenSelect/List/index.tsx @@ -1,8 +1,8 @@ +import { Flex, type FlexProps } from '@chakra-ui/react' +import type { FC } from 'react' import Row from '@/src/components/sharedComponents/TokenSelect/List/Row' import VirtualizedList from '@/src/components/sharedComponents/TokenSelect/List/VirtualizedList' import type { Token, Tokens } from '@/src/types/token' -import { Flex, type FlexProps } from '@chakra-ui/react' -import type { FC } from 'react' interface TokenSelectListProps extends FlexProps { containerHeight: number diff --git a/src/components/sharedComponents/TokenSelect/Search/index.tsx b/src/components/sharedComponents/TokenSelect/Search/index.tsx index c04c6686..ea841685 100644 --- a/src/components/sharedComponents/TokenSelect/Search/index.tsx +++ b/src/components/sharedComponents/TokenSelect/Search/index.tsx @@ -1,9 +1,9 @@ +import { Box, Flex, type FlexProps, Menu } from '@chakra-ui/react' +import type { Dispatch, FC, SetStateAction } from 'react' import SearchInput from '@/src/components/sharedComponents/TokenSelect/Search/Input' import NetworkButton from '@/src/components/sharedComponents/TokenSelect/Search/NetworkButton' import type { Networks } from '@/src/components/sharedComponents/TokenSelect/types' import { MenuContent, MenuItem } from '@/src/components/sharedComponents/ui/Menu' -import { Box, Flex, type FlexProps, Menu } from '@chakra-ui/react' -import type { Dispatch, FC, SetStateAction } from 'react' interface SearchProps extends FlexProps { currentNetworkId: number diff --git a/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx b/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx index a7b271ab..cba34232 100644 --- a/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx +++ b/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx @@ -1,7 +1,7 @@ +import { Box, chakra, Flex } from '@chakra-ui/react' +import type { ComponentPropsWithoutRef, FC } from 'react' import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import type { Token } from '@/src/types/token' -import { Box, Flex, chakra } from '@chakra-ui/react' -import type { ComponentPropsWithoutRef, FC } from 'react' const ICON_SIZE = 24 diff --git a/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx b/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx index 41478d02..3f3986b4 100644 --- a/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx +++ b/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx @@ -1,8 +1,8 @@ +import { Flex, type FlexProps } from '@chakra-ui/react' +import type { FC } from 'react' import Item from '@/src/components/sharedComponents/TokenSelect/TopTokens/Item' import type { Token, Tokens } from '@/src/types/token' import { isNativeToken } from '@/src/utils/address' -import { Flex, type FlexProps } from '@chakra-ui/react' -import type { FC } from 'react' interface TopTokensProps extends FlexProps { onTokenSelect: (token: Token | undefined) => void diff --git a/src/components/sharedComponents/TokenSelect/index.tsx b/src/components/sharedComponents/TokenSelect/index.tsx index f8ac25f3..0ca21ff8 100644 --- a/src/components/sharedComponents/TokenSelect/index.tsx +++ b/src/components/sharedComponents/TokenSelect/index.tsx @@ -1,3 +1,6 @@ +import { Flex, type FlexProps } from '@chakra-ui/react' +import { useEffect, useRef, useState } from 'react' +import type { Chain } from 'viem/chains' import List from '@/src/components/sharedComponents/TokenSelect/List' import Search from '@/src/components/sharedComponents/TokenSelect/Search' import TopTokens from '@/src/components/sharedComponents/TokenSelect/TopTokens' @@ -9,9 +12,6 @@ import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { chains } from '@/src/lib/networks.config' import type { Token } from '@/src/types/token' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { Flex, type FlexProps } from '@chakra-ui/react' -import { useEffect, useRef, useState } from 'react' -import type { Chain } from 'viem/chains' import styles from './styles' export interface TokenSelectProps { diff --git a/src/components/sharedComponents/TransactionButton.test.tsx b/src/components/sharedComponents/TransactionButton.test.tsx index deb77f9d..032dc575 100644 --- a/src/components/sharedComponents/TransactionButton.test.tsx +++ b/src/components/sharedComponents/TransactionButton.test.tsx @@ -1,6 +1,6 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { render, screen } from '@testing-library/react' -import { type ReactNode, createElement } from 'react' +import { createElement, type ReactNode } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' import TransactionButton from './TransactionButton' diff --git a/src/components/sharedComponents/TransactionButton.tsx b/src/components/sharedComponents/TransactionButton.tsx index fd43ae32..620b0cbe 100644 --- a/src/components/sharedComponents/TransactionButton.tsx +++ b/src/components/sharedComponents/TransactionButton.tsx @@ -1,14 +1,14 @@ +import type { ButtonProps } from '@chakra-ui/react' +import type { ReactElement } from 'react' +import { useEffect, useState } from 'react' +import type { Hash, TransactionReceipt } from 'viem' +import { useWaitForTransactionReceipt } from 'wagmi' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' import type { ChainsIds } from '@/src/lib/networks.config' import { useTransactionNotification } from '@/src/providers/TransactionNotificationProvider' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import type { ButtonProps } from '@chakra-ui/react' -import { useEffect, useState } from 'react' -import type { ReactElement } from 'react' -import type { Hash, TransactionReceipt } from 'viem' -import { useWaitForTransactionReceipt } from 'wagmi' interface TransactionButtonProps extends ButtonProps { /** Target chain ID for wallet status verification. */ diff --git a/src/components/sharedComponents/WalletStatusVerifier.test.tsx b/src/components/sharedComponents/WalletStatusVerifier.test.tsx index 6633c3b0..8487e9b3 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.test.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.test.tsx @@ -1,9 +1,9 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' -import { type ReactNode, createElement } from 'react' +import { createElement, type ReactNode } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { WalletStatusVerifier, useWeb3StatusConnected } from './WalletStatusVerifier' +import { useWeb3StatusConnected, WalletStatusVerifier } from './WalletStatusVerifier' const mockSwitchChain = vi.fn() diff --git a/src/components/sharedComponents/WalletStatusVerifier.tsx b/src/components/sharedComponents/WalletStatusVerifier.tsx index c9902807..9d39d13b 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.tsx @@ -1,11 +1,11 @@ +import { createContext, type FC, type ReactElement, useContext } from 'react' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' -import { type Web3Status, useWeb3Status } from '@/src/hooks/useWeb3Status' +import { useWeb3Status, type Web3Status } from '@/src/hooks/useWeb3Status' import type { ChainsIds } from '@/src/lib/networks.config' import { ConnectWalletButton } from '@/src/providers/Web3Provider' import type { RequiredNonNull } from '@/src/types/utils' import { DeveloperError } from '@/src/utils/DeveloperError' -import { type FC, type ReactElement, createContext, useContext } from 'react' const WalletStatusVerifierContext = createContext<RequiredNonNull<Web3Status> | null>(null) diff --git a/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx b/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx index 8887d721..83091c2c 100644 --- a/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx +++ b/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx @@ -1,4 +1,4 @@ -import { Suspense, lazy } from 'react' +import { lazy, Suspense } from 'react' const ReactQueryDevtools = import.meta.env.PROD ? () => null diff --git a/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx b/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx index cbc90b3a..b45479d0 100644 --- a/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx +++ b/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx @@ -1,4 +1,4 @@ -import { Suspense, lazy } from 'react' +import { lazy, Suspense } from 'react' const RouterDevtoolsBase = import.meta.env.PROD ? () => null diff --git a/src/components/sharedComponents/ui/DropdownButton.tsx b/src/components/sharedComponents/ui/DropdownButton.tsx index 8e0a4b5c..3c9cdcb3 100644 --- a/src/components/sharedComponents/ui/DropdownButton.tsx +++ b/src/components/sharedComponents/ui/DropdownButton.tsx @@ -1,6 +1,6 @@ -import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' import { type ButtonProps, chakra } from '@chakra-ui/react' import type { FC } from 'react' +import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' const ChevronDown: FC = () => ( <chakra.svg diff --git a/src/components/sharedComponents/ui/ExternalLink/index.tsx b/src/components/sharedComponents/ui/ExternalLink/index.tsx index 4af70c36..d9b2ef4c 100644 --- a/src/components/sharedComponents/ui/ExternalLink/index.tsx +++ b/src/components/sharedComponents/ui/ExternalLink/index.tsx @@ -1,4 +1,4 @@ -import { Link, type LinkProps, chakra } from '@chakra-ui/react' +import { chakra, Link, type LinkProps } from '@chakra-ui/react' import type { FC, HTMLAttributes } from 'react' import styles from './styles' diff --git a/src/components/sharedComponents/ui/Footer/Socials/index.tsx b/src/components/sharedComponents/ui/Footer/Socials/index.tsx index 11eddfbb..2f859328 100644 --- a/src/components/sharedComponents/ui/Footer/Socials/index.tsx +++ b/src/components/sharedComponents/ui/Footer/Socials/index.tsx @@ -1,9 +1,9 @@ +import { Flex, type FlexProps, Link } from '@chakra-ui/react' +import type { FC } from 'react' import Github from '@/src/components/sharedComponents/ui/Footer/Socials/assets/Github' import LinkedIn from '@/src/components/sharedComponents/ui/Footer/Socials/assets/LinkedIn' import Telegram from '@/src/components/sharedComponents/ui/Footer/Socials/assets/Telegram' import Twitter from '@/src/components/sharedComponents/ui/Footer/Socials/assets/Twitter' -import { Flex, type FlexProps, Link } from '@chakra-ui/react' -import type { FC } from 'react' const Socials: FC<FlexProps> = ({ ...restProps }) => { const items = [ diff --git a/src/components/sharedComponents/ui/Footer/index.tsx b/src/components/sharedComponents/ui/Footer/index.tsx index fc4b75e8..823a17f4 100644 --- a/src/components/sharedComponents/ui/Footer/index.tsx +++ b/src/components/sharedComponents/ui/Footer/index.tsx @@ -1,9 +1,9 @@ -import { LogoMini } from '@/src/components/sharedComponents/ui/Footer/LogoMini' -import Socials from '@/src/components/sharedComponents/ui/Footer/Socials' -import { Inner } from '@/src/components/sharedComponents/ui/Inner' import { Box, Flex, type FlexProps } from '@chakra-ui/react' import packageJSON from '@packageJSON' import type { FC } from 'react' +import { LogoMini } from '@/src/components/sharedComponents/ui/Footer/LogoMini' +import Socials from '@/src/components/sharedComponents/ui/Footer/Socials' +import { Inner } from '@/src/components/sharedComponents/ui/Inner' import styles from './styles' export const Footer: FC<FlexProps> = ({ css, ...restProps }) => { diff --git a/src/components/sharedComponents/ui/Header/Logo.tsx b/src/components/sharedComponents/ui/Header/Logo.tsx index 3582afdc..d43a68d7 100644 --- a/src/components/sharedComponents/ui/Header/Logo.tsx +++ b/src/components/sharedComponents/ui/Header/Logo.tsx @@ -1,4 +1,4 @@ -import { type ImageProps, chakra } from '@chakra-ui/react' +import { chakra, type ImageProps } from '@chakra-ui/react' import type { FC } from 'react' const LogoDark = diff --git a/src/components/sharedComponents/ui/Header/MainMenu.tsx b/src/components/sharedComponents/ui/Header/MainMenu.tsx index 4bcc72f4..edaa0eac 100644 --- a/src/components/sharedComponents/ui/Header/MainMenu.tsx +++ b/src/components/sharedComponents/ui/Header/MainMenu.tsx @@ -1,4 +1,4 @@ -import { Flex, type FlexProps, Link, type LinkProps, chakra } from '@chakra-ui/react' +import { chakra, Flex, type FlexProps, Link, type LinkProps } from '@chakra-ui/react' import type { FC } from 'react' const GitHub = () => ( diff --git a/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx b/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx index 789a182c..48cf1109 100644 --- a/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx +++ b/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx @@ -1,11 +1,10 @@ +import { Box, chakra, Drawer } from '@chakra-ui/react' +import { useTheme } from 'next-themes' +import { useState } from 'react' import Logo from '@/src/components/sharedComponents/ui/Header/Logo' import MainMenu from '@/src/components/sharedComponents/ui/Header/MainMenu' import { SwitchThemeButton } from '@/src/components/sharedComponents/ui/SwitchThemeButton' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import { Box, chakra } from '@chakra-ui/react' -import { Drawer } from '@chakra-ui/react' -import { useTheme } from 'next-themes' -import { useState } from 'react' import styles from './styles' const MenuIcon = () => ( diff --git a/src/components/sharedComponents/ui/Header/index.tsx b/src/components/sharedComponents/ui/Header/index.tsx index 10208e24..ccd79602 100644 --- a/src/components/sharedComponents/ui/Header/index.tsx +++ b/src/components/sharedComponents/ui/Header/index.tsx @@ -1,13 +1,13 @@ +import { Box, type BoxProps, chakra, Flex } from '@chakra-ui/react' +import { Link } from '@tanstack/react-router' +import { useTheme } from 'next-themes' +import type { FC } from 'react' import Logo from '@/src/components/sharedComponents/ui/Header/Logo' import MainMenu from '@/src/components/sharedComponents/ui/Header/MainMenu' import MobileMenu from '@/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu' import { Inner } from '@/src/components/sharedComponents/ui/Inner' import { SwitchThemeButton } from '@/src/components/sharedComponents/ui/SwitchThemeButton' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import { Box, type BoxProps, Flex, chakra } from '@chakra-ui/react' -import { Link } from '@tanstack/react-router' -import { useTheme } from 'next-themes' -import type { FC } from 'react' import styles from './styles' const HomeLink = chakra(Link) diff --git a/src/components/sharedComponents/ui/Modal/index.tsx b/src/components/sharedComponents/ui/Modal/index.tsx index d72455e6..2a624976 100644 --- a/src/components/sharedComponents/ui/Modal/index.tsx +++ b/src/components/sharedComponents/ui/Modal/index.tsx @@ -2,9 +2,9 @@ import { Card as BaseCard, type ButtonProps, type CardRootProps, + chakra, Heading, Text, - chakra, } from '@chakra-ui/react' import type { FC, ReactNode } from 'react' import styles from './styles' diff --git a/src/components/sharedComponents/ui/PrimaryButton/index.tsx b/src/components/sharedComponents/ui/PrimaryButton/index.tsx index 6bf9e073..a2d962b3 100644 --- a/src/components/sharedComponents/ui/PrimaryButton/index.tsx +++ b/src/components/sharedComponents/ui/PrimaryButton/index.tsx @@ -1,6 +1,6 @@ -import Button from '@/src/components/sharedComponents/ui/Button' import type { ButtonProps } from '@chakra-ui/react' import type { FC } from 'react' +import Button from '@/src/components/sharedComponents/ui/Button' import styles from './styles' export const PrimaryButton: FC<ButtonProps> = ({ css, ...restProps }) => ( diff --git a/src/components/sharedComponents/ui/SecondaryButton/index.tsx b/src/components/sharedComponents/ui/SecondaryButton/index.tsx index c6c8ac3b..9d14e6ec 100644 --- a/src/components/sharedComponents/ui/SecondaryButton/index.tsx +++ b/src/components/sharedComponents/ui/SecondaryButton/index.tsx @@ -1,6 +1,6 @@ -import Button from '@/src/components/sharedComponents/ui/Button' import type { ButtonProps } from '@chakra-ui/react' import type { FC } from 'react' +import Button from '@/src/components/sharedComponents/ui/Button' import styles from './styles' export const SecondaryButton: FC<ButtonProps> = ({ css, ...restProps }) => ( diff --git a/src/components/sharedComponents/ui/SwitchChainButton.tsx b/src/components/sharedComponents/ui/SwitchChainButton.tsx index 02fc0d1d..22fb5fa7 100644 --- a/src/components/sharedComponents/ui/SwitchChainButton.tsx +++ b/src/components/sharedComponents/ui/SwitchChainButton.tsx @@ -1,5 +1,5 @@ -import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' import { chakra } from '@chakra-ui/react' +import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' const SwitchChainButton = chakra(PrimaryButton, { base: { diff --git a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx index 9302d573..97791b94 100644 --- a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx +++ b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx @@ -1,4 +1,4 @@ -import { type HTMLChakraProps, chakra } from '@chakra-ui/react' +import { chakra, type HTMLChakraProps } from '@chakra-ui/react' import type { FC, SVGAttributes } from 'react' const Dark: FC<HTMLChakraProps<'svg'> & SVGAttributes<SVGSVGElement>> = ({ css, ...restProps }) => ( diff --git a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx index b7976a53..6059ec4d 100644 --- a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx +++ b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx @@ -1,4 +1,4 @@ -import { type HTMLChakraProps, chakra } from '@chakra-ui/react' +import { chakra, type HTMLChakraProps } from '@chakra-ui/react' import type { FC, SVGAttributes } from 'react' const Light: FC<HTMLChakraProps<'svg'> & SVGAttributes<SVGSVGElement>> = ({ diff --git a/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx b/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx index 557320be..420eee94 100644 --- a/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx +++ b/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx @@ -1,7 +1,7 @@ -import Dark from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark' -import Light from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light' import { Box, type ButtonProps, chakra } from '@chakra-ui/react' import type { FC } from 'react' +import Dark from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark' +import Light from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light' import styles from './styles' const Icon = chakra('div', { diff --git a/src/components/ui/toaster.tsx b/src/components/ui/toaster.tsx index 4b4ff9e6..c8e09bf0 100644 --- a/src/components/ui/toaster.tsx +++ b/src/components/ui/toaster.tsx @@ -1,7 +1,7 @@ 'use client' +import { Toaster as ChakraToaster, createToaster, Portal, Stack, Toast } from '@chakra-ui/react' import Spinner from '@/src/components/sharedComponents/ui/Spinner' -import { Toaster as ChakraToaster, Portal, Stack, Toast, createToaster } from '@chakra-ui/react' export const toaster = createToaster({ placement: 'bottom-end', diff --git a/src/constants/contracts/contracts.ts b/src/constants/contracts/contracts.ts index 0f789d98..00320e2d 100644 --- a/src/constants/contracts/contracts.ts +++ b/src/constants/contracts/contracts.ts @@ -1,10 +1,10 @@ import { type Abi, type Address, - type ContractFunctionArgs as WagmiContractFunctionArgs, - type ContractFunctionName as WagmiContractFunctionName, erc20Abi, isAddress, + type ContractFunctionArgs as WagmiContractFunctionArgs, + type ContractFunctionName as WagmiContractFunctionName, } from 'viem' import { mainnet, optimismSepolia, polygon, sepolia } from 'viem/chains' @@ -85,9 +85,8 @@ export type ContractNames = (typeof contracts)[number]['name'] type ContractOfName<CN extends ContractNames> = Extract<(typeof contracts)[number], { name: CN }> type AbiOfName<CN extends ContractNames> = ContractOfName<CN>['abi'] -type AddressRecord<T extends ContractNames> = ContractOfName<T> extends { address: infer K } - ? K - : never +type AddressRecord<T extends ContractNames> = + ContractOfName<T> extends { address: infer K } ? K : never type ChainIdOf<T extends ContractNames> = keyof AddressRecord<T> export type ContractFunctionName<CN extends ContractNames> = WagmiContractFunctionName< diff --git a/src/hooks/useErc20Balance.test.ts b/src/hooks/useErc20Balance.test.ts index 04b3f033..c81c47d1 100644 --- a/src/hooks/useErc20Balance.test.ts +++ b/src/hooks/useErc20Balance.test.ts @@ -1,10 +1,10 @@ -import type { Token } from '@/src/types/token' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { renderHook, waitFor } from '@testing-library/react' import type { ReactNode } from 'react' import { createElement } from 'react' import { zeroAddress } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Token } from '@/src/types/token' import { useErc20Balance } from './useErc20Balance' const mockReadContract = vi.fn() diff --git a/src/hooks/useNetworkBlockNumber.ts b/src/hooks/useNetworkBlockNumber.ts index 6681f49b..33b673b6 100644 --- a/src/hooks/useNetworkBlockNumber.ts +++ b/src/hooks/useNetworkBlockNumber.ts @@ -1,7 +1,6 @@ -import { useMemo } from 'react' - import { type UseSuspenseQueryOptions, useSuspenseQuery } from '@tanstack/react-query' -import { http, createPublicClient } from 'viem' +import { useMemo } from 'react' +import { createPublicClient, http } from 'viem' import type { Chain } from 'viem/chains' /** diff --git a/src/hooks/useOPL1CrossDomainMessengerProxy.ts b/src/hooks/useOPL1CrossDomainMessengerProxy.ts index 89dc4475..08074ba4 100644 --- a/src/hooks/useOPL1CrossDomainMessengerProxy.ts +++ b/src/hooks/useOPL1CrossDomainMessengerProxy.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react' -import { type Address, type Hash, createPublicClient, encodeFunctionData } from 'viem' +import { type Address, createPublicClient, encodeFunctionData, type Hash } from 'viem' import type { mainnet } from 'viem/chains' import { optimism, optimismSepolia, sepolia } from 'viem/chains' import { useWriteContract } from 'wagmi' diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index efbb40a3..4a5b1ee9 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -1,11 +1,11 @@ -import type { Token } from '@/src/types/token' -import tokenListsCache, { updateTokenListsCache } from '@/src/utils/tokenListsCache' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { renderHook } from '@testing-library/react' -import { createElement } from 'react' import type { ReactNode } from 'react' +import { createElement } from 'react' import { zeroAddress } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Token } from '@/src/types/token' +import tokenListsCache, { updateTokenListsCache } from '@/src/utils/tokenListsCache' vi.mock('@/src/utils/tokenListsCache', () => { const cache = { tokens: [] as Token[], tokensByChainId: {} as Record<number, Token[]> } diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 73b48463..fe57ed64 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -1,18 +1,17 @@ -import { useMemo } from 'react' - import { type UseSuspenseQueryOptions, type UseSuspenseQueryResult, useSuspenseQueries, } from '@tanstack/react-query' import defaultTokens from '@uniswap/default-token-list' +import { useMemo } from 'react' import * as chains from 'viem/chains' import { tokenLists } from '@/src/constants/tokenLists' import { env } from '@/src/env' import { type Token, type TokenList, tokenSchema } from '@/src/types/token' import { logger } from '@/src/utils/logger' -import tokenListsCache, { updateTokenListsCache, type TokensMap } from '@/src/utils/tokenListsCache' +import tokenListsCache, { type TokensMap, updateTokenListsCache } from '@/src/utils/tokenListsCache' /** * Loads and processes token lists from configured sources diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index ba4e4a7a..0ab94cde 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -1,15 +1,14 @@ -import { useMemo } from 'react' - import { - EVM, - type TokenAmount, - type TokensResponse, createConfig, + EVM, getChains, getTokenBalances, getTokens, + type TokenAmount, + type TokensResponse, } from '@lifi/sdk' import { useQuery } from '@tanstack/react-query' +import { useMemo } from 'react' import { type Address, type Chain, formatUnits } from 'viem' import { env } from '@/src/env' @@ -70,7 +69,11 @@ export const useTokens = ( account, chainId, withBalance, - }: { account?: Address; chainId?: Chain['id']; withBalance?: boolean } = { + }: { + account?: Address + chainId?: Chain['id'] + withBalance?: boolean + } = { withBalance: true, }, ) => { diff --git a/src/hooks/useWalletStatus.ts b/src/hooks/useWalletStatus.ts index 3afae7cc..845a3713 100644 --- a/src/hooks/useWalletStatus.ts +++ b/src/hooks/useWalletStatus.ts @@ -1,5 +1,5 @@ -import { extractChain } from 'viem' import type { Chain } from 'viem' +import { extractChain } from 'viem' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { type ChainsIds, chains } from '@/src/lib/networks.config' diff --git a/src/hooks/useWeb3Status.test.ts b/src/hooks/useWeb3Status.test.ts index c9afb54f..3fe34ca3 100644 --- a/src/hooks/useWeb3Status.test.ts +++ b/src/hooks/useWeb3Status.test.ts @@ -1,8 +1,8 @@ -import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { renderHook } from '@testing-library/react' import { createElement } from 'react' import type { Address } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { useWeb3Status } from './useWeb3Status' const mockDisconnect = vi.fn() @@ -39,8 +39,8 @@ vi.mock('@/src/providers/Web3Provider', () => ({ createElement('button', { type: 'button', 'data-testid': 'connect-wallet-button' }, 'Connect'), })) -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import * as wagmi from 'wagmi' +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') const mockedUseWalletStatus = vi.mocked(useWalletStatus) diff --git a/src/lib/wallets/connectkit.config.tsx b/src/lib/wallets/connectkit.config.tsx index b542bc88..c262e2a7 100644 --- a/src/lib/wallets/connectkit.config.tsx +++ b/src/lib/wallets/connectkit.config.tsx @@ -1,14 +1,13 @@ -import Avatar from '@/src/components/sharedComponents/Avatar' -import ConnectButton from '@/src/components/sharedComponents/ConnectButton' -import { env } from '@/src/env' -import { chains, transports } from '@/src/lib/networks.config' import type { ButtonProps } from '@chakra-ui/react' -import { ConnectKitButton, ConnectKitProvider, type Types, getDefaultConfig } from 'connectkit' +import { ConnectKitButton, ConnectKitProvider, getDefaultConfig, type Types } from 'connectkit' import type { FC, ReactNode } from 'react' import type { Address } from 'viem' import { normalize } from 'viem/ens' - import { createConfig, useEnsAvatar, useEnsName } from 'wagmi' +import Avatar from '@/src/components/sharedComponents/Avatar' +import ConnectButton from '@/src/components/sharedComponents/ConnectButton' +import { env } from '@/src/env' +import { chains, transports } from '@/src/lib/networks.config' interface Props { address: Address diff --git a/src/lib/wallets/portoInit.ts b/src/lib/wallets/portoInit.ts index fa76833e..916091de 100644 --- a/src/lib/wallets/portoInit.ts +++ b/src/lib/wallets/portoInit.ts @@ -1,5 +1,5 @@ -import { env } from '@/src/env' import { Porto } from 'porto' +import { env } from '@/src/env' if (env.PUBLIC_ENABLE_PORTO) { try { diff --git a/src/lib/wallets/web3modal.config.tsx b/src/lib/wallets/web3modal.config.tsx index 9c4590a8..6f283ab0 100644 --- a/src/lib/wallets/web3modal.config.tsx +++ b/src/lib/wallets/web3modal.config.tsx @@ -3,15 +3,13 @@ * version used: 4.2.1 */ -import type { DetailedHTMLProps, FC, HTMLAttributes, PropsWithChildren } from 'react' - -import { WagmiAdapter } from '@reown/appkit-adapter-wagmi' import { createAppKit } from '@reown/appkit/react' +import { WagmiAdapter } from '@reown/appkit-adapter-wagmi' +import type { DetailedHTMLProps, FC, HTMLAttributes, PropsWithChildren } from 'react' +import type { Chain } from 'viem' import { env } from '@/src/env' - import { chains } from '@/src/lib/networks.config' -import type { Chain } from 'viem' export const WalletProvider: FC<PropsWithChildren> = ({ children }) => children diff --git a/src/main.tsx b/src/main.tsx index 83a6df6f..9c9fd191 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,6 +1,5 @@ +import { createRouter, RouterProvider } from '@tanstack/react-router' import { StrictMode } from 'react' - -import { RouterProvider, createRouter } from '@tanstack/react-router' import ReactDOM from 'react-dom/client' import NotFound404 from '@/src/components/pageComponents/NotFound404' diff --git a/src/providers/TransactionNotificationProvider.tsx b/src/providers/TransactionNotificationProvider.tsx index 3cf7d456..94444d01 100644 --- a/src/providers/TransactionNotificationProvider.tsx +++ b/src/providers/TransactionNotificationProvider.tsx @@ -1,16 +1,16 @@ -import { ExplorerLink } from '@/src/components/sharedComponents/ExplorerLink' -import { - NotificationToast, - notificationToaster, -} from '@/src/components/sharedComponents/NotificationToast' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { type FC, type PropsWithChildren, type ReactNode, createContext, useContext } from 'react' +import { createContext, type FC, type PropsWithChildren, type ReactNode, useContext } from 'react' import type { Hash, ReplacementReturnType, SignMessageErrorType, TransactionExecutionError, } from 'viem' +import { ExplorerLink } from '@/src/components/sharedComponents/ExplorerLink' +import { + NotificationToast, + notificationToaster, +} from '@/src/components/sharedComponents/NotificationToast' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' type WatchSignatureArgs = { successMessage?: string diff --git a/src/providers/Web3Provider.tsx b/src/providers/Web3Provider.tsx index d9eab5b9..98401513 100644 --- a/src/providers/Web3Provider.tsx +++ b/src/providers/Web3Provider.tsx @@ -1,10 +1,9 @@ -import type { FC, PropsWithChildren } from 'react' - import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import type { FC, PropsWithChildren } from 'react' import { WagmiProvider } from 'wagmi' import '@/src/lib/wallets/portoInit' -import { ConnectWalletButton, WalletProvider, config } from '@/src/lib/wallets/connectkit.config' +import { ConnectWalletButton, config, WalletProvider } from '@/src/lib/wallets/connectkit.config' const queryClient = new QueryClient() diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index 7037e400..27a5f103 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -1,3 +1,7 @@ +import { chakra, Flex } from '@chakra-ui/react' +import { createRootRoute, Outlet } from '@tanstack/react-router' +import { Analytics } from '@vercel/analytics/react' +import { useEffect } from 'react' import { TanStackReactQueryDevtools } from '@/src/components/sharedComponents/dev/TanStackReactQueryDevtools' import { TanStackRouterDevtools } from '@/src/components/sharedComponents/dev/TanStackRouterDevtools' import { Footer } from '@/src/components/sharedComponents/ui/Footer' @@ -7,10 +11,6 @@ import { Toaster } from '@/src/components/ui/toaster' import { TransactionNotificationProvider } from '@/src/providers/TransactionNotificationProvider' import { Web3Provider } from '@/src/providers/Web3Provider' import { printAppInfo } from '@/src/utils/printAppInfo' -import { Flex, chakra } from '@chakra-ui/react' -import { Outlet, createRootRoute } from '@tanstack/react-router' -import { Analytics } from '@vercel/analytics/react' -import { useEffect } from 'react' export const Route = createRootRoute({ component: Root, diff --git a/src/utils/getExplorerLink.test.ts b/src/utils/getExplorerLink.test.ts index 9833c82f..8a052a1b 100644 --- a/src/utils/getExplorerLink.test.ts +++ b/src/utils/getExplorerLink.test.ts @@ -1,6 +1,6 @@ -import { createMockChain } from '@/src/test-utils' import type { Chain } from 'viem' import { describe, expect, it } from 'vitest' +import { createMockChain } from '@/src/test-utils' import { getExplorerLink } from './getExplorerLink' const chain = createMockChain() diff --git a/src/utils/getTransactionOutputs.test.ts b/src/utils/getTransactionOutputs.test.ts index 751f8cd3..0e25ba18 100644 --- a/src/utils/getTransactionOutputs.test.ts +++ b/src/utils/getTransactionOutputs.test.ts @@ -1,10 +1,10 @@ -import { type AbiEvent, type TransactionReceipt, decodeEventLog } from 'viem' +import { type AbiEvent, decodeEventLog, type TransactionReceipt } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' import { + getTransactionOutputs, MissingOutputError, TransactionOutputError, - getTransactionOutputs, } from '@/src/utils/getTransactionOutputs' // Mock the viem decodeEventLog function diff --git a/src/utils/getTransactionOutputs.ts b/src/utils/getTransactionOutputs.ts index 866985f5..c12ce879 100644 --- a/src/utils/getTransactionOutputs.ts +++ b/src/utils/getTransactionOutputs.ts @@ -1,4 +1,4 @@ -import { type AbiEvent, type Log, type TransactionReceipt, decodeEventLog, isHex } from 'viem' +import { type AbiEvent, decodeEventLog, isHex, type Log, type TransactionReceipt } from 'viem' /** * Custom error class for transaction output processing errors diff --git a/src/utils/hash.test.ts b/src/utils/hash.test.ts index 1e83a403..58e9bac1 100644 --- a/src/utils/hash.test.ts +++ b/src/utils/hash.test.ts @@ -1,7 +1,7 @@ import type { Chain, Transaction } from 'viem' import * as viemActions from 'viem/actions' import { mainnet } from 'viem/chains' -import { type Mock, describe, expect, it, vi } from 'vitest' +import { describe, expect, it, type Mock, vi } from 'vitest' import detectHash from '@/src/utils/hash' diff --git a/src/utils/hash.ts b/src/utils/hash.ts index a9dcb330..17fb598a 100644 --- a/src/utils/hash.ts +++ b/src/utils/hash.ts @@ -1,12 +1,12 @@ import { - http, type Address, type Chain, - type Hash, - type Transaction, createPublicClient, + type Hash, + http, isAddress, isHex, + type Transaction, } from 'viem' import { getBytecode, getEnsAddress, getTransaction } from 'viem/actions' import { normalize } from 'viem/ens' diff --git a/src/utils/numberFormat.test.ts b/src/utils/numberFormat.test.ts index 69812c0e..bd4fd656 100644 --- a/src/utils/numberFormat.test.ts +++ b/src/utils/numberFormat.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest' -import { NumberType, formatNumber, formatUSDPrice } from '@/src/utils/numberFormat' +import { formatNumber, formatUSDPrice, NumberType } from '@/src/utils/numberFormat' it('formats token reference numbers correctly', () => { expect(formatNumber(1234567000000000, NumberType.TokenNonTx)).toBe('>999T') diff --git a/src/utils/suspenseWrapper.tsx b/src/utils/suspenseWrapper.tsx index e8aba0d2..835ad5c7 100644 --- a/src/utils/suspenseWrapper.tsx +++ b/src/utils/suspenseWrapper.tsx @@ -1,8 +1,4 @@ -import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' -import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { DeveloperError } from '@/src/utils/DeveloperError' -import { Flex, Spinner } from '@chakra-ui/react' -import { Dialog, Portal } from '@chakra-ui/react' +import { Dialog, Flex, Portal, Spinner } from '@chakra-ui/react' import { QueryErrorResetBoundary } from '@tanstack/react-query' import { type ComponentType, type JSX, type ReactNode, Suspense } from 'react' import { @@ -10,6 +6,9 @@ import { type ErrorBoundaryPropsWithRender, type FallbackProps, } from 'react-error-boundary' +import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' +import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' +import { DeveloperError } from '@/src/utils/DeveloperError' export type DefaultFallbackFormat = 'dialog' | 'default' diff --git a/vite.config.ts b/vite.config.ts index 7601ba38..284effb5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,4 +1,4 @@ -/// <reference types="vitest" /> +/// <reference types="vitest/config" /> import { resolve } from 'node:path' import { TanStackRouterVite } from '@tanstack/router-plugin/vite' import react from '@vitejs/plugin-react-swc' diff --git a/vocs.config.ts b/vocs.config.ts index 647c669b..311549c4 100644 --- a/vocs.config.ts +++ b/vocs.config.ts @@ -1,4 +1,4 @@ -import { type SidebarItem, defineConfig } from 'vocs' +import { defineConfig, type SidebarItem } from 'vocs' export default defineConfig({ title: 'dAppBooster', From 6886246b8ad36b042aa50bd59afbe039996ac927 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 19:33:27 -0300 Subject: [PATCH 031/115] chore: update typescript to v6 Remove baseUrl (deprecated in TS6), enable esModuleInterop, and drop options that are now always-on (allowSyntheticDefaultImports, isolatedModules, useDefineForClassFields). --- package.json | 2 +- pnpm-lock.yaml | 1364 ++++++++++++++++++++++++------------------------ tsconfig.json | 6 +- 3 files changed, 684 insertions(+), 688 deletions(-) diff --git a/package.json b/package.json index c9b3f901..2bf4192f 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "typedoc-plugin-inline-sources": "^1.3.0", "typedoc-plugin-missing-exports": "^4.0.0", "typedoc-plugin-rename-defaults": "^0.7.3", - "typescript": "^5.8.3", + "typescript": "^6", "vite": "^6.3.5", "vite-plugin-sitemap": "^0.8.2", "vite-tsconfig-paths": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f948e86..fd7cf828 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@bootnodedev/db-subgraph': specifier: ^0.1.2 - version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) '@chakra-ui/react': specifier: ^3.34.0 version: 3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -19,19 +19,19 @@ importers: version: 11.14.0(@types/react@19.2.14)(react@19.2.4) '@lifi/sdk': specifier: ^3.16.3 - version: 3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + version: 3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) '@rainbow-me/rainbowkit': specifier: ^2.2.9 - version: 2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) '@reown/appkit': specifier: ^1.8.19 - version: 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + version: 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-adapter-wagmi': specifier: ^1.8.19 - version: 1.8.19(c0f8bf6938db1ad3e3bcf55c52af5632) + version: 1.8.19(ab395d0f2042d474c7f1083f332077c2) '@t3-oss/env-core': specifier: ^0.13.11 - version: 0.13.11(typescript@5.9.3)(valibot@1.2.0(typescript@5.9.3))(zod@3.25.76) + version: 0.13.11(typescript@6.0.2)(valibot@1.2.0(typescript@6.0.2))(zod@3.25.76) '@tanstack/react-query': specifier: ^5.96.1 version: 5.96.1(react@19.2.4) @@ -49,13 +49,13 @@ importers: version: 2.0.1(react@19.2.4) '@web3icons/core': specifier: ^4.0.13 - version: 4.0.51(typescript@5.9.3) + version: 4.0.51(typescript@6.0.2) '@web3icons/react': specifier: ^4.0.13 - version: 4.1.17(react@19.2.4)(typescript@5.9.3) + version: 4.1.17(react@19.2.4)(typescript@6.0.2) connectkit: specifier: ^1.9.2 - version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) graphql: specifier: ^16.13.2 version: 16.13.2 @@ -67,7 +67,7 @@ importers: version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) porto: specifier: ^0.2.28 - version: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) react: specifier: 19.2.4 version: 19.2.4 @@ -88,10 +88,10 @@ importers: version: 10.1.1(react@19.2.4) viem: specifier: ^2.47.6 - version: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + version: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) wagmi: specifier: ^2.17.5 - version: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + version: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) zod: specifier: ^3.24.4 version: 3.25.76 @@ -101,13 +101,13 @@ importers: version: 2.4.10 '@commitlint/cli': specifier: ^20.5.0 - version: 20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@5.9.3) + version: 20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@6.0.2) '@commitlint/config-conventional': specifier: ^20.5.0 version: 20.5.0 '@graphql-codegen/cli': specifier: ^5.0.6 - version: 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + version: 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) '@graphql-typed-document-node/core': specifier: ^3.2.0 version: 3.2.0(graphql@16.13.2) @@ -149,7 +149,7 @@ importers: version: 4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))) '@wagmi/cli': specifier: ^2.3.1 - version: 2.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + version: 2.10.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) change-case: specifier: ^5.4.4 version: 5.4.4 @@ -164,25 +164,25 @@ importers: version: 16.4.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@6.0.2) typedoc: specifier: ^0.28.18 - version: 0.28.18(typescript@5.9.3) + version: 0.28.18(typescript@6.0.2) typedoc-github-theme: specifier: ^0.4.0 - version: 0.4.0(typedoc@0.28.18(typescript@5.9.3)) + version: 0.4.0(typedoc@0.28.18(typescript@6.0.2)) typedoc-plugin-inline-sources: specifier: ^1.3.0 - version: 1.3.0(typedoc@0.28.18(typescript@5.9.3)) + version: 1.3.0(typedoc@0.28.18(typescript@6.0.2)) typedoc-plugin-missing-exports: specifier: ^4.0.0 - version: 4.1.2(typedoc@0.28.18(typescript@5.9.3)) + version: 4.1.2(typedoc@0.28.18(typescript@6.0.2)) typedoc-plugin-rename-defaults: specifier: ^0.7.3 - version: 0.7.3(typedoc@0.28.18(typescript@5.9.3)) + version: 0.7.3(typedoc@0.28.18(typescript@6.0.2)) typescript: - specifier: ^5.8.3 - version: 5.9.3 + specifier: ^6 + version: 6.0.2 vite: specifier: ^6.3.5 version: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) @@ -191,13 +191,13 @@ importers: version: 0.8.2 vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.1.1(typescript@6.0.2)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^4.1.2 version: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) vocs: specifier: 1.4.1 - version: 1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3) + version: 1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@6.0.2) packages: @@ -8488,8 +8488,8 @@ packages: peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@6.0.2: + resolution: {integrity: sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ==} engines: {node: '>=14.17'} hasBin: true @@ -9233,18 +9233,18 @@ snapshots: optionalDependencies: graphql: 16.13.2 - '@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@5.9.3)': + '@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@6.0.2)': dependencies: - '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@5.9.3) + '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@6.0.2) graphql: 16.13.2 - typescript: 5.9.3 + typescript: 6.0.2 - '@aave/account@0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': + '@aave/account@0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': optionalDependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) '@adobe/css-tools@4.4.4': {} @@ -9724,16 +9724,16 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@coinbase/cdp-sdk': 1.44.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@coinbase/cdp-sdk': 1.44.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) + ox: 0.6.9(typescript@6.0.2)(zod@3.25.76) preact: 10.24.2 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) zustand: 5.0.3(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' @@ -9750,11 +9750,11 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@bigmi/core@0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))': + '@bigmi/core@0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))': dependencies: '@noble/hashes': 1.8.0 bech32: 2.0.0 - bitcoinjs-lib: 7.0.1(typescript@5.9.3) + bitcoinjs-lib: 7.0.1(typescript@6.0.2) bs58: 6.0.0 eventemitter3: 5.0.4 zustand: 5.0.12(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) @@ -9804,15 +9804,15 @@ snapshots: dependencies: '@noble/curves': 1.9.7 - '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: - '@graphql-codegen/cli': 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@graphql-codegen/cli': 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) '@graphql-codegen/typescript-graphql-request': 6.4.0(graphql-request@6.1.0(graphql@16.13.2))(graphql-tag@2.12.6(graphql@16.13.2))(graphql@16.13.2) '@tanstack/react-query': 5.96.1(react@19.2.4) graphql: 16.13.2 graphql-request: 6.1.0(graphql@16.13.2) react: 19.2.4 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@fastify/websocket' - '@parcel/watcher' @@ -9875,19 +9875,19 @@ snapshots: picocolors: 1.1.1 sisteransi: 1.0.5 - '@coinbase/cdp-sdk@1.44.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@coinbase/cdp-sdk@1.44.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: - '@solana-program/system': 0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana-program/token': 0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76) + '@solana-program/system': 0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)) + '@solana-program/token': 0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)) + '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + abitype: 1.0.6(typescript@6.0.2)(zod@3.25.76) axios: 1.13.5 axios-retry: 4.5.0(axios@1.13.5) jose: 6.1.3 md5: 2.3.0 uncrypto: 0.1.3 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) zod: 3.25.76 transitivePeerDependencies: - bufferutil @@ -9911,15 +9911,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) + ox: 0.6.9(typescript@6.0.2)(zod@3.25.76) preact: 10.24.2 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) zustand: 5.0.3(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' @@ -9931,11 +9931,11 @@ snapshots: - utf-8-validate - zod - '@commitlint/cli@20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@5.9.3)': + '@commitlint/cli@20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@6.0.2)': dependencies: '@commitlint/format': 20.5.0 '@commitlint/lint': 20.5.0 - '@commitlint/load': 20.5.0(@types/node@25.3.0)(typescript@5.9.3) + '@commitlint/load': 20.5.0(@types/node@25.3.0)(typescript@6.0.2) '@commitlint/read': 20.5.0(conventional-commits-parser@6.4.0) '@commitlint/types': 20.5.0 tinyexec: 1.0.2 @@ -9984,14 +9984,14 @@ snapshots: '@commitlint/rules': 20.5.0 '@commitlint/types': 20.5.0 - '@commitlint/load@20.5.0(@types/node@25.3.0)(typescript@5.9.3)': + '@commitlint/load@20.5.0(@types/node@25.3.0)(typescript@6.0.2)': dependencies: '@commitlint/config-validator': 20.5.0 '@commitlint/execute-rule': 20.0.0 '@commitlint/resolve-extends': 20.5.0 '@commitlint/types': 20.5.0 - cosmiconfig: 9.0.1(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3) + cosmiconfig: 9.0.1(typescript@6.0.2) + cosmiconfig-typescript-loader: 6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@6.0.2))(typescript@6.0.2) is-plain-obj: 4.1.0 lodash.mergewith: 4.6.2 picocolors: 1.1.1 @@ -10391,11 +10391,11 @@ snapshots: '@fortawesome/fontawesome-free@6.7.2': {} - '@gemini-wallet/core@0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@gemini-wallet/core@0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: '@metamask/rpc-errors': 7.0.2 eventemitter3: 5.0.1 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - supports-color @@ -10407,18 +10407,18 @@ snapshots: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@5.9.3))(graphql@16.13.2)(typescript@5.9.3)': + '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@6.0.2))(graphql@16.13.2)(typescript@6.0.2)': dependencies: - '@0no-co/graphqlsp': 1.15.2(graphql@16.13.2)(typescript@5.9.3) - '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@5.9.3) + '@0no-co/graphqlsp': 1.15.2(graphql@16.13.2)(typescript@6.0.2) + '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@6.0.2) graphql: 16.13.2 - typescript: 5.9.3 + typescript: 6.0.2 - '@gql.tada/internal@1.0.8(graphql@16.13.2)(typescript@5.9.3)': + '@gql.tada/internal@1.0.8(graphql@16.13.2)(typescript@6.0.2)': dependencies: '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) graphql: 16.13.2 - typescript: 5.9.3 + typescript: 6.0.2 '@graphql-codegen/add@5.0.3(graphql@16.13.2)': dependencies: @@ -10426,7 +10426,7 @@ snapshots: graphql: 16.13.2 tslib: 2.6.3 - '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: '@babel/generator': 7.29.1 '@babel/template': 7.28.6 @@ -10446,11 +10446,11 @@ snapshots: '@graphql-tools/utils': 10.11.0(graphql@16.13.2) '@whatwg-node/fetch': 0.10.13 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.9.3) + cosmiconfig: 8.3.6(typescript@6.0.2) debounce: 1.2.1 detect-indent: 6.1.0 graphql: 16.13.2 - graphql-config: 5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) + graphql-config: 5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) inquirer: 8.2.7(@types/node@25.3.0) is-glob: 4.0.3 jiti: 1.21.7 @@ -10990,20 +10990,20 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@lifi/sdk@3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)': + '@lifi/sdk@3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)': dependencies: - '@bigmi/core': 0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4)) + '@bigmi/core': 0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4)) '@bitcoinerlab/secp256k1': 1.2.0 - '@lifi/types': 17.65.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@mysten/sui': 1.45.2(typescript@5.9.3) - '@mysten/wallet-standard': 0.19.9(typescript@5.9.3) + '@lifi/types': 17.65.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@mysten/sui': 1.45.2(typescript@6.0.2) + '@mysten/wallet-standard': 0.19.9(typescript@6.0.2) '@noble/curves': 1.9.7 - '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) - '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)) + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) bech32: 2.0.0 - bitcoinjs-lib: 7.0.1(typescript@5.9.3) + bitcoinjs-lib: 7.0.1(typescript@6.0.2) bs58: 6.0.0 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@gql.tada/svelte-support' - '@gql.tada/vue-support' @@ -11016,9 +11016,9 @@ snapshots: - utf-8-validate - zod - '@lifi/types@17.65.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@lifi/types@17.65.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -11313,7 +11313,7 @@ snapshots: '@mysten/utils': 0.2.0 '@scure/base': 1.2.6 - '@mysten/sui@1.45.2(typescript@5.9.3)': + '@mysten/sui@1.45.2(typescript@6.0.2)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) '@mysten/bcs': 1.9.2 @@ -11326,10 +11326,10 @@ snapshots: '@scure/base': 1.2.6 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - gql.tada: 1.9.0(graphql@16.13.2)(typescript@5.9.3) + gql.tada: 1.9.0(graphql@16.13.2)(typescript@6.0.2) graphql: 16.13.2 poseidon-lite: 0.2.1 - valibot: 1.2.0(typescript@5.9.3) + valibot: 1.2.0(typescript@6.0.2) transitivePeerDependencies: - '@gql.tada/svelte-support' - '@gql.tada/vue-support' @@ -11339,9 +11339,9 @@ snapshots: dependencies: '@scure/base': 1.2.6 - '@mysten/wallet-standard@0.19.9(typescript@5.9.3)': + '@mysten/wallet-standard@0.19.9(typescript@6.0.2)': dependencies: - '@mysten/sui': 1.45.2(typescript@5.9.3) + '@mysten/sui': 1.45.2(typescript@6.0.2) '@wallet-standard/core': 1.1.1 transitivePeerDependencies: - '@gql.tada/svelte-support' @@ -12253,41 +12253,41 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': + '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': dependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) '@vanilla-extract/css': 1.17.3(babel-plugin-macros@3.1.0) '@vanilla-extract/dynamic': 2.1.4 '@vanilla-extract/sprinkles': 1.6.4(@vanilla-extract/css@1.17.3(babel-plugin-macros@3.1.0)) clsx: 2.1.1 - cuer: 0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + cuer: 0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.2.4) ua-parser-js: 1.0.41 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - babel-plugin-macros - typescript - '@reown/appkit-adapter-wagmi@1.8.19(c0f8bf6938db1ad3e3bcf55c52af5632)': + '@reown/appkit-adapter-wagmi@1.8.19(ab395d0f2042d474c7f1083f332077c2)': dependencies: - '@reown/appkit': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.8.19 - '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) optionalDependencies: - '@wagmi/connectors': 7.2.1(2029316eabd53470a7a21d496ab8520c) + '@wagmi/connectors': 7.2.1(1782595f9cf129a15c50e72408b336a5) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12327,57 +12327,57 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4)': + '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.22.4)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.22.4) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12406,13 +12406,13 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12441,12 +12441,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) lit: 3.3.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: @@ -12477,12 +12477,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) lit: 3.3.0 valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: @@ -12525,13 +12525,13 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -12562,14 +12562,14 @@ snapshots: - valtio - zod - '@reown/appkit-scaffold-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -12604,11 +12604,11 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 transitivePeerDependencies: @@ -12639,12 +12639,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@phosphor-icons/webcomponents': 2.1.5 - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 transitivePeerDependencies: @@ -12675,16 +12675,16 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12713,21 +12713,21 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-utils@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.8.19 - '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@wallet-standard/wallet': 1.1.0 '@walletconnect/logger': 3.0.2 - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12760,9 +12760,9 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-wallet@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@reown/appkit-wallet@1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.7.8 '@walletconnect/logger': 2.1.2 zod: 3.22.4 @@ -12771,9 +12771,9 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit-wallet@1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@reown/appkit-wallet@1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.22.4) '@reown/appkit-polyfills': 1.8.19 '@walletconnect/logger': 3.0.2 zod: 3.22.4 @@ -12782,21 +12782,21 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@walletconnect/types': 2.21.0 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12825,21 +12825,21 @@ snapshots: - utf-8-validate - zod - '@reown/appkit@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@reown/appkit-polyfills': 1.8.19 - '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) bs58: 6.0.0 semver: 7.7.2 valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: '@lit/react': 1.0.8(@types/react@19.2.14) transitivePeerDependencies: @@ -12963,9 +12963,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -12973,10 +12973,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - bufferutil - typescript @@ -13077,11 +13077,11 @@ snapshots: '@shikijs/core': 1.29.2 '@shikijs/types': 1.29.2 - '@shikijs/twoslash@1.29.2(typescript@5.9.3)': + '@shikijs/twoslash@1.29.2(typescript@6.0.2)': dependencies: '@shikijs/core': 1.29.2 '@shikijs/types': 1.29.2 - twoslash: 0.2.12(typescript@5.9.3) + twoslash: 0.2.12(typescript@6.0.2) transitivePeerDependencies: - supports-color - typescript @@ -13106,463 +13106,463 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))': dependencies: - '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) - '@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))': dependencies: - '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) - '@solana/accounts@5.5.1(typescript@5.9.3)': + '@solana/accounts@5.5.1(typescript@6.0.2)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/addresses@5.5.1(typescript@5.9.3)': + '@solana/addresses@5.5.1(typescript@6.0.2)': dependencies: - '@solana/assertions': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) + '@solana/assertions': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/assertions@5.5.1(typescript@5.9.3)': + '@solana/assertions@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 '@solana/buffer-layout@4.0.1': dependencies: buffer: 6.0.3 - '@solana/codecs-core@2.3.0(typescript@5.9.3)': + '@solana/codecs-core@2.3.0(typescript@6.0.2)': dependencies: - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/errors': 2.3.0(typescript@6.0.2) + typescript: 6.0.2 - '@solana/codecs-core@5.5.1(typescript@5.9.3)': + '@solana/codecs-core@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/codecs-data-structures@5.5.1(typescript@5.9.3)': + '@solana/codecs-data-structures@5.5.1(typescript@6.0.2)': dependencies: - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/codecs-numbers@2.3.0(typescript@5.9.3)': + '@solana/codecs-numbers@2.3.0(typescript@6.0.2)': dependencies: - '@solana/codecs-core': 2.3.0(typescript@5.9.3) - '@solana/errors': 2.3.0(typescript@5.9.3) - typescript: 5.9.3 + '@solana/codecs-core': 2.3.0(typescript@6.0.2) + '@solana/errors': 2.3.0(typescript@6.0.2) + typescript: 6.0.2 - '@solana/codecs-numbers@5.5.1(typescript@5.9.3)': + '@solana/codecs-numbers@5.5.1(typescript@6.0.2)': dependencies: - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/codecs-strings@5.5.1(typescript@5.9.3)': + '@solana/codecs-strings@5.5.1(typescript@6.0.2)': dependencies: - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/codecs@5.5.1(typescript@5.9.3)': + '@solana/codecs@5.5.1(typescript@6.0.2)': dependencies: - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/options': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-data-structures': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/options': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/errors@2.3.0(typescript@5.9.3)': + '@solana/errors@2.3.0(typescript@6.0.2)': dependencies: chalk: 5.6.2 commander: 14.0.3 - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/errors@5.5.1(typescript@5.9.3)': + '@solana/errors@5.5.1(typescript@6.0.2)': dependencies: chalk: 5.6.2 commander: 14.0.2 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/fast-stable-stringify@5.5.1(typescript@5.9.3)': + '@solana/fast-stable-stringify@5.5.1(typescript@6.0.2)': optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/functional@5.5.1(typescript@5.9.3)': + '@solana/functional@5.5.1(typescript@6.0.2)': optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/instruction-plans@5.5.1(typescript@5.9.3)': + '@solana/instruction-plans@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/promises': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/instructions': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/promises': 5.5.1(typescript@6.0.2) + '@solana/transaction-messages': 5.5.1(typescript@6.0.2) + '@solana/transactions': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/instructions@5.5.1(typescript@5.9.3)': + '@solana/instructions@5.5.1(typescript@6.0.2)': dependencies: - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/keys@5.5.1(typescript@5.9.3)': + '@solana/keys@5.5.1(typescript@6.0.2)': dependencies: - '@solana/assertions': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) + '@solana/assertions': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/accounts': 5.5.1(typescript@5.9.3) - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/instruction-plans': 5.5.1(typescript@5.9.3) - '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/offchain-messages': 5.5.1(typescript@5.9.3) - '@solana/plugin-core': 5.5.1(typescript@5.9.3) - '@solana/programs': 5.5.1(typescript@5.9.3) - '@solana/rpc': 5.5.1(typescript@5.9.3) - '@solana/rpc-api': 5.5.1(typescript@5.9.3) - '@solana/rpc-parsed-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/signers': 5.5.1(typescript@5.9.3) - '@solana/sysvars': 5.5.1(typescript@5.9.3) - '@solana/transaction-confirmation': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': + dependencies: + '@solana/accounts': 5.5.1(typescript@6.0.2) + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/functional': 5.5.1(typescript@6.0.2) + '@solana/instruction-plans': 5.5.1(typescript@6.0.2) + '@solana/instructions': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/offchain-messages': 5.5.1(typescript@6.0.2) + '@solana/plugin-core': 5.5.1(typescript@6.0.2) + '@solana/programs': 5.5.1(typescript@6.0.2) + '@solana/rpc': 5.5.1(typescript@6.0.2) + '@solana/rpc-api': 5.5.1(typescript@6.0.2) + '@solana/rpc-parsed-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) + '@solana/signers': 5.5.1(typescript@6.0.2) + '@solana/sysvars': 5.5.1(typescript@6.0.2) + '@solana/transaction-confirmation': 5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@solana/transaction-messages': 5.5.1(typescript@6.0.2) + '@solana/transactions': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/nominal-types@5.5.1(typescript@5.9.3)': + '@solana/nominal-types@5.5.1(typescript@6.0.2)': optionalDependencies: - typescript: 5.9.3 - - '@solana/offchain-messages@5.5.1(typescript@5.9.3)': - dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) + typescript: 6.0.2 + + '@solana/offchain-messages@5.5.1(typescript@6.0.2)': + dependencies: + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-data-structures': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/options@5.5.1(typescript@5.9.3)': + '@solana/options@5.5.1(typescript@6.0.2)': dependencies: - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-data-structures': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/plugin-core@5.5.1(typescript@5.9.3)': + '@solana/plugin-core@5.5.1(typescript@6.0.2)': optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/programs@5.5.1(typescript@5.9.3)': + '@solana/programs@5.5.1(typescript@6.0.2)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/promises@5.5.1(typescript@5.9.3)': + '@solana/promises@5.5.1(typescript@6.0.2)': optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-api@5.5.1(typescript@5.9.3)': - dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/rpc-parsed-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + typescript: 6.0.2 + + '@solana/rpc-api@5.5.1(typescript@6.0.2)': + dependencies: + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/rpc-parsed-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec': 5.5.1(typescript@6.0.2) + '@solana/rpc-transformers': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) + '@solana/transaction-messages': 5.5.1(typescript@6.0.2) + '@solana/transactions': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-parsed-types@5.5.1(typescript@5.9.3)': + '@solana/rpc-parsed-types@5.5.1(typescript@6.0.2)': optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/rpc-spec-types@5.5.1(typescript@5.9.3)': + '@solana/rpc-spec-types@5.5.1(typescript@6.0.2)': optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/rpc-spec@5.5.1(typescript@5.9.3)': + '@solana/rpc-spec@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/rpc-subscriptions-api@5.5.1(typescript@5.9.3)': + '@solana/rpc-subscriptions-api@5.5.1(typescript@6.0.2)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/rpc-subscriptions-spec': 5.5.1(typescript@6.0.2) + '@solana/rpc-transformers': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) + '@solana/transaction-messages': 5.5.1(typescript@6.0.2) + '@solana/transactions': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-subscriptions-channel-websocket@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/rpc-subscriptions-channel-websocket@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) - '@solana/subscribable': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/functional': 5.5.1(typescript@6.0.2) + '@solana/rpc-subscriptions-spec': 5.5.1(typescript@6.0.2) + '@solana/subscribable': 5.5.1(typescript@6.0.2) ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@solana/rpc-subscriptions-spec@5.5.1(typescript@5.9.3)': + '@solana/rpc-subscriptions-spec@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/promises': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/subscribable': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/promises': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec-types': 5.5.1(typescript@6.0.2) + '@solana/subscribable': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 - - '@solana/rpc-subscriptions@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/fast-stable-stringify': 5.5.1(typescript@5.9.3) - '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/promises': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions-api': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions-channel-websocket': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/rpc-subscriptions-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/subscribable': 5.5.1(typescript@5.9.3) + typescript: 6.0.2 + + '@solana/rpc-subscriptions@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': + dependencies: + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/fast-stable-stringify': 5.5.1(typescript@6.0.2) + '@solana/functional': 5.5.1(typescript@6.0.2) + '@solana/promises': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-subscriptions-api': 5.5.1(typescript@6.0.2) + '@solana/rpc-subscriptions-channel-websocket': 5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@solana/rpc-subscriptions-spec': 5.5.1(typescript@6.0.2) + '@solana/rpc-transformers': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) + '@solana/subscribable': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/rpc-transformers@5.5.1(typescript@5.9.3)': + '@solana/rpc-transformers@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/functional': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc-transport-http@5.5.1(typescript@5.9.3)': + '@solana/rpc-transport-http@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec-types': 5.5.1(typescript@6.0.2) undici-types: 7.22.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/rpc-types@5.5.1(typescript@5.9.3)': + '@solana/rpc-types@5.5.1(typescript@6.0.2)': dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/rpc@5.5.1(typescript@5.9.3)': - dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/fast-stable-stringify': 5.5.1(typescript@5.9.3) - '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/rpc-api': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec': 5.5.1(typescript@5.9.3) - '@solana/rpc-spec-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-transformers': 5.5.1(typescript@5.9.3) - '@solana/rpc-transport-http': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/rpc@5.5.1(typescript@6.0.2)': + dependencies: + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/fast-stable-stringify': 5.5.1(typescript@6.0.2) + '@solana/functional': 5.5.1(typescript@6.0.2) + '@solana/rpc-api': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec': 5.5.1(typescript@6.0.2) + '@solana/rpc-spec-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-transformers': 5.5.1(typescript@6.0.2) + '@solana/rpc-transport-http': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/signers@5.5.1(typescript@5.9.3)': - dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) - '@solana/offchain-messages': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/signers@5.5.1(typescript@6.0.2)': + dependencies: + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/instructions': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) + '@solana/offchain-messages': 5.5.1(typescript@6.0.2) + '@solana/transaction-messages': 5.5.1(typescript@6.0.2) + '@solana/transactions': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/subscribable@5.5.1(typescript@5.9.3)': + '@solana/subscribable@5.5.1(typescript@6.0.2)': dependencies: - '@solana/errors': 5.5.1(typescript@5.9.3) + '@solana/errors': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@solana/sysvars@5.5.1(typescript@5.9.3)': + '@solana/sysvars@5.5.1(typescript@6.0.2)': dependencies: - '@solana/accounts': 5.5.1(typescript@5.9.3) - '@solana/codecs': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/accounts': 5.5.1(typescript@6.0.2) + '@solana/codecs': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transaction-confirmation@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': - dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/promises': 5.5.1(typescript@5.9.3) - '@solana/rpc': 5.5.1(typescript@5.9.3) - '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) - '@solana/transactions': 5.5.1(typescript@5.9.3) + '@solana/transaction-confirmation@5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': + dependencies: + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/promises': 5.5.1(typescript@6.0.2) + '@solana/rpc': 5.5.1(typescript@6.0.2) + '@solana/rpc-subscriptions': 5.5.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) + '@solana/transaction-messages': 5.5.1(typescript@6.0.2) + '@solana/transactions': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - fastestsmallesttextencoderdecoder - utf-8-validate - '@solana/transaction-messages@5.5.1(typescript@5.9.3)': - dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) + '@solana/transaction-messages@5.5.1(typescript@6.0.2)': + dependencies: + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-data-structures': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/functional': 5.5.1(typescript@6.0.2) + '@solana/instructions': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/transactions@5.5.1(typescript@5.9.3)': - dependencies: - '@solana/addresses': 5.5.1(typescript@5.9.3) - '@solana/codecs-core': 5.5.1(typescript@5.9.3) - '@solana/codecs-data-structures': 5.5.1(typescript@5.9.3) - '@solana/codecs-numbers': 5.5.1(typescript@5.9.3) - '@solana/codecs-strings': 5.5.1(typescript@5.9.3) - '@solana/errors': 5.5.1(typescript@5.9.3) - '@solana/functional': 5.5.1(typescript@5.9.3) - '@solana/instructions': 5.5.1(typescript@5.9.3) - '@solana/keys': 5.5.1(typescript@5.9.3) - '@solana/nominal-types': 5.5.1(typescript@5.9.3) - '@solana/rpc-types': 5.5.1(typescript@5.9.3) - '@solana/transaction-messages': 5.5.1(typescript@5.9.3) + '@solana/transactions@5.5.1(typescript@6.0.2)': + dependencies: + '@solana/addresses': 5.5.1(typescript@6.0.2) + '@solana/codecs-core': 5.5.1(typescript@6.0.2) + '@solana/codecs-data-structures': 5.5.1(typescript@6.0.2) + '@solana/codecs-numbers': 5.5.1(typescript@6.0.2) + '@solana/codecs-strings': 5.5.1(typescript@6.0.2) + '@solana/errors': 5.5.1(typescript@6.0.2) + '@solana/functional': 5.5.1(typescript@6.0.2) + '@solana/instructions': 5.5.1(typescript@6.0.2) + '@solana/keys': 5.5.1(typescript@6.0.2) + '@solana/nominal-types': 5.5.1(typescript@6.0.2) + '@solana/rpc-types': 5.5.1(typescript@6.0.2) + '@solana/transaction-messages': 5.5.1(typescript@6.0.2) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - fastestsmallesttextencoderdecoder - '@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': + '@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))': dependencies: '@solana/wallet-standard-features': 1.3.0 - '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 eventemitter3: 5.0.4 @@ -13572,13 +13572,13 @@ snapshots: '@wallet-standard/base': 1.1.0 '@wallet-standard/features': 1.1.0 - '@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.28.6 '@noble/curves': 1.9.7 '@noble/hashes': 1.4.0 '@solana/buffer-layout': 4.0.1 - '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + '@solana/codecs-numbers': 2.3.0(typescript@6.0.2) agentkeepalive: 4.6.0 bn.js: 5.2.3 borsh: 0.7.0 @@ -13656,10 +13656,10 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@t3-oss/env-core@0.13.11(typescript@5.9.3)(valibot@1.2.0(typescript@5.9.3))(zod@3.25.76)': + '@t3-oss/env-core@0.13.11(typescript@6.0.2)(valibot@1.2.0(typescript@6.0.2))(zod@3.25.76)': optionalDependencies: - typescript: 5.9.3 - valibot: 1.2.0(typescript@5.9.3) + typescript: 6.0.2 + valibot: 1.2.0(typescript@6.0.2) zod: 3.25.76 '@tailwindcss/node@4.1.15': @@ -14137,10 +14137,10 @@ snapshots: dependencies: '@types/node': 25.3.0 - '@typescript/vfs@1.6.4(typescript@5.9.3)': + '@typescript/vfs@1.6.4(typescript@6.0.2)': dependencies: debug: 4.4.3(supports-color@5.5.0) - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -14343,9 +14343,9 @@ snapshots: convert-source-map: 2.0.0 tinyrainbow: 3.1.0 - '@wagmi/cli@2.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@wagmi/cli@2.10.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: - abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) + abitype: 1.2.3(typescript@6.0.2)(zod@4.3.6) bundle-require: 5.1.0(esbuild@0.25.12) cac: 6.7.14 change-case: 5.4.4 @@ -14361,29 +14361,29 @@ snapshots: picocolors: 1.1.1 picomatch: 3.0.1 prettier: 3.8.1 - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) zod: 4.3.6 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@wagmi/connectors@6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76)': + '@wagmi/connectors@6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76)': dependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@gemini-wallet/core': 0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@gemini-wallet/core': 0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - porto: 0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + porto: 0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -14422,45 +14422,45 @@ snapshots: - wagmi - zod - '@wagmi/connectors@7.2.1(2029316eabd53470a7a21d496ab8520c)': + '@wagmi/connectors@7.2.1(1782595f9cf129a15c50e72408b336a5)': dependencies: - '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - porto: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) - typescript: 5.9.3 + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + porto: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + typescript: 6.0.2 optional: true - '@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.7(typescript@5.9.3) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + mipd: 0.0.7(typescript@6.0.2) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) zustand: 5.0.0(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/query-core': 5.96.1 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - '@types/react' - immer - react - use-sync-external-store - '@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: eventemitter3: 5.0.1 - mipd: 0.0.7(typescript@5.9.3) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + mipd: 0.0.7(typescript@6.0.2) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) zustand: 5.0.0(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/query-core': 5.96.1 - ox: 0.14.7(typescript@5.9.3)(zod@3.25.76) - typescript: 5.9.3 + ox: 0.14.7(typescript@6.0.2)(zod@3.25.76) + typescript: 6.0.2 transitivePeerDependencies: - '@types/react' - immer @@ -14494,7 +14494,7 @@ snapshots: dependencies: '@wallet-standard/base': 1.1.0 - '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -14508,7 +14508,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14538,7 +14538,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -14552,7 +14552,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14582,7 +14582,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -14596,7 +14596,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.23.7 - '@walletconnect/utils': 2.23.7(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@3.25.76) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.44.0 events: 3.3.0 @@ -14630,18 +14630,18 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/types': 2.21.1 - '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14769,16 +14769,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14805,16 +14805,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14841,16 +14841,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: - '@walletconnect/core': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 3.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.23.7 - '@walletconnect/utils': 2.23.7(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@3.25.76) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14968,7 +14968,7 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -14977,9 +14977,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -15008,7 +15008,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -15017,9 +15017,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -15048,7 +15048,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -15057,9 +15057,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 3.0.2 - '@walletconnect/sign-client': 2.23.7(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) '@walletconnect/types': 2.23.7 - '@walletconnect/utils': 2.23.7(typescript@5.9.3)(zod@3.25.76) + '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@3.25.76) es-toolkit: 1.44.0 events: 3.3.0 transitivePeerDependencies: @@ -15088,7 +15088,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -15106,7 +15106,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15132,7 +15132,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -15150,7 +15150,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15176,7 +15176,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.23.7(typescript@5.9.3)(zod@3.25.76)': + '@walletconnect/utils@2.23.7(typescript@6.0.2)(zod@3.25.76)': dependencies: '@msgpack/msgpack': 3.1.3 '@noble/ciphers': 1.3.0 @@ -15195,7 +15195,7 @@ snapshots: '@walletconnect/window-metadata': 1.0.1 blakejs: 1.2.1 detect-browser: 5.3.0 - ox: 0.9.3(typescript@5.9.3)(zod@3.25.76) + ox: 0.9.3(typescript@6.0.2)(zod@3.25.76) uint8arrays: 3.1.1 transitivePeerDependencies: - '@azure/app-configuration' @@ -15229,18 +15229,18 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 - '@web3icons/common@0.11.46(typescript@5.9.3)': + '@web3icons/common@0.11.46(typescript@6.0.2)': dependencies: - typescript: 5.9.3 + typescript: 6.0.2 - '@web3icons/core@4.0.51(typescript@5.9.3)': + '@web3icons/core@4.0.51(typescript@6.0.2)': dependencies: - '@web3icons/common': 0.11.46(typescript@5.9.3) - typescript: 5.9.3 + '@web3icons/common': 0.11.46(typescript@6.0.2) + typescript: 6.0.2 - '@web3icons/react@4.1.17(react@19.2.4)(typescript@5.9.3)': + '@web3icons/react@4.1.17(react@19.2.4)(typescript@6.0.2)': dependencies: - '@web3icons/common': 0.11.46(typescript@5.9.3) + '@web3icons/common': 0.11.46(typescript@6.0.2) react: 19.2.4 transitivePeerDependencies: - typescript @@ -15822,29 +15822,29 @@ snapshots: '@zag-js/utils@1.35.3': {} - abitype@1.0.6(typescript@5.9.3)(zod@3.25.76): + abitype@1.0.6(typescript@6.0.2)(zod@3.25.76): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 zod: 3.25.76 - abitype@1.0.8(typescript@5.9.3)(zod@3.25.76): + abitype@1.0.8(typescript@6.0.2)(zod@3.25.76): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 zod: 3.25.76 - abitype@1.2.3(typescript@5.9.3)(zod@3.22.4): + abitype@1.2.3(typescript@6.0.2)(zod@3.22.4): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 zod: 3.22.4 - abitype@1.2.3(typescript@5.9.3)(zod@3.25.76): + abitype@1.2.3(typescript@6.0.2)(zod@3.25.76): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 zod: 3.25.76 - abitype@1.2.3(typescript@5.9.3)(zod@4.3.6): + abitype@1.2.3(typescript@6.0.2)(zod@4.3.6): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 zod: 4.3.6 acorn-jsx@5.3.2(acorn@8.16.0): @@ -16069,14 +16069,14 @@ snapshots: uint8array-tools: 0.0.9 varuint-bitcoin: 2.0.0 - bitcoinjs-lib@7.0.1(typescript@5.9.3): + bitcoinjs-lib@7.0.1(typescript@6.0.2): dependencies: '@noble/hashes': 1.8.0 bech32: 2.0.0 bip174: 3.0.0 bs58check: 4.0.0 uint8array-tools: 0.0.9 - valibot: 1.2.0(typescript@5.9.3) + valibot: 1.2.0(typescript@6.0.2) varuint-bitcoin: 2.0.0 transitivePeerDependencies: - typescript @@ -16400,9 +16400,9 @@ snapshots: confbox@0.1.8: {} - connectkit@1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + connectkit@1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): dependencies: - '@aave/account': 0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + '@aave/account': 0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) '@tanstack/react-query': 5.96.1(react@19.2.4) buffer: 6.0.3 detect-browser: 5.3.0 @@ -16414,8 +16414,8 @@ snapshots: react-use-measure: 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) resize-observer-polyfill: 1.5.1 styled-components: 5.3.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@babel/core' - react-is @@ -16459,12 +16459,12 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@6.0.2))(typescript@6.0.2): dependencies: '@types/node': 25.3.0 - cosmiconfig: 9.0.1(typescript@5.9.3) + cosmiconfig: 9.0.1(typescript@6.0.2) jiti: 2.6.1 - typescript: 5.9.3 + typescript: 6.0.2 cosmiconfig@7.1.0: dependencies: @@ -16474,23 +16474,23 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.9.3): + cosmiconfig@8.3.6(typescript@6.0.2): dependencies: import-fresh: 3.3.1 js-yaml: 4.1.1 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 - cosmiconfig@9.0.1(typescript@5.9.3): + cosmiconfig@9.0.1(typescript@6.0.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.1 parse-json: 5.2.0 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 crc-32@1.2.2: {} @@ -16555,13 +16555,13 @@ snapshots: csstype@3.2.3: {} - cuer@0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): + cuer@0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2): dependencies: qr: 0.5.4 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 cytoscape-cose-bilkent@4.1.0(cytoscape@3.33.1): dependencies: @@ -17396,13 +17396,13 @@ snapshots: gopd@1.2.0: {} - gql.tada@1.9.0(graphql@16.13.2)(typescript@5.9.3): + gql.tada@1.9.0(graphql@16.13.2)(typescript@6.0.2): dependencies: '@0no-co/graphql.web': 1.2.0(graphql@16.13.2) - '@0no-co/graphqlsp': 1.15.2(graphql@16.13.2)(typescript@5.9.3) - '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@5.9.3))(graphql@16.13.2)(typescript@5.9.3) - '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@5.9.3) - typescript: 5.9.3 + '@0no-co/graphqlsp': 1.15.2(graphql@16.13.2)(typescript@6.0.2) + '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.15.2(graphql@16.13.2)(typescript@6.0.2))(graphql@16.13.2)(typescript@6.0.2) + '@gql.tada/internal': 1.0.8(graphql@16.13.2)(typescript@6.0.2) + typescript: 6.0.2 transitivePeerDependencies: - '@gql.tada/svelte-support' - '@gql.tada/vue-support' @@ -17410,7 +17410,7 @@ snapshots: graceful-fs@4.2.11: {} - graphql-config@5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10): + graphql-config@5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10): dependencies: '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.13.2) '@graphql-tools/json-file-loader': 8.0.26(graphql@16.13.2) @@ -17418,7 +17418,7 @@ snapshots: '@graphql-tools/merge': 9.1.7(graphql@16.13.2) '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) '@graphql-tools/utils': 10.11.0(graphql@16.13.2) - cosmiconfig: 8.3.6(typescript@5.9.3) + cosmiconfig: 8.3.6(typescript@6.0.2) graphql: 16.13.2 jiti: 2.6.1 minimatch: 9.0.6 @@ -18866,9 +18866,9 @@ snapshots: minisearch@7.2.0: {} - mipd@0.0.7(typescript@5.9.3): + mipd@0.0.7(typescript@6.0.2): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 mlly@1.8.0: dependencies: @@ -19031,7 +19031,7 @@ snapshots: string-width: 6.1.0 strip-ansi: 7.1.2 - ox@0.14.7(typescript@5.9.3)(zod@3.22.4): + ox@0.14.7(typescript@6.0.2)(zod@3.22.4): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -19039,14 +19039,14 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@3.22.4) + abitype: 1.2.3(typescript@6.0.2)(zod@3.22.4) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - zod - ox@0.14.7(typescript@5.9.3)(zod@3.25.76): + ox@0.14.7(typescript@6.0.2)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -19054,14 +19054,14 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - zod - ox@0.14.7(typescript@5.9.3)(zod@4.3.6): + ox@0.14.7(typescript@6.0.2)(zod@4.3.6): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -19069,42 +19069,42 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) + abitype: 1.2.3(typescript@6.0.2)(zod@4.3.6) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - zod - ox@0.6.7(typescript@5.9.3)(zod@3.25.76): + ox@0.6.7(typescript@6.0.2)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + abitype: 1.0.8(typescript@6.0.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - zod - ox@0.6.9(typescript@5.9.3)(zod@3.25.76): + ox@0.6.9(typescript@6.0.2)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - zod - ox@0.9.17(typescript@5.9.3)(zod@4.3.6): + ox@0.9.17(typescript@6.0.2)(zod@4.3.6): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -19112,14 +19112,14 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) + abitype: 1.2.3(typescript@6.0.2)(zod@4.3.6) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - zod - ox@0.9.3(typescript@5.9.3)(zod@3.25.76): + ox@0.9.3(typescript@6.0.2)(zod@3.25.76): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -19127,10 +19127,10 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) eventemitter3: 5.0.1 optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - zod @@ -19323,41 +19323,41 @@ snapshots: style-value-types: 5.0.0 tslib: 2.8.1 - porto@0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + porto@0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): dependencies: - '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) hono: 4.12.2 idb-keyval: 6.2.2 - mipd: 0.0.7(typescript@5.9.3) - ox: 0.9.17(typescript@5.9.3)(zod@4.3.6) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + mipd: 0.0.7(typescript@6.0.2) + ox: 0.9.17(typescript@6.0.2)(zod@4.3.6) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) zod: 4.3.6 zustand: 5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) react: 19.2.4 - typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + typescript: 6.0.2 + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - immer - use-sync-external-store - porto@0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + porto@0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): dependencies: - '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@5.9.3)(zod@3.25.76))(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) hono: 4.12.2 idb-keyval: 6.2.2 - mipd: 0.0.7(typescript@5.9.3) - ox: 0.9.17(typescript@5.9.3)(zod@4.3.6) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + mipd: 0.0.7(typescript@6.0.2) + ox: 0.9.17(typescript@6.0.2)(zod@4.3.6) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) zod: 4.3.6 zustand: 5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) react: 19.2.4 - typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + typescript: 6.0.2 + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) transitivePeerDependencies: - '@types/react' - immer @@ -20333,7 +20333,7 @@ snapshots: ts-log@2.2.7: {} - ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@6.0.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 @@ -20347,15 +20347,15 @@ snapshots: create-require: 1.1.1 diff: 4.0.4 make-error: 1.3.6 - typescript: 5.9.3 + typescript: 6.0.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: '@swc/core': 1.15.13(@swc/helpers@0.5.19) - tsconfck@3.1.6(typescript@5.9.3): + tsconfck@3.1.6(typescript@6.0.2): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 tslib@1.14.1: {} @@ -20376,19 +20376,19 @@ snapshots: twoslash-protocol@0.3.6: {} - twoslash@0.2.12(typescript@5.9.3): + twoslash@0.2.12(typescript@6.0.2): dependencies: - '@typescript/vfs': 1.6.4(typescript@5.9.3) + '@typescript/vfs': 1.6.4(typescript@6.0.2) twoslash-protocol: 0.2.12 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color - twoslash@0.3.6(typescript@5.9.3): + twoslash@0.3.6(typescript@6.0.2): dependencies: - '@typescript/vfs': 1.6.4(typescript@5.9.3) + '@typescript/vfs': 1.6.4(typescript@6.0.2) twoslash-protocol: 0.3.6 - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - supports-color @@ -20400,33 +20400,33 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typedoc-github-theme@0.4.0(typedoc@0.28.18(typescript@5.9.3)): + typedoc-github-theme@0.4.0(typedoc@0.28.18(typescript@6.0.2)): dependencies: - typedoc: 0.28.18(typescript@5.9.3) + typedoc: 0.28.18(typescript@6.0.2) - typedoc-plugin-inline-sources@1.3.0(typedoc@0.28.18(typescript@5.9.3)): + typedoc-plugin-inline-sources@1.3.0(typedoc@0.28.18(typescript@6.0.2)): dependencies: - typedoc: 0.28.18(typescript@5.9.3) + typedoc: 0.28.18(typescript@6.0.2) - typedoc-plugin-missing-exports@4.1.2(typedoc@0.28.18(typescript@5.9.3)): + typedoc-plugin-missing-exports@4.1.2(typedoc@0.28.18(typescript@6.0.2)): dependencies: - typedoc: 0.28.18(typescript@5.9.3) + typedoc: 0.28.18(typescript@6.0.2) - typedoc-plugin-rename-defaults@0.7.3(typedoc@0.28.18(typescript@5.9.3)): + typedoc-plugin-rename-defaults@0.7.3(typedoc@0.28.18(typescript@6.0.2)): dependencies: camelcase: 8.0.0 - typedoc: 0.28.18(typescript@5.9.3) + typedoc: 0.28.18(typescript@6.0.2) - typedoc@0.28.18(typescript@5.9.3): + typedoc@0.28.18(typescript@6.0.2): dependencies: '@gerrit0/mini-shiki': 3.23.0 lunr: 2.3.9 markdown-it: 14.1.1 minimatch: 10.2.5 - typescript: 5.9.3 + typescript: 6.0.2 yaml: 2.8.2 - typescript@5.9.3: {} + typescript@6.0.2: {} ua-parser-js@1.0.41: {} @@ -20610,9 +20610,9 @@ snapshots: v8-compile-cache-lib@3.0.1: {} - valibot@1.2.0(typescript@5.9.3): + valibot@1.2.0(typescript@6.0.2): optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 valtio@1.13.2(@types/react@19.2.14)(react@19.2.4): dependencies: @@ -20656,69 +20656,69 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - viem@2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + abitype: 1.0.8(typescript@6.0.2)(zod@3.25.76) isows: 1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.9.3)(zod@3.25.76) + ox: 0.6.7(typescript@6.0.2)(zod@3.25.76) ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.22.4): + viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.22.4): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@3.22.4) + abitype: 1.2.3(typescript@6.0.2)(zod@3.22.4) isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.14.7(typescript@5.9.3)(zod@3.22.4) + ox: 0.14.7(typescript@6.0.2)(zod@3.22.4) ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.14.7(typescript@5.9.3)(zod@3.25.76) + ox: 0.14.7(typescript@6.0.2)(zod@3.25.76) ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.3.6): + viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@5.9.3)(zod@4.3.6) + abitype: 1.2.3(typescript@6.0.2)(zod@4.3.6) isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.14.7(typescript@5.9.3)(zod@4.3.6) + ox: 0.14.7(typescript@6.0.2)(zod@4.3.6) ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -20747,11 +20747,11 @@ snapshots: vite-plugin-sitemap@0.8.2: {} - vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-tsconfig-paths@6.1.1(typescript@6.0.2)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: debug: 4.4.3(supports-color@5.5.0) globrex: 0.1.2 - tsconfck: 3.1.6(typescript@5.9.3) + tsconfck: 3.1.6(typescript@6.0.2) vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -20817,7 +20817,7 @@ snapshots: transitivePeerDependencies: - msw - vocs@1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3): + vocs@1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@6.0.2): dependencies: '@floating-ui/react': 0.27.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@hono/node-server': 1.19.9(hono@4.12.2) @@ -20835,7 +20835,7 @@ snapshots: '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@shikijs/rehype': 1.29.2 '@shikijs/transformers': 1.29.2 - '@shikijs/twoslash': 1.29.2(typescript@5.9.3) + '@shikijs/twoslash': 1.29.2(typescript@6.0.2) '@tailwindcss/vite': 4.1.15(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) '@vanilla-extract/css': 1.18.0(babel-plugin-macros@3.1.0) '@vanilla-extract/dynamic': 2.1.5 @@ -20885,7 +20885,7 @@ snapshots: serve-static: 1.16.3 shiki: 1.29.2 toml: 3.0.0 - twoslash: 0.3.6(typescript@5.9.3) + twoslash: 0.3.6(typescript@6.0.2) ua-parser-js: 1.0.41 unified: 11.0.5 unist-util-visit: 5.1.0 @@ -20935,16 +20935,16 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): + wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): dependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) - '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) react: 19.2.4 use-sync-external-store: 1.4.0(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) optionalDependencies: - typescript: 5.9.3 + typescript: 6.0.2 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' diff --git a/tsconfig.json b/tsconfig.json index df3a50b5..d77a179b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,8 @@ { "compilerOptions": { "allowJs": false, - "allowSyntheticDefaultImports": true, - "baseUrl": "./", - "esModuleInterop": false, + "esModuleInterop": true, "forceConsistentCasingInFileNames": true, - "isolatedModules": true, "jsx": "react-jsx", "lib": ["DOM", "DOM.Iterable", "ESNext"], "module": "ESNext", @@ -19,7 +16,6 @@ "strict": true, "target": "ESNext", "types": ["vitest/globals", "@testing-library/jest-dom/vitest"], - "useDefineForClassFields": true, "paths": { "@/src/*": ["./src/*"], "@packageJSON": ["./package.json"] From 5210922604ab30dc0659b0d759ecd7d0e62ef0f8 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 21:13:02 -0300 Subject: [PATCH 032/115] chore: update zod to v4 --- package.json | 2 +- pnpm-lock.yaml | 410 ++++++++++++++++++++++++------------------------- src/env.ts | 2 +- 3 files changed, 207 insertions(+), 207 deletions(-) diff --git a/package.json b/package.json index 2bf4192f..a87b5617 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "use-debounce": "^10.1.1", "viem": "^2.47.6", "wagmi": "^2.17.5", - "zod": "^3.24.4" + "zod": "^4" }, "devDependencies": { "@biomejs/biome": "2.4.10", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd7cf828..1dd63577 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@bootnodedev/db-subgraph': specifier: ^0.1.2 - version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + version: 0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) '@chakra-ui/react': specifier: ^3.34.0 version: 3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -19,19 +19,19 @@ importers: version: 11.14.0(@types/react@19.2.14)(react@19.2.4) '@lifi/sdk': specifier: ^3.16.3 - version: 3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + version: 3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) '@rainbow-me/rainbowkit': specifier: ^2.2.9 - version: 2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) '@reown/appkit': specifier: ^1.8.19 - version: 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + version: 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-adapter-wagmi': specifier: ^1.8.19 - version: 1.8.19(ab395d0f2042d474c7f1083f332077c2) + version: 1.8.19(2de72959fc98ac49fc53ea96fd4099ec) '@t3-oss/env-core': specifier: ^0.13.11 - version: 0.13.11(typescript@6.0.2)(valibot@1.2.0(typescript@6.0.2))(zod@3.25.76) + version: 0.13.11(typescript@6.0.2)(valibot@1.2.0(typescript@6.0.2))(zod@4.3.6) '@tanstack/react-query': specifier: ^5.96.1 version: 5.96.1(react@19.2.4) @@ -55,7 +55,7 @@ importers: version: 4.1.17(react@19.2.4)(typescript@6.0.2) connectkit: specifier: ^1.9.2 - version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) graphql: specifier: ^16.13.2 version: 16.13.2 @@ -67,7 +67,7 @@ importers: version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) porto: specifier: ^0.2.28 - version: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + version: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@4.3.6))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) react: specifier: 19.2.4 version: 19.2.4 @@ -88,13 +88,13 @@ importers: version: 10.1.1(react@19.2.4) viem: specifier: ^2.47.6 - version: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + version: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) wagmi: specifier: ^2.17.5 - version: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + version: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) zod: - specifier: ^3.24.4 - version: 3.25.76 + specifier: ^4 + version: 4.3.6 devDependencies: '@biomejs/biome': specifier: 2.4.10 @@ -9239,12 +9239,12 @@ snapshots: graphql: 16.13.2 typescript: 6.0.2 - '@aave/account@0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': + '@aave/account@0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))': optionalDependencies: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) '@adobe/css-tools@4.4.4': {} @@ -9724,16 +9724,16 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@coinbase/cdp-sdk': 1.44.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@6.0.2)(zod@3.25.76) + ox: 0.6.9(typescript@6.0.2)(zod@4.3.6) preact: 10.24.2 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) zustand: 5.0.3(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' @@ -9804,7 +9804,7 @@ snapshots: dependencies: '@noble/curves': 1.9.7 - '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))': dependencies: '@graphql-codegen/cli': 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) '@graphql-codegen/typescript-graphql-request': 6.4.0(graphql-request@6.1.0(graphql@16.13.2))(graphql-tag@2.12.6(graphql@16.13.2))(graphql@16.13.2) @@ -9812,7 +9812,7 @@ snapshots: graphql: 16.13.2 graphql-request: 6.1.0(graphql@16.13.2) react: 19.2.4 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@fastify/websocket' - '@parcel/watcher' @@ -9911,15 +9911,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@6.0.2)(zod@3.25.76) + ox: 0.6.9(typescript@6.0.2)(zod@4.3.6) preact: 10.24.2 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) zustand: 5.0.3(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) transitivePeerDependencies: - '@types/react' @@ -10391,11 +10391,11 @@ snapshots: '@fortawesome/fontawesome-free@6.7.2': {} - '@gemini-wallet/core@0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@gemini-wallet/core@0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))': dependencies: '@metamask/rpc-errors': 7.0.2 eventemitter3: 5.0.1 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - supports-color @@ -10990,11 +10990,11 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@lifi/sdk@3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)': + '@lifi/sdk@3.16.3(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)': dependencies: '@bigmi/core': 0.7.1(@types/react@19.2.14)(bs58@6.0.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4)) '@bitcoinerlab/secp256k1': 1.2.0 - '@lifi/types': 17.65.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@lifi/types': 17.65.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@mysten/sui': 1.45.2(typescript@6.0.2) '@mysten/wallet-standard': 0.19.9(typescript@6.0.2) '@noble/curves': 1.9.7 @@ -11003,7 +11003,7 @@ snapshots: bech32: 2.0.0 bitcoinjs-lib: 7.0.1(typescript@6.0.2) bs58: 6.0.0 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@gql.tada/svelte-support' - '@gql.tada/vue-support' @@ -11016,9 +11016,9 @@ snapshots: - utf-8-validate - zod - '@lifi/types@17.65.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@lifi/types@17.65.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - bufferutil - typescript @@ -12253,7 +12253,7 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))': + '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))': dependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) '@vanilla-extract/css': 1.17.3(babel-plugin-macros@3.1.0) @@ -12265,29 +12265,29 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.2.4) ua-parser-js: 1.0.41 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) transitivePeerDependencies: - '@types/react' - babel-plugin-macros - typescript - '@reown/appkit-adapter-wagmi@1.8.19(ab395d0f2042d474c7f1083f332077c2)': + '@reown/appkit-adapter-wagmi@1.8.19(2de72959fc98ac49fc53ea96fd4099ec)': dependencies: - '@reown/appkit': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-polyfills': 1.8.19 - '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) - '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@4.3.6))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) optionalDependencies: - '@wagmi/connectors': 7.2.1(1782595f9cf129a15c50e72408b336a5) + '@wagmi/connectors': 7.2.1(b756c2b269709ceeeadc4224985368d3) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12338,11 +12338,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - bufferutil - typescript @@ -12360,24 +12360,24 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12406,13 +12406,13 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12441,12 +12441,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) lit: 3.3.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: @@ -12477,12 +12477,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) lit: 3.3.0 valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) transitivePeerDependencies: @@ -12525,12 +12525,12 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: @@ -12562,13 +12562,13 @@ snapshots: - valtio - zod - '@reown/appkit-scaffold-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: @@ -12604,10 +12604,10 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 @@ -12639,11 +12639,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@phosphor-icons/webcomponents': 2.1.5 - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 @@ -12675,16 +12675,16 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-polyfills': 1.7.8 '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12713,21 +12713,21 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76)': + '@reown/appkit-utils@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-polyfills': 1.8.19 '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@wallet-standard/wallet': 1.1.0 '@walletconnect/logger': 3.0.2 - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) optionalDependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12782,21 +12782,21 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) '@walletconnect/types': 2.21.0 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) bs58: 6.0.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -12825,21 +12825,21 @@ snapshots: - utf-8-validate - zod - '@reown/appkit@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-controllers': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-pay': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) '@reown/appkit-polyfills': 1.8.19 - '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) - '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) + '@reown/appkit-ui': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@reown/appkit-utils': 1.8.19(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(valtio@2.1.7(@types/react@19.2.14)(react@19.2.4))(zod@4.3.6) '@reown/appkit-wallet': 1.8.19(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) bs58: 6.0.0 semver: 7.7.2 valtio: 2.1.7(@types/react@19.2.14)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) optionalDependencies: '@lit/react': 1.0.8(@types/react@19.2.14) transitivePeerDependencies: @@ -12963,9 +12963,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.59.0': optional: true - '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -12973,10 +12973,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - bufferutil - typescript @@ -13656,11 +13656,11 @@ snapshots: dependencies: '@swc/counter': 0.1.3 - '@t3-oss/env-core@0.13.11(typescript@6.0.2)(valibot@1.2.0(typescript@6.0.2))(zod@3.25.76)': + '@t3-oss/env-core@0.13.11(typescript@6.0.2)(valibot@1.2.0(typescript@6.0.2))(zod@4.3.6)': optionalDependencies: typescript: 6.0.2 valibot: 1.2.0(typescript@6.0.2) - zod: 3.25.76 + zod: 4.3.6 '@tailwindcss/node@4.1.15': dependencies: @@ -14369,19 +14369,19 @@ snapshots: - bufferutil - utf-8-validate - '@wagmi/connectors@6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76)': + '@wagmi/connectors@6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@4.3.6)': dependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) - '@gemini-wallet/core': 0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) + '@gemini-wallet/core': 0.3.2(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - porto: 0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + porto: 0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: @@ -14422,25 +14422,25 @@ snapshots: - wagmi - zod - '@wagmi/connectors@7.2.1(1782595f9cf129a15c50e72408b336a5)': + '@wagmi/connectors@7.2.1(b756c2b269709ceeeadc4224985368d3)': dependencies: - '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@4.3.6))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) optionalDependencies: - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@3.25.76) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(zod@4.3.6) '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - porto: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + porto: 0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@4.3.6))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) typescript: 6.0.2 optional: true - '@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@6.0.2) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) zustand: 5.0.0(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/query-core': 5.96.1 @@ -14451,15 +14451,15 @@ snapshots: - react - use-sync-external-store - '@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))': + '@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@4.3.6))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@6.0.2) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) zustand: 5.0.0(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/query-core': 5.96.1 - ox: 0.14.7(typescript@6.0.2)(zod@3.25.76) + ox: 0.14.7(typescript@6.0.2)(zod@4.3.6) typescript: 6.0.2 transitivePeerDependencies: - '@types/react' @@ -14494,7 +14494,7 @@ snapshots: dependencies: '@wallet-standard/base': 1.1.0 - '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -14508,7 +14508,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14538,7 +14538,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -14552,7 +14552,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -14582,7 +14582,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -14596,7 +14596,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.23.7 - '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@3.25.76) + '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@4.3.6) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.44.0 events: 3.3.0 @@ -14630,18 +14630,18 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/types': 2.21.1 - '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14769,16 +14769,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14805,16 +14805,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14841,16 +14841,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: - '@walletconnect/core': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 3.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.23.7 - '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@3.25.76) + '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@4.3.6) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -14968,7 +14968,7 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -14977,9 +14977,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -15008,7 +15008,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -15017,9 +15017,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -15048,7 +15048,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -15057,9 +15057,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 3.0.2 - '@walletconnect/sign-client': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.23.7(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) '@walletconnect/types': 2.23.7 - '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@3.25.76) + '@walletconnect/utils': 2.23.7(typescript@6.0.2)(zod@4.3.6) es-toolkit: 1.44.0 events: 3.3.0 transitivePeerDependencies: @@ -15088,7 +15088,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -15106,7 +15106,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15132,7 +15132,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -15150,7 +15150,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15176,7 +15176,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.23.7(typescript@6.0.2)(zod@3.25.76)': + '@walletconnect/utils@2.23.7(typescript@6.0.2)(zod@4.3.6)': dependencies: '@msgpack/msgpack': 3.1.3 '@noble/ciphers': 1.3.0 @@ -15195,7 +15195,7 @@ snapshots: '@walletconnect/window-metadata': 1.0.1 blakejs: 1.2.1 detect-browser: 5.3.0 - ox: 0.9.3(typescript@6.0.2)(zod@3.25.76) + ox: 0.9.3(typescript@6.0.2)(zod@4.3.6) uint8arrays: 3.1.1 transitivePeerDependencies: - '@azure/app-configuration' @@ -15827,10 +15827,10 @@ snapshots: typescript: 6.0.2 zod: 3.25.76 - abitype@1.0.8(typescript@6.0.2)(zod@3.25.76): + abitype@1.0.8(typescript@6.0.2)(zod@4.3.6): optionalDependencies: typescript: 6.0.2 - zod: 3.25.76 + zod: 4.3.6 abitype@1.2.3(typescript@6.0.2)(zod@3.22.4): optionalDependencies: @@ -16400,9 +16400,9 @@ snapshots: confbox@0.1.8: {} - connectkit@1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + connectkit@1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)): dependencies: - '@aave/account': 0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)) + '@aave/account': 0.2.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) '@tanstack/react-query': 5.96.1(react@19.2.4) buffer: 6.0.3 detect-browser: 5.3.0 @@ -16414,8 +16414,8 @@ snapshots: react-use-measure: 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) resize-observer-polyfill: 1.5.1 styled-components: 5.3.11(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) transitivePeerDependencies: - '@babel/core' - react-is @@ -19076,28 +19076,28 @@ snapshots: transitivePeerDependencies: - zod - ox@0.6.7(typescript@6.0.2)(zod@3.25.76): + ox@0.6.7(typescript@6.0.2)(zod@4.3.6): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@6.0.2)(zod@3.25.76) + abitype: 1.0.8(typescript@6.0.2)(zod@4.3.6) eventemitter3: 5.0.1 optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: - zod - ox@0.6.9(typescript@6.0.2)(zod@3.25.76): + ox@0.6.9(typescript@6.0.2)(zod@4.3.6): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) + abitype: 1.2.3(typescript@6.0.2)(zod@4.3.6) eventemitter3: 5.0.1 optionalDependencies: typescript: 6.0.2 @@ -19119,7 +19119,7 @@ snapshots: transitivePeerDependencies: - zod - ox@0.9.3(typescript@6.0.2)(zod@3.25.76): + ox@0.9.3(typescript@6.0.2)(zod@4.3.6): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -19127,7 +19127,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.3(typescript@6.0.2)(zod@3.25.76) + abitype: 1.2.3(typescript@6.0.2)(zod@4.3.6) eventemitter3: 5.0.1 optionalDependencies: typescript: 6.0.2 @@ -19323,41 +19323,41 @@ snapshots: style-value-types: 5.0.0 tslib: 2.8.1 - porto@0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + porto@0.2.35(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)): dependencies: - '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) hono: 4.12.2 idb-keyval: 6.2.2 mipd: 0.0.7(typescript@6.0.2) ox: 0.9.17(typescript@6.0.2)(zod@4.3.6) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) zod: 4.3.6 zustand: 5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) react: 19.2.4 typescript: 6.0.2 - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) transitivePeerDependencies: - '@types/react' - immer - use-sync-external-store - porto@0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76)): + porto@0.2.37(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@4.3.6))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)): dependencies: - '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@3.25.76))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/core': 3.4.0(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(ox@0.14.7(typescript@6.0.2)(zod@4.3.6))(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) hono: 4.12.2 idb-keyval: 6.2.2 mipd: 0.0.7(typescript@6.0.2) ox: 0.9.17(typescript@6.0.2)(zod@4.3.6) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) zod: 4.3.6 zustand: 5.0.11(@types/react@19.2.14)(react@19.2.4)(use-sync-external-store@1.4.0(react@19.2.4)) optionalDependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) react: 19.2.4 typescript: 6.0.2 - wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6) transitivePeerDependencies: - '@types/react' - immer @@ -20656,15 +20656,15 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - viem@2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.23.2(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@6.0.2)(zod@3.25.76) + abitype: 1.0.8(typescript@6.0.2)(zod@4.3.6) isows: 1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@6.0.2)(zod@3.25.76) + ox: 0.6.7(typescript@6.0.2)(zod@4.3.6) ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: typescript: 6.0.2 @@ -20935,14 +20935,14 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76): + wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6): dependencies: '@tanstack/react-query': 5.96.1(react@19.2.4) - '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76))(zod@3.25.76))(zod@3.25.76) - '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76)) + '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)))(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6))(zod@4.3.6) + '@wagmi/core': 2.22.1(@tanstack/query-core@5.96.1)(@types/react@19.2.14)(react@19.2.4)(typescript@6.0.2)(use-sync-external-store@1.4.0(react@19.2.4))(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6)) react: 19.2.4 use-sync-external-store: 1.4.0(react@19.2.4) - viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6) optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: diff --git a/src/env.ts b/src/env.ts index 02d3f2ca..1dbce887 100644 --- a/src/env.ts +++ b/src/env.ts @@ -6,7 +6,7 @@ const zBoolean = z .enum(['true', 'false']) .transform((value) => value === 'true') .optional() - .default('true') + .default(true) /** * Represents the environment configuration object. From ce05901817e72ac546b0bac3b7c6c81657d698a1 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:28:20 -0300 Subject: [PATCH 033/115] chore: update @graphql-codegen/cli to v6 --- package.json | 9 +- pnpm-lock.yaml | 1040 ++++++++++++++++++++---------------------------- 2 files changed, 447 insertions(+), 602 deletions(-) diff --git a/package.json b/package.json index a87b5617..c8d9a5b0 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "@biomejs/biome": "2.4.10", "@commitlint/cli": "^20.5.0", "@commitlint/config-conventional": "^20.5.0", - "@graphql-codegen/cli": "^5.0.6", + "@graphql-codegen/cli": "^6", "@graphql-typed-document-node/core": "^3.2.0", "@parcel/watcher": "^2.5.1", "@tanstack/react-query-devtools": "^5.96.1", @@ -91,5 +91,10 @@ "vitest": "^4.1.2", "vocs": "1.4.1" }, - "packageManager": "pnpm@10.33.0" + "packageManager": "pnpm@10.33.0", + "pnpm": { + "overrides": { + "@graphql-codegen/cli": "^6" + } + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1dd63577..7696596c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,9 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@graphql-codegen/cli': ^6 + importers: .: @@ -106,8 +109,8 @@ importers: specifier: ^20.5.0 version: 20.5.0 '@graphql-codegen/cli': - specifier: ^5.0.6 - version: 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) + specifier: ^6 + version: 6.2.1(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) '@graphql-typed-document-node/core': specifier: ^3.2.0 version: 3.2.0(graphql@16.13.2) @@ -247,9 +250,8 @@ packages: peerDependencies: graphql: '*' - '@ardatan/relay-compiler@12.0.3': - resolution: {integrity: sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ==} - hasBin: true + '@ardatan/relay-compiler@13.0.0': + resolution: {integrity: sha512-ite4+xng5McO8MflWCi0un0YmnorTujsDnfPfhzYzAgoJ+jkI1pZj6jtmTl8Jptyi1H+Pa0zlatJIsxDD++ETA==} peerDependencies: graphql: '*' @@ -1270,13 +1272,14 @@ packages: graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 typescript: ^5.0.0 - '@graphql-codegen/add@5.0.3': - resolution: {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} + '@graphql-codegen/add@6.0.0': + resolution: {integrity: sha512-biFdaURX0KTwEJPQ1wkT6BRgNasqgQ5KbCI1a3zwtLtO7XTo7/vKITPylmiU27K5DSOWYnY/1jfSqUAEBuhZrQ==} + engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/cli@5.0.7': - resolution: {integrity: sha512-h/sxYvSaWtxZxo8GtaA8SvcHTyViaaPd7dweF/hmRDpaQU1o3iU3EZxlcJ+oLTunU0tSMFsnrIXm/mhXxI11Cw==} + '@graphql-codegen/cli@6.2.1': + resolution: {integrity: sha512-E1B+5nBda2l89Pci5M0HcEj2Hmx2yhORFX+1T3rmwpQjdOiulo+h9JifWxKomUpjfbmU1YkBSd47CCGLFPU10A==} engines: {node: '>=16'} hasBin: true peerDependencies: @@ -1286,8 +1289,8 @@ packages: '@parcel/watcher': optional: true - '@graphql-codegen/client-preset@4.8.3': - resolution: {integrity: sha512-QpEsPSO9fnRxA6Z66AmBuGcwHjZ6dYSxYo5ycMlYgSPzAbyG8gn/kWljofjJfWqSY+T/lRn+r8IXTH14ml24vQ==} + '@graphql-codegen/client-preset@5.2.4': + resolution: {integrity: sha512-k4f9CoepkVznXRReCHBVnG/FeQVQgIOhgtkaJ6I9FcQRzUkrm9ASmQjOdNdMlZt0DHTU4nbVxIBGZW7gk1RavA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1296,13 +1299,14 @@ packages: graphql-sock: optional: true - '@graphql-codegen/core@4.0.2': - resolution: {integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==} + '@graphql-codegen/core@5.0.1': + resolution: {integrity: sha512-eQD7aXpKkKvaydMv5Bu0FnKCPnNMAhZ3vZW+K4Rl9IAC2w5PDv9lJhs3YTWM9W58zNOZpGQGT2F0ekS3QNIiKw==} + engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/gql-tag-operations@4.0.17': - resolution: {integrity: sha512-2pnvPdIG6W9OuxkrEZ6hvZd142+O3B13lvhrZ48yyEBh2ujtmKokw0eTwDHtlXUqjVS0I3q7+HB2y12G/m69CA==} + '@graphql-codegen/gql-tag-operations@5.1.4': + resolution: {integrity: sha512-tDj/0a1U7rDH3PQgLeA+PlgBNb593MIJ43oAOKMRgJPwIQ9T7p2oqBRLxwfFZFTDLwnwsGZ7xIKqIcGgyAIj5Q==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1312,19 +1316,20 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/plugin-helpers@5.1.1': - resolution: {integrity: sha512-28GHODK2HY1NhdyRcPP3sCz0Kqxyfiz7boIZ8qIxFYmpLYnlDgiYok5fhFLVSZihyOpCs4Fa37gVHf/Q4I2FEg==} + '@graphql-codegen/plugin-helpers@6.2.0': + resolution: {integrity: sha512-TKm0Q0+wRlg354Qt3PyXc+sy6dCKxmNofBsgmHoFZNVHtzMQSSgNT+rUWdwBwObQ9bFHiUVsDIv8QqxKMiKmpw==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/schema-ast@4.1.0': - resolution: {integrity: sha512-kZVn0z+th9SvqxfKYgztA6PM7mhnSZaj4fiuBWvMTqA+QqQ9BBed6Pz41KuD/jr0gJtnlr2A4++/0VlpVbCTmQ==} + '@graphql-codegen/schema-ast@5.0.1': + resolution: {integrity: sha512-svLffXddnXxq1qFXQqqh+zYrxdiMnIKm+CXCUv0MYhLh0R4L5vpnaTzIUCk3icHNNXhKRm2uBD70+K8VY0xiCg==} + engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/typed-document-node@5.1.2': - resolution: {integrity: sha512-jaxfViDqFRbNQmfKwUY8hDyjnLTw2Z7DhGutxoOiiAI0gE/LfPe0LYaVFKVmVOOD7M3bWxoWfu4slrkbWbUbEw==} + '@graphql-codegen/typed-document-node@6.1.7': + resolution: {integrity: sha512-VLL9hB+YPigc/W2QYCkSNMZrkKv42nTchb9mJ0h5VY98YmW/zWb6NeYM80iHSpk8ZvHsuUT5geA53/s1phO2NQ==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1337,8 +1342,8 @@ packages: graphql-request: ^6.0.0 || ^7.0.0 graphql-tag: ^2.0.0 - '@graphql-codegen/typescript-operations@4.6.1': - resolution: {integrity: sha512-k92laxhih7s0WZ8j5WMIbgKwhe64C0As6x+PdcvgZFMudDJ7rPJ/hFqJ9DCRxNjXoHmSjnr6VUuQZq4lT1RzCA==} + '@graphql-codegen/typescript-operations@5.0.9': + resolution: {integrity: sha512-jJFdJKMS5Cqisb5QMi7xXHPsJH9yHBMYOxBc8laFkFjHk/AOqJK90qCKbO9lwwTMPZUDe6N/HslmA0ax4J0zsg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1347,8 +1352,8 @@ packages: graphql-sock: optional: true - '@graphql-codegen/typescript@4.1.6': - resolution: {integrity: sha512-vpw3sfwf9A7S+kIUjyFxuvrywGxd4lmwmyYnnDVjVE4kSQ6Td3DpqaPTy8aNQ6O96vFoi/bxbZS2BW49PwSUUA==} + '@graphql-codegen/typescript@5.0.9': + resolution: {integrity: sha512-YlIZ4nqdFdzr5vxuNtQtZnnMYuZ5cLYB2HaGhGI2zvqHxCmkBjIRpu/5sfccawKy23wetV+aoWvoNqxGKIryig==} engines: {node: '>=16'} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1358,15 +1363,15 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/visitor-plugin-common@5.8.0': - resolution: {integrity: sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA==} + '@graphql-codegen/visitor-plugin-common@6.2.4': + resolution: {integrity: sha512-iwiVCc7Mv8/XAa3K35AdFQ9chJSDv/gYEnBeQFF/Sq/W8EyJoHypOGOTTLk7OSrWO4xea65ggv0e7fGt7rPJjQ==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-hive/signal@1.0.0': - resolution: {integrity: sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag==} - engines: {node: '>=18.0.0'} + '@graphql-hive/signal@2.0.0': + resolution: {integrity: sha512-Pz8wB3K0iU6ae9S1fWfsmJX24CcGeTo6hE7T44ucmV/ALKRj+bxClmqrYcDT7v3f0d12Rh4FAXBb6gon+WkDpQ==} + engines: {node: '>=20.0.0'} '@graphql-tools/apollo-engine-loader@8.0.28': resolution: {integrity: sha512-MzgDrUuoxp6dZeo54zLBL3cEJKJtM3N/2RqK0rbPxPq5X2z6TUA7EGg8vIFTUkt5xelAsUrm8/4ai41ZDdxOng==} @@ -1374,9 +1379,9 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/batch-execute@9.0.19': - resolution: {integrity: sha512-VGamgY4PLzSx48IHPoblRw0oTaBa7S26RpZXt0Y4NN90ytoE0LutlpB2484RbkfcTjv9wa64QD474+YP1kEgGA==} - engines: {node: '>=18.0.0'} + '@graphql-tools/batch-execute@10.0.7': + resolution: {integrity: sha512-vKo9XUiy2sc5tzMupXoxZbu5afVY/9yJ0+yLrM5Dhh38yHYULf3z9VC1eAwW0kj8pWpOo8d8CV3jpleGwv83PA==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1386,9 +1391,9 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/delegate@10.2.23': - resolution: {integrity: sha512-xrPtl7f1LxS+B6o+W7ueuQh67CwRkfl+UKJncaslnqYdkxKmNBB4wnzVcW8ZsRdwbsla/v43PtwAvSlzxCzq2w==} - engines: {node: '>=18.0.0'} + '@graphql-tools/delegate@12.0.12': + resolution: {integrity: sha512-/vgLWhIwm+Mgo5VUOJQj6EOpaxXRQmA7mk8j6/8vBbPi56LoYA/UPRygcpEnm9EuXTspFKCTBil+xqThU3EmqQ==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1398,27 +1403,21 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/executor-common@0.0.4': - resolution: {integrity: sha512-SEH/OWR+sHbknqZyROCFHcRrbZeUAyjCsgpVWCRjqjqRbiJiXq6TxNIIOmpXgkrXWW/2Ev4Wms6YSGJXjdCs6Q==} - engines: {node: '>=18.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/executor-common@0.0.6': - resolution: {integrity: sha512-JAH/R1zf77CSkpYATIJw+eOJwsbWocdDjY+avY7G+P5HCXxwQjAjWVkJI1QJBQYjPQDVxwf1fmTZlIN3VOadow==} - engines: {node: '>=18.0.0'} + '@graphql-tools/executor-common@1.0.6': + resolution: {integrity: sha512-23/K5C+LSlHDI0mj2SwCJ33RcELCcyDUgABm1Z8St7u/4Z5+95i925H/NAjUyggRjiaY8vYtNiMOPE49aPX1sg==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/executor-graphql-ws@2.0.7': - resolution: {integrity: sha512-J27za7sKF6RjhmvSOwOQFeNhNHyP4f4niqPnerJmq73OtLx9Y2PGOhkXOEB0PjhvPJceuttkD2O1yMgEkTGs3Q==} - engines: {node: '>=18.0.0'} + '@graphql-tools/executor-graphql-ws@3.1.5': + resolution: {integrity: sha512-WXRsfwu9AkrORD9nShrd61OwwxeQ5+eXYcABRR3XPONFIS8pWQfDJGGqxql9/227o/s0DV5SIfkBURb5Knzv+A==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/executor-http@1.3.3': - resolution: {integrity: sha512-LIy+l08/Ivl8f8sMiHW2ebyck59JzyzO/yF9SFS4NH6MJZUezA1xThUXCDIKhHiD56h/gPojbkpcFvM2CbNE7A==} - engines: {node: '>=18.0.0'} + '@graphql-tools/executor-http@3.1.4': + resolution: {integrity: sha512-KOVSJo4WlMBgbJEIl3Fnv0DNmdZOAOKsJ9UfH4fUbxM1bDRBVHN4WM1au+JlK1sH00Uw0WRzsXXw4iquePe2tA==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1440,14 +1439,14 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/github-loader@8.0.22': - resolution: {integrity: sha512-uQ4JNcNPsyMkTIgzeSbsoT9hogLjYrZooLUYd173l5eUGUi49EAcsGdiBCKaKfEjanv410FE8hjaHr7fjSRkJw==} - engines: {node: '>=16.0.0'} + '@graphql-tools/github-loader@9.0.6': + resolution: {integrity: sha512-hhlt2MMkRcvDva/qyzqFddXzaMmRnriJ0Ts+/LcNeYnB8hcEqRMpF9RCsHYjo1mFRaiu8i4PSIpXyyFu3To7Ow==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/graphql-file-loader@8.1.9': - resolution: {integrity: sha512-rkLK46Q62Zxift8B6Kfw6h8SH3pCR3DPCfNeC/lpLwYReezZz+2ARuLDFZjQGjW+4lpMwiAw8CIxDyQAUgqU6A==} + '@graphql-tools/graphql-file-loader@8.1.12': + resolution: {integrity: sha512-Nma7gBgJoUbqXWTmdHjouo36tjzewA8MptVcHoH7widzkciaUVzBhriHzqICFB/dVxig//g9MX8s1XawZo7UAg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1458,8 +1457,8 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/import@7.1.9': - resolution: {integrity: sha512-mHzOgyfzsAgstaZPIFEtKg4GVH4FbDHeHYrSs73mAPKS5F59/FlRuUJhAoRnxbVnc3qIZ6EsWBjOjNbnPK8viA==} + '@graphql-tools/import@7.1.12': + resolution: {integrity: sha512-QSsdPsdJ7yCgQ5XODyKYpC7NlB9R1Koi0R3418PT7GiRm+9O8gYXSs/23dumcOnpiLrnf4qR2aytBn1+JOAhnA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1493,20 +1492,13 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/prisma-loader@8.0.17': - resolution: {integrity: sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg==} - engines: {node: '>=16.0.0'} - deprecated: 'This package was intended to be used with an older versions of Prisma.\nThe newer versions of Prisma has a different approach to GraphQL integration.\nTherefore, this package is no longer needed and has been deprecated and removed.\nLearn more: https://www.prisma.io/graphql' - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/relay-operation-optimizer@6.5.18': resolution: {integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/relay-operation-optimizer@7.0.27': - resolution: {integrity: sha512-rdkL1iDMFaGDiHWd7Bwv7hbhrhnljkJaD0MXeqdwQlZVgVdUDlMot2WuF7CEKVgijpH6eSC6AxXMDeqVgSBS2g==} + '@graphql-tools/relay-operation-optimizer@7.1.1': + resolution: {integrity: sha512-va+ZieMlz6Fj18xUbwyQkZ34PsnzIdPT6Ccy1BNOQw1iclQwk52HejLMZeE/4fH+4cu80Q2HXi5+FjCKpmnJCg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1517,15 +1509,9 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/url-loader@8.0.33': - resolution: {integrity: sha512-Fu626qcNHcqAj8uYd7QRarcJn5XZ863kmxsg1sm0fyjyfBJnsvC7ddFt6Hayz5kxVKfsnjxiDfPMXanvsQVBKw==} - engines: {node: '>=16.0.0'} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/utils@10.11.0': - resolution: {integrity: sha512-iBFR9GXIs0gCD+yc3hoNswViL1O5josI33dUqiNStFI/MHLCEPduasceAcazRH77YONKNiviHBV8f7OgcT4o2Q==} - engines: {node: '>=16.0.0'} + '@graphql-tools/url-loader@9.0.6': + resolution: {integrity: sha512-QdJI3f7ANDMYfYazRgJzzybznjOrQAOuDXweC9xmKgPZoTqNxEAsatiy69zcpTf6092taJLyrqRH6R7xUTzf4A==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1540,9 +1526,9 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/wrap@10.1.4': - resolution: {integrity: sha512-7pyNKqXProRjlSdqOtrbnFRMQAVamCmEREilOXtZujxY6kYit3tvWWSjUrcIOheltTffoRh7EQSjpy2JDCzasg==} - engines: {node: '>=18.0.0'} + '@graphql-tools/wrap@11.1.12': + resolution: {integrity: sha512-PJ0tuiGbEOOZAJk2/pTKyzMEbwBncPBfO7Z84tCPzM/CAR4ZlAXbXjaXOw4fdi0ReUDyOG06Z8DGgEQjr68dKw==} + engines: {node: '>=20.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1563,6 +1549,55 @@ packages: '@iconify/utils@3.1.0': resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/external-editor@1.0.3': resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} engines: {node: '>=18'} @@ -1572,6 +1607,82 @@ packages: '@types/node': optional: true + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@internationalized/date@3.11.0': resolution: {integrity: sha512-BOx5huLAWhicM9/ZFs84CzP+V3gBW6vlpM02yzsdYC7TGlZJX1OJiEEHcSayF00Z+3jLlm4w79amvSt6RqKN3Q==} @@ -3721,12 +3832,6 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' - '@theguild/federation-composition@0.21.3': - resolution: {integrity: sha512-+LlHTa4UbRpZBog3ggAxjYIFvdfH3UMvvBUptur19TMWkqU4+n3GmN+mDjejU+dyBXIG27c25RsiQP1HyvM99g==} - engines: {node: '>=18'} - peerDependencies: - graphql: ^16.0.0 - '@tsconfig/node10@1.0.12': resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} @@ -3874,9 +3979,6 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/js-yaml@4.0.9': - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - '@types/lodash@4.17.24': resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} @@ -4572,25 +4674,13 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - agentkeepalive@4.6.0: resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} engines: {node: '>= 8.0.0'} - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - ansi-escapes@7.3.0: resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} engines: {node: '>=18'} @@ -4661,10 +4751,6 @@ packages: ast-v8-to-istanbul@1.0.0: resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true @@ -4770,9 +4856,6 @@ packages: resolution: {integrity: sha512-vwEmpL5Tpj0I0RBdNkcDMXePoaYSTeKY6mL6/l5esbnTs+jGdPDuLp4NY1hSh6Zk5wSgePygZ4Wx5JJao30Pww==} engines: {node: '>=18.0.0'} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} @@ -4794,10 +4877,6 @@ packages: brace-expansion@1.1.13: resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} - brace-expansion@5.0.3: - resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==} - engines: {node: 18 || 20 || >=22} - brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} @@ -4823,9 +4902,6 @@ packages: bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -4948,14 +5024,6 @@ packages: chroma-js@3.2.0: resolution: {integrity: sha512-os/OippSlX1RlWWr+QDPcGUZs0uoqr32urfxESG9U93lhUfbnlyckte84Q8P1UQY/qth983AS1JONKmLS4T0nw==} - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - cli-cursor@4.0.0: resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4968,17 +5036,13 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} - cli-truncate@5.2.0: resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} engines: {node: '>=20'} - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -4987,10 +5051,6 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -5392,8 +5452,9 @@ packages: dayjs@1.11.20: resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==} - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debounce@2.2.0: + resolution: {integrity: sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==} + engines: {node: '>=18'} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -5453,9 +5514,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -5482,6 +5540,10 @@ packages: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} + dependency-graph@1.0.0: + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -5562,10 +5624,6 @@ packages: resolution: {integrity: sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==} engines: {node: '>=12'} - dset@3.1.4: - resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} - engines: {node: '>=4'} - dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -5692,10 +5750,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -5841,10 +5895,6 @@ packages: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -6005,8 +6055,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphql-config@5.1.5: - resolution: {integrity: sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA==} + graphql-config@5.1.6: + resolution: {integrity: sha512-fCkYnm4Kdq3un0YIM4BCZHVR5xl0UeLP6syxxO7KAstdY7QVyVvTHP0kRPDYEP1v08uwtJVgis5sj3IOTLOniQ==} engines: {node: '>= 16.0.0'} peerDependencies: cosmiconfig-toml-loader: ^1.0.0 @@ -6161,14 +6211,6 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -6206,6 +6248,9 @@ packages: resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} engines: {node: '>=0.8.0'} + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -6235,10 +6280,6 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - inquirer@8.2.7: - resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} - engines: {node: '>=12.0.0'} - internmap@1.0.1: resolution: {integrity: sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==} @@ -6310,10 +6351,6 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-interactive@2.0.0: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} @@ -6428,17 +6465,10 @@ packages: engines: {node: '>=8'} hasBin: true - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - jose@5.10.0: - resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} - jose@6.1.3: resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==} @@ -6677,15 +6707,6 @@ packages: engines: {node: '>=20.17'} hasBin: true - listr2@4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} - engines: {node: '>=12'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true - listr2@9.0.5: resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} engines: {node: '>=20.0.0'} @@ -6746,10 +6767,6 @@ packages: resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} engines: {node: '>=12'} - log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} - log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} @@ -7086,10 +7103,6 @@ packages: minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@9.0.6: - resolution: {integrity: sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -7122,8 +7135,9 @@ packages: multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} @@ -7273,10 +7287,6 @@ packages: openapi-typescript-helpers@0.0.15: resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - ora@7.0.1: resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} engines: {node: '>=16'} @@ -7341,10 +7351,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -7933,10 +7939,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -7966,19 +7968,12 @@ packages: rpc-websockets@9.3.3: resolution: {integrity: sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA==} - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rw@1.3.3: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -8003,9 +7998,6 @@ packages: scheduler@0.27.0: resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - scuid@1.1.0: - resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -8100,14 +8092,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} - - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - slice-ansi@7.1.2: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} @@ -8294,10 +8278,6 @@ packages: resolution: {integrity: sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==} engines: {node: '>=18'} - sync-fetch@0.6.0-2: - resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} - engines: {node: '>=18'} - tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} @@ -8317,9 +8297,6 @@ packages: thread-stream@3.1.0: resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timeout-signal@2.0.0: resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} engines: {node: '>=16'} @@ -8452,10 +8429,6 @@ packages: peerDependencies: typescript: ^5.5.0 - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -8960,9 +8933,6 @@ packages: typescript: optional: true - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -9103,9 +9073,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml-ast-parser@0.0.43: - resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} - yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -9143,6 +9110,10 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + zod@3.22.4: resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} @@ -9279,21 +9250,12 @@ snapshots: - encoding - supports-color - '@ardatan/relay-compiler@12.0.3(graphql@16.13.2)': + '@ardatan/relay-compiler@13.0.0(graphql@16.13.2)': dependencies: - '@babel/generator': 7.29.1 - '@babel/parser': 7.29.0 - '@babel/runtime': 7.28.6 - chalk: 4.1.2 - fb-watchman: 2.0.2 + '@babel/runtime': 7.29.2 graphql: 16.13.2 - immutable: 3.7.6 + immutable: 5.1.5 invariant: 2.2.4 - nullthrows: 1.1.1 - relay-runtime: 12.0.0 - signedsource: 1.0.0 - transitivePeerDependencies: - - encoding '@ark-ui/react@5.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: @@ -9806,7 +9768,7 @@ snapshots: '@bootnodedev/db-subgraph@0.1.2(@parcel/watcher@2.5.6)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql-tag@2.12.6(graphql@16.13.2))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))': dependencies: - '@graphql-codegen/cli': 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) + '@graphql-codegen/cli': 6.2.1(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) '@graphql-codegen/typescript-graphql-request': 6.4.0(graphql-request@6.1.0(graphql@16.13.2))(graphql-tag@2.12.6(graphql@16.13.2))(graphql@16.13.2) '@tanstack/react-query': 5.96.1(react@19.2.4) graphql: 16.13.2 @@ -9821,7 +9783,6 @@ snapshots: - cosmiconfig-toml-loader - crossws - encoding - - enquirer - graphql-sock - graphql-tag - supports-color @@ -10420,42 +10381,42 @@ snapshots: graphql: 16.13.2 typescript: 6.0.2 - '@graphql-codegen/add@5.0.3(graphql@16.13.2)': + '@graphql-codegen/add@6.0.0(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) graphql: 16.13.2 tslib: 2.6.3 - '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10)': + '@graphql-codegen/cli@6.2.1(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10)': dependencies: '@babel/generator': 7.29.1 '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@graphql-codegen/client-preset': 4.8.3(graphql@16.13.2) - '@graphql-codegen/core': 4.0.2(graphql@16.13.2) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/client-preset': 5.2.4(graphql@16.13.2) + '@graphql-codegen/core': 5.0.1(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) '@graphql-tools/apollo-engine-loader': 8.0.28(graphql@16.13.2) '@graphql-tools/code-file-loader': 8.1.28(graphql@16.13.2) '@graphql-tools/git-loader': 8.0.32(graphql@16.13.2) - '@graphql-tools/github-loader': 8.0.22(@types/node@25.3.0)(graphql@16.13.2) - '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.13.2) + '@graphql-tools/github-loader': 9.0.6(@types/node@25.3.0)(graphql@16.13.2) + '@graphql-tools/graphql-file-loader': 8.1.12(graphql@16.13.2) '@graphql-tools/json-file-loader': 8.0.26(graphql@16.13.2) '@graphql-tools/load': 8.1.8(graphql@16.13.2) - '@graphql-tools/prisma-loader': 8.0.17(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) - '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/merge': 9.1.7(graphql@16.13.2) + '@graphql-tools/url-loader': 9.0.6(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + '@inquirer/prompts': 7.10.1(@types/node@25.3.0) '@whatwg-node/fetch': 0.10.13 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@6.0.2) - debounce: 1.2.1 + cosmiconfig: 9.0.1(typescript@6.0.2) + debounce: 2.2.0 detect-indent: 6.1.0 graphql: 16.13.2 - graphql-config: 5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) - inquirer: 8.2.7(@types/node@25.3.0) + graphql-config: 5.1.6(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10) is-glob: 4.0.3 - jiti: 1.21.7 + jiti: 2.6.1 json-to-pretty-yaml: 1.2.2 - listr2: 4.0.5 + listr2: 9.0.5 log-symbols: 4.1.0 micromatch: 4.0.8 shell-quote: 1.8.3 @@ -10472,50 +10433,44 @@ snapshots: - bufferutil - cosmiconfig-toml-loader - crossws - - encoding - - enquirer - graphql-sock - supports-color - typescript - utf-8-validate - '@graphql-codegen/client-preset@4.8.3(graphql@16.13.2)': + '@graphql-codegen/client-preset@5.2.4(graphql@16.13.2)': dependencies: '@babel/helper-plugin-utils': 7.28.6 '@babel/template': 7.28.6 - '@graphql-codegen/add': 5.0.3(graphql@16.13.2) - '@graphql-codegen/gql-tag-operations': 4.0.17(graphql@16.13.2) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) - '@graphql-codegen/typed-document-node': 5.1.2(graphql@16.13.2) - '@graphql-codegen/typescript': 4.1.6(graphql@16.13.2) - '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.13.2) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) + '@graphql-codegen/add': 6.0.0(graphql@16.13.2) + '@graphql-codegen/gql-tag-operations': 5.1.4(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) + '@graphql-codegen/typed-document-node': 6.1.7(graphql@16.13.2) + '@graphql-codegen/typescript': 5.0.9(graphql@16.13.2) + '@graphql-codegen/typescript-operations': 5.0.9(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 6.2.4(graphql@16.13.2) '@graphql-tools/documents': 1.0.1(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) graphql: 16.13.2 tslib: 2.6.3 - transitivePeerDependencies: - - encoding - '@graphql-codegen/core@4.0.2(graphql@16.13.2)': + '@graphql-codegen/core@5.0.1(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) '@graphql-tools/schema': 10.0.31(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) graphql: 16.13.2 tslib: 2.6.3 - '@graphql-codegen/gql-tag-operations@4.0.17(graphql@16.13.2)': + '@graphql-codegen/gql-tag-operations@5.1.4(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 6.2.4(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) auto-bind: 4.0.0 graphql: 16.13.2 tslib: 2.6.3 - transitivePeerDependencies: - - encoding '@graphql-codegen/plugin-helpers@3.1.2(graphql@16.13.2)': dependencies: @@ -10527,9 +10482,9 @@ snapshots: lodash: 4.17.23 tslib: 2.4.1 - '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.13.2)': + '@graphql-codegen/plugin-helpers@6.2.0(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.13.2 @@ -10537,23 +10492,21 @@ snapshots: lodash: 4.17.23 tslib: 2.6.3 - '@graphql-codegen/schema-ast@4.1.0(graphql@16.13.2)': + '@graphql-codegen/schema-ast@5.0.1(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) graphql: 16.13.2 tslib: 2.6.3 - '@graphql-codegen/typed-document-node@5.1.2(graphql@16.13.2)': + '@graphql-codegen/typed-document-node@6.1.7(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 6.2.4(graphql@16.13.2) auto-bind: 4.0.0 change-case-all: 1.0.15 graphql: 16.13.2 tslib: 2.6.3 - transitivePeerDependencies: - - encoding '@graphql-codegen/typescript-graphql-request@6.4.0(graphql-request@6.1.0(graphql@16.13.2))(graphql-tag@2.12.6(graphql@16.13.2))(graphql@16.13.2)': dependencies: @@ -10568,27 +10521,23 @@ snapshots: - encoding - supports-color - '@graphql-codegen/typescript-operations@4.6.1(graphql@16.13.2)': + '@graphql-codegen/typescript-operations@5.0.9(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) - '@graphql-codegen/typescript': 4.1.6(graphql@16.13.2) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) + '@graphql-codegen/typescript': 5.0.9(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 6.2.4(graphql@16.13.2) auto-bind: 4.0.0 graphql: 16.13.2 tslib: 2.6.3 - transitivePeerDependencies: - - encoding - '@graphql-codegen/typescript@4.1.6(graphql@16.13.2)': + '@graphql-codegen/typescript@5.0.9(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) - '@graphql-codegen/schema-ast': 4.1.0(graphql@16.13.2) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) + '@graphql-codegen/schema-ast': 5.0.1(graphql@16.13.2) + '@graphql-codegen/visitor-plugin-common': 6.2.4(graphql@16.13.2) auto-bind: 4.0.0 graphql: 16.13.2 tslib: 2.6.3 - transitivePeerDependencies: - - encoding '@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.13.2)': dependencies: @@ -10607,23 +10556,21 @@ snapshots: - encoding - supports-color - '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.13.2)': + '@graphql-codegen/visitor-plugin-common@6.2.4(graphql@16.13.2)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.13.2) + '@graphql-codegen/plugin-helpers': 6.2.0(graphql@16.13.2) '@graphql-tools/optimize': 2.0.0(graphql@16.13.2) - '@graphql-tools/relay-operation-optimizer': 7.0.27(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/relay-operation-optimizer': 7.1.1(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) auto-bind: 4.0.0 change-case-all: 1.0.15 - dependency-graph: 0.11.0 + dependency-graph: 1.0.0 graphql: 16.13.2 graphql-tag: 2.12.6(graphql@16.13.2) parse-filepath: 1.0.2 tslib: 2.6.3 - transitivePeerDependencies: - - encoding - '@graphql-hive/signal@1.0.0': {} + '@graphql-hive/signal@2.0.0': {} '@graphql-tools/apollo-engine-loader@8.0.28(graphql@16.13.2)': dependencies: @@ -10633,9 +10580,9 @@ snapshots: sync-fetch: 0.6.0 tslib: 2.8.1 - '@graphql-tools/batch-execute@9.0.19(graphql@16.13.2)': + '@graphql-tools/batch-execute@10.0.7(graphql@16.13.2)': dependencies: - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 graphql: 16.13.2 @@ -10652,16 +10599,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/delegate@10.2.23(graphql@16.13.2)': + '@graphql-tools/delegate@12.0.12(graphql@16.13.2)': dependencies: - '@graphql-tools/batch-execute': 9.0.19(graphql@16.13.2) + '@graphql-tools/batch-execute': 10.0.7(graphql@16.13.2) '@graphql-tools/executor': 1.5.1(graphql@16.13.2) '@graphql-tools/schema': 10.0.31(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - dset: 3.1.4 graphql: 16.13.2 tslib: 2.8.1 @@ -10671,26 +10617,20 @@ snapshots: lodash.sortby: 4.7.0 tslib: 2.8.1 - '@graphql-tools/executor-common@0.0.4(graphql@16.13.2)': - dependencies: - '@envelop/core': 5.5.1 - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) - graphql: 16.13.2 - - '@graphql-tools/executor-common@0.0.6(graphql@16.13.2)': + '@graphql-tools/executor-common@1.0.6(graphql@16.13.2)': dependencies: '@envelop/core': 5.5.1 - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) graphql: 16.13.2 - '@graphql-tools/executor-graphql-ws@2.0.7(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': + '@graphql-tools/executor-graphql-ws@3.1.5(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/executor-common': 0.0.6(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/executor-common': 1.0.6(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@whatwg-node/disposablestack': 0.0.6 graphql: 16.13.2 graphql-ws: 6.0.7(crossws@0.3.5)(graphql@16.13.2)(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - isomorphic-ws: 5.0.0(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + isows: 1.0.7(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) tslib: 2.8.1 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -10699,11 +10639,11 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/executor-http@1.3.3(@types/node@25.3.0)(graphql@16.13.2)': + '@graphql-tools/executor-http@3.1.4(@types/node@25.3.0)(graphql@16.13.2)': dependencies: - '@graphql-hive/signal': 1.0.0 - '@graphql-tools/executor-common': 0.0.4(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-hive/signal': 2.0.0 + '@graphql-tools/executor-common': 1.0.6(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/fetch': 0.10.13 @@ -10748,30 +10688,28 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.22(@types/node@25.3.0)(graphql@16.13.2)': + '@graphql-tools/github-loader@9.0.6(@types/node@25.3.0)(graphql@16.13.2)': dependencies: - '@graphql-tools/executor-http': 1.3.3(@types/node@25.3.0)(graphql@16.13.2) + '@graphql-tools/executor-http': 3.1.4(@types/node@25.3.0)(graphql@16.13.2) '@graphql-tools/graphql-tag-pluck': 8.3.27(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.13.2 - sync-fetch: 0.6.0-2 + sync-fetch: 0.6.0 tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - supports-color - '@graphql-tools/graphql-file-loader@8.1.9(graphql@16.13.2)': + '@graphql-tools/graphql-file-loader@8.1.12(graphql@16.13.2)': dependencies: - '@graphql-tools/import': 7.1.9(graphql@16.13.2) + '@graphql-tools/import': 7.1.12(graphql@16.13.2) '@graphql-tools/utils': 11.0.0(graphql@16.13.2) globby: 11.1.0 graphql: 16.13.2 tslib: 2.8.1 unixify: 1.0.0 - transitivePeerDependencies: - - supports-color '@graphql-tools/graphql-tag-pluck@8.3.27(graphql@16.13.2)': dependencies: @@ -10786,15 +10724,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/import@7.1.9(graphql@16.13.2)': + '@graphql-tools/import@7.1.12(graphql@16.13.2)': dependencies: '@graphql-tools/utils': 11.0.0(graphql@16.13.2) - '@theguild/federation-composition': 0.21.3(graphql@16.13.2) graphql: 16.13.2 resolve-from: 5.0.0 tslib: 2.8.1 - transitivePeerDependencies: - - supports-color '@graphql-tools/json-file-loader@8.0.26(graphql@16.13.2)': dependencies: @@ -10828,34 +10763,6 @@ snapshots: graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/prisma-loader@8.0.17(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': - dependencies: - '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) - '@types/js-yaml': 4.0.9 - '@whatwg-node/fetch': 0.10.13 - chalk: 4.1.2 - debug: 4.4.3(supports-color@5.5.0) - dotenv: 16.6.1 - graphql: 16.13.2 - graphql-request: 6.1.0(graphql@16.13.2) - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - jose: 5.10.0 - js-yaml: 4.1.1 - lodash: 4.17.23 - scuid: 1.1.0 - tslib: 2.8.1 - yaml-ast-parser: 0.0.43 - transitivePeerDependencies: - - '@fastify/websocket' - - '@types/node' - - bufferutil - - crossws - - encoding - - supports-color - - utf-8-validate - '@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.13.2)': dependencies: '@ardatan/relay-compiler': 12.0.0(graphql@16.13.2) @@ -10866,14 +10773,12 @@ snapshots: - encoding - supports-color - '@graphql-tools/relay-operation-optimizer@7.0.27(graphql@16.13.2)': + '@graphql-tools/relay-operation-optimizer@7.1.1(graphql@16.13.2)': dependencies: - '@ardatan/relay-compiler': 12.0.3(graphql@16.13.2) + '@ardatan/relay-compiler': 13.0.0(graphql@16.13.2) '@graphql-tools/utils': 11.0.0(graphql@16.13.2) graphql: 16.13.2 tslib: 2.8.1 - transitivePeerDependencies: - - encoding '@graphql-tools/schema@10.0.31(graphql@16.13.2)': dependencies: @@ -10882,19 +10787,19 @@ snapshots: graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/url-loader@8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': + '@graphql-tools/url-loader@9.0.6(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10)': dependencies: - '@graphql-tools/executor-graphql-ws': 2.0.7(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) - '@graphql-tools/executor-http': 1.3.3(@types/node@25.3.0)(graphql@16.13.2) + '@graphql-tools/executor-graphql-ws': 3.1.5(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/executor-http': 3.1.4(@types/node@25.3.0)(graphql@16.13.2) '@graphql-tools/executor-legacy-ws': 1.1.25(bufferutil@4.1.0)(graphql@16.13.2)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) - '@graphql-tools/wrap': 10.1.4(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) + '@graphql-tools/wrap': 11.1.12(graphql@16.13.2) '@types/ws': 8.18.1 '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.13.2 isomorphic-ws: 5.0.0(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - sync-fetch: 0.6.0-2 + sync-fetch: 0.6.0 tslib: 2.8.1 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) transitivePeerDependencies: @@ -10904,14 +10809,6 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/utils@10.11.0(graphql@16.13.2)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) - '@whatwg-node/promise-helpers': 1.3.2 - cross-inspect: 1.0.1 - graphql: 16.13.2 - tslib: 2.8.1 - '@graphql-tools/utils@11.0.0(graphql@16.13.2)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) @@ -10926,11 +10823,11 @@ snapshots: graphql: 16.13.2 tslib: 2.8.1 - '@graphql-tools/wrap@10.1.4(graphql@16.13.2)': + '@graphql-tools/wrap@11.1.12(graphql@16.13.2)': dependencies: - '@graphql-tools/delegate': 10.2.23(graphql@16.13.2) + '@graphql-tools/delegate': 12.0.12(graphql@16.13.2) '@graphql-tools/schema': 10.0.31(graphql@16.13.2) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.13.2 tslib: 2.8.1 @@ -10951,6 +10848,54 @@ snapshots: '@iconify/types': 2.0.0 mlly: 1.8.0 + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/confirm@5.1.21(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/core@10.3.2(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/editor@4.2.23(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/external-editor': 1.0.3(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/expand@4.0.23(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + '@inquirer/external-editor@1.0.3(@types/node@25.3.0)': dependencies: chardet: 2.1.1 @@ -10958,6 +10903,76 @@ snapshots: optionalDependencies: '@types/node': 25.3.0 + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@4.3.1(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/number@3.0.23(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/password@4.0.23(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/prompts@7.10.1(@types/node@25.3.0)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@25.3.0) + '@inquirer/confirm': 5.1.21(@types/node@25.3.0) + '@inquirer/editor': 4.2.23(@types/node@25.3.0) + '@inquirer/expand': 4.0.23(@types/node@25.3.0) + '@inquirer/input': 4.3.1(@types/node@25.3.0) + '@inquirer/number': 3.0.23(@types/node@25.3.0) + '@inquirer/password': 4.0.23(@types/node@25.3.0) + '@inquirer/rawlist': 4.1.11(@types/node@25.3.0) + '@inquirer/search': 3.2.2(@types/node@25.3.0) + '@inquirer/select': 4.4.2(@types/node@25.3.0) + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/rawlist@4.1.11(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/search@3.2.2(@types/node@25.3.0)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/select@4.4.2(@types/node@25.3.0)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@25.3.0) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@25.3.0) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 25.3.0 + + '@inquirer/type@3.0.10(@types/node@25.3.0)': + optionalDependencies: + '@types/node': 25.3.0 + '@internationalized/date@3.11.0': dependencies: '@swc/helpers': 0.5.19 @@ -13904,16 +13919,6 @@ snapshots: dependencies: '@testing-library/dom': 10.4.1 - '@theguild/federation-composition@0.21.3(graphql@16.13.2)': - dependencies: - constant-case: 3.0.4 - debug: 4.4.3(supports-color@5.5.0) - graphql: 16.13.2 - json5: 2.2.3 - lodash.sortby: 4.7.0 - transitivePeerDependencies: - - supports-color - '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -14093,8 +14098,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/js-yaml@4.0.9': {} - '@types/lodash@4.17.24': {} '@types/mdast@4.0.4': @@ -15857,17 +15860,10 @@ snapshots: acorn@8.16.0: {} - agent-base@7.1.4: {} - agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 @@ -15875,10 +15871,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - ansi-escapes@7.3.0: dependencies: environment: 1.1.0 @@ -15934,8 +15926,6 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 - astral-regex@2.0.0: {} - astring@1.9.0: {} async-mutex@0.2.6: @@ -16081,12 +16071,6 @@ snapshots: transitivePeerDependencies: - typescript - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - bl@5.1.0: dependencies: buffer: 6.0.3 @@ -16112,10 +16096,6 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@5.0.3: - dependencies: - balanced-match: 4.0.4 - brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -16149,11 +16129,6 @@ snapshots: dependencies: node-int64: 0.4.0 - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -16299,12 +16274,6 @@ snapshots: chroma-js@3.2.0: {} - clean-stack@2.2.0: {} - - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 @@ -16315,17 +16284,12 @@ snapshots: cli-spinners@2.9.2: {} - cli-truncate@2.1.0: - dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 - cli-truncate@5.2.0: dependencies: slice-ansi: 8.0.0 string-width: 8.2.0 - cli-width@3.0.0: {} + cli-width@4.1.0: {} cliui@6.0.0: dependencies: @@ -16339,8 +16303,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@1.0.4: {} - clsx@1.2.1: {} clsx@2.1.1: {} @@ -16766,7 +16728,7 @@ snapshots: dayjs@1.11.20: {} - debounce@1.2.1: {} + debounce@2.2.0: {} debug@2.6.9: dependencies: @@ -16802,10 +16764,6 @@ snapshots: deepmerge@4.3.1: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -16826,6 +16784,8 @@ snapshots: dependency-graph@0.11.0: {} + dependency-graph@1.0.0: {} + dequal@2.0.3: {} derive-valtio@0.1.0(valtio@1.13.2(@types/react@19.2.14)(react@19.2.4)): @@ -16885,8 +16845,6 @@ snapshots: dotenv@16.6.1: {} - dset@3.1.4: {} - dunder-proto@1.0.1: dependencies: call-bind-apply-helpers: 1.0.2 @@ -17063,8 +17021,6 @@ snapshots: escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -17239,10 +17195,6 @@ snapshots: node-domexception: 1.0.0 web-streams-polyfill: 3.3.3 - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -17410,18 +17362,18 @@ snapshots: graceful-fs@4.2.11: {} - graphql-config@5.1.5(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10): + graphql-config@5.1.6(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@6.0.2)(utf-8-validate@5.0.10): dependencies: - '@graphql-tools/graphql-file-loader': 8.1.9(graphql@16.13.2) + '@graphql-tools/graphql-file-loader': 8.1.12(graphql@16.13.2) '@graphql-tools/json-file-loader': 8.0.26(graphql@16.13.2) '@graphql-tools/load': 8.1.8(graphql@16.13.2) '@graphql-tools/merge': 9.1.7(graphql@16.13.2) - '@graphql-tools/url-loader': 8.0.33(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) - '@graphql-tools/utils': 10.11.0(graphql@16.13.2) + '@graphql-tools/url-loader': 9.0.6(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(utf-8-validate@5.0.10) + '@graphql-tools/utils': 11.0.0(graphql@16.13.2) cosmiconfig: 8.3.6(typescript@6.0.2) graphql: 16.13.2 jiti: 2.6.1 - minimatch: 9.0.6 + minimatch: 10.2.5 string-env-interpolation: 1.0.1 tslib: 2.8.1 transitivePeerDependencies: @@ -17429,7 +17381,6 @@ snapshots: - '@types/node' - bufferutil - crossws - - supports-color - typescript - utf-8-validate @@ -17681,20 +17632,6 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - human-signals@2.1.0: {} humanize-ms@1.2.1: @@ -17721,6 +17658,8 @@ snapshots: immutable@3.7.6: {} + immutable@5.1.5: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -17743,26 +17682,6 @@ snapshots: inline-style-parser@0.2.7: {} - inquirer@8.2.7(@types/node@25.3.0): - dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@25.3.0) - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - figures: 3.2.0 - lodash: 4.17.23 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - transitivePeerDependencies: - - '@types/node' - internmap@1.0.1: {} internmap@2.0.3: {} @@ -17828,8 +17747,6 @@ snapshots: is-hexadecimal@2.0.1: {} - is-interactive@1.0.0: {} - is-interactive@2.0.0: {} is-lower-case@2.0.2: @@ -17901,6 +17818,10 @@ snapshots: dependencies: ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) + isows@1.0.7(ws@8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + istanbul-lib-coverage@3.2.2: {} istanbul-lib-report@3.0.1: @@ -17934,12 +17855,8 @@ snapshots: - bufferutil - utf-8-validate - jiti@1.21.7: {} - jiti@2.6.1: {} - jose@5.10.0: {} - jose@6.1.3: {} js-tokens@10.0.0: {} @@ -18144,17 +18061,6 @@ snapshots: tinyexec: 1.0.4 yaml: 2.8.2 - listr2@4.0.5: - dependencies: - cli-truncate: 2.1.0 - colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 - rfdc: 1.4.1 - rxjs: 7.8.2 - through: 2.3.8 - wrap-ansi: 7.0.0 - listr2@9.0.5: dependencies: cli-truncate: 5.2.0 @@ -18218,13 +18124,6 @@ snapshots: chalk: 5.6.2 is-unicode-supported: 1.3.0 - log-update@4.0.0: - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - log-update@6.1.0: dependencies: ansi-escapes: 7.3.0 @@ -18858,10 +18757,6 @@ snapshots: dependencies: brace-expansion: 1.1.13 - minimatch@9.0.6: - dependencies: - brace-expansion: 5.0.3 - minimist@1.2.8: {} minisearch@7.2.0: {} @@ -18887,7 +18782,7 @@ snapshots: multiformats@9.9.0: {} - mute-stream@0.0.8: {} + mute-stream@2.0.0: {} nanoid@3.3.11: {} @@ -19007,18 +18902,6 @@ snapshots: openapi-typescript-helpers@0.0.15: {} - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - ora@7.0.1: dependencies: chalk: 5.6.2 @@ -19154,10 +19037,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - p-try@2.2.0: {} package-manager-detector@1.6.0: {} @@ -19835,11 +19714,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -19907,18 +19781,12 @@ snapshots: bufferutil: 4.1.0 utf-8-validate: 5.0.10 - run-async@2.4.1: {} - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 rw@1.3.3: {} - rxjs@7.8.2: - dependencies: - tslib: 2.8.1 - safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -19939,8 +19807,6 @@ snapshots: scheduler@0.27.0: {} - scuid@1.1.0: {} - semver@6.3.1: {} semver@7.7.2: {} @@ -20042,18 +19908,6 @@ snapshots: slash@3.0.0: {} - slice-ansi@3.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - - slice-ansi@4.0.0: - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - slice-ansi@7.1.2: dependencies: ansi-styles: 6.2.3 @@ -20250,12 +20104,6 @@ snapshots: timeout-signal: 2.0.0 whatwg-mimetype: 4.0.0 - sync-fetch@0.6.0-2: - dependencies: - node-fetch: 3.3.2 - timeout-signal: 2.0.0 - whatwg-mimetype: 4.0.0 - tabbable@6.4.0: {} tailwindcss@4.1.15: {} @@ -20272,8 +20120,6 @@ snapshots: dependencies: real-require: 0.2.0 - through@2.3.8: {} - timeout-signal@2.0.0: {} tiny-invariant@1.3.3: {} @@ -20392,8 +20238,6 @@ snapshots: transitivePeerDependencies: - supports-color - type-fest@0.21.3: {} - typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -20980,10 +20824,6 @@ snapshots: - utf-8-validate - zod - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - web-namespaces@2.0.1: {} web-streams-polyfill@3.3.3: {} @@ -21088,8 +20928,6 @@ snapshots: yallist@3.1.1: {} - yaml-ast-parser@0.0.43: {} - yaml@1.10.2: {} yaml@2.8.2: {} @@ -21131,6 +20969,8 @@ snapshots: yocto-queue@1.2.2: {} + yoctocolors-cjs@2.1.3: {} + zod@3.22.4: {} zod@3.25.76: {} From 6912547d4f03496e45b581b95316fa70f1bc05f2 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:30:43 -0300 Subject: [PATCH 034/115] chore: document pnpm override for graphql-codegen --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index c8d9a5b0..6d7d0419 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "packageManager": "pnpm@10.33.0", "pnpm": { "overrides": { + "//": "@bootnodedev/db-subgraph pins ^5; remove this override once it supports ^6 (see BootNodeDev/db-subgraph#1)", "@graphql-codegen/cli": "^6" } } From 9e3781deaa2091bce1a14c9a414c2e6fd197368b Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:39:46 -0300 Subject: [PATCH 035/115] chore: update vite to v8 --- package.json | 3 +- pnpm-lock.yaml | 470 +++++++++++++++++++++++++++++++++++++------------ vite.config.ts | 20 ++- 3 files changed, 374 insertions(+), 119 deletions(-) diff --git a/package.json b/package.json index 6d7d0419..9faf3089 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "typedoc-plugin-missing-exports": "^4.0.0", "typedoc-plugin-rename-defaults": "^0.7.3", "typescript": "^6", - "vite": "^6.3.5", + "vite": "^8", "vite-plugin-sitemap": "^0.8.2", "vite-tsconfig-paths": "^6.1.1", "vitest": "^4.1.2", @@ -94,7 +94,6 @@ "packageManager": "pnpm@10.33.0", "pnpm": { "overrides": { - "//": "@bootnodedev/db-subgraph pins ^5; remove this override once it supports ^6 (see BootNodeDev/db-subgraph#1)", "@graphql-codegen/cli": "^6" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7696596c..bbebd13c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -128,7 +128,7 @@ importers: version: 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-plugin': specifier: ^1.167.12 - version: 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) '@testing-library/jest-dom': specifier: ^6.6.3 version: 6.9.1 @@ -146,10 +146,10 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react-swc': specifier: ^4.3.0 - version: 4.3.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.3.0(@swc/helpers@0.5.19)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/coverage-v8': specifier: ^4.1.2 - version: 4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))) + version: 4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))) '@wagmi/cli': specifier: ^2.3.1 version: 2.10.0(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10) @@ -187,20 +187,20 @@ importers: specifier: ^6 version: 6.0.2 vite: - specifier: ^6.3.5 - version: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: ^8 + version: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-sitemap: specifier: ^0.8.2 version: 0.8.2 vite-tsconfig-paths: specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.2)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 6.1.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^4.1.2 - version: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + version: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) vocs: specifier: 1.4.1 - version: 1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@6.0.2) + version: 1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@6.0.2) packages: @@ -811,6 +811,15 @@ packages: peerDependencies: '@noble/ciphers': ^1.0.0 + '@emnapi/core@1.9.1': + resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==} + + '@emnapi/runtime@1.9.1': + resolution: {integrity: sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA==} + + '@emnapi/wasi-threads@1.2.0': + resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==} + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -1861,6 +1870,12 @@ packages: '@mysten/wallet-standard@0.19.9': resolution: {integrity: sha512-jHFt+62os7x7y+4ZVMLck8WSanEO9b8deCD+VApUQkdAHA99TuxbREaujQTjnGQN5DaGEz8wQgeBPqxRY/vKQA==} + '@napi-rs/wasm-runtime@1.1.2': + resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + '@noble/ciphers@1.2.1': resolution: {integrity: sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==} engines: {node: ^14.21.3 || >=16} @@ -1920,6 +1935,9 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + '@pandacss/is-valid-prop@1.8.2': resolution: {integrity: sha512-wfZ4kzvHXQ9pG3wuIGTUCcbC7Op8pqIQZNIRY/bqWQu67WTHxZUHUPSZgQMhguI8Tz4ot+DNf4Qhha0bhLvNEQ==} @@ -2838,6 +2856,104 @@ packages: '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@rolldown/pluginutils@1.0.0-rc.3': resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} @@ -3844,6 +3960,9 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -6554,8 +6673,8 @@ packages: cpu: [arm64] os: [android] - lightningcss-android-arm64@1.31.1: - resolution: {integrity: sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] @@ -6566,8 +6685,8 @@ packages: cpu: [arm64] os: [darwin] - lightningcss-darwin-arm64@1.31.1: - resolution: {integrity: sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==} + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] @@ -6578,8 +6697,8 @@ packages: cpu: [x64] os: [darwin] - lightningcss-darwin-x64@1.31.1: - resolution: {integrity: sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==} + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] @@ -6590,8 +6709,8 @@ packages: cpu: [x64] os: [freebsd] - lightningcss-freebsd-x64@1.31.1: - resolution: {integrity: sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==} + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] @@ -6602,8 +6721,8 @@ packages: cpu: [arm] os: [linux] - lightningcss-linux-arm-gnueabihf@1.31.1: - resolution: {integrity: sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==} + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] @@ -6615,8 +6734,8 @@ packages: os: [linux] libc: [glibc] - lightningcss-linux-arm64-gnu@1.31.1: - resolution: {integrity: sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==} + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -6629,8 +6748,8 @@ packages: os: [linux] libc: [musl] - lightningcss-linux-arm64-musl@1.31.1: - resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] @@ -6643,8 +6762,8 @@ packages: os: [linux] libc: [glibc] - lightningcss-linux-x64-gnu@1.31.1: - resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -6657,8 +6776,8 @@ packages: os: [linux] libc: [musl] - lightningcss-linux-x64-musl@1.31.1: - resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] @@ -6670,8 +6789,8 @@ packages: cpu: [arm64] os: [win32] - lightningcss-win32-arm64-msvc@1.31.1: - resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] @@ -6682,8 +6801,8 @@ packages: cpu: [x64] os: [win32] - lightningcss-win32-x64-msvc@1.31.1: - resolution: {integrity: sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==} + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -6692,8 +6811,8 @@ packages: resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} engines: {node: '>= 12.0.0'} - lightningcss@1.31.1: - resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} engines: {node: '>= 12.0.0'} lines-and-columns@1.2.4: @@ -7446,6 +7565,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -7582,6 +7705,10 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + postcss@8.5.8: + resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + engines: {node: ^10 || ^12 || >=14} + preact@10.24.2: resolution: {integrity: sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==} @@ -7957,6 +8084,11 @@ packages: robust-predicates@3.0.3: resolution: {integrity: sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA==} + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.59.0: resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -8775,19 +8907,19 @@ packages: peerDependencies: vite: '*' - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vite@7.3.1: + resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@types/node': ^20.19.0 || >=22.12.0 jiti: '>=1.21.0' - less: '*' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 yaml: ^2.4.2 @@ -8815,15 +8947,16 @@ packages: yaml: optional: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@8.0.3: + resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.1.0 + esbuild: ^0.27.0 jiti: '>=1.21.0' less: ^4.0.0 - lightningcss: ^1.21.0 sass: ^1.70.0 sass-embedded: ^1.70.0 stylus: '>=0.54.8' @@ -8834,12 +8967,14 @@ packages: peerDependenciesMeta: '@types/node': optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true jiti: optional: true less: optional: true - lightningcss: - optional: true sass: optional: true sass-embedded: @@ -10046,6 +10181,22 @@ snapshots: dependencies: '@noble/ciphers': 1.3.0 + '@emnapi/core@1.9.1': + dependencies: + '@emnapi/wasi-threads': 1.2.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.9.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.28.6(supports-color@5.5.0) @@ -11363,6 +11514,13 @@ snapshots: - '@gql.tada/vue-support' - typescript + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': + dependencies: + '@emnapi/core': 1.9.1 + '@emnapi/runtime': 1.9.1 + '@tybys/wasm-util': 0.10.1 + optional: true + '@noble/ciphers@1.2.1': {} '@noble/ciphers@1.3.0': {} @@ -11411,6 +11569,8 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 + '@oxc-project/types@0.122.0': {} + '@pandacss/is-valid-prop@1.8.2': {} '@parcel/watcher-android-arm64@2.5.6': @@ -12891,6 +13051,58 @@ snapshots: '@repeaterjs/repeater@3.0.6': {} + '@rolldown/binding-android-arm64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.12': {} + '@rolldown/pluginutils@1.0.0-rc.3': {} '@rolldown/pluginutils@1.0.0-rc.7': {} @@ -13738,12 +13950,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.15 '@tailwindcss/oxide-win32-x64-msvc': 4.1.15 - '@tailwindcss/vite@4.1.15(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@tailwindcss/vite@4.1.15(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.1.15 '@tailwindcss/oxide': 4.1.15 tailwindcss: 4.1.15 - vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) '@tanstack/history@1.161.6': {} @@ -13844,7 +14056,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@tanstack/router-plugin@1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) @@ -13861,7 +14073,7 @@ snapshots: zod: 3.25.76 optionalDependencies: '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -13927,6 +14139,11 @@ snapshots: '@tsconfig/node16@1.0.4': {} + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -14162,12 +14379,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@vanilla-extract/compiler@0.3.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)': + '@vanilla-extract/compiler@0.3.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)': dependencies: '@vanilla-extract/css': 1.18.0(babel-plugin-macros@3.1.0) '@vanilla-extract/integration': 8.0.7(babel-plugin-macros@3.1.0) - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) + vite-node: 3.2.4(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -14247,11 +14464,11 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.3(babel-plugin-macros@3.1.0) - '@vanilla-extract/vite-plugin@5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': + '@vanilla-extract/vite-plugin@5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2)': dependencies: - '@vanilla-extract/compiler': 0.3.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + '@vanilla-extract/compiler': 0.3.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) '@vanilla-extract/integration': 8.0.7(babel-plugin-macros@3.1.0) - vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -14271,15 +14488,15 @@ snapshots: optionalDependencies: react: 19.2.4 - '@vitejs/plugin-react-swc@4.3.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react-swc@4.3.0(@swc/helpers@0.5.19)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 '@swc/core': 1.15.13(@swc/helpers@0.5.19) - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -14287,11 +14504,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)))': + '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.1.2 @@ -14303,7 +14520,7 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + vitest: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/expect@4.1.2': dependencies: @@ -14314,13 +14531,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.2(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) '@vitest/pretty-format@4.1.2': dependencies: @@ -17950,67 +18167,67 @@ snapshots: lightningcss-android-arm64@1.30.2: optional: true - lightningcss-android-arm64@1.31.1: + lightningcss-android-arm64@1.32.0: optional: true lightningcss-darwin-arm64@1.30.2: optional: true - lightningcss-darwin-arm64@1.31.1: + lightningcss-darwin-arm64@1.32.0: optional: true lightningcss-darwin-x64@1.30.2: optional: true - lightningcss-darwin-x64@1.31.1: + lightningcss-darwin-x64@1.32.0: optional: true lightningcss-freebsd-x64@1.30.2: optional: true - lightningcss-freebsd-x64@1.31.1: + lightningcss-freebsd-x64@1.32.0: optional: true lightningcss-linux-arm-gnueabihf@1.30.2: optional: true - lightningcss-linux-arm-gnueabihf@1.31.1: + lightningcss-linux-arm-gnueabihf@1.32.0: optional: true lightningcss-linux-arm64-gnu@1.30.2: optional: true - lightningcss-linux-arm64-gnu@1.31.1: + lightningcss-linux-arm64-gnu@1.32.0: optional: true lightningcss-linux-arm64-musl@1.30.2: optional: true - lightningcss-linux-arm64-musl@1.31.1: + lightningcss-linux-arm64-musl@1.32.0: optional: true lightningcss-linux-x64-gnu@1.30.2: optional: true - lightningcss-linux-x64-gnu@1.31.1: + lightningcss-linux-x64-gnu@1.32.0: optional: true lightningcss-linux-x64-musl@1.30.2: optional: true - lightningcss-linux-x64-musl@1.31.1: + lightningcss-linux-x64-musl@1.32.0: optional: true lightningcss-win32-arm64-msvc@1.30.2: optional: true - lightningcss-win32-arm64-msvc@1.31.1: + lightningcss-win32-arm64-msvc@1.32.0: optional: true lightningcss-win32-x64-msvc@1.30.2: optional: true - lightningcss-win32-x64-msvc@1.31.1: + lightningcss-win32-x64-msvc@1.32.0: optional: true lightningcss@1.30.2: @@ -18029,22 +18246,21 @@ snapshots: lightningcss-win32-arm64-msvc: 1.30.2 lightningcss-win32-x64-msvc: 1.30.2 - lightningcss@1.31.1: + lightningcss@1.32.0: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.31.1 - lightningcss-darwin-arm64: 1.31.1 - lightningcss-darwin-x64: 1.31.1 - lightningcss-freebsd-x64: 1.31.1 - lightningcss-linux-arm-gnueabihf: 1.31.1 - lightningcss-linux-arm64-gnu: 1.31.1 - lightningcss-linux-arm64-musl: 1.31.1 - lightningcss-linux-x64-gnu: 1.31.1 - lightningcss-linux-x64-musl: 1.31.1 - lightningcss-win32-arm64-msvc: 1.31.1 - lightningcss-win32-x64-msvc: 1.31.1 - optional: true + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 lines-and-columns@1.2.4: {} @@ -19125,6 +19341,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.4: {} + pify@3.0.0: {} pify@5.0.0: {} @@ -19254,6 +19472,12 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postcss@8.5.8: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + preact@10.24.2: {} preact@10.29.0: {} @@ -19730,6 +19954,30 @@ snapshots: robust-predicates@3.0.3: {} + rolldown@1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1): + dependencies: + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.12 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 @@ -20568,13 +20816,13 @@ snapshots: - utf-8-validate - zod - vite-node@3.2.4(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2): + vite-node@3.2.4(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@5.5.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -20591,19 +20839,19 @@ snapshots: vite-plugin-sitemap@0.8.2: {} - vite-tsconfig-paths@6.1.1(typescript@6.0.2)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-tsconfig-paths@6.1.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: debug: 4.4.3(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.6(typescript@6.0.2) - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color - typescript - vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2): + vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: - esbuild: 0.25.12 + esbuild: 0.27.4 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 @@ -20613,30 +20861,32 @@ snapshots: '@types/node': 25.3.0 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.31.1 + lightningcss: 1.32.0 tsx: 4.21.0 yaml: 2.8.2 - vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2): + vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2): dependencies: - esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.59.0 + lightningcss: 1.32.0 + picomatch: 4.0.4 + postcss: 8.5.8 + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.3.0 + esbuild: 0.25.12 fsevents: 2.3.3 jiti: 2.6.1 - lightningcss: 1.31.1 tsx: 4.21.0 yaml: 2.8.2 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): + vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/mocker': 4.1.2(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -20653,7 +20903,7 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.3.0 @@ -20661,7 +20911,7 @@ snapshots: transitivePeerDependencies: - msw - vocs@1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@6.0.2): + vocs@1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@6.0.2): dependencies: '@floating-ui/react': 0.27.18(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@hono/node-server': 1.19.9(hono@4.12.2) @@ -20680,11 +20930,11 @@ snapshots: '@shikijs/rehype': 1.29.2 '@shikijs/transformers': 1.29.2 '@shikijs/twoslash': 1.29.2(typescript@6.0.2) - '@tailwindcss/vite': 4.1.15(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + '@tailwindcss/vite': 4.1.15(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) '@vanilla-extract/css': 1.18.0(babel-plugin-macros@3.1.0) '@vanilla-extract/dynamic': 2.1.5 - '@vanilla-extract/vite-plugin': 5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) - '@vitejs/plugin-react': 5.2.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vanilla-extract/vite-plugin': 5.1.4(@types/node@25.3.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))(yaml@2.8.2) + '@vitejs/plugin-react': 5.2.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2)) autoprefixer: 10.4.24(postcss@8.5.6) cac: 6.7.14 chroma-js: 3.2.0 @@ -20734,7 +20984,7 @@ snapshots: unified: 11.0.5 unist-util-visit: 5.1.0 vfile-matter: 5.0.1 - vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + vite: 7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2) yaml: 2.8.2 transitivePeerDependencies: - '@remix-run/react' diff --git a/vite.config.ts b/vite.config.ts index 284effb5..e0dedb8f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -21,14 +21,20 @@ export default defineConfig(({ mode }) => { ], build: { sourcemap: mode === 'development' ? 'hidden' : false, - rollupOptions: { + rolldownOptions: { output: { - manualChunks: { - 'vendor-react': ['react', 'react-dom', 'react-dom/client'], - 'vendor-wagmi': ['wagmi', 'viem'], - 'vendor-tanstack': ['@tanstack/react-query', '@tanstack/react-router'], - 'vendor-chakra': ['@chakra-ui/react'], - 'vendor-web3': ['@reown/appkit', '@reown/appkit-adapter-wagmi'], + manualChunks(id) { + if (id.includes('node_modules/react-dom') || id.includes('node_modules/react/')) + return 'vendor-react' + if (id.includes('node_modules/wagmi') || id.includes('node_modules/viem')) + return 'vendor-wagmi' + if ( + id.includes('node_modules/@tanstack/react-query') || + id.includes('node_modules/@tanstack/react-router') + ) + return 'vendor-tanstack' + if (id.includes('node_modules/@chakra-ui/react')) return 'vendor-chakra' + if (id.includes('node_modules/@reown/appkit')) return 'vendor-web3' }, }, }, From d8f5355eeda25261b0e80b4606fcfb1249296195 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:45:38 -0300 Subject: [PATCH 036/115] chore: broaden manualChunks coverage for sub-scoped packages --- vite.config.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/vite.config.ts b/vite.config.ts index e0dedb8f..b494ba54 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -26,14 +26,20 @@ export default defineConfig(({ mode }) => { manualChunks(id) { if (id.includes('node_modules/react-dom') || id.includes('node_modules/react/')) return 'vendor-react' - if (id.includes('node_modules/wagmi') || id.includes('node_modules/viem')) + if ( + id.includes('node_modules/wagmi') || + id.includes('node_modules/@wagmi/') || + id.includes('node_modules/viem') + ) return 'vendor-wagmi' if ( id.includes('node_modules/@tanstack/react-query') || - id.includes('node_modules/@tanstack/react-router') + id.includes('node_modules/@tanstack/react-router') || + id.includes('node_modules/@tanstack/router-core') || + id.includes('node_modules/@tanstack/query-core') ) return 'vendor-tanstack' - if (id.includes('node_modules/@chakra-ui/react')) return 'vendor-chakra' + if (id.includes('node_modules/@chakra-ui/')) return 'vendor-chakra' if (id.includes('node_modules/@reown/appkit')) return 'vendor-web3' }, }, From a7c6ce145cc2a549d3ea4ea94ba02c0d62715e51 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:52:29 -0300 Subject: [PATCH 037/115] chore: replace vite-tsconfig-paths plugin with native tsconfigPaths option --- package.json | 1 - pnpm-lock.yaml | 37 ------------------------------------- vite.config.ts | 3 +-- 3 files changed, 1 insertion(+), 40 deletions(-) diff --git a/package.json b/package.json index 9faf3089..526ddafa 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,6 @@ "typescript": "^6", "vite": "^8", "vite-plugin-sitemap": "^0.8.2", - "vite-tsconfig-paths": "^6.1.1", "vitest": "^4.1.2", "vocs": "1.4.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bbebd13c..b03496a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -192,9 +192,6 @@ importers: vite-plugin-sitemap: specifier: ^0.8.2 version: 0.8.2 - vite-tsconfig-paths: - specifier: ^6.1.1 - version: 6.1.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: specifier: ^4.1.2 version: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) @@ -6153,9 +6150,6 @@ packages: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} - globrex@0.1.2: - resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} - goober@2.1.18: resolution: {integrity: sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw==} peerDependencies: @@ -8518,16 +8512,6 @@ packages: '@swc/wasm': optional: true - tsconfck@3.1.6: - resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -8902,11 +8886,6 @@ packages: vite-plugin-sitemap@0.8.2: resolution: {integrity: sha512-bqIw6NVOXg6je81lzX8Lm0vjf8/QSAp8di8fYQzZ3ZdVicOm8+6idBGALJiy1R1FiXNIK8rgORO6HBqXyHW+iQ==} - vite-tsconfig-paths@6.1.1: - resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} - peerDependencies: - vite: '*' - vite@7.3.1: resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -17557,8 +17536,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globrex@0.1.2: {} - goober@2.1.18(csstype@3.2.3): dependencies: csstype: 3.2.3 @@ -20447,10 +20424,6 @@ snapshots: optionalDependencies: '@swc/core': 1.15.13(@swc/helpers@0.5.19) - tsconfck@3.1.6(typescript@6.0.2): - optionalDependencies: - typescript: 6.0.2 - tslib@1.14.1: {} tslib@2.4.1: {} @@ -20839,16 +20812,6 @@ snapshots: vite-plugin-sitemap@0.8.2: {} - vite-tsconfig-paths@6.1.1(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)): - dependencies: - debug: 4.4.3(supports-color@5.5.0) - globrex: 0.1.2 - tsconfck: 3.1.6(typescript@6.0.2) - vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color - - typescript - vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2): dependencies: esbuild: 0.27.4 diff --git a/vite.config.ts b/vite.config.ts index b494ba54..df862074 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,7 +4,6 @@ import { TanStackRouterVite } from '@tanstack/router-plugin/vite' import react from '@vitejs/plugin-react-swc' import { defineConfig, loadEnv } from 'vite' import Sitemap from 'vite-plugin-sitemap' -import tsconfigPaths from 'vite-tsconfig-paths' // https://vitejs.dev/config/ /** @type {import('vite').UserConfig} */ @@ -14,7 +13,6 @@ export default defineConfig(({ mode }) => { plugins: [ TanStackRouterVite({ target: 'react', autoCodeSplitting: true }), react(), - tsconfigPaths(), Sitemap({ hostname: env.PUBLIC_APP_URL || 'https://demo.dappbooster.dev', }), @@ -47,6 +45,7 @@ export default defineConfig(({ mode }) => { }, envPrefix: 'PUBLIC_', resolve: { + tsconfigPaths: true, alias: { '@/src': resolve(__dirname, './src'), '@packageJSON': resolve(__dirname, 'package.json'), From be4df7691cc4057d70e58d5b0ab4f7691ba68ef9 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:55:36 -0300 Subject: [PATCH 038/115] chore: replace @vitejs/plugin-react-swc with @vitejs/plugin-react --- package.json | 2 +- pnpm-lock.yaml | 43 +++++++++++++++++++++++++------------------ vite.config.ts | 2 +- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 526ddafa..130dc5e3 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@testing-library/user-event": "^14.6.1", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", - "@vitejs/plugin-react-swc": "^4.3.0", + "@vitejs/plugin-react": "^6.0.1", "@vitest/coverage-v8": "^4.1.2", "@wagmi/cli": "^2.3.1", "change-case": "^5.4.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b03496a7..e13357ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -144,9 +144,9 @@ importers: '@types/react-dom': specifier: ^19.1.3 version: 19.2.3(@types/react@19.2.14) - '@vitejs/plugin-react-swc': - specifier: ^4.3.0 - version: 4.3.0(@swc/helpers@0.5.19)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.1(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/coverage-v8': specifier: ^4.1.2 version: 4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))) @@ -4219,18 +4219,25 @@ packages: vue-router: optional: true - '@vitejs/plugin-react-swc@4.3.0': - resolution: {integrity: sha512-mOkXCII839dHyAt/gpoSlm28JIVDwhZ6tnG6wJxUy2bmOx7UaPjvOyIDf3SFv5s7Eo7HVaq6kRcu6YMEzt5Z7w==} - engines: {node: ^20.19.0 || >=22.12.0} - peerDependencies: - vite: ^4 || ^5 || ^6 || ^7 || ^8 - '@vitejs/plugin-react@5.2.0': resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + '@vitejs/plugin-react@6.0.1': + resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + '@rolldown/plugin-babel': ^0.1.7 || ^0.2.0 + babel-plugin-react-compiler: ^1.0.0 + vite: ^8.0.0 + peerDependenciesMeta: + '@rolldown/plugin-babel': + optional: true + babel-plugin-react-compiler: + optional: true + '@vitest/coverage-v8@4.1.2': resolution: {integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==} peerDependencies: @@ -13851,8 +13858,10 @@ snapshots: '@swc/core-win32-ia32-msvc': 1.15.13 '@swc/core-win32-x64-msvc': 1.15.13 '@swc/helpers': 0.5.19 + optional: true - '@swc/counter@0.1.3': {} + '@swc/counter@0.1.3': + optional: true '@swc/helpers@0.5.19': dependencies: @@ -13861,6 +13870,7 @@ snapshots: '@swc/types@0.1.25': dependencies: '@swc/counter': 0.1.3 + optional: true '@t3-oss/env-core@0.13.11(typescript@6.0.2)(valibot@1.2.0(typescript@6.0.2))(zod@4.3.6)': optionalDependencies: @@ -14467,14 +14477,6 @@ snapshots: optionalDependencies: react: 19.2.4 - '@vitejs/plugin-react-swc@4.3.0(@swc/helpers@0.5.19)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': - dependencies: - '@rolldown/pluginutils': 1.0.0-rc.7 - '@swc/core': 1.15.13(@swc/helpers@0.5.19) - vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - '@swc/helpers' - '@vitejs/plugin-react@5.2.0(vite@7.3.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.32.0)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@babel/core': 7.29.0 @@ -14487,6 +14489,11 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitejs/plugin-react@6.0.1(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2))': + dependencies: + '@rolldown/pluginutils': 1.0.0-rc.7 + vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2) + '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: '@bcoe/v8-coverage': 1.0.2 diff --git a/vite.config.ts b/vite.config.ts index df862074..a3174094 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,7 @@ /// <reference types="vitest/config" /> import { resolve } from 'node:path' import { TanStackRouterVite } from '@tanstack/router-plugin/vite' -import react from '@vitejs/plugin-react-swc' +import react from '@vitejs/plugin-react' import { defineConfig, loadEnv } from 'vite' import Sitemap from 'vite-plugin-sitemap' From a8cb401773a0584f96f1b3888208c416e7f19e88 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:00:57 -0300 Subject: [PATCH 039/115] chore: fix biome 2 lint warnings --- .../demos/TransactionButton/index.tsx | 26 +++++++++---------- .../TokenSelect/TopTokens/index.tsx | 2 +- src/hooks/useTokens.ts | 9 +++---- src/lib/wagmi/plugins/reactSuspenseRead.ts | 4 +-- src/main.tsx | 2 +- .../TransactionNotificationProvider.tsx | 2 -- 6 files changed, 20 insertions(+), 25 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx index c3f89571..a8733bb2 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx @@ -18,20 +18,18 @@ const TransactionButton = () => { return ( <WalletStatusVerifier chainId={sepolia.id}> - <> - <OptionsDropdown items={items} /> - <Flex - alignItems="center" - display="flex" - flexDirection="column" - justifyContent="center" - paddingTop={{ base: 2, lg: 6 }} - width="100%" - > - {currentTokenInput === 'erc20' && <ERC20ApproveAndTransferButton />} - {currentTokenInput === 'native' && <NativeToken />} - </Flex> - </> + <OptionsDropdown items={items} /> + <Flex + alignItems="center" + display="flex" + flexDirection="column" + justifyContent="center" + paddingTop={{ base: 2, lg: 6 }} + width="100%" + > + {currentTokenInput === 'erc20' && <ERC20ApproveAndTransferButton />} + {currentTokenInput === 'native' && <NativeToken />} + </Flex> </WalletStatusVerifier> ) } diff --git a/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx b/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx index 3f3986b4..e8ab61a1 100644 --- a/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx +++ b/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx @@ -44,7 +44,7 @@ const TopTokens: FC<TopTokensProps> = ({ onTokenSelect, tokens, ...restProps }) <Item key={`token_${token?.address}`} onClick={() => onTokenSelect(token)} - // biome-ignore lint/style/noNonNullAssertion: <explanation> + // biome-ignore lint/style/noNonNullAssertion: token is defined when rendered via filter above token={token!} /> ))} diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 0ab94cde..d829a12d 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -94,7 +94,7 @@ export const useTokens = ( const dAppChainsId = chainId ? [chainId] - : Object.keys(tokensData.tokensByChainId).map((id) => Number.parseInt(id)) + : Object.keys(tokensData.tokensByChainId).map((id) => Number.parseInt(id, 10)) const lifiChainsId = chains?.map((chain) => chain.id) ?? [] const chainsToFetch = dAppChainsId.filter((id) => lifiChainsId.includes(id)) @@ -111,11 +111,11 @@ export const useTokens = ( queryKey: ['lifi', 'tokens', 'balances', account, chainsToFetch], queryFn: () => getTokenBalances( - // biome-ignore lint/style/noNonNullAssertion: <explanation> + // biome-ignore lint/style/noNonNullAssertion: guarded by enabled: canFetchBalance && !!tokensPricesByChain account!, - // biome-ignore lint/style/noNonNullAssertion: <explanation> + // biome-ignore lint/style/noNonNullAssertion: guarded by enabled: canFetchBalance && !!tokensPricesByChain Object.entries(tokensPricesByChain!.tokens) - .filter(([chainId]) => chainsToFetch.includes(Number.parseInt(chainId))) + .filter(([chainId]) => chainsToFetch.includes(Number.parseInt(chainId, 10))) .flatMap(([, tokens]) => tokens), ), staleTime: BALANCE_EXPIRATION_TIME, @@ -167,7 +167,6 @@ function udpateTokensBalances(tokens: Tokens, results: [Array<TokenAmount>, Toke (acc, [chainId, tokens]) => { acc[chainId] = {} - // biome-ignore lint/complexity/noForEach: <explanation> tokens.forEach((token) => { acc[chainId][token.address] = token.priceUSD ?? '0' }) diff --git a/src/lib/wagmi/plugins/reactSuspenseRead.ts b/src/lib/wagmi/plugins/reactSuspenseRead.ts index 272372fb..cf9c5151 100644 --- a/src/lib/wagmi/plugins/reactSuspenseRead.ts +++ b/src/lib/wagmi/plugins/reactSuspenseRead.ts @@ -12,7 +12,7 @@ const walletConfigImport = `import { config } from '@/src/lib/wallets/connectkit type ActionsResult = { name: string - // biome-ignore lint/suspicious/noExplicitAny: <explanation> + // biome-ignore lint/suspicious/noExplicitAny: wagmi plugin API does not expose typed ABI item types run: ({ contracts }: { contracts: any[] }) => Promise<{ imports: string content: string @@ -29,7 +29,7 @@ export function reactSuspenseRead(config: ActionsConfig = {}): ActionsResult { const actionNames = new Set<string>() - // biome-ignore lint/suspicious/noExplicitAny: <explanation> + // biome-ignore lint/suspicious/noExplicitAny: wagmi plugin API does not expose typed ABI item types const isReadFunction = (item: any) => item.type === 'function' && (item.stateMutability === 'view' || item.stateMutability === 'pure') diff --git a/src/main.tsx b/src/main.tsx index 9c9fd191..5ca881c8 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -16,7 +16,7 @@ declare module '@tanstack/react-router' { } } -// biome-ignore lint/style/noNonNullAssertion: <explanation> +// biome-ignore lint/style/noNonNullAssertion: root element is guaranteed by index.html const rootElement = document.getElementById('root')! if (!rootElement.innerHTML) { diff --git a/src/providers/TransactionNotificationProvider.tsx b/src/providers/TransactionNotificationProvider.tsx index 94444d01..8e40ab35 100644 --- a/src/providers/TransactionNotificationProvider.tsx +++ b/src/providers/TransactionNotificationProvider.tsx @@ -122,7 +122,6 @@ export const TransactionNotificationProvider: FC<PropsWithChildren> = ({ childre let replacedTx = null as ReplacementReturnType | null const receipt = await readOnlyClient.waitForTransactionReceipt({ hash, - // biome-ignore lint/suspicious/noAssignInExpressions: <explanation> onReplaced: (replacedTxData) => (replacedTx = replacedTxData), }) @@ -201,7 +200,6 @@ export const TransactionNotificationProvider: FC<PropsWithChildren> = ({ childre message: `Signature requested: ${transactionMessage}`, signaturePromise: txPromise, showSuccessToast: false, - // biome-ignore lint/suspicious/noAssignInExpressions: <explanation> onToastId: (id) => (toastId = id), }) From 8dadc1466a6cc8be887bbb0e677dcda6f0468366 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:03:06 -0300 Subject: [PATCH 040/115] fix: restore fragment with suppression after noUselessFragments auto-fix --- .../demos/TransactionButton/index.tsx | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx index a8733bb2..c8233417 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx @@ -18,18 +18,21 @@ const TransactionButton = () => { return ( <WalletStatusVerifier chainId={sepolia.id}> - <OptionsDropdown items={items} /> - <Flex - alignItems="center" - display="flex" - flexDirection="column" - justifyContent="center" - paddingTop={{ base: 2, lg: 6 }} - width="100%" - > - {currentTokenInput === 'erc20' && <ERC20ApproveAndTransferButton />} - {currentTokenInput === 'native' && <NativeToken />} - </Flex> + {/* biome-ignore lint/complexity/noUselessFragments: WalletStatusVerifier expects a single ReactElement child */} + <> + <OptionsDropdown items={items} /> + <Flex + alignItems="center" + display="flex" + flexDirection="column" + justifyContent="center" + paddingTop={{ base: 2, lg: 6 }} + width="100%" + > + {currentTokenInput === 'erc20' && <ERC20ApproveAndTransferButton />} + {currentTokenInput === 'native' && <NativeToken />} + </Flex> + </> </WalletStatusVerifier> ) } From 9b25bc3536d51562c3c04ab2829e633dd6fd0350 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:13:35 -0300 Subject: [PATCH 041/115] docs: fix typedoc param warnings in suspenseWrapper and include TokensMap --- src/utils/suspenseWrapper.tsx | 11 ++--------- typedoc.json | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/utils/suspenseWrapper.tsx b/src/utils/suspenseWrapper.tsx index 835ad5c7..4f79e033 100644 --- a/src/utils/suspenseWrapper.tsx +++ b/src/utils/suspenseWrapper.tsx @@ -41,10 +41,7 @@ const DefaultFallback = ({ * A generic wrapper for all the components that use suspense * * @param WrappedComponent - a component that will be wrapped inside ErrorBoundary and Suspense - * @param {ReactNode} [errorFallback] - a custom fallback for ErrorBoundary - * @param {ReactNode} [suspenseFallback] - a custom fallback for Suspense - * @param {DefaultFallbackFormat} [defaultFallbackFormat] - Optional. Can be a dialog or just text or custom component (default). - * @returns {ComponentType} + * @returns {ComponentType} component accepting {@link WithSuspenseProps} */ export const withSuspense = <WrappedProps extends object>( WrappedComponent: ComponentType<WrappedProps>, @@ -163,11 +160,7 @@ export type WithSuspenseAndRetryProps = { * A wrapper for a component that uses suspense, with the capacity to retry if a useSuspenseQuery fails * * @param WrappedComponent - a component wrapped inside a tanstack's QueryErrorResetBoundary, ErrorBoundary, and a Suspense - * @param {ReactNode} [fallbackRender] - a custom fallback render for ErrorBoundary - * @param {DefaultFallbackFormat} [defaultFallbackFormat] - Optional. Can be a dialog or just text (default). Has no effect if `fallbackRender` is provided - * @param {ReactNode} [suspenseFallback] - a custom fallback for Suspense - * @param {'xs' | 'sm' | 'md' | 'lg' | 'xl'} [spinnerSize] - Optional. Sets the size of the default spinner shown during suspense loading. Default is 'lg'. - * @returns {ComponentType} + * @returns {ComponentType} component accepting {@link WithSuspenseAndRetryProps} */ export const withSuspenseAndRetry = <WrappedProps extends object>( WrappedComponent: ComponentType<WrappedProps>, diff --git a/typedoc.json b/typedoc.json index 355b71ab..d93acffc 100644 --- a/typedoc.json +++ b/typedoc.json @@ -25,7 +25,7 @@ "./src/{vite-env.d.ts,main.tsx,routeTree.gen.ts}", "./src/lib/{wagmi,wallets}/**/*", "./src/routes/**/*", - "./src/utils/{logger,tokenListsCache}.ts", + "./src/utils/logger.ts", "./src/constants/contracts/**/*", "./src/hooks/generated.ts", "./src/subgraphs/**/*", From 29dc29f5fc0ae546a812d589d0096e72de416b91 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 23:23:45 -0300 Subject: [PATCH 042/115] refactor: use block-bodied callbacks for side-effect-only arrow functions --- src/providers/TransactionNotificationProvider.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/providers/TransactionNotificationProvider.tsx b/src/providers/TransactionNotificationProvider.tsx index 8e40ab35..debaa4b5 100644 --- a/src/providers/TransactionNotificationProvider.tsx +++ b/src/providers/TransactionNotificationProvider.tsx @@ -122,7 +122,9 @@ export const TransactionNotificationProvider: FC<PropsWithChildren> = ({ childre let replacedTx = null as ReplacementReturnType | null const receipt = await readOnlyClient.waitForTransactionReceipt({ hash, - onReplaced: (replacedTxData) => (replacedTx = replacedTxData), + onReplaced: (replacedTxData) => { + replacedTx = replacedTxData + }, }) if (replacedTx !== null) { @@ -200,7 +202,9 @@ export const TransactionNotificationProvider: FC<PropsWithChildren> = ({ childre message: `Signature requested: ${transactionMessage}`, signaturePromise: txPromise, showSuccessToast: false, - onToastId: (id) => (toastId = id), + onToastId: (id) => { + toastId = id + }, }) const hash = await txPromise From 7c2656d114880f14820c51219d3d43ab6ec0418a Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 11:31:52 -0300 Subject: [PATCH 043/115] chore: bump @uniswap/default-token-list 18.12.0 -> 18.13.0 18.13.0 was published the day after the original update PR was authored. --- package.json | 2 +- pnpm-lock.yaml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 5a16104b..de6bcbd1 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@tanstack/react-query": "^5.96.1", "@tanstack/react-router": "^1.168.10", "@tanstack/react-virtual": "^3.13.23", - "@uniswap/default-token-list": "^18.12.0", + "@uniswap/default-token-list": "^18.13.0", "@vercel/analytics": "^1.5.0", "@web3icons/core": "^4.0.13", "@web3icons/react": "^4.0.13", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 861dc9f6..a0e48fc8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,8 +42,8 @@ importers: specifier: ^3.13.23 version: 3.13.23(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@uniswap/default-token-list': - specifier: ^18.12.0 - version: 18.12.0 + specifier: ^18.13.0 + version: 18.13.0 '@vercel/analytics': specifier: ^1.5.0 version: 1.6.1(react@19.2.4) @@ -3899,8 +3899,8 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} - '@uniswap/default-token-list@18.12.0': - resolution: {integrity: sha512-M2D7gGuf9rAqgEE3YmA4+p2kwKDr6dxd0GwQRQMlkFHJBvEQldudVBMX9z9SUP3Z1VigBV2E7I107xFbx9ovlg==} + '@uniswap/default-token-list@18.13.0': + resolution: {integrity: sha512-dtvHgX2RxD3cqqiiJexNrisvn7GCEwS2l6YJSFOTrmnQn+EtpznLuXeKZRpvTu8YhtUyboNJhBw7ZzS9KpRQwg==} '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} @@ -7668,8 +7668,8 @@ packages: preact@10.24.2: resolution: {integrity: sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==} - preact@10.29.0: - resolution: {integrity: sha512-wSAGyk2bYR1c7t3SZ3jHcM6xy0lcBcDel6lODcs9ME6Th++Dx2KU+6D3HD8wMMKGA8Wpw7OMd3/4RGzYRpzwRg==} + preact@10.29.1: + resolution: {integrity: sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==} prettier@3.8.1: resolution: {integrity: sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==} @@ -10012,7 +10012,7 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.4 keccak: 3.0.4 - preact: 10.29.0 + preact: 10.29.1 sha.js: 2.4.12 transitivePeerDependencies: - supports-color @@ -14242,7 +14242,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@uniswap/default-token-list@18.12.0': {} + '@uniswap/default-token-list@18.13.0': {} '@upsetjs/venn.js@2.0.0': optionalDependencies: @@ -19602,7 +19602,7 @@ snapshots: preact@10.24.2: {} - preact@10.29.0: {} + preact@10.29.1: {} prettier@3.8.1: {} From 8cc1bc72d450d090dcad35bcf30830e0dffcf471 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Wed, 1 Apr 2026 16:11:41 -0300 Subject: [PATCH 044/115] chore: update medium-risk dependencies Update dev tooling and build dependencies to their latest major versions: - @biomejs/biome 1.9.4 -> 2.4.10 (config migrated via biome migrate) - vitest 3.x -> 4.1.2, @vitest/coverage-v8 3.x -> 4.1.2 - jsdom 26.x -> 29.0.1 - @commitlint/cli 19.x -> 20.5.0, config-conventional 19.x -> 20.5.0 - lint-staged 15.x -> 16.4.0 - @vitejs/plugin-react-swc 3.x -> 4.3.0 - vite-tsconfig-paths 5.x -> 6.1.1 - vite-plugin-sitemap 0.7.x -> 0.8.2 - @vercel/analytics 1.x -> 2.0.1 Closes #435 --- biome.json | 8 +- package.json | 22 +- pnpm-lock.yaml | 1451 +++++++---------- src/components/pageComponents/NotFound404.tsx | 2 +- .../home/Examples/Item/index.tsx | 4 +- .../home/Examples/List/index.tsx | 2 +- .../home/Examples/demos/EnsName/index.tsx | 6 +- .../home/Examples/demos/HashHandling/Hash.tsx | 6 +- .../Examples/demos/HashHandling/index.tsx | 12 +- .../OptimismCrossDomainMessenger/index.tsx | 18 +- .../Examples/demos/OptionsDropdown/index.tsx | 2 +- .../home/Examples/demos/SignMessage/index.tsx | 2 +- .../Examples/demos/SwitchNetwork/index.tsx | 8 +- .../Examples/demos/TokenDropdown/index.tsx | 2 +- .../Examples/demos/TokenInput/index.test.tsx | 2 +- .../home/Examples/demos/TokenInput/index.tsx | 18 +- .../ERC20ApproveAndTransferButton.tsx | 8 +- .../MintUSDC.tsx | 4 +- .../ERC20ApproveAndTransferButton/index.tsx | 8 +- .../demos/TransactionButton/NativeToken.tsx | 10 +- .../demos/TransactionButton/index.test.tsx | 2 +- .../demos/TransactionButton/index.tsx | 6 +- .../demos/subgraphs/Subgraph/index.tsx | 14 +- .../demos/subgraphs/SubgraphStatus/index.tsx | 8 +- .../pageComponents/home/Examples/index.tsx | 10 +- .../pageComponents/home/Welcome/index.tsx | 4 +- .../pageComponents/home/index.test.tsx | 2 +- .../sharedComponents/BigNumberInput.tsx | 2 +- .../sharedComponents/ConnectButton/index.tsx | 2 +- .../sharedComponents/ExplorerLink.tsx | 4 +- src/components/sharedComponents/Hash.tsx | 4 +- src/components/sharedComponents/HashInput.tsx | 4 +- .../sharedComponents/NotificationToast.tsx | 2 +- .../sharedComponents/SignButton.tsx | 6 +- .../sharedComponents/SwitchNetwork.test.tsx | 2 +- .../sharedComponents/SwitchNetwork.tsx | 6 +- .../sharedComponents/TokenDropdown.tsx | 6 +- .../TokenInput/Components.tsx | 2 +- .../sharedComponents/TokenInput/index.tsx | 8 +- .../TokenInput/useTokenInput.tsx | 6 +- .../sharedComponents/TokenLogo.test.tsx | 2 +- src/components/sharedComponents/TokenLogo.tsx | 2 +- .../TokenSelect/List/AddERC20TokenButton.tsx | 4 +- .../sharedComponents/TokenSelect/List/Row.tsx | 4 +- .../TokenSelect/List/TokenBalance.tsx | 4 +- .../TokenSelect/List/index.tsx | 4 +- .../TokenSelect/Search/index.tsx | 4 +- .../TokenSelect/TopTokens/Item.tsx | 4 +- .../TokenSelect/TopTokens/index.tsx | 4 +- .../sharedComponents/TokenSelect/index.tsx | 6 +- .../TransactionButton.test.tsx | 2 +- .../sharedComponents/TransactionButton.tsx | 10 +- .../WalletStatusVerifier.test.tsx | 4 +- .../sharedComponents/WalletStatusVerifier.tsx | 4 +- .../dev/TanStackReactQueryDevtools.tsx | 2 +- .../dev/TanStackRouterDevtools.tsx | 2 +- .../sharedComponents/ui/DropdownButton.tsx | 2 +- .../ui/ExternalLink/index.tsx | 2 +- .../ui/Footer/Socials/index.tsx | 4 +- .../sharedComponents/ui/Footer/index.tsx | 6 +- .../sharedComponents/ui/Header/Logo.tsx | 2 +- .../sharedComponents/ui/Header/MainMenu.tsx | 2 +- .../ui/Header/MobileMenu/MobileMenu.tsx | 7 +- .../sharedComponents/ui/Header/index.tsx | 8 +- .../sharedComponents/ui/Modal/index.tsx | 2 +- .../ui/PrimaryButton/index.tsx | 2 +- .../ui/SecondaryButton/index.tsx | 2 +- .../sharedComponents/ui/SwitchChainButton.tsx | 2 +- .../ui/SwitchThemeButton/assets/Dark.tsx | 2 +- .../ui/SwitchThemeButton/assets/Light.tsx | 2 +- .../ui/SwitchThemeButton/index.tsx | 4 +- src/components/ui/toaster.tsx | 2 +- src/constants/contracts/contracts.ts | 9 +- src/hooks/useErc20Balance.test.ts | 2 +- src/hooks/useNetworkBlockNumber.ts | 5 +- src/hooks/useOPL1CrossDomainMessengerProxy.ts | 2 +- src/hooks/useTokenLists.test.ts | 6 +- src/hooks/useTokenLists.ts | 5 +- src/hooks/useTokens.ts | 15 +- src/hooks/useWalletStatus.ts | 2 +- src/hooks/useWeb3Status.test.ts | 4 +- src/lib/wallets/connectkit.config.tsx | 11 +- src/lib/wallets/portoInit.ts | 2 +- src/lib/wallets/web3modal.config.tsx | 8 +- src/main.tsx | 3 +- .../TransactionNotificationProvider.tsx | 14 +- src/providers/Web3Provider.tsx | 5 +- src/routes/__root.tsx | 8 +- src/utils/getExplorerLink.test.ts | 2 +- src/utils/getTransactionOutputs.test.ts | 4 +- src/utils/getTransactionOutputs.ts | 2 +- src/utils/hash.test.ts | 2 +- src/utils/hash.ts | 6 +- src/utils/numberFormat.test.ts | 2 +- src/utils/suspenseWrapper.tsx | 9 +- vite.config.ts | 2 +- vocs.config.ts | 2 +- 97 files changed, 832 insertions(+), 1108 deletions(-) diff --git a/biome.json b/biome.json index da16e165..2a2495da 100644 --- a/biome.json +++ b/biome.json @@ -1,15 +1,13 @@ { - "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", - "organizeImports": { - "enabled": true - }, + "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json", + "assist": { "actions": { "source": { "organizeImports": "on" } } }, "vcs": { "clientKind": "git", "enabled": true, "useIgnoreFile": true }, "files": { - "ignore": ["src/routeTree.gen.ts", ".install-files/**/*"] + "includes": ["**", "!**/src/routeTree.gen.ts", "!**/.install-files/**/*"] }, "formatter": { "attributePosition": "multiline", diff --git a/package.json b/package.json index de6bcbd1..26bc5374 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "@tanstack/react-router": "^1.168.10", "@tanstack/react-virtual": "^3.13.23", "@uniswap/default-token-list": "^18.13.0", - "@vercel/analytics": "^1.5.0", + "@vercel/analytics": "^2.0.1", "@web3icons/core": "^4.0.13", "@web3icons/react": "^4.0.13", "connectkit": "^1.9.2", @@ -56,9 +56,9 @@ "zod": "^3.24.4" }, "devDependencies": { - "@biomejs/biome": "1.9.4", - "@commitlint/cli": "^19.8.1", - "@commitlint/config-conventional": "^19.8.1", + "@biomejs/biome": "2.4.10", + "@commitlint/cli": "^20.5.0", + "@commitlint/config-conventional": "^20.5.0", "@graphql-codegen/cli": "^5.0.6", "@graphql-typed-document-node/core": "^3.2.0", "@parcel/watcher": "^2.5.1", @@ -71,13 +71,13 @@ "@testing-library/user-event": "^14.6.1", "@types/react": "^19.1.3", "@types/react-dom": "^19.1.3", - "@vitejs/plugin-react-swc": "^3.9.0", - "@vitest/coverage-v8": "^3.1.3", + "@vitejs/plugin-react-swc": "^4.3.0", + "@vitest/coverage-v8": "^4.1.2", "@wagmi/cli": "^2.3.1", "change-case": "^5.4.4", "husky": "^9.1.7", - "jsdom": "^26.1.0", - "lint-staged": "^15.5.2", + "jsdom": "^29.0.1", + "lint-staged": "^16.4.0", "ts-node": "^10.9.2", "typedoc": "^0.28.18", "typedoc-github-theme": "^0.4.0", @@ -86,9 +86,9 @@ "typedoc-plugin-rename-defaults": "^0.7.3", "typescript": "^5.8.3", "vite": "^6.3.5", - "vite-plugin-sitemap": "^0.7.1", - "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.1.3", + "vite-plugin-sitemap": "^0.8.2", + "vite-tsconfig-paths": "^6.1.1", + "vitest": "^4.1.2", "vocs": "1.4.1" }, "packageManager": "pnpm@10.33.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a0e48fc8..b15f2946 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^18.13.0 version: 18.13.0 '@vercel/analytics': - specifier: ^1.5.0 - version: 1.6.1(react@19.2.4) + specifier: ^2.0.1 + version: 2.0.1(react@19.2.4) '@web3icons/core': specifier: ^4.0.13 version: 4.0.51(typescript@5.9.3) @@ -97,14 +97,14 @@ importers: version: 3.25.76 devDependencies: '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + specifier: 2.4.10 + version: 2.4.10 '@commitlint/cli': - specifier: ^19.8.1 - version: 19.8.1(@types/node@25.3.0)(typescript@5.9.3) + specifier: ^20.5.0 + version: 20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@5.9.3) '@commitlint/config-conventional': - specifier: ^19.8.1 - version: 19.8.1 + specifier: ^20.5.0 + version: 20.5.0 '@graphql-codegen/cli': specifier: ^5.0.6 version: 5.0.7(@parcel/watcher@2.5.6)(@types/node@25.3.0)(bufferutil@4.1.0)(crossws@0.3.5)(graphql@16.13.2)(typescript@5.9.3)(utf-8-validate@5.0.10) @@ -142,11 +142,11 @@ importers: specifier: ^19.1.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react-swc': - specifier: ^3.9.0 - version: 3.11.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^4.3.0 + version: 4.3.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) '@vitest/coverage-v8': - specifier: ^3.1.3 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^4.1.2 + version: 4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))) '@wagmi/cli': specifier: ^2.3.1 version: 2.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) @@ -157,11 +157,11 @@ importers: specifier: ^9.1.7 version: 9.1.7 jsdom: - specifier: ^26.1.0 - version: 26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + specifier: ^29.0.1 + version: 29.0.1(@noble/hashes@1.8.0) lint-staged: - specifier: ^15.5.2 - version: 15.5.2 + specifier: ^16.4.0 + version: 16.4.0 ts-node: specifier: ^10.9.2 version: 10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.19))(@types/node@25.3.0)(typescript@5.9.3) @@ -187,14 +187,14 @@ importers: specifier: ^6.3.5 version: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-sitemap: - specifier: ^0.7.1 - version: 0.7.1 + specifier: ^0.8.2 + version: 0.8.2 vite-tsconfig-paths: - specifier: ^5.1.4 - version: 5.1.4(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + specifier: ^6.1.1 + version: 6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) vitest: - specifier: ^3.1.3 - version: 3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) + specifier: ^4.1.2 + version: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) vocs: specifier: 1.4.1 version: 1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3) @@ -238,10 +238,6 @@ packages: '@adraffy/ens-normalize@1.11.1': resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} @@ -263,8 +259,16 @@ packages: react: '>=18.0.0' react-dom: '>=18.0.0' - '@asamuzakjp/css-color@3.2.0': - resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@asamuzakjp/css-color@5.1.1': + resolution: {integrity: sha512-iGWN8E45Ws0XWx3D44Q1t6vX2LqhCKcwfmwBYCDsFrYFS6m4q/Ks61L2veETaLv+ckDC6+dTETJoaAAb7VjLiw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.0.4': + resolution: {integrity: sha512-jXR6x4AcT3eIrS2fSNAwJpwirOkGcd+E7F7CP3zjdTqz9B/2huHOL8YJZBgekKwLML+u7qB/6P1LXQuMScsx0w==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} '@babel/code-frame@7.29.0': resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} @@ -565,59 +569,59 @@ packages: peerDependencies: bs58: ^6.0.0 - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} + '@biomejs/biome@2.4.10': + resolution: {integrity: sha512-xxA3AphFQ1geij4JTHXv4EeSTda1IFn22ye9LdyVPoJU19fNVl0uzfEuhsfQ4Yue/0FaLs2/ccVi4UDiE7R30w==} engines: {node: '>=14.21.3'} hasBin: true - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} + '@biomejs/cli-darwin-arm64@2.4.10': + resolution: {integrity: sha512-vuzzI1cWqDVzOMIkYyHbKqp+AkQq4K7k+UCXWpkYcY/HDn1UxdsbsfgtVpa40shem8Kax4TLDLlx8kMAecgqiw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [darwin] - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} + '@biomejs/cli-darwin-x64@2.4.10': + resolution: {integrity: sha512-14fzASRo+BPotwp7nWULy2W5xeUyFnTaq1V13Etrrxkrih+ez/2QfgFm5Ehtf5vSjtgx/IJycMMpn5kPd5ZNaA==} engines: {node: '>=14.21.3'} cpu: [x64] os: [darwin] - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} + '@biomejs/cli-linux-arm64-musl@2.4.10': + resolution: {integrity: sha512-WrJY6UuiSD/Dh+nwK2qOTu8kdMDlLV3dLMmychIghHPAysWFq1/DGC1pVZx8POE3ZkzKR3PUUnVrtZfMfaJjyQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [musl] - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} + '@biomejs/cli-linux-arm64@2.4.10': + resolution: {integrity: sha512-7MH1CMW5uuxQ/s7FLST63qF8B3Hgu2HRdZ7tA1X1+mk+St4JOuIrqdhIBnnyqeyWJNI+Bww7Es5QZ0wIc1Cmkw==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [linux] libc: [glibc] - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} + '@biomejs/cli-linux-x64-musl@2.4.10': + resolution: {integrity: sha512-kDTi3pI6PBN6CiczsWYOyP2zk0IJI08EWEQyDMQWW221rPaaEz6FvjLhnU07KMzLv8q3qSuoB93ua6inSQ55Tw==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [musl] - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} + '@biomejs/cli-linux-x64@2.4.10': + resolution: {integrity: sha512-tZLvEEi2u9Xu1zAqRjTcpIDGVtldigVvzug2fTuPG0ME/g8/mXpRPcNgLB22bGn6FvLJpHHnqLnwliOu8xjYrg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [linux] libc: [glibc] - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} + '@biomejs/cli-win32-arm64@2.4.10': + resolution: {integrity: sha512-umwQU6qPzH+ISTf/eHyJ/QoQnJs3V9Vpjz2OjZXe9MVBZ7prgGafMy7yYeRGnlmDAn87AKTF3Q6weLoMGpeqdQ==} engines: {node: '>=14.21.3'} cpu: [arm64] os: [win32] - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} + '@biomejs/cli-win32-x64@2.4.10': + resolution: {integrity: sha512-aW/JU5GuyH4uxMrNYpoC2kjaHlyJGLgIa3XkhPEZI0uKhZhJZU8BuEyJmvgzSPQNGozBwWjC972RaNdcJ9KyJg==} engines: {node: '>=14.21.3'} cpu: [x64] os: [win32] @@ -635,6 +639,10 @@ packages: '@braintree/sanitize-url@7.1.2': resolution: {integrity: sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA==} + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + '@chakra-ui/react@3.34.0': resolution: {integrity: sha512-VLhpVwv5IVxhwajO10KnS1VQT4hDqQMQP/A796Ya+uVu8AdoSX+5HHyTLTkYIeXIDMe0xLqJfov04OBKbBchJA==} peerDependencies: @@ -674,106 +682,126 @@ packages: '@coinbase/wallet-sdk@4.3.6': resolution: {integrity: sha512-4q8BNG1ViL4mSAAvPAtpwlOs1gpC+67eQtgIwNvT3xyeyFFd+guwkc8bcX5rTmQhXpqnhzC4f0obACbP9CqMSA==} - '@commitlint/cli@19.8.1': - resolution: {integrity: sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==} + '@commitlint/cli@20.5.0': + resolution: {integrity: sha512-yNkyN/tuKTJS3wdVfsZ2tXDM4G4Gi7z+jW54Cki8N8tZqwKBltbIvUUrSbT4hz1bhW/h0CdR+5sCSpXD+wMKaQ==} engines: {node: '>=v18'} hasBin: true - '@commitlint/config-conventional@19.8.1': - resolution: {integrity: sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==} + '@commitlint/config-conventional@20.5.0': + resolution: {integrity: sha512-t3Ni88rFw1XMa4nZHgOKJ8fIAT9M2j5TnKyTqJzsxea7FUetlNdYFus9dz+MhIRZmc16P0PPyEfh6X2d/qw8SA==} engines: {node: '>=v18'} - '@commitlint/config-validator@19.8.1': - resolution: {integrity: sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==} + '@commitlint/config-validator@20.5.0': + resolution: {integrity: sha512-T/Uh6iJUzyx7j35GmHWdIiGRQB+ouZDk0pwAaYq4SXgB54KZhFdJ0vYmxiW6AMYICTIWuyMxDBl1jK74oFp/Gw==} engines: {node: '>=v18'} - '@commitlint/ensure@19.8.1': - resolution: {integrity: sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==} + '@commitlint/ensure@20.5.0': + resolution: {integrity: sha512-IpHqAUesBeW1EDDdjzJeaOxU9tnogLAyXLRBn03SHlj1SGENn2JGZqSWGkFvBJkJzfXAuCNtsoYzax+ZPS+puw==} engines: {node: '>=v18'} - '@commitlint/execute-rule@19.8.1': - resolution: {integrity: sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==} + '@commitlint/execute-rule@20.0.0': + resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} engines: {node: '>=v18'} - '@commitlint/format@19.8.1': - resolution: {integrity: sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==} + '@commitlint/format@20.5.0': + resolution: {integrity: sha512-TI9EwFU/qZWSK7a5qyXMpKPPv3qta7FO4tKW+Wt2al7sgMbLWTsAcDpX1cU8k16TRdsiiet9aOw0zpvRXNJu7Q==} engines: {node: '>=v18'} - '@commitlint/is-ignored@19.8.1': - resolution: {integrity: sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==} + '@commitlint/is-ignored@20.5.0': + resolution: {integrity: sha512-JWLarAsurHJhPozbuAH6GbP4p/hdOCoqS9zJMfqwswne+/GPs5V0+rrsfOkP68Y8PSLphwtFXV0EzJ+GTXTTGg==} engines: {node: '>=v18'} - '@commitlint/lint@19.8.1': - resolution: {integrity: sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==} + '@commitlint/lint@20.5.0': + resolution: {integrity: sha512-jiM3hNUdu04jFBf1VgPdjtIPvbuVfDTBAc6L98AWcoLjF5sYqkulBHBzlVWll4rMF1T5zeQFB6r//a+s+BBKlA==} engines: {node: '>=v18'} - '@commitlint/load@19.8.1': - resolution: {integrity: sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==} + '@commitlint/load@20.5.0': + resolution: {integrity: sha512-sLhhYTL/KxeOTZjjabKDhwidGZan84XKK1+XFkwDYL/4883kIajcz/dZFAhBJmZPtL8+nBx6bnkzA95YxPeDPw==} engines: {node: '>=v18'} - '@commitlint/message@19.8.1': - resolution: {integrity: sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==} + '@commitlint/message@20.4.3': + resolution: {integrity: sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==} engines: {node: '>=v18'} - '@commitlint/parse@19.8.1': - resolution: {integrity: sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==} + '@commitlint/parse@20.5.0': + resolution: {integrity: sha512-SeKWHBMk7YOTnnEWUhx+d1a9vHsjjuo6Uo1xRfPNfeY4bdYFasCH1dDpAv13Lyn+dDPOels+jP6D2GRZqzc5fA==} engines: {node: '>=v18'} - '@commitlint/read@19.8.1': - resolution: {integrity: sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==} + '@commitlint/read@20.5.0': + resolution: {integrity: sha512-JDEIJ2+GnWpK8QqwfmW7O42h0aycJEWNqcdkJnyzLD11nf9dW2dWLTVEa8Wtlo4IZFGLPATjR5neA5QlOvIH1w==} engines: {node: '>=v18'} - '@commitlint/resolve-extends@19.8.1': - resolution: {integrity: sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==} + '@commitlint/resolve-extends@20.5.0': + resolution: {integrity: sha512-3SHPWUW2v0tyspCTcfSsYml0gses92l6TlogwzvM2cbxDgmhSRc+fldDjvGkCXJrjSM87BBaWYTPWwwyASZRrg==} engines: {node: '>=v18'} - '@commitlint/rules@19.8.1': - resolution: {integrity: sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==} + '@commitlint/rules@20.5.0': + resolution: {integrity: sha512-5NdQXQEdnDPT5pK8O39ZA7HohzPRHEsDGU23cyVCNPQy4WegAbAwrQk3nIu7p2sl3dutPk8RZd91yKTrMTnRkQ==} engines: {node: '>=v18'} - '@commitlint/to-lines@19.8.1': - resolution: {integrity: sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==} + '@commitlint/to-lines@20.0.0': + resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} engines: {node: '>=v18'} - '@commitlint/top-level@19.8.1': - resolution: {integrity: sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==} + '@commitlint/top-level@20.4.3': + resolution: {integrity: sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==} engines: {node: '>=v18'} - '@commitlint/types@19.8.1': - resolution: {integrity: sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==} + '@commitlint/types@20.5.0': + resolution: {integrity: sha512-ZJoS8oSq2CAZEpc/YI9SulLrdiIyXeHb/OGqGrkUP6Q7YV+0ouNAa7GjqRdXeQPncHQIDz/jbCTlHScvYvO/gA==} engines: {node: '>=v18'} + '@conventional-changelog/git-client@2.6.0': + resolution: {integrity: sha512-T+uPDciKf0/ioNNDpMGc8FDsehJClZP0yR3Q5MN6wE/Y/1QZ7F+80OgznnTCOlMEG4AV0LvH2UJi3C/nBnaBUg==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.3.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} + '@csstools/css-color-parser@4.0.2': + resolution: {integrity: sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + '@csstools/css-syntax-patches-for-csstree@1.1.2': + resolution: {integrity: sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} '@ecies/ciphers@0.2.5': resolution: {integrity: sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A==} @@ -1177,6 +1205,15 @@ packages: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} + '@exodus/bytes@1.15.0': + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} @@ -1541,14 +1578,6 @@ packages: '@internationalized/number@3.6.5': resolution: {integrity: sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==} - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -1878,10 +1907,6 @@ packages: '@phosphor-icons/webcomponents@2.1.5': resolution: {integrity: sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - '@protobuf-ts/grpcweb-transport@2.11.1': resolution: {integrity: sha512-1W4utDdvOB+RHMFQ0soL4JdnxjXV+ddeGIUg08DvZrA8Ms6k5NN6GBFU2oHZdTOcJVpPrDJ02RJlqtaoCMNBtw==} @@ -2702,12 +2727,12 @@ packages: '@repeaterjs/repeater@3.0.6': resolution: {integrity: sha512-Javneu5lsuhwNCryN+pXH93VPQ8g0dBX7wItHFgYiwQmzE1sVdg5tWHiOgHywzL2W21XQopa7IwIEnNbmeUJYA==} - '@rolldown/pluginutils@1.0.0-beta.27': - resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rolldown/pluginutils@1.0.0-rc.3': resolution: {integrity: sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==} + '@rolldown/pluginutils@1.0.0-rc.7': + resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -2931,6 +2956,14 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@simple-libs/child-process-utils@1.0.2': + resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} + engines: {node: '>=18'} + + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} + engines: {node: '>=18'} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -3338,6 +3371,9 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@swc/core-darwin-arm64@1.15.13': resolution: {integrity: sha512-ztXusRuC5NV2w+a6pDhX13CGioMLq8CjX5P4XgVJ21ocqz9t19288Do0y8LklplDtwcEhYGTNdMbkmUT7+lDTg==} engines: {node: '>=10'} @@ -3724,9 +3760,6 @@ packages: '@types/connect@3.4.38': resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} - '@types/conventional-commits-parser@5.0.2': - resolution: {integrity: sha512-BgT2szDXnVypgpNxOK8aL5SGjUdaQbC++WZNjF1Qge3Og2+zhHj+RWhmehLhYyvQwqAmvezruVfOf8+3m74W+g==} - '@types/d3-array@3.2.2': resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} @@ -3939,12 +3972,13 @@ packages: peerDependencies: vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vercel/analytics@1.6.1': - resolution: {integrity: sha512-oH9He/bEM+6oKlv3chWuOOcp8Y6fo6/PSro8hEkgCW3pu9/OiCXiUpRUogDh3Fs3LH2sosDrx8CxeOLBEE+afg==} + '@vercel/analytics@2.0.1': + resolution: {integrity: sha512-MTQG6V9qQrt1tsDeF+2Uoo5aPjqbVPys1xvnIftXSJYG2SrwXRHnqEvVoYID7BTruDz4lCd2Z7rM1BdkUehk2g==} peerDependencies: '@remix-run/react': ^2 '@sveltejs/kit': ^1 || ^2 next: '>= 13' + nuxt: '>= 3' react: ^18 || ^19 || ^19.0.0-rc svelte: '>= 4' vue: ^3 @@ -3956,6 +3990,8 @@ packages: optional: true next: optional: true + nuxt: + optional: true react: optional: true svelte: @@ -3965,10 +4001,11 @@ packages: vue-router: optional: true - '@vitejs/plugin-react-swc@3.11.0': - resolution: {integrity: sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==} + '@vitejs/plugin-react-swc@4.3.0': + resolution: {integrity: sha512-mOkXCII839dHyAt/gpoSlm28JIVDwhZ6tnG6wJxUy2bmOx7UaPjvOyIDf3SFv5s7Eo7HVaq6kRcu6YMEzt5Z7w==} + engines: {node: ^20.19.0 || >=22.12.0} peerDependencies: - vite: ^4 || ^5 || ^6 || ^7 + vite: ^4 || ^5 || ^6 || ^7 || ^8 '@vitejs/plugin-react@5.2.0': resolution: {integrity: sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==} @@ -3976,43 +4013,43 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 - '@vitest/coverage-v8@3.2.4': - resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==} + '@vitest/coverage-v8@4.1.2': + resolution: {integrity: sha512-sPK//PHO+kAkScb8XITeB1bf7fsk85Km7+rt4eeuRR3VS1/crD47cmV5wicisJmjNdfeokTZwjMk4Mj2d58Mgg==} peerDependencies: - '@vitest/browser': 3.2.4 - vitest: 3.2.4 + '@vitest/browser': 4.1.2 + vitest: 4.1.2 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.1.2': + resolution: {integrity: sha512-gbu+7B0YgUJ2nkdsRJrFFW6X7NTP44WlhiclHniUhxADQJH5Szt9mZ9hWnJPJ8YwOK5zUOSSlSvyzRf0u1DSBQ==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.1.2': + resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.1.2': + resolution: {integrity: sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.1.2': + resolution: {integrity: sha512-Gr+FQan34CdiYAwpGJmQG8PgkyFVmARK8/xSijia3eTFgVfpcpztWLuP6FttGNfPLJhaZVP/euvujeNYar36OQ==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.1.2': + resolution: {integrity: sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.1.2': + resolution: {integrity: sha512-DU4fBnbVCJGNBwVA6xSToNXrkZNSiw59H8tcuUspVMsBDBST4nfvsPsEHDHGtWRRnqBERBQu7TrTKskmjqTXKA==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.1.2': + resolution: {integrity: sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==} '@wagmi/cli@2.10.0': resolution: {integrity: sha512-2tYt6Bp1q26mWexH+XE6dMpPB5/Gp/3OVtE2SeeJ/gNHKLZmVF/TuoZR75mpJKTpofyvpz/fnuMCkUxzbc/kRw==} @@ -4488,10 +4525,6 @@ packages: '@zag-js/utils@1.35.3': resolution: {integrity: sha512-LHcC+9y6TFhDsIz9I3koYxONl2JFfx5yQDzc6ZEQO2cqzXedRcN0R9IPqNGCX7JuhGt14ctDkVCm1JWGP2J6Wg==} - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - abitype@1.0.6: resolution: {integrity: sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==} peerDependencies: @@ -4625,8 +4658,8 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - ast-v8-to-istanbul@0.3.11: - resolution: {integrity: sha512-Qya9fkoofMjCBNVdWINMjB5KZvkYfaO9/anwkWnjxibpWUxo5iHl2sOdP7/uAqaRuUYuoo8rDwnbaaKVFxoUvw==} + ast-v8-to-istanbul@1.0.0: + resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -4719,6 +4752,9 @@ packages: bech32@2.0.0: resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + big.js@6.2.2: resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} @@ -4850,8 +4886,8 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} chalk@4.1.2: @@ -4889,10 +4925,6 @@ packages: charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - check-error@2.1.3: - resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} - engines: {node: '>= 16'} - chevrotain-allstar@0.3.1: resolution: {integrity: sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==} peerDependencies: @@ -4940,9 +4972,9 @@ packages: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} - cli-truncate@4.0.0: - resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} - engines: {node: '>=18'} + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} cli-width@3.0.0: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} @@ -5044,17 +5076,17 @@ packages: constant-case@3.0.4: resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} + conventional-changelog-angular@8.3.1: + resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} + engines: {node: '>=18'} - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} + conventional-changelog-conventionalcommits@9.3.1: + resolution: {integrity: sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==} + engines: {node: '>=18'} - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} + engines: {node: '>=18'} hasBin: true convert-source-map@1.9.0: @@ -5103,8 +5135,8 @@ packages: typescript: optional: true - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} engines: {node: '>=14'} peerDependencies: typescript: '>=4.9.5' @@ -5154,6 +5186,10 @@ packages: css-to-react-native@3.2.0: resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -5166,10 +5202,6 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@4.6.0: - resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} - engines: {node: '>=18'} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -5339,17 +5371,13 @@ packages: dagre-d3-es@7.0.14: resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==} - dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} - data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} dataloader@2.2.3: resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} @@ -5418,10 +5446,6 @@ packages: babel-plugin-macros: optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - deep-object-diff@1.1.9: resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} @@ -5571,9 +5595,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - encode-utf8@1.0.3: resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} @@ -5625,6 +5646,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -5754,10 +5778,6 @@ packages: resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} engines: {node: '>=10'} - execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - expect-type@1.3.0: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} @@ -5844,10 +5864,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} - follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} engines: {node: '>=4.0'} @@ -5861,10 +5877,6 @@ packages: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -5945,16 +5957,12 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - get-tsconfig@4.13.7: resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} - git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} + git-raw-commits@5.0.1: + resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==} + engines: {node: '>=18'} hasBin: true github-slugger@2.0.0: @@ -5964,11 +5972,6 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me @@ -6144,9 +6147,9 @@ packages: resolution: {integrity: sha512-gJnaDHXKDayjt8ue0n8Gs0A007yKXj4Xzb8+cNjZeYsSzzwKc0Lr+OZgYwVfB0pHfUs17EPoLvrOsEaJ9mj+Tg==} engines: {node: '>=16.9.0'} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -6170,10 +6173,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - humanize-ms@1.2.1: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} @@ -6296,10 +6295,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@4.0.0: - resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} - engines: {node: '>=12'} - is-fullwidth-code-point@5.1.0: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} @@ -6357,14 +6352,6 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - is-typed-array@1.1.15: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} @@ -6429,17 +6416,10 @@ packages: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@5.0.6: - resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} - engines: {node: '>=10'} - istanbul-reports@3.2.0: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} @@ -6468,16 +6448,13 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.1: resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true - jsdom@26.1.0: - resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} - engines: {node: '>=18'} + jsdom@29.0.1: + resolution: {integrity: sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: canvas: ^3.0.0 peerDependenciesMeta: @@ -6517,10 +6494,6 @@ packages: jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - katex@0.16.44: resolution: {integrity: sha512-EkxoDTk8ufHqHlf9QxGwcxeLkWRR3iOuYfRpfORgYfqc8s13bgb+YtRY59NK5ZpRaCwq1kqA6a5lpX8C/eLphQ==} hasBin: true @@ -6693,19 +6666,15 @@ packages: resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@15.5.2: - resolution: {integrity: sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==} - engines: {node: '>=18.12.0'} + lint-staged@16.4.0: + resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} + engines: {node: '>=20.17'} hasBin: true listr2@4.0.5: @@ -6717,9 +6686,9 @@ packages: enquirer: optional: true - listr2@8.3.3: - resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} - engines: {node: '>=18.0.0'} + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} lit-element@4.2.2: resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==} @@ -6742,25 +6711,15 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.mergewith@4.6.2: resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} @@ -6773,9 +6732,6 @@ packages: lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} @@ -6805,9 +6761,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lower-case-first@2.0.2: resolution: {integrity: sha512-EVm/rR94FJTZi3zefZ82fLWab+GX14LJN4HrWBcuo6Evmsl9hEfnqxgcHCKb9q+mNf6EVdsjx/qucYFIIB84pg==} @@ -6821,6 +6774,10 @@ packages: resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} engines: {node: 20 || >=22} + lru-cache@11.2.7: + resolution: {integrity: sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -6834,8 +6791,8 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - magicast@0.3.5: - resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + magicast@0.5.2: + resolution: {integrity: sha512-E3ZJh4J3S9KfwdjZhe2afj6R9lGIN5Pher1pF39UGrXRqq/VDaGVIGN13BjHd2u8B61hArAGOnso7nBOouW3TQ==} make-dir@4.0.0: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} @@ -6928,15 +6885,18 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} - meow@12.1.1: - resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} - engines: {node: '>=16.10'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -7107,10 +7067,6 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} - mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - mimic-function@5.0.1: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} @@ -7123,10 +7079,6 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - minimatch@10.2.2: - resolution: {integrity: sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==} - engines: {node: 18 || 20 || >=22} - minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -7141,10 +7093,6 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass@7.1.3: - resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} - engines: {node: '>=16 || 14 >=14.17'} - minisearch@7.2.0: resolution: {integrity: sha512-dqT2XBYUOZOiC5t2HRnwADjhNS2cecp9u+TJRiJ1Qp/f5qjkeT5APcGPjHw+bz89Ms8Jp+cG4AlE+QZ/QnDglg==} @@ -7250,10 +7198,6 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -7281,9 +7225,6 @@ packages: react-router-dom: optional: true - nwsapi@2.2.23: - resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - obj-multiplex@1.0.0: resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} @@ -7291,6 +7232,9 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -7316,10 +7260,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - onetime@7.0.0: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} @@ -7389,10 +7329,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} @@ -7405,10 +7341,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} @@ -7417,9 +7349,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.1: - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} @@ -7444,6 +7373,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -7461,10 +7393,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -7473,10 +7401,6 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -7488,10 +7412,6 @@ packages: resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==} engines: {node: '>=0.10.0'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -7502,10 +7422,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - perfect-freehand@1.2.3: resolution: {integrity: sha512-bHZSfqDHGNlPpgH2yxXgPHlQSPpEbo+qg7li0M78J9vNAi2yjwLeA4x79BEQhX44lEWpCLSFCeRZwpw0niiXPA==} @@ -7524,11 +7440,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - pify@3.0.0: resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} engines: {node: '>=4'} @@ -8055,9 +7966,6 @@ packages: rpc-websockets@9.3.3: resolution: {integrity: sha512-OkCsBBzrwxX4DoSv4Zlf9DgXKRB0MzVfCFg5MC+fNnf9ktr4SMWjsri0VNZQlDbCnGcImT6KNEv4ZoxktQhdpA==} - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -8200,14 +8108,14 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - slice-ansi@5.0.0: - resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} - engines: {node: '>=12'} - slice-ansi@7.1.2: resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} engines: {node: '>=18'} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + slow-redact@0.3.2: resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} @@ -8265,8 +8173,8 @@ packages: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.0.0: + resolution: {integrity: sha512-zUMPtQ/HBY3/50VbpkupYHbRroTRZJPRLvreamgErJVys0ceuzMkD44J/QjqhHjOzK42GQ3QZIeFG1OYfOtKqQ==} stdin-discarder@0.1.0: resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} @@ -8296,10 +8204,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string-width@6.1.0: resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} engines: {node: '>=16'} @@ -8308,6 +8212,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + engines: {node: '>=20'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -8329,17 +8237,10 @@ packages: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} - strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-literal@3.1.0: - resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} - style-to-js@1.1.21: resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} @@ -8407,17 +8308,9 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - test-exclude@7.0.2: - resolution: {integrity: sha512-u9E6A+ZDYdp7a4WnarkXPZOx8Ilz46+kby6p1yZ8zsGTz9gYa6FIS7lj2oezzNKmtdyyJNNmmXDppga5GB7kSw==} - engines: {node: '>=18'} - text-encoding-utf-8@1.0.2: resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} @@ -8437,37 +8330,30 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.4: - resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} - tldts-core@6.1.86: - resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + tldts-core@7.0.27: + resolution: {integrity: sha512-YQ7uPjgWUibIK6DW5lrKujGwUKhLevU4hcGbP5O6TcIUb+oTjJYJVWPS4nZsIHrEEEG6myk/oqAJUEQmpZrHsg==} - tldts@6.1.86: - resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + tldts@7.0.27: + resolution: {integrity: sha512-I4FZcVFcqCRuT0ph6dCDpPuO4Xgzvh+spkcTr1gK7peIvxWauoloVO0vuy1FQnijT63ss6AsHB6+OIM4aXHbPg==} hasBin: true to-buffer@1.2.2: @@ -8485,16 +8371,16 @@ packages: toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} - tough-cookie@5.1.2: - resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} engines: {node: '>=16'} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: - resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} - engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -8644,9 +8530,9 @@ packages: undici-types@7.22.0: resolution: {integrity: sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==} - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} + undici@7.24.7: + resolution: {integrity: sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ==} + engines: {node: '>=20.18.1'} unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -8908,16 +8794,13 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-plugin-sitemap@0.7.1: - resolution: {integrity: sha512-4NRTkiWytLuAmcikckrLcLl9iYA20+5v6l8XshcOrzxH1WR8H0O3S6sTQYfjMrE8su/LG6Y0cTodvOdcOIxaLw==} + vite-plugin-sitemap@0.8.2: + resolution: {integrity: sha512-bqIw6NVOXg6je81lzX8Lm0vjf8/QSAp8di8fYQzZ3ZdVicOm8+6idBGALJiy1R1FiXNIK8rgORO6HBqXyHW+iQ==} - vite-tsconfig-paths@5.1.4: - resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} + vite-tsconfig-paths@6.1.1: + resolution: {integrity: sha512-2cihq7zliibCCZ8P9cKJrQBkfgdvcFkOOc3Y02o3GWUDLgqjWsZudaoiuOwO/gzTzy17cS5F7ZPo4bsnS4DGkg==} peerDependencies: vite: '*' - peerDependenciesMeta: - vite: - optional: true vite@6.4.1: resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} @@ -8999,26 +8882,33 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.1.2: + resolution: {integrity: sha512-xjR1dMTVHlFLh98JE3i/f/WePqJsah4A0FK9cc8Ehp9Udk0AZk6ccpIZhh1qJ/yxVWRZ+Q54ocnD8TXmkhspGg==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.2 + '@vitest/browser-preview': 4.1.2 + '@vitest/browser-webdriverio': 4.1.2 + '@vitest/ui': 4.1.2 happy-dom: '*' jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': optional: true '@vitest/ui': optional: true @@ -9086,25 +8976,24 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -9134,10 +9023,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -9365,11 +9250,6 @@ snapshots: '@adraffy/ens-normalize@1.11.1': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@antfu/install-pkg@1.1.0': dependencies: package-manager-detector: 1.6.0 @@ -9485,13 +9365,23 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@asamuzakjp/css-color@3.2.0': + '@asamuzakjp/css-color@5.1.1': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 10.4.3 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.2.7 + + '@asamuzakjp/dom-selector@7.0.4': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.7 + + '@asamuzakjp/nwsapi@2.3.9': {} '@babel/code-frame@7.29.0': dependencies: @@ -9875,39 +9765,39 @@ snapshots: - typescript - use-sync-external-store - '@biomejs/biome@1.9.4': + '@biomejs/biome@2.4.10': optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 - - '@biomejs/cli-darwin-arm64@1.9.4': + '@biomejs/cli-darwin-arm64': 2.4.10 + '@biomejs/cli-darwin-x64': 2.4.10 + '@biomejs/cli-linux-arm64': 2.4.10 + '@biomejs/cli-linux-arm64-musl': 2.4.10 + '@biomejs/cli-linux-x64': 2.4.10 + '@biomejs/cli-linux-x64-musl': 2.4.10 + '@biomejs/cli-win32-arm64': 2.4.10 + '@biomejs/cli-win32-x64': 2.4.10 + + '@biomejs/cli-darwin-arm64@2.4.10': optional: true - '@biomejs/cli-darwin-x64@1.9.4': + '@biomejs/cli-darwin-x64@2.4.10': optional: true - '@biomejs/cli-linux-arm64-musl@1.9.4': + '@biomejs/cli-linux-arm64-musl@2.4.10': optional: true - '@biomejs/cli-linux-arm64@1.9.4': + '@biomejs/cli-linux-arm64@2.4.10': optional: true - '@biomejs/cli-linux-x64-musl@1.9.4': + '@biomejs/cli-linux-x64-musl@2.4.10': optional: true - '@biomejs/cli-linux-x64@1.9.4': + '@biomejs/cli-linux-x64@2.4.10': optional: true - '@biomejs/cli-win32-arm64@1.9.4': + '@biomejs/cli-win32-arm64@2.4.10': optional: true - '@biomejs/cli-win32-x64@1.9.4': + '@biomejs/cli-win32-x64@2.4.10': optional: true '@bitcoinerlab/secp256k1@1.2.0': @@ -9940,6 +9830,10 @@ snapshots: '@braintree/sanitize-url@7.1.2': {} + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + '@chakra-ui/react@3.34.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@ark-ui/react': 5.34.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -10037,139 +9931,155 @@ snapshots: - utf-8-validate - zod - '@commitlint/cli@19.8.1(@types/node@25.3.0)(typescript@5.9.3)': + '@commitlint/cli@20.5.0(@types/node@25.3.0)(conventional-commits-parser@6.4.0)(typescript@5.9.3)': dependencies: - '@commitlint/format': 19.8.1 - '@commitlint/lint': 19.8.1 - '@commitlint/load': 19.8.1(@types/node@25.3.0)(typescript@5.9.3) - '@commitlint/read': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/format': 20.5.0 + '@commitlint/lint': 20.5.0 + '@commitlint/load': 20.5.0(@types/node@25.3.0)(typescript@5.9.3) + '@commitlint/read': 20.5.0(conventional-commits-parser@6.4.0) + '@commitlint/types': 20.5.0 tinyexec: 1.0.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' + - conventional-commits-filter + - conventional-commits-parser - typescript - '@commitlint/config-conventional@19.8.1': + '@commitlint/config-conventional@20.5.0': dependencies: - '@commitlint/types': 19.8.1 - conventional-changelog-conventionalcommits: 7.0.2 + '@commitlint/types': 20.5.0 + conventional-changelog-conventionalcommits: 9.3.1 - '@commitlint/config-validator@19.8.1': + '@commitlint/config-validator@20.5.0': dependencies: - '@commitlint/types': 19.8.1 + '@commitlint/types': 20.5.0 ajv: 8.18.0 - '@commitlint/ensure@19.8.1': + '@commitlint/ensure@20.5.0': dependencies: - '@commitlint/types': 19.8.1 + '@commitlint/types': 20.5.0 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.startcase: 4.4.0 lodash.upperfirst: 4.3.1 - '@commitlint/execute-rule@19.8.1': {} + '@commitlint/execute-rule@20.0.0': {} - '@commitlint/format@19.8.1': + '@commitlint/format@20.5.0': dependencies: - '@commitlint/types': 19.8.1 - chalk: 5.6.2 + '@commitlint/types': 20.5.0 + picocolors: 1.1.1 - '@commitlint/is-ignored@19.8.1': + '@commitlint/is-ignored@20.5.0': dependencies: - '@commitlint/types': 19.8.1 + '@commitlint/types': 20.5.0 semver: 7.7.4 - '@commitlint/lint@19.8.1': + '@commitlint/lint@20.5.0': dependencies: - '@commitlint/is-ignored': 19.8.1 - '@commitlint/parse': 19.8.1 - '@commitlint/rules': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/is-ignored': 20.5.0 + '@commitlint/parse': 20.5.0 + '@commitlint/rules': 20.5.0 + '@commitlint/types': 20.5.0 - '@commitlint/load@19.8.1(@types/node@25.3.0)(typescript@5.9.3)': + '@commitlint/load@20.5.0(@types/node@25.3.0)(typescript@5.9.3)': dependencies: - '@commitlint/config-validator': 19.8.1 - '@commitlint/execute-rule': 19.8.1 - '@commitlint/resolve-extends': 19.8.1 - '@commitlint/types': 19.8.1 - chalk: 5.6.2 - cosmiconfig: 9.0.0(typescript@5.9.3) - cosmiconfig-typescript-loader: 6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 + '@commitlint/config-validator': 20.5.0 + '@commitlint/execute-rule': 20.0.0 + '@commitlint/resolve-extends': 20.5.0 + '@commitlint/types': 20.5.0 + cosmiconfig: 9.0.1(typescript@5.9.3) + cosmiconfig-typescript-loader: 6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3) + is-plain-obj: 4.1.0 + lodash.mergewith: 4.6.2 + picocolors: 1.1.1 transitivePeerDependencies: - '@types/node' - typescript - '@commitlint/message@19.8.1': {} + '@commitlint/message@20.4.3': {} - '@commitlint/parse@19.8.1': + '@commitlint/parse@20.5.0': dependencies: - '@commitlint/types': 19.8.1 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 + '@commitlint/types': 20.5.0 + conventional-changelog-angular: 8.3.1 + conventional-commits-parser: 6.4.0 - '@commitlint/read@19.8.1': + '@commitlint/read@20.5.0(conventional-commits-parser@6.4.0)': dependencies: - '@commitlint/top-level': 19.8.1 - '@commitlint/types': 19.8.1 - git-raw-commits: 4.0.0 + '@commitlint/top-level': 20.4.3 + '@commitlint/types': 20.5.0 + git-raw-commits: 5.0.1(conventional-commits-parser@6.4.0) minimist: 1.2.8 tinyexec: 1.0.2 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser - '@commitlint/resolve-extends@19.8.1': + '@commitlint/resolve-extends@20.5.0': dependencies: - '@commitlint/config-validator': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/config-validator': 20.5.0 + '@commitlint/types': 20.5.0 global-directory: 4.0.1 import-meta-resolve: 4.2.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - '@commitlint/rules@19.8.1': + '@commitlint/rules@20.5.0': dependencies: - '@commitlint/ensure': 19.8.1 - '@commitlint/message': 19.8.1 - '@commitlint/to-lines': 19.8.1 - '@commitlint/types': 19.8.1 + '@commitlint/ensure': 20.5.0 + '@commitlint/message': 20.4.3 + '@commitlint/to-lines': 20.0.0 + '@commitlint/types': 20.5.0 - '@commitlint/to-lines@19.8.1': {} + '@commitlint/to-lines@20.0.0': {} - '@commitlint/top-level@19.8.1': + '@commitlint/top-level@20.4.3': dependencies: - find-up: 7.0.0 + escalade: 3.2.0 - '@commitlint/types@19.8.1': + '@commitlint/types@20.5.0': dependencies: - '@types/conventional-commits-parser': 5.0.2 - chalk: 5.6.2 + conventional-commits-parser: 6.4.0 + picocolors: 1.1.1 + + '@conventional-changelog/git-client@2.6.0(conventional-commits-parser@6.4.0)': + dependencies: + '@simple-libs/child-process-utils': 1.0.2 + '@simple-libs/stream-utils': 1.2.0 + semver: 7.7.4 + optionalDependencies: + conventional-commits-parser: 6.4.0 '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@csstools/color-helpers@5.1.0': {} + '@csstools/color-helpers@6.0.2': {} - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-color-parser@4.0.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': dependencies: - '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 - '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.0': {} '@ecies/ciphers@0.2.5(@noble/ciphers@1.3.0)': dependencies: @@ -10448,6 +10358,10 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 + '@exodus/bytes@1.15.0(@noble/hashes@1.8.0)': + optionalDependencies: + '@noble/hashes': 1.8.0 + '@fastify/busboy@3.2.0': {} '@floating-ui/core@1.7.5': @@ -11052,17 +10966,6 @@ snapshots: dependencies: '@swc/helpers': 0.5.19 - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.2 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@istanbuljs/schema@0.1.3': {} - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -11347,7 +11250,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.4.3(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.4 uuid: 9.0.1 @@ -11361,7 +11264,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.12 - debug: 4.3.4 + debug: 4.4.3(supports-color@5.5.0) pony-cause: 2.1.11 semver: 7.7.4 uuid: 9.0.1 @@ -11561,9 +11464,6 @@ snapshots: dependencies: lit: 3.3.0 - '@pkgjs/parseargs@0.11.0': - optional: true - '@protobuf-ts/grpcweb-transport@2.11.1': dependencies: '@protobuf-ts/runtime': 2.11.1 @@ -12976,10 +12876,10 @@ snapshots: '@repeaterjs/repeater@3.0.6': {} - '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rolldown/pluginutils@1.0.0-rc.3': {} + '@rolldown/pluginutils@1.0.0-rc.7': {} + '@rollup/pluginutils@5.3.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 @@ -13198,6 +13098,12 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@simple-libs/child-process-utils@1.0.2': + dependencies: + '@simple-libs/stream-utils': 1.2.0 + + '@simple-libs/stream-utils@1.2.0': {} + '@socket.io/component-emitter@3.1.2': {} '@solana-program/system@0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': @@ -13691,6 +13597,8 @@ snapshots: '@standard-schema/spec@1.0.0': {} + '@standard-schema/spec@1.1.0': {} + '@swc/core-darwin-arm64@1.15.13': optional: true @@ -14046,10 +13954,6 @@ snapshots: dependencies: '@types/node': 12.20.55 - '@types/conventional-commits-parser@5.0.2': - dependencies: - '@types/node': 25.3.0 - '@types/d3-array@3.2.2': {} '@types/d3-axis@3.0.6': @@ -14360,13 +14264,13 @@ snapshots: - tsx - yaml - '@vercel/analytics@1.6.1(react@19.2.4)': + '@vercel/analytics@2.0.1(react@19.2.4)': optionalDependencies: react: 19.2.4 - '@vitejs/plugin-react-swc@3.11.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitejs/plugin-react-swc@4.3.0(@swc/helpers@0.5.19)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@rolldown/pluginutils': 1.0.0-beta.27 + '@rolldown/pluginutils': 1.0.0-rc.7 '@swc/core': 1.15.13(@swc/helpers@0.5.19) vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: @@ -14384,66 +14288,60 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/coverage-v8@4.1.2(vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)))': dependencies: - '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.11 - debug: 4.4.3(supports-color@5.5.0) + '@vitest/utils': 4.1.2 + ast-v8-to-istanbul: 1.0.0 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 - magic-string: 0.30.21 - magicast: 0.3.5 - std-env: 3.10.0 - test-exclude: 7.0.2 - tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) - transitivePeerDependencies: - - supports-color + magicast: 0.5.2 + obug: 2.1.1 + std-env: 4.0.0 + tinyrainbow: 3.1.0 + vitest: 4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/expect@3.2.4': + '@vitest/expect@4.1.2': dependencies: + '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.3 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + chai: 6.2.2 + tinyrainbow: 3.1.0 - '@vitest/mocker@3.2.4(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': + '@vitest/mocker@4.1.2(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.1.2': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.1.0 - '@vitest/runner@3.2.4': + '@vitest/runner@4.1.2': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.1.2 pathe: 2.0.3 - strip-literal: 3.1.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.1.2': dependencies: - '@vitest/pretty-format': 3.2.4 + '@vitest/pretty-format': 4.1.2 + '@vitest/utils': 4.1.2 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.4 + '@vitest/spy@4.1.2': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.1.2': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.1.2 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 '@wagmi/cli@2.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: @@ -15924,11 +15822,6 @@ snapshots: '@zag-js/utils@1.35.3': {} - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - abitype@1.0.6(typescript@5.9.3)(zod@3.25.76): optionalDependencies: typescript: 5.9.3 @@ -16035,7 +15928,7 @@ snapshots: dependencies: tslib: 2.8.1 - ast-v8-to-istanbul@0.3.11: + ast-v8-to-istanbul@1.0.0: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -16163,6 +16056,10 @@ snapshots: bech32@2.0.0: {} + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + big.js@6.2.2: {} binary-extensions@2.3.0: {} @@ -16315,13 +16212,7 @@ snapshots: ccount@2.0.1: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.3 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.2: {} chalk@4.1.2: dependencies: @@ -16372,8 +16263,6 @@ snapshots: charenc@0.0.2: {} - check-error@2.1.3: {} - chevrotain-allstar@0.3.1(chevrotain@11.1.2): dependencies: chevrotain: 11.1.2 @@ -16431,10 +16320,10 @@ snapshots: slice-ansi: 3.0.0 string-width: 4.2.3 - cli-truncate@4.0.0: + cli-truncate@5.2.0: dependencies: - slice-ansi: 5.0.0 - string-width: 7.2.0 + slice-ansi: 8.0.0 + string-width: 8.2.0 cli-width@3.0.0: {} @@ -16537,20 +16426,18 @@ snapshots: tslib: 2.8.1 upper-case: 2.0.2 - conventional-changelog-angular@7.0.0: + conventional-changelog-angular@8.3.1: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@7.0.2: + conventional-changelog-conventionalcommits@9.3.1: dependencies: compare-func: 2.0.0 - conventional-commits-parser@5.0.0: + conventional-commits-parser@6.4.0: dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.1 - split2: 4.2.0 + '@simple-libs/stream-utils': 1.2.0 + meow: 13.2.0 convert-source-map@1.9.0: {} @@ -16572,10 +16459,10 @@ snapshots: dependencies: layout-base: 2.0.1 - cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.0(typescript@5.9.3))(typescript@5.9.3): + cosmiconfig-typescript-loader@6.2.0(@types/node@25.3.0)(cosmiconfig@9.0.1(typescript@5.9.3))(typescript@5.9.3): dependencies: '@types/node': 25.3.0 - cosmiconfig: 9.0.0(typescript@5.9.3) + cosmiconfig: 9.0.1(typescript@5.9.3) jiti: 2.6.1 typescript: 5.9.3 @@ -16596,7 +16483,7 @@ snapshots: optionalDependencies: typescript: 5.9.3 - cosmiconfig@9.0.0(typescript@5.9.3): + cosmiconfig@9.0.1(typescript@5.9.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 @@ -16655,17 +16542,17 @@ snapshots: css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + css-what@6.2.2: {} css.escape@1.5.1: {} cssesc@3.0.0: {} - cssstyle@4.6.0: - dependencies: - '@asamuzakjp/css-color': 3.2.0 - rrweb-cssom: 0.8.0 - csstype@3.2.3: {} cuer@0.0.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): @@ -16860,14 +16747,14 @@ snapshots: d3: 7.9.0 lodash-es: 4.17.23 - dargs@8.1.0: {} - data-uri-to-buffer@4.0.1: {} - data-urls@5.0.0: + data-urls@7.0.0(@noble/hashes@1.8.0): dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@1.8.0) + transitivePeerDependencies: + - '@noble/hashes' dataloader@2.2.3: {} @@ -16911,8 +16798,6 @@ snapshots: optionalDependencies: babel-plugin-macros: 3.1.0 - deep-eql@5.0.2: {} - deep-object-diff@1.1.9: {} deepmerge@4.3.1: {} @@ -17034,8 +16919,6 @@ snapshots: emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - encode-utf8@1.0.3: {} encodeurl@2.0.0: {} @@ -17081,6 +16964,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -17286,18 +17171,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: - dependencies: - cross-spawn: 7.0.6 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - expect-type@1.3.0: {} extend@3.0.2: {} @@ -17388,23 +17261,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - follow-redirects@1.15.11: {} for-each@0.3.5: dependencies: is-callable: 1.2.7 - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data@4.0.5: dependencies: asynckit: 0.4.0 @@ -17486,17 +17348,17 @@ snapshots: get-stream@6.0.1: {} - get-stream@8.0.1: {} - get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 - git-raw-commits@4.0.0: + git-raw-commits@5.0.1(conventional-commits-parser@6.4.0): dependencies: - dargs: 8.1.0 - meow: 12.1.1 - split2: 4.2.0 + '@conventional-changelog/git-client': 2.6.0(conventional-commits-parser@6.4.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser github-slugger@2.0.0: {} @@ -17504,15 +17366,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.6 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -17810,9 +17663,11 @@ snapshots: hono@4.12.2: {} - html-encoding-sniffer@4.0.0: + html-encoding-sniffer@6.0.0(@noble/hashes@1.8.0): dependencies: - whatwg-encoding: 3.1.1 + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) + transitivePeerDependencies: + - '@noble/hashes' html-escaper@2.0.2: {} @@ -17842,8 +17697,6 @@ snapshots: human-signals@2.1.0: {} - human-signals@5.0.0: {} - humanize-ms@1.2.1: dependencies: ms: 2.1.3 @@ -17957,8 +17810,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.1.0: dependencies: get-east-asian-width: 1.5.0 @@ -18008,12 +17859,6 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - is-typed-array@1.1.15: dependencies: which-typed-array: 1.1.20 @@ -18064,25 +17909,11 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3(supports-color@5.5.0) - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - javascript-stringify@2.1.0: {} jayson@4.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): @@ -18115,38 +17946,35 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - js-yaml@4.1.1: dependencies: argparse: 2.0.1 - jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + jsdom@29.0.1(@noble/hashes@1.8.0): dependencies: - cssstyle: 4.6.0 - data-urls: 5.0.0 + '@asamuzakjp/css-color': 5.1.1 + '@asamuzakjp/dom-selector': 7.0.4 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) + css-tree: 3.2.1 + data-urls: 7.0.0(@noble/hashes@1.8.0) decimal.js: 10.6.0 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 + html-encoding-sniffer: 6.0.0(@noble/hashes@1.8.0) is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.23 - parse5: 7.3.0 - rrweb-cssom: 0.8.0 + lru-cache: 11.2.7 + parse5: 8.0.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 5.1.2 + tough-cookie: 6.0.1 + undici: 7.24.7 w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 - ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@1.8.0) xml-name-validator: 5.0.0 transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + - '@noble/hashes' jsesc@3.1.0: {} @@ -18176,8 +18004,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - jsonparse@1.3.1: {} - katex@0.16.44: dependencies: commander: 8.3.0 @@ -18303,28 +18129,20 @@ snapshots: lightningcss-win32-x64-msvc: 1.31.1 optional: true - lilconfig@3.1.3: {} - lines-and-columns@1.2.4: {} linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 - lint-staged@15.5.2: + lint-staged@16.4.0: dependencies: - chalk: 5.6.2 - commander: 13.1.0 - debug: 4.4.3(supports-color@5.5.0) - execa: 8.0.1 - lilconfig: 3.1.3 - listr2: 8.3.3 - micromatch: 4.0.8 - pidtree: 0.6.0 + commander: 14.0.3 + listr2: 9.0.5 + picomatch: 4.0.3 string-argv: 0.3.2 + tinyexec: 1.0.4 yaml: 2.8.2 - transitivePeerDependencies: - - supports-color listr2@4.0.5: dependencies: @@ -18337,9 +18155,9 @@ snapshots: through: 2.3.8 wrap-ansi: 7.0.0 - listr2@8.3.3: + listr2@9.0.5: dependencies: - cli-truncate: 4.0.0 + cli-truncate: 5.2.0 colorette: 2.0.20 eventemitter3: 5.0.4 log-update: 6.1.0 @@ -18372,20 +18190,12 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - lodash-es@4.17.23: {} lodash.camelcase@4.3.0: {} - lodash.isplainobject@4.0.6: {} - lodash.kebabcase@4.1.1: {} - lodash.merge@4.6.2: {} - lodash.mergewith@4.6.2: {} lodash.snakecase@4.1.1: {} @@ -18394,8 +18204,6 @@ snapshots: lodash.startcase@4.4.0: {} - lodash.uniq@4.5.0: {} - lodash.upperfirst@4.3.1: {} lodash@4.17.23: {} @@ -18431,8 +18239,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@3.2.1: {} - lower-case-first@2.0.2: dependencies: tslib: 2.8.1 @@ -18445,6 +18251,8 @@ snapshots: lru-cache@11.2.6: {} + lru-cache@11.2.7: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -18457,7 +18265,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.5: + magicast@0.5.2: dependencies: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 @@ -18684,13 +18492,15 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.27.1: {} + mdurl@2.0.0: {} media-query-parser@2.0.2: dependencies: '@babel/runtime': 7.28.6 - meow@12.1.1: {} + meow@13.2.0: {} merge-stream@2.0.0: {} @@ -19034,18 +18844,12 @@ snapshots: mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} min-indent@1.0.1: {} mini-svg-data-uri@1.4.4: {} - minimatch@10.2.2: - dependencies: - brace-expansion: 5.0.3 - minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 @@ -19060,8 +18864,6 @@ snapshots: minimist@1.2.8: {} - minipass@7.1.3: {} - minisearch@7.2.0: {} mipd@0.0.7(typescript@5.9.3): @@ -19141,10 +18943,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -19159,8 +18957,6 @@ snapshots: '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react-router: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - nwsapi@2.2.23: {} - obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.5 @@ -19169,6 +18965,8 @@ snapshots: object-assign@4.1.1: {} + obug@2.1.1: {} + ofetch@1.5.1: dependencies: destr: 2.0.5 @@ -19193,10 +18991,6 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - onetime@7.0.0: dependencies: mimic-function: 5.0.1 @@ -19348,10 +19142,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.2.2 - p-limit@5.0.0: dependencies: yocto-queue: 1.2.2 @@ -19364,18 +19154,12 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - p-map@4.0.0: dependencies: aggregate-error: 3.1.0 p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} - package-manager-detector@1.6.0: {} param-case@3.0.4: @@ -19414,6 +19198,10 @@ snapshots: dependencies: entities: 6.0.1 + parse5@8.0.0: + dependencies: + entities: 6.0.1 + parseurl@1.3.3: {} pascal-case@3.1.2: @@ -19430,14 +19218,10 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} - path-key@4.0.0: {} - path-parse@1.0.7: {} path-root-regex@0.1.2: {} @@ -19446,19 +19230,12 @@ snapshots: dependencies: path-root-regex: 0.1.2 - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - path-type@4.0.0: {} pathe@1.1.2: {} pathe@2.0.3: {} - pathval@2.0.1: {} - perfect-freehand@1.2.3: {} picocolors@1.1.1: {} @@ -19469,8 +19246,6 @@ snapshots: picomatch@4.0.3: {} - pidtree@0.6.0: {} - pify@3.0.0: {} pify@5.0.0: {} @@ -20125,15 +19900,13 @@ snapshots: '@types/uuid': 8.3.4 '@types/ws': 8.18.1 buffer: 6.0.3 - eventemitter3: 5.0.1 + eventemitter3: 5.0.4 uuid: 8.3.2 ws: 8.19.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: bufferutil: 4.1.0 utf-8-validate: 5.0.10 - rrweb-cssom@0.8.0: {} - run-async@2.4.1: {} run-parallel@1.2.0: @@ -20281,12 +20054,12 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@5.0.0: + slice-ansi@7.1.2: dependencies: ansi-styles: 6.2.3 - is-fullwidth-code-point: 4.0.0 + is-fullwidth-code-point: 5.1.0 - slice-ansi@7.1.2: + slice-ansi@8.0.0: dependencies: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 @@ -20346,7 +20119,7 @@ snapshots: statuses@2.0.2: {} - std-env@3.10.0: {} + std-env@4.0.0: {} stdin-discarder@0.1.0: dependencies: @@ -20372,12 +20145,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.2 - string-width@6.1.0: dependencies: eastasianwidth: 0.2.0 @@ -20390,6 +20157,11 @@ snapshots: get-east-asian-width: 1.5.0 strip-ansi: 7.1.2 + string-width@8.2.0: + dependencies: + get-east-asian-width: 1.5.0 + strip-ansi: 7.1.2 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -20413,16 +20185,10 @@ snapshots: strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - strip-literal@3.1.0: - dependencies: - js-tokens: 9.0.1 - style-to-js@1.1.21: dependencies: style-to-object: 1.0.14 @@ -20496,16 +20262,8 @@ snapshots: tapable@2.3.0: {} - test-exclude@7.0.2: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 10.5.0 - minimatch: 10.2.2 - text-encoding-utf-8@1.0.2: {} - text-extensions@2.4.0: {} - thread-stream@0.15.2: dependencies: real-require: 0.1.0 @@ -20522,30 +20280,26 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} - tinyexec@1.0.2: {} + tinyexec@1.0.4: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.4: {} + tinyrainbow@3.1.0: {} title-case@3.0.3: dependencies: tslib: 2.8.1 - tldts-core@6.1.86: {} + tldts-core@7.0.27: {} - tldts@6.1.86: + tldts@7.0.27: dependencies: - tldts-core: 6.1.86 + tldts-core: 7.0.27 to-buffer@1.2.2: dependencies: @@ -20561,13 +20315,13 @@ snapshots: toml@3.0.0: {} - tough-cookie@5.1.2: + tough-cookie@6.0.1: dependencies: - tldts: 6.1.86 + tldts: 7.0.27 tr46@0.0.3: {} - tr46@5.1.1: + tr46@6.0.0: dependencies: punycode: 2.3.1 @@ -20700,7 +20454,7 @@ snapshots: undici-types@7.22.0: {} - unicorn-magic@0.1.0: {} + undici@7.24.7: {} unified@11.0.5: dependencies: @@ -20991,14 +20745,13 @@ snapshots: - tsx - yaml - vite-plugin-sitemap@0.7.1: {} + vite-plugin-sitemap@0.8.2: {} - vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): + vite-tsconfig-paths@6.1.1(typescript@5.9.3)(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: debug: 4.4.3(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.9.3) - optionalDependencies: vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) transitivePeerDependencies: - supports-color @@ -21036,48 +20789,33 @@ snapshots: tsx: 4.21.0 yaml: 2.8.2 - vitest@3.2.4(@types/debug@4.1.13)(@types/node@25.3.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10))(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2): + vitest@4.1.2(@types/node@25.3.0)(jsdom@29.0.1(@noble/hashes@1.8.0))(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: - '@types/chai': 5.2.3 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.3(supports-color@5.5.0) + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(vite@6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.10.0 + std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 + tinyrainbow: 3.1.0 vite: 6.4.1(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) - vite-node: 3.2.4(@types/node@25.3.0)(jiti@2.6.1)(lightningcss@1.31.1)(tsx@4.21.0)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.13 '@types/node': 25.3.0 - jsdom: 26.1.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + jsdom: 29.0.1(@noble/hashes@1.8.0) transitivePeerDependencies: - - jiti - - less - - lightningcss - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml vocs@1.4.1(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/node@25.3.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.31.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.59.0)(tsx@4.21.0)(typescript@5.9.3): dependencies: @@ -21254,20 +20992,21 @@ snapshots: webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} + webidl-conversions@8.0.1: {} webpack-virtual-modules@0.6.2: {} - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-mimetype@4.0.0: {} - whatwg-url@14.2.0: + whatwg-mimetype@5.0.0: {} + + whatwg-url@16.0.1(@noble/hashes@1.8.0): dependencies: - tr46: 5.1.1 - webidl-conversions: 7.0.0 + '@exodus/bytes': 1.15.0(@noble/hashes@1.8.0) + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' whatwg-url@5.0.0: dependencies: @@ -21307,12 +21046,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.1.2 - wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 diff --git a/src/components/pageComponents/NotFound404.tsx b/src/components/pageComponents/NotFound404.tsx index 3cbb7fea..7bfbb871 100644 --- a/src/components/pageComponents/NotFound404.tsx +++ b/src/components/pageComponents/NotFound404.tsx @@ -1,6 +1,6 @@ +import { useNavigate } from '@tanstack/react-router' import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { useNavigate } from '@tanstack/react-router' const Icon = () => ( <svg diff --git a/src/components/pageComponents/home/Examples/Item/index.tsx b/src/components/pageComponents/home/Examples/Item/index.tsx index 1e2900db..1f3c0ad8 100644 --- a/src/components/pageComponents/home/Examples/Item/index.tsx +++ b/src/components/pageComponents/home/Examples/Item/index.tsx @@ -1,8 +1,8 @@ +import { Dialog, Flex, type FlexProps, Heading, Portal, Text } from '@chakra-ui/react' +import { type FC, type ReactNode, useState } from 'react' import DemoButton from '@/src/components/pageComponents/home/Examples/Item/buttons/DemoButton' import DocumentationButton from '@/src/components/pageComponents/home/Examples/Item/buttons/DocumentationButton' import Modal from '@/src/components/sharedComponents/ui/Modal' -import { Dialog, Flex, type FlexProps, Heading, Portal, Text } from '@chakra-ui/react' -import { type FC, type ReactNode, useState } from 'react' import styles from './styles' export interface Props extends FlexProps { diff --git a/src/components/pageComponents/home/Examples/List/index.tsx b/src/components/pageComponents/home/Examples/List/index.tsx index ef7e9baf..2d45bd72 100644 --- a/src/components/pageComponents/home/Examples/List/index.tsx +++ b/src/components/pageComponents/home/Examples/List/index.tsx @@ -1,6 +1,6 @@ -import Item, { type Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' import { Grid, type GridProps } from '@chakra-ui/react' import type { FC } from 'react' +import Item, { type Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' interface Props extends GridProps { items: ItemProps[] diff --git a/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx b/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx index c8b6f952..69cf3741 100644 --- a/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/EnsName/index.tsx @@ -1,12 +1,12 @@ -import Icon from '@/src/components/pageComponents/home/Examples/demos/EnsName/Icon' -import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' -import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { Flex, Heading, Input } from '@chakra-ui/react' import { type ChangeEvent, useEffect, useState } from 'react' import { useDebouncedCallback } from 'use-debounce' import type { Address } from 'viem' import { useEnsName } from 'wagmi' import { mainnet } from 'wagmi/chains' +import Icon from '@/src/components/pageComponents/home/Examples/demos/EnsName/Icon' +import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' +import Spinner from '@/src/components/sharedComponents/ui/Spinner' const EnsNameSearch = ({ address }: { address?: Address }) => { const { data, error, status } = useEnsName({ diff --git a/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx b/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx index 11d841fe..377300a9 100644 --- a/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx +++ b/src/components/pageComponents/home/Examples/demos/HashHandling/Hash.tsx @@ -1,9 +1,9 @@ -import BaseHash from '@/src/components/sharedComponents/Hash' -import { toaster } from '@/src/components/ui/toaster' -import { getExplorerLink } from '@/src/utils/getExplorerLink' import type { FlexProps } from '@chakra-ui/react' import type { FC } from 'react' import type { Address, Chain } from 'viem' +import BaseHash from '@/src/components/sharedComponents/Hash' +import { toaster } from '@/src/components/ui/toaster' +import { getExplorerLink } from '@/src/utils/getExplorerLink' interface Props extends FlexProps { chain: Chain diff --git a/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx b/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx index 2b538551..844da2d9 100644 --- a/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/HashHandling/index.tsx @@ -1,16 +1,14 @@ +import { Box, chakra, Flex, Input } from '@chakra-ui/react' +import { useState } from 'react' +import type { Address } from 'viem' +import * as chains from 'viem/chains' import Hash from '@/src/components/pageComponents/home/Examples/demos/HashHandling/Hash' -import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' - import Icon from '@/src/components/pageComponents/home/Examples/demos/HashHandling/Icon' +import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import HashInput from '@/src/components/sharedComponents/HashInput' - import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { DetectedHash } from '@/src/utils/hash' -import { Box, Flex, Input, chakra } from '@chakra-ui/react' -import { useState } from 'react' -import type { Address } from 'viem' -import * as chains from 'viem/chains' const AlertIcon = () => ( <chakra.svg diff --git a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx index 8a92f454..69ef71fc 100644 --- a/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/index.tsx @@ -1,19 +1,21 @@ +import { Flex, Span } from '@chakra-ui/react' +import { useState } from 'react' +import type { Address } from 'viem' +import { parseEther } from 'viem' +import { optimismSepolia, sepolia } from 'viem/chains' +import { extractTransactionDepositedLogs, getL2TransactionHash } from 'viem/op-stack' import Icon from '@/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger/Icon' import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import Hash from '@/src/components/sharedComponents/Hash' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' -import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' +import { + useWeb3StatusConnected, + WalletStatusVerifier, +} from '@/src/components/sharedComponents/WalletStatusVerifier' import { getContract } from '@/src/constants/contracts/contracts' import { useL1CrossDomainMessengerProxy } from '@/src/hooks/useOPL1CrossDomainMessengerProxy' import { getExplorerLink } from '@/src/utils/getExplorerLink' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { Flex, Span } from '@chakra-ui/react' -import { useState } from 'react' -import type { Address } from 'viem' -import { parseEther } from 'viem' -import { optimismSepolia, sepolia } from 'viem/chains' -import { extractTransactionDepositedLogs, getL2TransactionHash } from 'viem/op-stack' const OptimismCrossDomainMessenger = withSuspenseAndRetry(() => { // https://sepolia-optimism.etherscan.io/address/0xb50201558b00496a145fe76f7424749556e326d8 diff --git a/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx b/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx index 7fdbacd2..c6d31084 100644 --- a/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/OptionsDropdown/index.tsx @@ -1,4 +1,4 @@ -import { Box, type BoxProps, Menu, chakra } from '@chakra-ui/react' +import { Box, type BoxProps, chakra, Menu } from '@chakra-ui/react' import { type FC, useState } from 'react' import { buttonStyles, dropdownStyles } from './styles' diff --git a/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx b/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx index 0dd780f2..b3bbff9b 100644 --- a/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/SignMessage/index.tsx @@ -1,8 +1,8 @@ import Icon from '@/src/components/pageComponents/home/Examples/demos/SignMessage/Icon' import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import SignButton from '@/src/components/sharedComponents/SignButton' -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' const message = ` 👻🚀 Welcome to dAppBooster! 🚀👻 diff --git a/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx b/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx index 5bc08029..8764854f 100644 --- a/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/SwitchNetwork/index.tsx @@ -1,7 +1,3 @@ -import Icon from '@/src/components/pageComponents/home/Examples/demos/SwitchNetwork/Icon' -import BaseSwitchNetwork, { type Networks } from '@/src/components/sharedComponents/SwitchNetwork' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { ConnectWalletButton } from '@/src/providers/Web3Provider' import { NetworkArbitrumOne, NetworkEthereum, @@ -9,6 +5,10 @@ import { NetworkPolygon, } from '@web3icons/react' import { arbitrum, mainnet, optimism, polygon } from 'viem/chains' +import Icon from '@/src/components/pageComponents/home/Examples/demos/SwitchNetwork/Icon' +import BaseSwitchNetwork, { type Networks } from '@/src/components/sharedComponents/SwitchNetwork' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { ConnectWalletButton } from '@/src/providers/Web3Provider' const SwitchNetwork = () => { const { isWalletConnected } = useWeb3Status() diff --git a/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx b/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx index 6d4fcfea..98da81c7 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenDropdown/index.tsx @@ -1,8 +1,8 @@ +import { type FC, useState } from 'react' import Icon from '@/src/components/pageComponents/home/Examples/demos/TokenDropdown/Icon' import Wrapper from '@/src/components/pageComponents/home/Examples/wrapper' import BaseTokenDropdown from '@/src/components/sharedComponents/TokenDropdown' import type { Token } from '@/src/types/token' -import { type FC, useState } from 'react' const TokenDropdown: FC = ({ ...restProps }) => { const [currentToken, setCurrentToken] = useState<Token>() diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx index 9e86b8b7..eb6848cf 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx @@ -1,7 +1,7 @@ -import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { screen } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' +import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import tokenInput from './index' vi.mock('@/src/hooks/useWeb3Status', () => ({ diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx index c4544c5e..38a3eba9 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx @@ -1,12 +1,3 @@ -import OptionsDropdown from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' -import Icon from '@/src/components/pageComponents/home/Examples/demos/TokenInput/Icon' -import BaseTokenInput from '@/src/components/sharedComponents/TokenInput' -import { useTokenInput } from '@/src/components/sharedComponents/TokenInput/useTokenInput' -import type { Networks } from '@/src/components/sharedComponents/TokenSelect/types' -import { useTokenLists } from '@/src/hooks/useTokenLists' -import { useTokenSearch } from '@/src/hooks/useTokenSearch' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' import { Box, Flex, Skeleton } from '@chakra-ui/react' import { NetworkArbitrumOne, @@ -16,6 +7,15 @@ import { } from '@web3icons/react' import { useState } from 'react' import { arbitrum, mainnet, optimism, polygon } from 'viem/chains' +import OptionsDropdown from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' +import Icon from '@/src/components/pageComponents/home/Examples/demos/TokenInput/Icon' +import BaseTokenInput from '@/src/components/sharedComponents/TokenInput' +import { useTokenInput } from '@/src/components/sharedComponents/TokenInput/useTokenInput' +import type { Networks } from '@/src/components/sharedComponents/TokenSelect/types' +import { useTokenLists } from '@/src/hooks/useTokenLists' +import { useTokenSearch } from '@/src/hooks/useTokenSearch' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' type Options = 'single' | 'multi' diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx index 9cb5fdcb..973ce924 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton.tsx @@ -1,3 +1,7 @@ +import type { FC } from 'react' +import { type Address, erc20Abi, type Hash, type TransactionReceipt } from 'viem' +import * as chains from 'viem/chains' +import { useWriteContract } from 'wagmi' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' @@ -5,10 +9,6 @@ import { useSuspenseReadErc20Allowance } from '@/src/hooks/generated' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import { getExplorerLink } from '@/src/utils/getExplorerLink' -import type { FC } from 'react' -import { type Address, type Hash, type TransactionReceipt, erc20Abi } from 'viem' -import * as chains from 'viem/chains' -import { useWriteContract } from 'wagmi' interface Props { amount: bigint diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx index c17124e2..10c1e59f 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC.tsx @@ -1,9 +1,9 @@ +import { sepolia } from 'viem/chains' +import { useWriteContract } from 'wagmi' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { AaveFaucetABI } from '@/src/constants/contracts/abis/AaveFaucet' import { getContract } from '@/src/constants/contracts/contracts' -import { sepolia } from 'viem/chains' -import { useWriteContract } from 'wagmi' export default function MintUSDC({ onSuccess }: { onSuccess: () => void }) { const { address } = useWeb3StatusConnected() diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx index dad63df9..5aabb626 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/index.tsx @@ -1,14 +1,14 @@ +import { type Address, formatUnits } from 'viem' +import { sepolia } from 'viem/chains' +import { useWriteContract } from 'wagmi' import BaseERC20ApproveAndTransferButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/ERC20ApproveAndTransferButton' import MintUSDC from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton/MintUSDC' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { useSuspenseReadErc20BalanceOf } from '@/src/hooks/generated' import type { Token } from '@/src/types/token' -import { NumberType, formatNumberOrString } from '@/src/utils/numberFormat' +import { formatNumberOrString, NumberType } from '@/src/utils/numberFormat' import { withSuspense } from '@/src/utils/suspenseWrapper' -import { type Address, formatUnits } from 'viem' -import { sepolia } from 'viem/chains' -import { useWriteContract } from 'wagmi' // USDC token on Sepolia chain const tokenUSDC_sepolia: Token = { diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx index 99505f53..890f4225 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx @@ -1,12 +1,12 @@ +import { Dialog } from '@chakra-ui/react' +import { type ReactElement, useState } from 'react' +import { type Hash, parseEther, type TransactionReceipt } from 'viem' +import { useSendTransaction } from 'wagmi' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' -import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { Dialog } from '@chakra-ui/react' -import { type ReactElement, useState } from 'react' -import { type Hash, type TransactionReceipt, parseEther } from 'viem' -import { useSendTransaction } from 'wagmi' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' /** * This demo shows how to send a native token transaction. diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx index 1d7d3be8..fd29ee05 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.test.tsx @@ -1,6 +1,6 @@ -import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import { screen } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' +import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import transactionButton from './index' vi.mock('@/src/hooks/useWeb3Status', () => ({ diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx index a77c0dc4..c3f89571 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx @@ -1,11 +1,11 @@ +import { Flex } from '@chakra-ui/react' +import { useState } from 'react' +import { sepolia } from 'wagmi/chains' import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' import ERC20ApproveAndTransferButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/ERC20ApproveAndTransferButton' import Icon from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Icon' import NativeToken from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken' import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' -import { Flex } from '@chakra-ui/react' -import { useState } from 'react' -import { sepolia } from 'wagmi/chains' type Options = 'erc20' | 'native' diff --git a/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx b/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx index b1a16931..ada82963 100644 --- a/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph/index.tsx @@ -1,3 +1,10 @@ +import { generateSchemasMapping } from '@bootnodedev/db-subgraph' +import { Box, Flex, Skeleton } from '@chakra-ui/react' +import { useSuspenseQuery } from '@tanstack/react-query' +import { NetworkArbitrumOne, NetworkBase, NetworkOptimism, NetworkPolygon } from '@web3icons/react' +import request from 'graphql-request' +import { useState } from 'react' +import { arbitrum, base, type Chain, optimism, polygon } from 'viem/chains' import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' import { Row, @@ -15,13 +22,6 @@ import { env } from '@/src/env' import { allAaveReservesQueryDocument } from '@/src/subgraphs/queries/aave/reserves' import { allUniswapPoolsQueryDocument } from '@/src/subgraphs/queries/uniswap/pools' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { generateSchemasMapping } from '@bootnodedev/db-subgraph' -import { Box, Flex, Skeleton } from '@chakra-ui/react' -import { useSuspenseQuery } from '@tanstack/react-query' -import { NetworkArbitrumOne, NetworkBase, NetworkOptimism, NetworkPolygon } from '@web3icons/react' -import request from 'graphql-request' -import { useState } from 'react' -import { type Chain, arbitrum, base, optimism, polygon } from 'viem/chains' const chainNameMapping: { [key: number]: string } = { [arbitrum.id]: 'arbitrum', diff --git a/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx b/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx index 1b8cba4b..e61b3766 100644 --- a/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/subgraphs/SubgraphStatus/index.tsx @@ -1,3 +1,7 @@ +import { type SchemaMappingConfig, useSubgraphIndexingStatus } from '@bootnodedev/db-subgraph' +import { Box, Flex, Skeleton, Span, Text } from '@chakra-ui/react' +import { type FC, useState } from 'react' +import { arbitrum, base, type Chain, optimism, polygon } from 'viem/chains' import { OptionsDropdown } from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' import { getNetworkIcon } from '@/src/components/pageComponents/home/Examples/demos/subgraphs/Subgraph' import { @@ -11,10 +15,6 @@ import Icon from '@/src/components/pageComponents/home/Examples/demos/subgraphs/ import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { env } from '@/src/env' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { type SchemaMappingConfig, useSubgraphIndexingStatus } from '@bootnodedev/db-subgraph' -import { Box, Flex, Skeleton, Span, Text } from '@chakra-ui/react' -import { type FC, useState } from 'react' -import { type Chain, arbitrum, base, optimism, polygon } from 'viem/chains' export const SkeletonLoadingItem = () => ( <Flex diff --git a/src/components/pageComponents/home/Examples/index.tsx b/src/components/pageComponents/home/Examples/index.tsx index 7746646c..926fc1a3 100644 --- a/src/components/pageComponents/home/Examples/index.tsx +++ b/src/components/pageComponents/home/Examples/index.tsx @@ -1,18 +1,18 @@ -import type { Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' -import List from '@/src/components/pageComponents/home/Examples/List' +import { Box, type BoxProps, chakra, Flex, Heading, Text } from '@chakra-ui/react' +import type { FC } from 'react' import connectWallet from '@/src/components/pageComponents/home/Examples/demos/ConnectWallet' import ensName from '@/src/components/pageComponents/home/Examples/demos/EnsName' import hashHandling from '@/src/components/pageComponents/home/Examples/demos/HashHandling' import optimismCrossDomainMessenger from '@/src/components/pageComponents/home/Examples/demos/OptimismCrossDomainMessenger' import signMessage from '@/src/components/pageComponents/home/Examples/demos/SignMessage' import switchNetwork from '@/src/components/pageComponents/home/Examples/demos/SwitchNetwork' +import subgraphs from '@/src/components/pageComponents/home/Examples/demos/subgraphs' import tokenDropdown from '@/src/components/pageComponents/home/Examples/demos/TokenDropdown' import tokenInput from '@/src/components/pageComponents/home/Examples/demos/TokenInput' import transactionButton from '@/src/components/pageComponents/home/Examples/demos/TransactionButton' -import subgraphs from '@/src/components/pageComponents/home/Examples/demos/subgraphs' +import type { Props as ItemProps } from '@/src/components/pageComponents/home/Examples/Item' +import List from '@/src/components/pageComponents/home/Examples/List' import { Inner } from '@/src/components/sharedComponents/ui/Inner' -import { Box, type BoxProps, Flex, Heading, Text, chakra } from '@chakra-ui/react' -import type { FC } from 'react' import styles from './styles' const Examples: FC<BoxProps> = ({ css, ...restProps }) => { diff --git a/src/components/pageComponents/home/Welcome/index.tsx b/src/components/pageComponents/home/Welcome/index.tsx index e1b1ca25..dcb1c64c 100644 --- a/src/components/pageComponents/home/Welcome/index.tsx +++ b/src/components/pageComponents/home/Welcome/index.tsx @@ -1,6 +1,6 @@ -import { Inner } from '@/src/components/sharedComponents/ui/Inner' -import { type FlexProps, Heading, Link, Span, Text, chakra } from '@chakra-ui/react' +import { chakra, type FlexProps, Heading, Link, Span, Text } from '@chakra-ui/react' import type { FC } from 'react' +import { Inner } from '@/src/components/sharedComponents/ui/Inner' import styles from './styles' const Arrow = () => ( diff --git a/src/components/pageComponents/home/index.test.tsx b/src/components/pageComponents/home/index.test.tsx index d498d8a1..529bfe7b 100644 --- a/src/components/pageComponents/home/index.test.tsx +++ b/src/components/pageComponents/home/index.test.tsx @@ -1,6 +1,6 @@ -import { renderWithProviders } from '@/src/test-utils' import { screen } from '@testing-library/react' import { describe, expect, it, vi } from 'vitest' +import { renderWithProviders } from '@/src/test-utils' import { Home } from './index' // Mock sub-components that pull in Web3 dependencies to keep this a pure structural test diff --git a/src/components/sharedComponents/BigNumberInput.tsx b/src/components/sharedComponents/BigNumberInput.tsx index b9cce87b..e72a49f6 100644 --- a/src/components/sharedComponents/BigNumberInput.tsx +++ b/src/components/sharedComponents/BigNumberInput.tsx @@ -1,4 +1,4 @@ -import { type InputProps, chakra } from '@chakra-ui/react' +import { chakra, type InputProps } from '@chakra-ui/react' import { type ChangeEvent, type FC, diff --git a/src/components/sharedComponents/ConnectButton/index.tsx b/src/components/sharedComponents/ConnectButton/index.tsx index ee20c3cc..b5efd19b 100644 --- a/src/components/sharedComponents/ConnectButton/index.tsx +++ b/src/components/sharedComponents/ConnectButton/index.tsx @@ -1,6 +1,6 @@ -import { Button } from '@/src/components/sharedComponents/ui/Button' import { type ButtonProps, chakra } from '@chakra-ui/react' import type { FC } from 'react' +import { Button } from '@/src/components/sharedComponents/ui/Button' import styles from './styles' const BaseChevronDown = ({ ...restProps }) => ( diff --git a/src/components/sharedComponents/ExplorerLink.tsx b/src/components/sharedComponents/ExplorerLink.tsx index a8a05646..f342e87d 100644 --- a/src/components/sharedComponents/ExplorerLink.tsx +++ b/src/components/sharedComponents/ExplorerLink.tsx @@ -1,6 +1,6 @@ -import { type GetExplorerUrlParams, getExplorerLink } from '@/src/utils/getExplorerLink' -import { type LinkProps, chakra } from '@chakra-ui/react' +import { chakra, type LinkProps } from '@chakra-ui/react' import type { FC } from 'react' +import { type GetExplorerUrlParams, getExplorerLink } from '@/src/utils/getExplorerLink' interface ExplorerLinkProps extends GetExplorerUrlParams, LinkProps { text?: string diff --git a/src/components/sharedComponents/Hash.tsx b/src/components/sharedComponents/Hash.tsx index f44594df..6d091534 100644 --- a/src/components/sharedComponents/Hash.tsx +++ b/src/components/sharedComponents/Hash.tsx @@ -1,8 +1,8 @@ +import { Flex, type FlexProps, Span } from '@chakra-ui/react' +import type { FC, MouseEventHandler } from 'react' import CopyButton from '@/src/components/sharedComponents/ui/CopyButton' import ExternalLink from '@/src/components/sharedComponents/ui/ExternalLink' import { getTruncatedHash } from '@/src/utils/strings' -import { Flex, type FlexProps, Span } from '@chakra-ui/react' -import type { FC, MouseEventHandler } from 'react' interface HashProps extends Omit<FlexProps, 'onCopy'> { explorerURL?: string diff --git a/src/components/sharedComponents/HashInput.tsx b/src/components/sharedComponents/HashInput.tsx index a4addc93..b90c4406 100644 --- a/src/components/sharedComponents/HashInput.tsx +++ b/src/components/sharedComponents/HashInput.tsx @@ -1,5 +1,4 @@ -import detectHash, { type DetectedHash } from '@/src/utils/hash' -import { type InputProps, chakra } from '@chakra-ui/react' +import { chakra, type InputProps } from '@chakra-ui/react' import { type ChangeEvent, type FC, @@ -10,6 +9,7 @@ import { } from 'react' import { useDebouncedCallback } from 'use-debounce' import type { Chain } from 'viem' +import detectHash, { type DetectedHash } from '@/src/utils/hash' interface HashInputProps extends InputProps { chain: Chain diff --git a/src/components/sharedComponents/NotificationToast.tsx b/src/components/sharedComponents/NotificationToast.tsx index 3da3e540..1d5595aa 100644 --- a/src/components/sharedComponents/NotificationToast.tsx +++ b/src/components/sharedComponents/NotificationToast.tsx @@ -1,8 +1,8 @@ 'use client' +import { Toaster as ChakraToaster, createToaster, Portal, Stack, Toast } from '@chakra-ui/react' import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { Toaster as ChakraToaster, Portal, Stack, Toast, createToaster } from '@chakra-ui/react' export const notificationToaster = createToaster({ placement: 'bottom-end', diff --git a/src/components/sharedComponents/SignButton.tsx b/src/components/sharedComponents/SignButton.tsx index 84b09906..da5d6f2c 100644 --- a/src/components/sharedComponents/SignButton.tsx +++ b/src/components/sharedComponents/SignButton.tsx @@ -1,11 +1,11 @@ +import { type ButtonProps, chakra } from '@chakra-ui/react' +import type { FC, ReactElement } from 'react' +import { useSignMessage } from 'wagmi' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' import type { ChainsIds } from '@/src/lib/networks.config' import { useTransactionNotification } from '@/src/providers/TransactionNotificationProvider' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import { type ButtonProps, chakra } from '@chakra-ui/react' -import type { FC, ReactElement } from 'react' -import { useSignMessage } from 'wagmi' interface SignButtonProps extends Omit<ButtonProps, 'onError'> { /** Target chain ID for wallet status verification. */ diff --git a/src/components/sharedComponents/SwitchNetwork.test.tsx b/src/components/sharedComponents/SwitchNetwork.test.tsx index edbe1408..9cfad6a4 100644 --- a/src/components/sharedComponents/SwitchNetwork.test.tsx +++ b/src/components/sharedComponents/SwitchNetwork.test.tsx @@ -13,8 +13,8 @@ vi.mock('wagmi', () => ({ useSwitchChain: vi.fn(), })) -import * as useWeb3StatusModule from '@/src/hooks/useWeb3Status' import * as wagmiModule from 'wagmi' +import * as useWeb3StatusModule from '@/src/hooks/useWeb3Status' const mockNetworks: Networks = [ { id: 1, label: 'Ethereum', icon: <span>ETH</span> }, diff --git a/src/components/sharedComponents/SwitchNetwork.tsx b/src/components/sharedComponents/SwitchNetwork.tsx index d3308dcf..7e1ac77e 100644 --- a/src/components/sharedComponents/SwitchNetwork.tsx +++ b/src/components/sharedComponents/SwitchNetwork.tsx @@ -1,6 +1,3 @@ -import DropdownButton from '@/src/components/sharedComponents/ui/DropdownButton' -import { MenuContent, MenuItem } from '@/src/components/sharedComponents/ui/Menu' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { Box, Flex, Menu } from '@chakra-ui/react' import { type ComponentPropsWithoutRef, @@ -11,6 +8,9 @@ import { } from 'react' import * as chains from 'viem/chains' import { useSwitchChain } from 'wagmi' +import DropdownButton from '@/src/components/sharedComponents/ui/DropdownButton' +import { MenuContent, MenuItem } from '@/src/components/sharedComponents/ui/Menu' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' type NetworkItem = { icon: ReactElement diff --git a/src/components/sharedComponents/TokenDropdown.tsx b/src/components/sharedComponents/TokenDropdown.tsx index c81fbfb0..5e68f989 100644 --- a/src/components/sharedComponents/TokenDropdown.tsx +++ b/src/components/sharedComponents/TokenDropdown.tsx @@ -1,11 +1,11 @@ +import { Flex, Menu } from '@chakra-ui/react' +import type { ComponentPropsWithoutRef, FC } from 'react' +import { useState } from 'react' import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import TokenSelect, { type TokenSelectProps } from '@/src/components/sharedComponents/TokenSelect' import DropdownButton from '@/src/components/sharedComponents/ui/DropdownButton' import { MenuContent } from '@/src/components/sharedComponents/ui/Menu' import type { Token } from '@/src/types/token' -import { Flex, Menu } from '@chakra-ui/react' -import type { ComponentPropsWithoutRef, FC } from 'react' -import { useState } from 'react' export interface TokenDropdownProps extends TokenSelectProps { currentToken?: Token | undefined diff --git a/src/components/sharedComponents/TokenInput/Components.tsx b/src/components/sharedComponents/TokenInput/Components.tsx index a5a6c059..51be2218 100644 --- a/src/components/sharedComponents/TokenInput/Components.tsx +++ b/src/components/sharedComponents/TokenInput/Components.tsx @@ -1,5 +1,6 @@ import { type ButtonProps, + chakra, Flex, type FlexProps, Heading, @@ -8,7 +9,6 @@ import { type InputProps, Span, type SpanProps, - chakra, } from '@chakra-ui/react' import type { FC } from 'react' diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index d558d39b..85d8a409 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -1,3 +1,7 @@ +import { Dialog, type FlexProps, Portal } from '@chakra-ui/react' +import { type FC, useMemo, useState } from 'react' +import { type NumberFormatValues, NumericFormat } from 'react-number-format' +import { formatUnits } from 'viem' import { BigNumberInput, type BigNumberInputProps, @@ -24,10 +28,6 @@ import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import TokenSelect, { type TokenSelectProps } from '@/src/components/sharedComponents/TokenSelect' import Spinner from '@/src/components/sharedComponents/ui/Spinner' import type { Token } from '@/src/types/token' -import { Dialog, type FlexProps, Portal } from '@chakra-ui/react' -import { type FC, useMemo, useState } from 'react' -import { type NumberFormatValues, NumericFormat } from 'react-number-format' -import { formatUnits } from 'viem' import styles from './styles' interface TokenInputProps extends Omit<TokenSelectProps, 'onTokenSelect'> { diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index 12b94dd2..7bc881a2 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -1,10 +1,10 @@ -import { useErc20Balance } from '@/src/hooks/useErc20Balance' -import type { Token } from '@/src/types/token' -import { isNativeToken } from '@/src/utils/address' import { useQuery } from '@tanstack/react-query' import { useEffect, useState } from 'react' import { getAddress } from 'viem' import { useAccount, usePublicClient } from 'wagmi' +import { useErc20Balance } from '@/src/hooks/useErc20Balance' +import type { Token } from '@/src/types/token' +import { isNativeToken } from '@/src/utils/address' export type UseTokenInputReturnType = ReturnType<typeof useTokenInput> diff --git a/src/components/sharedComponents/TokenLogo.test.tsx b/src/components/sharedComponents/TokenLogo.test.tsx index b71166ed..b8d4aa93 100644 --- a/src/components/sharedComponents/TokenLogo.test.tsx +++ b/src/components/sharedComponents/TokenLogo.test.tsx @@ -1,7 +1,7 @@ -import type { Token } from '@/src/types/token' import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { fireEvent, render, screen } from '@testing-library/react' import { describe, expect, it } from 'vitest' +import type { Token } from '@/src/types/token' import TokenLogo from './TokenLogo' const system = createSystem(defaultConfig) diff --git a/src/components/sharedComponents/TokenLogo.tsx b/src/components/sharedComponents/TokenLogo.tsx index 87627cdf..de2f6041 100644 --- a/src/components/sharedComponents/TokenLogo.tsx +++ b/src/components/sharedComponents/TokenLogo.tsx @@ -1,6 +1,6 @@ -import type { Token } from '@/src/types/token' import { Flex } from '@chakra-ui/react' import { type ComponentProps, type FC, useCallback, useEffect, useState } from 'react' +import type { Token } from '@/src/types/token' interface PlaceholderProps extends ComponentProps<'div'> { size: number diff --git a/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx b/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx index 836a2975..f1501a15 100644 --- a/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx +++ b/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton.tsx @@ -1,8 +1,8 @@ +import { chakra } from '@chakra-ui/react' +import type { ComponentPropsWithoutRef, FC, MouseEventHandler } from 'react' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import { isNativeToken } from '@/src/utils/address' -import { chakra } from '@chakra-ui/react' -import type { ComponentPropsWithoutRef, FC, MouseEventHandler } from 'react' interface AddERC20TokenButtonProps extends ComponentPropsWithoutRef<'button'> { $token: Token diff --git a/src/components/sharedComponents/TokenSelect/List/Row.tsx b/src/components/sharedComponents/TokenSelect/List/Row.tsx index 88b6a2a9..5e981137 100644 --- a/src/components/sharedComponents/TokenSelect/List/Row.tsx +++ b/src/components/sharedComponents/TokenSelect/List/Row.tsx @@ -1,9 +1,9 @@ +import { Box, Flex, type FlexProps, Skeleton } from '@chakra-ui/react' +import type { FC } from 'react' import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import AddERC20TokenButton from '@/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton' import TokenBalance from '@/src/components/sharedComponents/TokenSelect/List/TokenBalance' import type { Token } from '@/src/types/token' -import { Box, Flex, type FlexProps, Skeleton } from '@chakra-ui/react' -import type { FC } from 'react' const Icon: FC<{ size: number } & FlexProps> = ({ size, children, ...restProps }) => ( <Flex diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx index 59a539b9..4a0fec9e 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx @@ -1,7 +1,7 @@ -import type { Token } from '@/src/types/token' -import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' import { Box, Flex } from '@chakra-ui/react' import { formatUnits } from 'viem' +import type { Token } from '@/src/types/token' +import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' interface TokenBalanceProps { isLoading?: boolean diff --git a/src/components/sharedComponents/TokenSelect/List/index.tsx b/src/components/sharedComponents/TokenSelect/List/index.tsx index 8a634367..5aea0c56 100644 --- a/src/components/sharedComponents/TokenSelect/List/index.tsx +++ b/src/components/sharedComponents/TokenSelect/List/index.tsx @@ -1,8 +1,8 @@ +import { Flex, type FlexProps } from '@chakra-ui/react' +import type { FC } from 'react' import Row from '@/src/components/sharedComponents/TokenSelect/List/Row' import VirtualizedList from '@/src/components/sharedComponents/TokenSelect/List/VirtualizedList' import type { Token, Tokens } from '@/src/types/token' -import { Flex, type FlexProps } from '@chakra-ui/react' -import type { FC } from 'react' interface TokenSelectListProps extends FlexProps { containerHeight: number diff --git a/src/components/sharedComponents/TokenSelect/Search/index.tsx b/src/components/sharedComponents/TokenSelect/Search/index.tsx index c04c6686..ea841685 100644 --- a/src/components/sharedComponents/TokenSelect/Search/index.tsx +++ b/src/components/sharedComponents/TokenSelect/Search/index.tsx @@ -1,9 +1,9 @@ +import { Box, Flex, type FlexProps, Menu } from '@chakra-ui/react' +import type { Dispatch, FC, SetStateAction } from 'react' import SearchInput from '@/src/components/sharedComponents/TokenSelect/Search/Input' import NetworkButton from '@/src/components/sharedComponents/TokenSelect/Search/NetworkButton' import type { Networks } from '@/src/components/sharedComponents/TokenSelect/types' import { MenuContent, MenuItem } from '@/src/components/sharedComponents/ui/Menu' -import { Box, Flex, type FlexProps, Menu } from '@chakra-ui/react' -import type { Dispatch, FC, SetStateAction } from 'react' interface SearchProps extends FlexProps { currentNetworkId: number diff --git a/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx b/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx index a7b271ab..cba34232 100644 --- a/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx +++ b/src/components/sharedComponents/TokenSelect/TopTokens/Item.tsx @@ -1,7 +1,7 @@ +import { Box, chakra, Flex } from '@chakra-ui/react' +import type { ComponentPropsWithoutRef, FC } from 'react' import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import type { Token } from '@/src/types/token' -import { Box, Flex, chakra } from '@chakra-ui/react' -import type { ComponentPropsWithoutRef, FC } from 'react' const ICON_SIZE = 24 diff --git a/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx b/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx index 41478d02..3f3986b4 100644 --- a/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx +++ b/src/components/sharedComponents/TokenSelect/TopTokens/index.tsx @@ -1,8 +1,8 @@ +import { Flex, type FlexProps } from '@chakra-ui/react' +import type { FC } from 'react' import Item from '@/src/components/sharedComponents/TokenSelect/TopTokens/Item' import type { Token, Tokens } from '@/src/types/token' import { isNativeToken } from '@/src/utils/address' -import { Flex, type FlexProps } from '@chakra-ui/react' -import type { FC } from 'react' interface TopTokensProps extends FlexProps { onTokenSelect: (token: Token | undefined) => void diff --git a/src/components/sharedComponents/TokenSelect/index.tsx b/src/components/sharedComponents/TokenSelect/index.tsx index f8ac25f3..0ca21ff8 100644 --- a/src/components/sharedComponents/TokenSelect/index.tsx +++ b/src/components/sharedComponents/TokenSelect/index.tsx @@ -1,3 +1,6 @@ +import { Flex, type FlexProps } from '@chakra-ui/react' +import { useEffect, useRef, useState } from 'react' +import type { Chain } from 'viem/chains' import List from '@/src/components/sharedComponents/TokenSelect/List' import Search from '@/src/components/sharedComponents/TokenSelect/Search' import TopTokens from '@/src/components/sharedComponents/TokenSelect/TopTokens' @@ -9,9 +12,6 @@ import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { chains } from '@/src/lib/networks.config' import type { Token } from '@/src/types/token' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' -import { Flex, type FlexProps } from '@chakra-ui/react' -import { useEffect, useRef, useState } from 'react' -import type { Chain } from 'viem/chains' import styles from './styles' export interface TokenSelectProps { diff --git a/src/components/sharedComponents/TransactionButton.test.tsx b/src/components/sharedComponents/TransactionButton.test.tsx index deb77f9d..032dc575 100644 --- a/src/components/sharedComponents/TransactionButton.test.tsx +++ b/src/components/sharedComponents/TransactionButton.test.tsx @@ -1,6 +1,6 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { render, screen } from '@testing-library/react' -import { type ReactNode, createElement } from 'react' +import { createElement, type ReactNode } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' import TransactionButton from './TransactionButton' diff --git a/src/components/sharedComponents/TransactionButton.tsx b/src/components/sharedComponents/TransactionButton.tsx index fd43ae32..620b0cbe 100644 --- a/src/components/sharedComponents/TransactionButton.tsx +++ b/src/components/sharedComponents/TransactionButton.tsx @@ -1,14 +1,14 @@ +import type { ButtonProps } from '@chakra-ui/react' +import type { ReactElement } from 'react' +import { useEffect, useState } from 'react' +import type { Hash, TransactionReceipt } from 'viem' +import { useWaitForTransactionReceipt } from 'wagmi' import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' import type { ChainsIds } from '@/src/lib/networks.config' import { useTransactionNotification } from '@/src/providers/TransactionNotificationProvider' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import type { ButtonProps } from '@chakra-ui/react' -import { useEffect, useState } from 'react' -import type { ReactElement } from 'react' -import type { Hash, TransactionReceipt } from 'viem' -import { useWaitForTransactionReceipt } from 'wagmi' interface TransactionButtonProps extends ButtonProps { /** Target chain ID for wallet status verification. */ diff --git a/src/components/sharedComponents/WalletStatusVerifier.test.tsx b/src/components/sharedComponents/WalletStatusVerifier.test.tsx index 6633c3b0..8487e9b3 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.test.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.test.tsx @@ -1,9 +1,9 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' -import { type ReactNode, createElement } from 'react' +import { createElement, type ReactNode } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' -import { WalletStatusVerifier, useWeb3StatusConnected } from './WalletStatusVerifier' +import { useWeb3StatusConnected, WalletStatusVerifier } from './WalletStatusVerifier' const mockSwitchChain = vi.fn() diff --git a/src/components/sharedComponents/WalletStatusVerifier.tsx b/src/components/sharedComponents/WalletStatusVerifier.tsx index c9902807..9d39d13b 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.tsx @@ -1,11 +1,11 @@ +import { createContext, type FC, type ReactElement, useContext } from 'react' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' -import { type Web3Status, useWeb3Status } from '@/src/hooks/useWeb3Status' +import { useWeb3Status, type Web3Status } from '@/src/hooks/useWeb3Status' import type { ChainsIds } from '@/src/lib/networks.config' import { ConnectWalletButton } from '@/src/providers/Web3Provider' import type { RequiredNonNull } from '@/src/types/utils' import { DeveloperError } from '@/src/utils/DeveloperError' -import { type FC, type ReactElement, createContext, useContext } from 'react' const WalletStatusVerifierContext = createContext<RequiredNonNull<Web3Status> | null>(null) diff --git a/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx b/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx index 8887d721..83091c2c 100644 --- a/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx +++ b/src/components/sharedComponents/dev/TanStackReactQueryDevtools.tsx @@ -1,4 +1,4 @@ -import { Suspense, lazy } from 'react' +import { lazy, Suspense } from 'react' const ReactQueryDevtools = import.meta.env.PROD ? () => null diff --git a/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx b/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx index cbc90b3a..b45479d0 100644 --- a/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx +++ b/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx @@ -1,4 +1,4 @@ -import { Suspense, lazy } from 'react' +import { lazy, Suspense } from 'react' const RouterDevtoolsBase = import.meta.env.PROD ? () => null diff --git a/src/components/sharedComponents/ui/DropdownButton.tsx b/src/components/sharedComponents/ui/DropdownButton.tsx index 8e0a4b5c..3c9cdcb3 100644 --- a/src/components/sharedComponents/ui/DropdownButton.tsx +++ b/src/components/sharedComponents/ui/DropdownButton.tsx @@ -1,6 +1,6 @@ -import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' import { type ButtonProps, chakra } from '@chakra-ui/react' import type { FC } from 'react' +import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' const ChevronDown: FC = () => ( <chakra.svg diff --git a/src/components/sharedComponents/ui/ExternalLink/index.tsx b/src/components/sharedComponents/ui/ExternalLink/index.tsx index 4af70c36..d9b2ef4c 100644 --- a/src/components/sharedComponents/ui/ExternalLink/index.tsx +++ b/src/components/sharedComponents/ui/ExternalLink/index.tsx @@ -1,4 +1,4 @@ -import { Link, type LinkProps, chakra } from '@chakra-ui/react' +import { chakra, Link, type LinkProps } from '@chakra-ui/react' import type { FC, HTMLAttributes } from 'react' import styles from './styles' diff --git a/src/components/sharedComponents/ui/Footer/Socials/index.tsx b/src/components/sharedComponents/ui/Footer/Socials/index.tsx index 11eddfbb..2f859328 100644 --- a/src/components/sharedComponents/ui/Footer/Socials/index.tsx +++ b/src/components/sharedComponents/ui/Footer/Socials/index.tsx @@ -1,9 +1,9 @@ +import { Flex, type FlexProps, Link } from '@chakra-ui/react' +import type { FC } from 'react' import Github from '@/src/components/sharedComponents/ui/Footer/Socials/assets/Github' import LinkedIn from '@/src/components/sharedComponents/ui/Footer/Socials/assets/LinkedIn' import Telegram from '@/src/components/sharedComponents/ui/Footer/Socials/assets/Telegram' import Twitter from '@/src/components/sharedComponents/ui/Footer/Socials/assets/Twitter' -import { Flex, type FlexProps, Link } from '@chakra-ui/react' -import type { FC } from 'react' const Socials: FC<FlexProps> = ({ ...restProps }) => { const items = [ diff --git a/src/components/sharedComponents/ui/Footer/index.tsx b/src/components/sharedComponents/ui/Footer/index.tsx index fc4b75e8..823a17f4 100644 --- a/src/components/sharedComponents/ui/Footer/index.tsx +++ b/src/components/sharedComponents/ui/Footer/index.tsx @@ -1,9 +1,9 @@ -import { LogoMini } from '@/src/components/sharedComponents/ui/Footer/LogoMini' -import Socials from '@/src/components/sharedComponents/ui/Footer/Socials' -import { Inner } from '@/src/components/sharedComponents/ui/Inner' import { Box, Flex, type FlexProps } from '@chakra-ui/react' import packageJSON from '@packageJSON' import type { FC } from 'react' +import { LogoMini } from '@/src/components/sharedComponents/ui/Footer/LogoMini' +import Socials from '@/src/components/sharedComponents/ui/Footer/Socials' +import { Inner } from '@/src/components/sharedComponents/ui/Inner' import styles from './styles' export const Footer: FC<FlexProps> = ({ css, ...restProps }) => { diff --git a/src/components/sharedComponents/ui/Header/Logo.tsx b/src/components/sharedComponents/ui/Header/Logo.tsx index 3582afdc..d43a68d7 100644 --- a/src/components/sharedComponents/ui/Header/Logo.tsx +++ b/src/components/sharedComponents/ui/Header/Logo.tsx @@ -1,4 +1,4 @@ -import { type ImageProps, chakra } from '@chakra-ui/react' +import { chakra, type ImageProps } from '@chakra-ui/react' import type { FC } from 'react' const LogoDark = diff --git a/src/components/sharedComponents/ui/Header/MainMenu.tsx b/src/components/sharedComponents/ui/Header/MainMenu.tsx index 4bcc72f4..edaa0eac 100644 --- a/src/components/sharedComponents/ui/Header/MainMenu.tsx +++ b/src/components/sharedComponents/ui/Header/MainMenu.tsx @@ -1,4 +1,4 @@ -import { Flex, type FlexProps, Link, type LinkProps, chakra } from '@chakra-ui/react' +import { chakra, Flex, type FlexProps, Link, type LinkProps } from '@chakra-ui/react' import type { FC } from 'react' const GitHub = () => ( diff --git a/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx b/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx index 789a182c..48cf1109 100644 --- a/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx +++ b/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu.tsx @@ -1,11 +1,10 @@ +import { Box, chakra, Drawer } from '@chakra-ui/react' +import { useTheme } from 'next-themes' +import { useState } from 'react' import Logo from '@/src/components/sharedComponents/ui/Header/Logo' import MainMenu from '@/src/components/sharedComponents/ui/Header/MainMenu' import { SwitchThemeButton } from '@/src/components/sharedComponents/ui/SwitchThemeButton' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import { Box, chakra } from '@chakra-ui/react' -import { Drawer } from '@chakra-ui/react' -import { useTheme } from 'next-themes' -import { useState } from 'react' import styles from './styles' const MenuIcon = () => ( diff --git a/src/components/sharedComponents/ui/Header/index.tsx b/src/components/sharedComponents/ui/Header/index.tsx index 10208e24..ccd79602 100644 --- a/src/components/sharedComponents/ui/Header/index.tsx +++ b/src/components/sharedComponents/ui/Header/index.tsx @@ -1,13 +1,13 @@ +import { Box, type BoxProps, chakra, Flex } from '@chakra-ui/react' +import { Link } from '@tanstack/react-router' +import { useTheme } from 'next-themes' +import type { FC } from 'react' import Logo from '@/src/components/sharedComponents/ui/Header/Logo' import MainMenu from '@/src/components/sharedComponents/ui/Header/MainMenu' import MobileMenu from '@/src/components/sharedComponents/ui/Header/MobileMenu/MobileMenu' import { Inner } from '@/src/components/sharedComponents/ui/Inner' import { SwitchThemeButton } from '@/src/components/sharedComponents/ui/SwitchThemeButton' import { ConnectWalletButton } from '@/src/providers/Web3Provider' -import { Box, type BoxProps, Flex, chakra } from '@chakra-ui/react' -import { Link } from '@tanstack/react-router' -import { useTheme } from 'next-themes' -import type { FC } from 'react' import styles from './styles' const HomeLink = chakra(Link) diff --git a/src/components/sharedComponents/ui/Modal/index.tsx b/src/components/sharedComponents/ui/Modal/index.tsx index d72455e6..2a624976 100644 --- a/src/components/sharedComponents/ui/Modal/index.tsx +++ b/src/components/sharedComponents/ui/Modal/index.tsx @@ -2,9 +2,9 @@ import { Card as BaseCard, type ButtonProps, type CardRootProps, + chakra, Heading, Text, - chakra, } from '@chakra-ui/react' import type { FC, ReactNode } from 'react' import styles from './styles' diff --git a/src/components/sharedComponents/ui/PrimaryButton/index.tsx b/src/components/sharedComponents/ui/PrimaryButton/index.tsx index 6bf9e073..a2d962b3 100644 --- a/src/components/sharedComponents/ui/PrimaryButton/index.tsx +++ b/src/components/sharedComponents/ui/PrimaryButton/index.tsx @@ -1,6 +1,6 @@ -import Button from '@/src/components/sharedComponents/ui/Button' import type { ButtonProps } from '@chakra-ui/react' import type { FC } from 'react' +import Button from '@/src/components/sharedComponents/ui/Button' import styles from './styles' export const PrimaryButton: FC<ButtonProps> = ({ css, ...restProps }) => ( diff --git a/src/components/sharedComponents/ui/SecondaryButton/index.tsx b/src/components/sharedComponents/ui/SecondaryButton/index.tsx index c6c8ac3b..9d14e6ec 100644 --- a/src/components/sharedComponents/ui/SecondaryButton/index.tsx +++ b/src/components/sharedComponents/ui/SecondaryButton/index.tsx @@ -1,6 +1,6 @@ -import Button from '@/src/components/sharedComponents/ui/Button' import type { ButtonProps } from '@chakra-ui/react' import type { FC } from 'react' +import Button from '@/src/components/sharedComponents/ui/Button' import styles from './styles' export const SecondaryButton: FC<ButtonProps> = ({ css, ...restProps }) => ( diff --git a/src/components/sharedComponents/ui/SwitchChainButton.tsx b/src/components/sharedComponents/ui/SwitchChainButton.tsx index 02fc0d1d..22fb5fa7 100644 --- a/src/components/sharedComponents/ui/SwitchChainButton.tsx +++ b/src/components/sharedComponents/ui/SwitchChainButton.tsx @@ -1,5 +1,5 @@ -import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' import { chakra } from '@chakra-ui/react' +import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' const SwitchChainButton = chakra(PrimaryButton, { base: { diff --git a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx index 9302d573..97791b94 100644 --- a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx +++ b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark.tsx @@ -1,4 +1,4 @@ -import { type HTMLChakraProps, chakra } from '@chakra-ui/react' +import { chakra, type HTMLChakraProps } from '@chakra-ui/react' import type { FC, SVGAttributes } from 'react' const Dark: FC<HTMLChakraProps<'svg'> & SVGAttributes<SVGSVGElement>> = ({ css, ...restProps }) => ( diff --git a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx index b7976a53..6059ec4d 100644 --- a/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx +++ b/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light.tsx @@ -1,4 +1,4 @@ -import { type HTMLChakraProps, chakra } from '@chakra-ui/react' +import { chakra, type HTMLChakraProps } from '@chakra-ui/react' import type { FC, SVGAttributes } from 'react' const Light: FC<HTMLChakraProps<'svg'> & SVGAttributes<SVGSVGElement>> = ({ diff --git a/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx b/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx index 557320be..420eee94 100644 --- a/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx +++ b/src/components/sharedComponents/ui/SwitchThemeButton/index.tsx @@ -1,7 +1,7 @@ -import Dark from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark' -import Light from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light' import { Box, type ButtonProps, chakra } from '@chakra-ui/react' import type { FC } from 'react' +import Dark from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Dark' +import Light from '@/src/components/sharedComponents/ui/SwitchThemeButton/assets/Light' import styles from './styles' const Icon = chakra('div', { diff --git a/src/components/ui/toaster.tsx b/src/components/ui/toaster.tsx index 4b4ff9e6..c8e09bf0 100644 --- a/src/components/ui/toaster.tsx +++ b/src/components/ui/toaster.tsx @@ -1,7 +1,7 @@ 'use client' +import { Toaster as ChakraToaster, createToaster, Portal, Stack, Toast } from '@chakra-ui/react' import Spinner from '@/src/components/sharedComponents/ui/Spinner' -import { Toaster as ChakraToaster, Portal, Stack, Toast, createToaster } from '@chakra-ui/react' export const toaster = createToaster({ placement: 'bottom-end', diff --git a/src/constants/contracts/contracts.ts b/src/constants/contracts/contracts.ts index 0f789d98..00320e2d 100644 --- a/src/constants/contracts/contracts.ts +++ b/src/constants/contracts/contracts.ts @@ -1,10 +1,10 @@ import { type Abi, type Address, - type ContractFunctionArgs as WagmiContractFunctionArgs, - type ContractFunctionName as WagmiContractFunctionName, erc20Abi, isAddress, + type ContractFunctionArgs as WagmiContractFunctionArgs, + type ContractFunctionName as WagmiContractFunctionName, } from 'viem' import { mainnet, optimismSepolia, polygon, sepolia } from 'viem/chains' @@ -85,9 +85,8 @@ export type ContractNames = (typeof contracts)[number]['name'] type ContractOfName<CN extends ContractNames> = Extract<(typeof contracts)[number], { name: CN }> type AbiOfName<CN extends ContractNames> = ContractOfName<CN>['abi'] -type AddressRecord<T extends ContractNames> = ContractOfName<T> extends { address: infer K } - ? K - : never +type AddressRecord<T extends ContractNames> = + ContractOfName<T> extends { address: infer K } ? K : never type ChainIdOf<T extends ContractNames> = keyof AddressRecord<T> export type ContractFunctionName<CN extends ContractNames> = WagmiContractFunctionName< diff --git a/src/hooks/useErc20Balance.test.ts b/src/hooks/useErc20Balance.test.ts index 04b3f033..c81c47d1 100644 --- a/src/hooks/useErc20Balance.test.ts +++ b/src/hooks/useErc20Balance.test.ts @@ -1,10 +1,10 @@ -import type { Token } from '@/src/types/token' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { renderHook, waitFor } from '@testing-library/react' import type { ReactNode } from 'react' import { createElement } from 'react' import { zeroAddress } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Token } from '@/src/types/token' import { useErc20Balance } from './useErc20Balance' const mockReadContract = vi.fn() diff --git a/src/hooks/useNetworkBlockNumber.ts b/src/hooks/useNetworkBlockNumber.ts index 6681f49b..33b673b6 100644 --- a/src/hooks/useNetworkBlockNumber.ts +++ b/src/hooks/useNetworkBlockNumber.ts @@ -1,7 +1,6 @@ -import { useMemo } from 'react' - import { type UseSuspenseQueryOptions, useSuspenseQuery } from '@tanstack/react-query' -import { http, createPublicClient } from 'viem' +import { useMemo } from 'react' +import { createPublicClient, http } from 'viem' import type { Chain } from 'viem/chains' /** diff --git a/src/hooks/useOPL1CrossDomainMessengerProxy.ts b/src/hooks/useOPL1CrossDomainMessengerProxy.ts index 89dc4475..08074ba4 100644 --- a/src/hooks/useOPL1CrossDomainMessengerProxy.ts +++ b/src/hooks/useOPL1CrossDomainMessengerProxy.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react' -import { type Address, type Hash, createPublicClient, encodeFunctionData } from 'viem' +import { type Address, createPublicClient, encodeFunctionData, type Hash } from 'viem' import type { mainnet } from 'viem/chains' import { optimism, optimismSepolia, sepolia } from 'viem/chains' import { useWriteContract } from 'wagmi' diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index efbb40a3..4a5b1ee9 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -1,11 +1,11 @@ -import type { Token } from '@/src/types/token' -import tokenListsCache, { updateTokenListsCache } from '@/src/utils/tokenListsCache' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { renderHook } from '@testing-library/react' -import { createElement } from 'react' import type { ReactNode } from 'react' +import { createElement } from 'react' import { zeroAddress } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Token } from '@/src/types/token' +import tokenListsCache, { updateTokenListsCache } from '@/src/utils/tokenListsCache' vi.mock('@/src/utils/tokenListsCache', () => { const cache = { tokens: [] as Token[], tokensByChainId: {} as Record<number, Token[]> } diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 73b48463..fe57ed64 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -1,18 +1,17 @@ -import { useMemo } from 'react' - import { type UseSuspenseQueryOptions, type UseSuspenseQueryResult, useSuspenseQueries, } from '@tanstack/react-query' import defaultTokens from '@uniswap/default-token-list' +import { useMemo } from 'react' import * as chains from 'viem/chains' import { tokenLists } from '@/src/constants/tokenLists' import { env } from '@/src/env' import { type Token, type TokenList, tokenSchema } from '@/src/types/token' import { logger } from '@/src/utils/logger' -import tokenListsCache, { updateTokenListsCache, type TokensMap } from '@/src/utils/tokenListsCache' +import tokenListsCache, { type TokensMap, updateTokenListsCache } from '@/src/utils/tokenListsCache' /** * Loads and processes token lists from configured sources diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index ba4e4a7a..0ab94cde 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -1,15 +1,14 @@ -import { useMemo } from 'react' - import { - EVM, - type TokenAmount, - type TokensResponse, createConfig, + EVM, getChains, getTokenBalances, getTokens, + type TokenAmount, + type TokensResponse, } from '@lifi/sdk' import { useQuery } from '@tanstack/react-query' +import { useMemo } from 'react' import { type Address, type Chain, formatUnits } from 'viem' import { env } from '@/src/env' @@ -70,7 +69,11 @@ export const useTokens = ( account, chainId, withBalance, - }: { account?: Address; chainId?: Chain['id']; withBalance?: boolean } = { + }: { + account?: Address + chainId?: Chain['id'] + withBalance?: boolean + } = { withBalance: true, }, ) => { diff --git a/src/hooks/useWalletStatus.ts b/src/hooks/useWalletStatus.ts index 3afae7cc..845a3713 100644 --- a/src/hooks/useWalletStatus.ts +++ b/src/hooks/useWalletStatus.ts @@ -1,5 +1,5 @@ -import { extractChain } from 'viem' import type { Chain } from 'viem' +import { extractChain } from 'viem' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { type ChainsIds, chains } from '@/src/lib/networks.config' diff --git a/src/hooks/useWeb3Status.test.ts b/src/hooks/useWeb3Status.test.ts index c9afb54f..3fe34ca3 100644 --- a/src/hooks/useWeb3Status.test.ts +++ b/src/hooks/useWeb3Status.test.ts @@ -1,8 +1,8 @@ -import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { renderHook } from '@testing-library/react' import { createElement } from 'react' import type { Address } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' +import { useWeb3StatusConnected } from '@/src/components/sharedComponents/WalletStatusVerifier' import { useWeb3Status } from './useWeb3Status' const mockDisconnect = vi.fn() @@ -39,8 +39,8 @@ vi.mock('@/src/providers/Web3Provider', () => ({ createElement('button', { type: 'button', 'data-testid': 'connect-wallet-button' }, 'Connect'), })) -import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' import * as wagmi from 'wagmi' +import { WalletStatusVerifier } from '@/src/components/sharedComponents/WalletStatusVerifier' const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') const mockedUseWalletStatus = vi.mocked(useWalletStatus) diff --git a/src/lib/wallets/connectkit.config.tsx b/src/lib/wallets/connectkit.config.tsx index b542bc88..c262e2a7 100644 --- a/src/lib/wallets/connectkit.config.tsx +++ b/src/lib/wallets/connectkit.config.tsx @@ -1,14 +1,13 @@ -import Avatar from '@/src/components/sharedComponents/Avatar' -import ConnectButton from '@/src/components/sharedComponents/ConnectButton' -import { env } from '@/src/env' -import { chains, transports } from '@/src/lib/networks.config' import type { ButtonProps } from '@chakra-ui/react' -import { ConnectKitButton, ConnectKitProvider, type Types, getDefaultConfig } from 'connectkit' +import { ConnectKitButton, ConnectKitProvider, getDefaultConfig, type Types } from 'connectkit' import type { FC, ReactNode } from 'react' import type { Address } from 'viem' import { normalize } from 'viem/ens' - import { createConfig, useEnsAvatar, useEnsName } from 'wagmi' +import Avatar from '@/src/components/sharedComponents/Avatar' +import ConnectButton from '@/src/components/sharedComponents/ConnectButton' +import { env } from '@/src/env' +import { chains, transports } from '@/src/lib/networks.config' interface Props { address: Address diff --git a/src/lib/wallets/portoInit.ts b/src/lib/wallets/portoInit.ts index fa76833e..916091de 100644 --- a/src/lib/wallets/portoInit.ts +++ b/src/lib/wallets/portoInit.ts @@ -1,5 +1,5 @@ -import { env } from '@/src/env' import { Porto } from 'porto' +import { env } from '@/src/env' if (env.PUBLIC_ENABLE_PORTO) { try { diff --git a/src/lib/wallets/web3modal.config.tsx b/src/lib/wallets/web3modal.config.tsx index 9c4590a8..6f283ab0 100644 --- a/src/lib/wallets/web3modal.config.tsx +++ b/src/lib/wallets/web3modal.config.tsx @@ -3,15 +3,13 @@ * version used: 4.2.1 */ -import type { DetailedHTMLProps, FC, HTMLAttributes, PropsWithChildren } from 'react' - -import { WagmiAdapter } from '@reown/appkit-adapter-wagmi' import { createAppKit } from '@reown/appkit/react' +import { WagmiAdapter } from '@reown/appkit-adapter-wagmi' +import type { DetailedHTMLProps, FC, HTMLAttributes, PropsWithChildren } from 'react' +import type { Chain } from 'viem' import { env } from '@/src/env' - import { chains } from '@/src/lib/networks.config' -import type { Chain } from 'viem' export const WalletProvider: FC<PropsWithChildren> = ({ children }) => children diff --git a/src/main.tsx b/src/main.tsx index 83a6df6f..9c9fd191 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,6 +1,5 @@ +import { createRouter, RouterProvider } from '@tanstack/react-router' import { StrictMode } from 'react' - -import { RouterProvider, createRouter } from '@tanstack/react-router' import ReactDOM from 'react-dom/client' import NotFound404 from '@/src/components/pageComponents/NotFound404' diff --git a/src/providers/TransactionNotificationProvider.tsx b/src/providers/TransactionNotificationProvider.tsx index 3cf7d456..94444d01 100644 --- a/src/providers/TransactionNotificationProvider.tsx +++ b/src/providers/TransactionNotificationProvider.tsx @@ -1,16 +1,16 @@ -import { ExplorerLink } from '@/src/components/sharedComponents/ExplorerLink' -import { - NotificationToast, - notificationToaster, -} from '@/src/components/sharedComponents/NotificationToast' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { type FC, type PropsWithChildren, type ReactNode, createContext, useContext } from 'react' +import { createContext, type FC, type PropsWithChildren, type ReactNode, useContext } from 'react' import type { Hash, ReplacementReturnType, SignMessageErrorType, TransactionExecutionError, } from 'viem' +import { ExplorerLink } from '@/src/components/sharedComponents/ExplorerLink' +import { + NotificationToast, + notificationToaster, +} from '@/src/components/sharedComponents/NotificationToast' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' type WatchSignatureArgs = { successMessage?: string diff --git a/src/providers/Web3Provider.tsx b/src/providers/Web3Provider.tsx index d9eab5b9..98401513 100644 --- a/src/providers/Web3Provider.tsx +++ b/src/providers/Web3Provider.tsx @@ -1,10 +1,9 @@ -import type { FC, PropsWithChildren } from 'react' - import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import type { FC, PropsWithChildren } from 'react' import { WagmiProvider } from 'wagmi' import '@/src/lib/wallets/portoInit' -import { ConnectWalletButton, WalletProvider, config } from '@/src/lib/wallets/connectkit.config' +import { ConnectWalletButton, config, WalletProvider } from '@/src/lib/wallets/connectkit.config' const queryClient = new QueryClient() diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index 7037e400..27a5f103 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -1,3 +1,7 @@ +import { chakra, Flex } from '@chakra-ui/react' +import { createRootRoute, Outlet } from '@tanstack/react-router' +import { Analytics } from '@vercel/analytics/react' +import { useEffect } from 'react' import { TanStackReactQueryDevtools } from '@/src/components/sharedComponents/dev/TanStackReactQueryDevtools' import { TanStackRouterDevtools } from '@/src/components/sharedComponents/dev/TanStackRouterDevtools' import { Footer } from '@/src/components/sharedComponents/ui/Footer' @@ -7,10 +11,6 @@ import { Toaster } from '@/src/components/ui/toaster' import { TransactionNotificationProvider } from '@/src/providers/TransactionNotificationProvider' import { Web3Provider } from '@/src/providers/Web3Provider' import { printAppInfo } from '@/src/utils/printAppInfo' -import { Flex, chakra } from '@chakra-ui/react' -import { Outlet, createRootRoute } from '@tanstack/react-router' -import { Analytics } from '@vercel/analytics/react' -import { useEffect } from 'react' export const Route = createRootRoute({ component: Root, diff --git a/src/utils/getExplorerLink.test.ts b/src/utils/getExplorerLink.test.ts index 9833c82f..8a052a1b 100644 --- a/src/utils/getExplorerLink.test.ts +++ b/src/utils/getExplorerLink.test.ts @@ -1,6 +1,6 @@ -import { createMockChain } from '@/src/test-utils' import type { Chain } from 'viem' import { describe, expect, it } from 'vitest' +import { createMockChain } from '@/src/test-utils' import { getExplorerLink } from './getExplorerLink' const chain = createMockChain() diff --git a/src/utils/getTransactionOutputs.test.ts b/src/utils/getTransactionOutputs.test.ts index 751f8cd3..0e25ba18 100644 --- a/src/utils/getTransactionOutputs.test.ts +++ b/src/utils/getTransactionOutputs.test.ts @@ -1,10 +1,10 @@ -import { type AbiEvent, type TransactionReceipt, decodeEventLog } from 'viem' +import { type AbiEvent, decodeEventLog, type TransactionReceipt } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' import { + getTransactionOutputs, MissingOutputError, TransactionOutputError, - getTransactionOutputs, } from '@/src/utils/getTransactionOutputs' // Mock the viem decodeEventLog function diff --git a/src/utils/getTransactionOutputs.ts b/src/utils/getTransactionOutputs.ts index 866985f5..c12ce879 100644 --- a/src/utils/getTransactionOutputs.ts +++ b/src/utils/getTransactionOutputs.ts @@ -1,4 +1,4 @@ -import { type AbiEvent, type Log, type TransactionReceipt, decodeEventLog, isHex } from 'viem' +import { type AbiEvent, decodeEventLog, isHex, type Log, type TransactionReceipt } from 'viem' /** * Custom error class for transaction output processing errors diff --git a/src/utils/hash.test.ts b/src/utils/hash.test.ts index 1e83a403..58e9bac1 100644 --- a/src/utils/hash.test.ts +++ b/src/utils/hash.test.ts @@ -1,7 +1,7 @@ import type { Chain, Transaction } from 'viem' import * as viemActions from 'viem/actions' import { mainnet } from 'viem/chains' -import { type Mock, describe, expect, it, vi } from 'vitest' +import { describe, expect, it, type Mock, vi } from 'vitest' import detectHash from '@/src/utils/hash' diff --git a/src/utils/hash.ts b/src/utils/hash.ts index a9dcb330..17fb598a 100644 --- a/src/utils/hash.ts +++ b/src/utils/hash.ts @@ -1,12 +1,12 @@ import { - http, type Address, type Chain, - type Hash, - type Transaction, createPublicClient, + type Hash, + http, isAddress, isHex, + type Transaction, } from 'viem' import { getBytecode, getEnsAddress, getTransaction } from 'viem/actions' import { normalize } from 'viem/ens' diff --git a/src/utils/numberFormat.test.ts b/src/utils/numberFormat.test.ts index 69812c0e..bd4fd656 100644 --- a/src/utils/numberFormat.test.ts +++ b/src/utils/numberFormat.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest' -import { NumberType, formatNumber, formatUSDPrice } from '@/src/utils/numberFormat' +import { formatNumber, formatUSDPrice, NumberType } from '@/src/utils/numberFormat' it('formats token reference numbers correctly', () => { expect(formatNumber(1234567000000000, NumberType.TokenNonTx)).toBe('>999T') diff --git a/src/utils/suspenseWrapper.tsx b/src/utils/suspenseWrapper.tsx index e8aba0d2..835ad5c7 100644 --- a/src/utils/suspenseWrapper.tsx +++ b/src/utils/suspenseWrapper.tsx @@ -1,8 +1,4 @@ -import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' -import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' -import { DeveloperError } from '@/src/utils/DeveloperError' -import { Flex, Spinner } from '@chakra-ui/react' -import { Dialog, Portal } from '@chakra-ui/react' +import { Dialog, Flex, Portal, Spinner } from '@chakra-ui/react' import { QueryErrorResetBoundary } from '@tanstack/react-query' import { type ComponentType, type JSX, type ReactNode, Suspense } from 'react' import { @@ -10,6 +6,9 @@ import { type ErrorBoundaryPropsWithRender, type FallbackProps, } from 'react-error-boundary' +import { GeneralMessage } from '@/src/components/sharedComponents/ui/GeneralMessage' +import PrimaryButton from '@/src/components/sharedComponents/ui/PrimaryButton' +import { DeveloperError } from '@/src/utils/DeveloperError' export type DefaultFallbackFormat = 'dialog' | 'default' diff --git a/vite.config.ts b/vite.config.ts index 7601ba38..284effb5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,4 +1,4 @@ -/// <reference types="vitest" /> +/// <reference types="vitest/config" /> import { resolve } from 'node:path' import { TanStackRouterVite } from '@tanstack/router-plugin/vite' import react from '@vitejs/plugin-react-swc' diff --git a/vocs.config.ts b/vocs.config.ts index 647c669b..311549c4 100644 --- a/vocs.config.ts +++ b/vocs.config.ts @@ -1,4 +1,4 @@ -import { type SidebarItem, defineConfig } from 'vocs' +import { defineConfig, type SidebarItem } from 'vocs' export default defineConfig({ title: 'dAppBooster', From 7d420b43cdab60441f5ad3ee39c4209c28b0f590 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:24:02 -0300 Subject: [PATCH 045/115] fix: resolve react-jazzicon CJS interop for Vite 8 and add WalletConnect to CSP Vite 8's dependency pre-bundler wraps CJS __esModule packages as `export default module.exports`, making the default import resolve to the module.exports object instead of exports.default. Add runtime detection to handle both Vite 8 (object) and Node.js/Vitest (function) interop behaviors for react-jazzicon. Also add verify.walletconnect.org to the CSP frame-src directive so the WalletConnect verification iframe no longer triggers a policy violation. --- src/components/sharedComponents/Avatar.tsx | 14 +++++++++++++- vercel.json | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/components/sharedComponents/Avatar.tsx b/src/components/sharedComponents/Avatar.tsx index 83242610..d2fb05b7 100644 --- a/src/components/sharedComponents/Avatar.tsx +++ b/src/components/sharedComponents/Avatar.tsx @@ -1,6 +1,18 @@ import { Box } from '@chakra-ui/react' import type { ComponentProps, FC } from 'react' -import Jazzicon, { jsNumberForAddress } from 'react-jazzicon' +// react-jazzicon is CJS with __esModule. Vite 8's pre-bundler wraps it as +// `export default module.exports`, so the default import is the module.exports +// object, not the component. Node.js/Vitest gives the component directly. +import _Jazzicon, { jsNumberForAddress as _jsNFA } from 'react-jazzicon' + +// Vite 8 pre-bundler wraps CJS __esModule packages as `export default module.exports`, +// so the default import may be the module.exports object instead of exports.default. +type CJSModule = Record<string, unknown> +const _mod = _Jazzicon as unknown as CJSModule +const Jazzicon: typeof _Jazzicon = + typeof _Jazzicon === 'function' ? _Jazzicon : (_mod.default as typeof _Jazzicon) +const jsNumberForAddress: typeof _jsNFA = + typeof _jsNFA === 'function' ? _jsNFA : (_mod.jsNumberForAddress as typeof _jsNFA) interface AvatarProps extends ComponentProps<'div'> { address: string diff --git a/vercel.json b/vercel.json index 9096ba56..153282ab 100644 --- a/vercel.json +++ b/vercel.json @@ -5,7 +5,7 @@ "headers": [ { "key": "Content-Security-Policy-Report-Only", - "value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https: blob:; connect-src 'self' https: wss:; frame-src 'self' https://app.family.co https://id.porto.sh; frame-ancestors 'none'" + "value": "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://va.vercel-scripts.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https: blob:; connect-src 'self' https: wss:; frame-src 'self' https://app.family.co https://id.porto.sh https://verify.walletconnect.org; frame-ancestors 'none'" }, { "key": "X-Content-Type-Options", From 4e627138a93e75fa68123fa5ddcc88e2aff6d769 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:36:44 -0300 Subject: [PATCH 046/115] fix: migrate from deprecated @tanstack/router-devtools to @tanstack/react-router-devtools The old package emits a deprecation warning directing users to switch to @tanstack/react-router-devtools before the next major release. --- package.json | 3 +- pnpm-lock.yaml | 34 ++++--------------- .../dev/TanStackRouterDevtools.tsx | 2 +- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 168b93b2..f104bc53 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@vercel/analytics": "^2.0.1", "@web3icons/core": "^4.0.13", "@web3icons/react": "^4.0.13", + "buffer": "^6.0.3", "connectkit": "^1.9.2", "graphql": "^16.13.2", "graphql-request": "^7.1.2", @@ -63,8 +64,8 @@ "@graphql-typed-document-node/core": "^3.2.0", "@parcel/watcher": "^2.5.1", "@tanstack/react-query-devtools": "^5.96.1", + "@tanstack/react-router-devtools": "^1.166.11", "@tanstack/router-cli": "^1.166.25", - "@tanstack/router-devtools": "^1.166.11", "@tanstack/router-plugin": "^1.167.12", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db24800e..d35cd3f5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -56,6 +56,9 @@ importers: '@web3icons/react': specifier: ^4.0.13 version: 4.1.17(react@19.2.4)(typescript@6.0.2) + buffer: + specifier: ^6.0.3 + version: 6.0.3 connectkit: specifier: ^1.9.2 version: 1.9.2(@babel/core@7.29.0)(@tanstack/react-query@5.96.1(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react-is@17.0.2)(react@19.2.4)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(wagmi@2.19.5(@tanstack/query-core@5.96.1)(@tanstack/react-query@5.96.1(react@19.2.4))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.4)(typescript@6.0.2)(utf-8-validate@5.0.10)(viem@2.47.6(bufferutil@4.1.0)(typescript@6.0.2)(utf-8-validate@5.0.10)(zod@4.3.6))(zod@4.3.6)) @@ -120,12 +123,12 @@ importers: '@tanstack/react-query-devtools': specifier: ^5.96.1 version: 5.96.1(@tanstack/react-query@5.96.1(react@19.2.4))(react@19.2.4) + '@tanstack/react-router-devtools': + specifier: ^1.166.11 + version: 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-cli': specifier: ^1.166.25 version: 1.166.25 - '@tanstack/router-devtools': - specifier: ^1.166.11 - version: 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tanstack/router-plugin': specifier: ^1.167.12 version: 1.167.12(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@8.0.5(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.3.0)(esbuild@0.25.12)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.2)) @@ -3874,18 +3877,6 @@ packages: csstype: optional: true - '@tanstack/router-devtools@1.166.11': - resolution: {integrity: sha512-jvFKr1fQ5pWMOZTILhitJc1kJt1wj8qqtRClVJvyD1AjHc1XINihkqK+R6+FmC8F2m+XOhKME4CSnTtJ6Nf34w==} - engines: {node: '>=20.19'} - peerDependencies: - '@tanstack/react-router': ^1.168.2 - csstype: ^3.0.10 - react: '>=18.0.0 || >=19.0.0' - react-dom: '>=18.0.0 || >=19.0.0' - peerDependenciesMeta: - csstype: - optional: true - '@tanstack/router-generator@1.166.24': resolution: {integrity: sha512-vdaGKwuH+r+DPe6R1mjk+TDDmDH6NTG7QqwxHqGEvOH4aGf9sPjhmRKNJZqQr8cPIbfp6u5lXyZ1TeDcSNMVEA==} engines: {node: '>=20.19'} @@ -14058,19 +14049,6 @@ snapshots: optionalDependencies: csstype: 3.2.3 - '@tanstack/router-devtools@1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@tanstack/react-router': 1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/react-router-devtools': 1.166.11(@tanstack/react-router@1.168.10(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tanstack/router-core@1.168.9)(csstype@3.2.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - clsx: 2.1.1 - goober: 2.1.18(csstype@3.2.3) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - csstype: 3.2.3 - transitivePeerDependencies: - - '@tanstack/router-core' - '@tanstack/router-generator@1.166.24': dependencies: '@tanstack/router-core': 1.168.9 diff --git a/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx b/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx index b45479d0..ef00b957 100644 --- a/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx +++ b/src/components/sharedComponents/dev/TanStackRouterDevtools.tsx @@ -3,7 +3,7 @@ import { lazy, Suspense } from 'react' const RouterDevtoolsBase = import.meta.env.PROD ? () => null : lazy(() => - import('@tanstack/router-devtools').then((res) => ({ + import('@tanstack/react-router-devtools').then((res) => ({ default: res.TanStackRouterDevtools, })), ) From 00cf7bc671ece9a5abb34ed6992de7e1d9f84d4e Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:36:53 -0300 Subject: [PATCH 047/115] fix: use page origin for WalletConnect metadata URL The configured appUrl (PUBLIC_APP_URL) differs from the actual page origin during local development, triggering a WalletConnect warning. Use window.location.origin so metadata always matches the current page. --- src/lib/wallets/connectkit.config.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/wallets/connectkit.config.tsx b/src/lib/wallets/connectkit.config.tsx index c262e2a7..91996f0e 100644 --- a/src/lib/wallets/connectkit.config.tsx +++ b/src/lib/wallets/connectkit.config.tsx @@ -91,7 +91,7 @@ const defaultConfig = { // Optional App Info appDescription: env.PUBLIC_APP_DESCRIPTION, - appUrl: env.PUBLIC_APP_URL, + appUrl: typeof window !== 'undefined' ? window.location.origin : env.PUBLIC_APP_URL, appIcon: env.PUBLIC_APP_LOGO, } as const From a3990710da8e695a695393e9f7a74326d7fadf4e Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:37:09 -0300 Subject: [PATCH 048/115] fix: skip Porto initialization on insecure origins Porto requires HTTPS for WebAuthn support. Skip initialization on HTTP origins to avoid the console warning about unsupported protocols. --- src/lib/wallets/portoInit.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/wallets/portoInit.ts b/src/lib/wallets/portoInit.ts index 916091de..917963d1 100644 --- a/src/lib/wallets/portoInit.ts +++ b/src/lib/wallets/portoInit.ts @@ -1,7 +1,7 @@ import { Porto } from 'porto' import { env } from '@/src/env' -if (env.PUBLIC_ENABLE_PORTO) { +if (env.PUBLIC_ENABLE_PORTO && globalThis.location?.protocol === 'https:') { try { Porto.create() } catch (error) { From 621238043eae1e18702e83ea9a0119d182edfa3b Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:37:25 -0300 Subject: [PATCH 049/115] fix: provide buffer polyfill for @lifi/sdk browser compatibility Vite externalizes the Node.js buffer built-in for browser builds, causing a runtime warning when @lifi/sdk tries to access Buffer. Add the buffer package as a direct dependency and alias it in Vite so the npm polyfill is used instead of the externalized stub. --- vite.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/vite.config.ts b/vite.config.ts index a3174094..f25e7563 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -49,6 +49,7 @@ export default defineConfig(({ mode }) => { alias: { '@/src': resolve(__dirname, './src'), '@packageJSON': resolve(__dirname, 'package.json'), + buffer: 'buffer/', }, }, test: { From 8387f3db1fb317bcd91e69a5e3cf210797e8dbd0 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 13:39:50 -0300 Subject: [PATCH 050/115] fix: prevent duplicate printAppInfo output in StrictMode Move printAppInfo() from a useEffect in the Root component to a top-level call in main.tsx. It is a one-time startup side effect, not tied to any component lifecycle, so it does not belong in React's render tree where StrictMode double-invokes effects. --- src/main.tsx | 3 +++ src/routes/__root.tsx | 7 ------- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main.tsx b/src/main.tsx index 5ca881c8..a246ed66 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -4,6 +4,7 @@ import ReactDOM from 'react-dom/client' import NotFound404 from '@/src/components/pageComponents/NotFound404' import { routeTree } from '@/src/routeTree.gen' +import { printAppInfo } from '@/src/utils/printAppInfo' const router = createRouter({ routeTree, @@ -16,6 +17,8 @@ declare module '@tanstack/react-router' { } } +printAppInfo() + // biome-ignore lint/style/noNonNullAssertion: root element is guaranteed by index.html const rootElement = document.getElementById('root')! diff --git a/src/routes/__root.tsx b/src/routes/__root.tsx index 27a5f103..f299c7d5 100644 --- a/src/routes/__root.tsx +++ b/src/routes/__root.tsx @@ -1,7 +1,6 @@ import { chakra, Flex } from '@chakra-ui/react' import { createRootRoute, Outlet } from '@tanstack/react-router' import { Analytics } from '@vercel/analytics/react' -import { useEffect } from 'react' import { TanStackReactQueryDevtools } from '@/src/components/sharedComponents/dev/TanStackReactQueryDevtools' import { TanStackRouterDevtools } from '@/src/components/sharedComponents/dev/TanStackRouterDevtools' import { Footer } from '@/src/components/sharedComponents/ui/Footer' @@ -10,17 +9,11 @@ import { Provider } from '@/src/components/ui/provider' import { Toaster } from '@/src/components/ui/toaster' import { TransactionNotificationProvider } from '@/src/providers/TransactionNotificationProvider' import { Web3Provider } from '@/src/providers/Web3Provider' -import { printAppInfo } from '@/src/utils/printAppInfo' - export const Route = createRootRoute({ component: Root, }) function Root() { - useEffect(() => { - printAppInfo() - }, []) - return ( <Provider> <Web3Provider> From 03154b999c91d86a733e187e85551ab81536c646 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 14:13:03 -0300 Subject: [PATCH 051/115] chore: update ignore list --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 9203123b..3b156c1f 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,8 @@ CLAUDE.local.md # Builds /dist /docs/dist +/docs/superpowers +/docs/plan dist-ssr # Logs From c8a7e994e66b973f7c52abe634691f233b28c736 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 16:48:22 -0300 Subject: [PATCH 052/115] fix: add flexDirection column to MenuContent to fix dropdown layout --- src/components/sharedComponents/ui/Menu/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/sharedComponents/ui/Menu/index.tsx b/src/components/sharedComponents/ui/Menu/index.tsx index ad018d36..27137f0b 100644 --- a/src/components/sharedComponents/ui/Menu/index.tsx +++ b/src/components/sharedComponents/ui/Menu/index.tsx @@ -10,6 +10,7 @@ export const MenuContent: FC<MenuContentProps> = ({ children, css, ...restProps css={{ ...css, ...styles }} padding="0" display="flex" + flexDirection="column" alignItems="stretch" {...restProps} > From 80446655b29d3607d96553d58681757213f56773 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:04:59 -0300 Subject: [PATCH 053/115] fix: use CORS-friendly public RPCs as fallbacks when no PUBLIC_RPC_* env vars are set When PUBLIC_RPC_* env vars are not configured, viem falls back to chain defaults (e.g. eth.merkle.io for mainnet) which block cross-origin requests. Replace with publicnode.com fallbacks that set Access-Control-Allow-Origin: *. Closes #441 --- .env.example | 2 +- src/lib/networks.config.ts | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.env.example b/.env.example index 6a518dd9..782f733e 100644 --- a/.env.example +++ b/.env.example @@ -24,7 +24,7 @@ PUBLIC_WALLETCONNECT_PROJECT_ID='' # Native token address PUBLIC_NATIVE_TOKEN_ADDRESS=0x0000000000000000000000000000000000000000 -# RPCs. Complete if you want to use a different RPC from the one provided by wagmi. +# RPCs. When not set, CORS-friendly public RPCs from publicnode.com are used as defaults. PUBLIC_RPC_ARBITRUM= PUBLIC_RPC_ARBITRUM_SEPOLIA= PUBLIC_RPC_BASE= diff --git a/src/lib/networks.config.ts b/src/lib/networks.config.ts index 9bcc8f86..f1f8c0d5 100644 --- a/src/lib/networks.config.ts +++ b/src/lib/networks.config.ts @@ -18,10 +18,12 @@ export type ChainsIds = (typeof chains)[number]['id'] type RestrictedTransports = Record<ChainsIds, Transport> export const transports: RestrictedTransports = { - [mainnet.id]: http(env.PUBLIC_RPC_MAINNET), - [arbitrum.id]: http(env.PUBLIC_RPC_ARBITRUM), - [optimism.id]: http(env.PUBLIC_RPC_OPTIMISM), - [optimismSepolia.id]: http(env.PUBLIC_RPC_OPTIMISM_SEPOLIA), - [polygon.id]: http(env.PUBLIC_RPC_POLYGON), - [sepolia.id]: http(env.PUBLIC_RPC_SEPOLIA), + [mainnet.id]: http(env.PUBLIC_RPC_MAINNET || 'https://ethereum-rpc.publicnode.com'), + [arbitrum.id]: http(env.PUBLIC_RPC_ARBITRUM || 'https://arbitrum-one-rpc.publicnode.com'), + [optimism.id]: http(env.PUBLIC_RPC_OPTIMISM || 'https://optimism-rpc.publicnode.com'), + [optimismSepolia.id]: http( + env.PUBLIC_RPC_OPTIMISM_SEPOLIA || 'https://optimism-sepolia-rpc.publicnode.com', + ), + [polygon.id]: http(env.PUBLIC_RPC_POLYGON || 'https://polygon-bor-rpc.publicnode.com'), + [sepolia.id]: http(env.PUBLIC_RPC_SEPOLIA || 'https://ethereum-sepolia-rpc.publicnode.com'), } From 7a0b4813b79ee14abfde3e058e23c9ca2cff3afc Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:11:53 -0300 Subject: [PATCH 054/115] docs: clarify which RPC vars get publicnode fallbacks in .env.example --- .env.example | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 782f733e..a15e2194 100644 --- a/.env.example +++ b/.env.example @@ -24,7 +24,10 @@ PUBLIC_WALLETCONNECT_PROJECT_ID='' # Native token address PUBLIC_NATIVE_TOKEN_ADDRESS=0x0000000000000000000000000000000000000000 -# RPCs. When not set, CORS-friendly public RPCs from publicnode.com are used as defaults. +# RPCs. When unset, publicnode.com fallbacks are only used for: +# PUBLIC_RPC_MAINNET, PUBLIC_RPC_ARBITRUM, PUBLIC_RPC_OPTIMISM, +# PUBLIC_RPC_POLYGON, PUBLIC_RPC_SEPOLIA, and PUBLIC_RPC_OPTIMISM_SEPOLIA. +# Other RPC vars listed below do not have automatic defaults and should be set explicitly when needed. PUBLIC_RPC_ARBITRUM= PUBLIC_RPC_ARBITRUM_SEPOLIA= PUBLIC_RPC_BASE= From 3926e5f8947b90ace82b6796df7c0a2b78039cf0 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:13:43 -0300 Subject: [PATCH 055/115] docs: group RPC vars in .env.example by whether they have automatic fallbacks --- .env.example | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index a15e2194..57ad1cea 100644 --- a/.env.example +++ b/.env.example @@ -24,22 +24,23 @@ PUBLIC_WALLETCONNECT_PROJECT_ID='' # Native token address PUBLIC_NATIVE_TOKEN_ADDRESS=0x0000000000000000000000000000000000000000 -# RPCs. When unset, publicnode.com fallbacks are only used for: -# PUBLIC_RPC_MAINNET, PUBLIC_RPC_ARBITRUM, PUBLIC_RPC_OPTIMISM, -# PUBLIC_RPC_POLYGON, PUBLIC_RPC_SEPOLIA, and PUBLIC_RPC_OPTIMISM_SEPOLIA. -# Other RPC vars listed below do not have automatic defaults and should be set explicitly when needed. +# RPCs. Use these to override the default RPC for each chain. +# +# Fall back to CORS-friendly publicnode.com RPCs when unset: +PUBLIC_RPC_MAINNET= PUBLIC_RPC_ARBITRUM= +PUBLIC_RPC_OPTIMISM= +PUBLIC_RPC_OPTIMISM_SEPOLIA= +PUBLIC_RPC_POLYGON= +PUBLIC_RPC_SEPOLIA= +# +# No automatic fallback -- set explicitly if you need these chains: PUBLIC_RPC_ARBITRUM_SEPOLIA= PUBLIC_RPC_BASE= PUBLIC_RPC_BASE_SEPOLIA= PUBLIC_RPC_GNOSIS= PUBLIC_RPC_GNOSIS_CHIADO= -PUBLIC_RPC_MAINNET= -PUBLIC_RPC_OPTIMISM= -PUBLIC_RPC_OPTIMISM_SEPOLIA= -PUBLIC_RPC_POLYGON= PUBLIC_RPC_POLYGON_MUMBAI= -PUBLIC_RPC_SEPOLIA= # Subgraph ########################################################### From 99dd3679e55514ce5a61314cc9d48898d5ac3268 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:15:29 -0300 Subject: [PATCH 056/115] docs: clarify unconfigured chains need to be added to networks.config.ts first --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index 57ad1cea..b809b455 100644 --- a/.env.example +++ b/.env.example @@ -34,7 +34,7 @@ PUBLIC_RPC_OPTIMISM_SEPOLIA= PUBLIC_RPC_POLYGON= PUBLIC_RPC_SEPOLIA= # -# No automatic fallback -- set explicitly if you need these chains: +# Not configured by default -- add them to src/lib/networks.config.ts first, then set the RPC here: PUBLIC_RPC_ARBITRUM_SEPOLIA= PUBLIC_RPC_BASE= PUBLIC_RPC_BASE_SEPOLIA= From 03a4f4f7c29b9b78027b6d9eff16f8cf23fb6fa2 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 6 Apr 2026 17:15:58 -0300 Subject: [PATCH 057/115] docs: clarify both RPC sections reference networks.config.ts --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index b809b455..d06daa43 100644 --- a/.env.example +++ b/.env.example @@ -26,7 +26,7 @@ PUBLIC_NATIVE_TOKEN_ADDRESS=0x0000000000000000000000000000000000000000 # RPCs. Use these to override the default RPC for each chain. # -# Fall back to CORS-friendly publicnode.com RPCs when unset: +# Configured in src/lib/networks.config.ts -- fall back to CORS-friendly publicnode.com RPCs when unset: PUBLIC_RPC_MAINNET= PUBLIC_RPC_ARBITRUM= PUBLIC_RPC_OPTIMISM= From bdf3c1d8828f6e904299c32599dd28bce3594e3d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 7 Apr 2026 11:37:26 -0300 Subject: [PATCH 058/115] test: add coverage for fetchTokenList('default') bundled token path Test that the bundled @uniswap/default-token-list returns a non-empty tokens array and that all EVM-addressable entries conform to tokenSchema. The v18 list also includes Solana tokens (base58 addresses) which are expected to fail the EVM address regex and are filtered out downstream by useTokenLists via safeParse. Closes #438 --- src/hooks/useTokenLists.test.ts | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index 4a5b1ee9..ec4c5147 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -4,7 +4,7 @@ import type { ReactNode } from 'react' import { createElement } from 'react' import { zeroAddress } from 'viem' import { beforeEach, describe, expect, it, vi } from 'vitest' -import type { Token } from '@/src/types/token' +import { type Token, tokenSchema } from '@/src/types/token' import tokenListsCache, { updateTokenListsCache } from '@/src/utils/tokenListsCache' vi.mock('@/src/utils/tokenListsCache', () => { @@ -155,6 +155,28 @@ describe('fetchTokenList', () => { expect(result.tokens).toEqual([]) warnSpy.mockRestore() }) + + describe("'default' bundled token list", () => { + it('returns a non-empty tokens array', async () => { + const result = await fetchTokenList('default') + + expect(Array.isArray(result.tokens)).toBe(true) + expect(result.tokens.length).toBeGreaterThan(0) + }) + + it('every EVM token entry conforms to tokenSchema', async () => { + const result = await fetchTokenList('default') + + // The bundled list includes non-EVM tokens (e.g. Solana with base58 addresses) + // alongside EVM tokens. Non-EVM entries are filtered out downstream by useTokenLists + // via safeParse. Here we validate only the EVM-addressable subset. + const evmTokens = result.tokens.filter(({ address }) => /^0x[a-fA-F0-9]{40}$/.test(address)) + expect(evmTokens.length).toBeGreaterThan(0) + for (const token of evmTokens) { + expect(() => tokenSchema.parse(token)).not.toThrow() + } + }) + }) }) describe('useTokenLists', () => { From 8856a10363a6517f4bcbc0c882258352e825c7a4 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 7 Apr 2026 11:52:57 -0300 Subject: [PATCH 059/115] docs: clarify non-EVM token filtering in useTokenLists Adds a comment explaining that tokenSchema's EVM address format drops Solana and other non-EVM tokens from the bundled list, and that adding non-EVM support requires broader changes. Also renames the related test for clarity. --- src/hooks/useTokenLists.test.ts | 2 +- src/hooks/useTokenLists.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index ec4c5147..2d3a83cf 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -164,7 +164,7 @@ describe('fetchTokenList', () => { expect(result.tokens.length).toBeGreaterThan(0) }) - it('every EVM token entry conforms to tokenSchema', async () => { + it('every EVM token conforms to tokenSchema', async () => { const result = await fetchTokenList('default') // The bundled list includes non-EVM tokens (e.g. Solana with base58 addresses) diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index fe57ed64..57ddc697 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -98,7 +98,10 @@ function combineTokenLists(results: Array<UseSuspenseQueryResult<TokenList>>): T new Map( results .flatMap((result) => result.data.tokens) - // ensure that only valid tokens are consumed in runtime + // tokenSchema enforces EVM address format (0x + 40 hex chars), so non-EVM entries + // (e.g. Solana tokens from @uniswap/default-token-list v18+) are silently dropped here. + // Supporting non-EVM chains would require changes to the address schema, chain config, + // wallet integration, and contract lookup -- out of scope for this EVM-focused starter kit. .filter((token) => { const result = tokenSchema.safeParse(token) From cf364823e1b5b4023bed1daea5c7074a814dc1f2 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 7 Apr 2026 12:11:26 -0300 Subject: [PATCH 060/115] test: tighten default token path tests per code review - Remove redundant Array.isArray assertion (length check is sufficient) - Assert mockFetch was not called to make the contract of the 'default' path explicit and guard against future regressions --- src/hooks/useTokenLists.test.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index 2d3a83cf..d76e996e 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -160,8 +160,8 @@ describe('fetchTokenList', () => { it('returns a non-empty tokens array', async () => { const result = await fetchTokenList('default') - expect(Array.isArray(result.tokens)).toBe(true) expect(result.tokens.length).toBeGreaterThan(0) + expect(mockFetch).not.toHaveBeenCalled() }) it('every EVM token conforms to tokenSchema', async () => { @@ -175,6 +175,7 @@ describe('fetchTokenList', () => { for (const token of evmTokens) { expect(() => tokenSchema.parse(token)).not.toThrow() } + expect(mockFetch).not.toHaveBeenCalled() }) }) }) From 394219f184e23dcd1c224c715e065a849752551c Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:38:18 -0300 Subject: [PATCH 061/115] fix(token-input): format max value with thousand separators When clicking Max, the value bypassed NumericFormat's formatting pipeline because BigNumberInput's inputRef was not connected to NumericFormat. The display updated via direct DOM manipulation which NumericFormat never observed. Add a displayValue state to BigNumberInput driven by a render-time sync that fires when the value or decimals props change externally. This gives NumericFormat a controlled value prop so thousand separators are applied on max click as they are during typing. Also clear amountError on max click since the max value is by definition within the valid range. Closes #295 --- .../sharedComponents/BigNumberInput.test.tsx | 74 ++++++++++++++++++- .../sharedComponents/BigNumberInput.tsx | 23 +++++- .../sharedComponents/TokenInput/index.tsx | 1 + 3 files changed, 94 insertions(+), 4 deletions(-) diff --git a/src/components/sharedComponents/BigNumberInput.test.tsx b/src/components/sharedComponents/BigNumberInput.test.tsx index 03588853..6749f298 100644 --- a/src/components/sharedComponents/BigNumberInput.test.tsx +++ b/src/components/sharedComponents/BigNumberInput.test.tsx @@ -1,8 +1,9 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' -import { render, screen } from '@testing-library/react' +import { render, screen, waitFor } from '@testing-library/react' import userEvent from '@testing-library/user-event' import type { ComponentProps } from 'react' -import { maxUint256 } from 'viem' +import { NumericFormat } from 'react-number-format' +import { maxUint256, parseUnits } from 'viem' import { describe, expect, it, vi } from 'vitest' import { BigNumberInput } from './BigNumberInput' @@ -124,3 +125,72 @@ describe('BigNumberInput', () => { expect(onError).not.toHaveBeenCalled() }) }) + +describe('BigNumberInput with renderInput (NumericFormat)', () => { + function renderWithNumericFormat( + props: Partial<ComponentProps<typeof BigNumberInput>> & { + onChange?: (v: bigint) => void + } = {}, + initialValue = BigInt(0), + ) { + const onChange = props.onChange ?? vi.fn() + + const makeJsx = (value: bigint) => ( + <ChakraProvider value={system}> + <BigNumberInput + decimals={18} + value={value} + onChange={onChange} + renderInput={({ onChange: handleChange, value: displayVal, ...restProps }) => ( + <NumericFormat + thousandSeparator + onValueChange={({ value: v }) => handleChange(v)} + value={displayVal} + {...restProps} + /> + )} + {...props} + /> + </ChakraProvider> + ) + + const { container, rerender } = render(makeJsx(initialValue)) + + return { + input: container.querySelector('input') as HTMLInputElement, + onChange, + rerender: (newValue: bigint) => rerender(makeJsx(newValue)), + } + } + + it('shows empty input (placeholder) when value is 0n', () => { + const { input } = renderWithNumericFormat() + expect(input.value).toBe('') + }) + + it('formats value with thousand separators when value changes externally', async () => { + const { input, rerender } = renderWithNumericFormat() + rerender(parseUnits('1000', 18)) + await waitFor(() => { + expect(input.value).toBe('1,000') + }) + }) + + it('shows empty input after value resets to 0n', async () => { + const { input, rerender } = renderWithNumericFormat() + rerender(parseUnits('1000', 18)) + await waitFor(() => { + expect(input.value).toBe('1,000') + }) + rerender(BigInt(0)) + await waitFor(() => { + expect(input.value).toBe('') + }) + }) + + it('preserves user-typed "0" without clearing to placeholder', async () => { + const { input } = renderWithNumericFormat() + await userEvent.type(input, '0') + expect(input.value).toBe('0') + }) +}) diff --git a/src/components/sharedComponents/BigNumberInput.tsx b/src/components/sharedComponents/BigNumberInput.tsx index e72a49f6..ff8a7415 100644 --- a/src/components/sharedComponents/BigNumberInput.tsx +++ b/src/components/sharedComponents/BigNumberInput.tsx @@ -68,8 +68,22 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ }: BigNumberInputProps) => { const inputRef = useRef<HTMLInputElement>(null) const [hasError, setHasError] = useState(false) + const [displayValue, setDisplayValue] = useState('') + const prevValueRef = useRef(value) + const prevDecimalsRef = useRef(decimals) - // update inputValue when value changes + // Sync displayValue when an external change updates value or decimals (e.g. max click, token change). + // Using render-time state update to avoid a visible flash between renders. + if (prevValueRef.current !== value || prevDecimalsRef.current !== decimals) { + prevValueRef.current = value + prevDecimalsRef.current = decimals + setDisplayValue(value === BigInt(0) ? '' : formatUnits(value, decimals)) + } + + // DOM sync for the native input path (no renderInput). + // When renderInput is provided (e.g. NumericFormat), inputRef is not attached to the DOM + // and this effect is a no-op. External value changes for that path are handled via + // the displayValue state above. useEffect(() => { const current = inputRef.current if (!current) { @@ -101,6 +115,8 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ const { value } = typeof event === 'string' ? { value: event } : event.currentTarget if (value === '') { + prevValueRef.current = BigInt(0) + setDisplayValue('') setHasError(false) onChange(BigInt(0)) return @@ -142,6 +158,9 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ setHasError(false) } + // Set prevValueRef before onChange so the render-time sync doesn't override the user's input. + prevValueRef.current = newValue + setDisplayValue(value) onChange(newValue) } @@ -154,7 +173,7 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ } return renderInput ? ( - renderInput({ ...inputProps, inputRef }) + renderInput({ ...inputProps, inputRef, value: displayValue }) ) : ( <chakra.input {...inputProps} diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index 85d8a409..5e8505d5 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -102,6 +102,7 @@ const TokenInput: FC<Props> = ({ } const handleSetMax = () => { + setAmountError(null) setAmount(max) } From 80cbb18feabdcb8892f32cd8f5be196fd3fb2cb2 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:39:15 -0300 Subject: [PATCH 062/115] fix(token-input): cast displayVal type for NumericFormat value prop --- src/components/sharedComponents/BigNumberInput.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/sharedComponents/BigNumberInput.test.tsx b/src/components/sharedComponents/BigNumberInput.test.tsx index 6749f298..4e4d3232 100644 --- a/src/components/sharedComponents/BigNumberInput.test.tsx +++ b/src/components/sharedComponents/BigNumberInput.test.tsx @@ -145,7 +145,7 @@ describe('BigNumberInput with renderInput (NumericFormat)', () => { <NumericFormat thousandSeparator onValueChange={({ value: v }) => handleChange(v)} - value={displayVal} + value={displayVal as string | undefined} {...restProps} /> )} From ec841b62c7e022277e6b4a40df2f20efbdf88e4d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:40:06 -0300 Subject: [PATCH 063/115] fix(token-input): use as any cast in test renderInput to match TokenAmountField pattern --- src/components/sharedComponents/BigNumberInput.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/sharedComponents/BigNumberInput.test.tsx b/src/components/sharedComponents/BigNumberInput.test.tsx index 4e4d3232..260f17f0 100644 --- a/src/components/sharedComponents/BigNumberInput.test.tsx +++ b/src/components/sharedComponents/BigNumberInput.test.tsx @@ -146,7 +146,8 @@ describe('BigNumberInput with renderInput (NumericFormat)', () => { thousandSeparator onValueChange={({ value: v }) => handleChange(v)} value={displayVal as string | undefined} - {...restProps} + // biome-ignore lint/suspicious/noExplicitAny: mirrors TokenAmountField pattern + {...(restProps as any)} /> )} {...props} From fdbe05a3dfdaaf1ef9213fab496c06693e9559c8 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 17:59:16 -0300 Subject: [PATCH 064/115] fix(big-number-input): initialize displayValue from initial value prop --- src/components/sharedComponents/BigNumberInput.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/sharedComponents/BigNumberInput.tsx b/src/components/sharedComponents/BigNumberInput.tsx index ff8a7415..689b1eb5 100644 --- a/src/components/sharedComponents/BigNumberInput.tsx +++ b/src/components/sharedComponents/BigNumberInput.tsx @@ -68,7 +68,9 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ }: BigNumberInputProps) => { const inputRef = useRef<HTMLInputElement>(null) const [hasError, setHasError] = useState(false) - const [displayValue, setDisplayValue] = useState('') + const [displayValue, setDisplayValue] = useState(() => + value === BigInt(0) ? '' : formatUnits(value, decimals), + ) const prevValueRef = useRef(value) const prevDecimalsRef = useRef(decimals) From fdb5e098a2f508cf7f562731e3681b683ad51280 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 18:00:15 -0300 Subject: [PATCH 065/115] test(big-number-input): add test for non-zero initial value with renderInput --- src/components/sharedComponents/BigNumberInput.test.tsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/components/sharedComponents/BigNumberInput.test.tsx b/src/components/sharedComponents/BigNumberInput.test.tsx index 260f17f0..bc2eeee5 100644 --- a/src/components/sharedComponents/BigNumberInput.test.tsx +++ b/src/components/sharedComponents/BigNumberInput.test.tsx @@ -194,4 +194,9 @@ describe('BigNumberInput with renderInput (NumericFormat)', () => { await userEvent.type(input, '0') expect(input.value).toBe('0') }) + + it('shows formatted initial value when mounted with non-zero value', () => { + const { input } = renderWithNumericFormat({}, parseUnits('1000', 18)) + expect(input.value).toBe('1,000') + }) }) From 7bfa231f9b19c12965c59bdca82797b595c0303d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 18:09:36 -0300 Subject: [PATCH 066/115] test(big-number-input): exclude inputRef from NumericFormat spread in test helper --- src/components/sharedComponents/BigNumberInput.test.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/sharedComponents/BigNumberInput.test.tsx b/src/components/sharedComponents/BigNumberInput.test.tsx index bc2eeee5..a0a791e4 100644 --- a/src/components/sharedComponents/BigNumberInput.test.tsx +++ b/src/components/sharedComponents/BigNumberInput.test.tsx @@ -141,7 +141,12 @@ describe('BigNumberInput with renderInput (NumericFormat)', () => { decimals={18} value={value} onChange={onChange} - renderInput={({ onChange: handleChange, value: displayVal, ...restProps }) => ( + renderInput={({ + onChange: handleChange, + value: displayVal, + inputRef: _inputRef, + ...restProps + }) => ( <NumericFormat thousandSeparator onValueChange={({ value: v }) => handleChange(v)} From 7821c8a70427a13c31d071213f4b7993de3b7daa Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 18:10:21 -0300 Subject: [PATCH 067/115] fix(big-number-input): guard displayValue sync behind renderInput check --- src/components/sharedComponents/BigNumberInput.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/sharedComponents/BigNumberInput.tsx b/src/components/sharedComponents/BigNumberInput.tsx index 689b1eb5..550fc94f 100644 --- a/src/components/sharedComponents/BigNumberInput.tsx +++ b/src/components/sharedComponents/BigNumberInput.tsx @@ -79,7 +79,9 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ if (prevValueRef.current !== value || prevDecimalsRef.current !== decimals) { prevValueRef.current = value prevDecimalsRef.current = decimals - setDisplayValue(value === BigInt(0) ? '' : formatUnits(value, decimals)) + if (renderInput) { + setDisplayValue(value === BigInt(0) ? '' : formatUnits(value, decimals)) + } } // DOM sync for the native input path (no renderInput). From 0a2a4efcc5ba63977cf017b3b6f2873364ac3065 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Thu, 9 Apr 2026 18:28:31 -0300 Subject: [PATCH 068/115] fix(big-number-input): skip displayValue updates on native input path Guard setDisplayValue calls behind renderInput check to avoid unnecessary state updates when the native input path is active. Add test for decimals change (token switch) to cover the render-time sync path that was previously untested. --- .../sharedComponents/BigNumberInput.test.tsx | 21 ++++++++++++++++--- .../sharedComponents/BigNumberInput.tsx | 4 ++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/components/sharedComponents/BigNumberInput.test.tsx b/src/components/sharedComponents/BigNumberInput.test.tsx index a0a791e4..d57c0384 100644 --- a/src/components/sharedComponents/BigNumberInput.test.tsx +++ b/src/components/sharedComponents/BigNumberInput.test.tsx @@ -135,10 +135,12 @@ describe('BigNumberInput with renderInput (NumericFormat)', () => { ) { const onChange = props.onChange ?? vi.fn() - const makeJsx = (value: bigint) => ( + const initialDecimals = props.decimals ?? 18 + + const makeJsx = (value: bigint, decimals = initialDecimals) => ( <ChakraProvider value={system}> <BigNumberInput - decimals={18} + decimals={decimals} value={value} onChange={onChange} renderInput={({ @@ -165,7 +167,7 @@ describe('BigNumberInput with renderInput (NumericFormat)', () => { return { input: container.querySelector('input') as HTMLInputElement, onChange, - rerender: (newValue: bigint) => rerender(makeJsx(newValue)), + rerender: (newValue: bigint, decimals?: number) => rerender(makeJsx(newValue, decimals)), } } @@ -204,4 +206,17 @@ describe('BigNumberInput with renderInput (NumericFormat)', () => { const { input } = renderWithNumericFormat({}, parseUnits('1000', 18)) expect(input.value).toBe('1,000') }) + + it('reformats value when decimals change (token switch)', async () => { + const value = parseUnits('1000', 18) + const { input, rerender } = renderWithNumericFormat({}, value) + await waitFor(() => { + expect(input.value).toBe('1,000') + }) + // Same bigint but with 6 decimals produces a completely different display value + rerender(value, 6) + await waitFor(() => { + expect(input.value).toBe('1,000,000,000,000,000') + }) + }) }) diff --git a/src/components/sharedComponents/BigNumberInput.tsx b/src/components/sharedComponents/BigNumberInput.tsx index 550fc94f..24a45438 100644 --- a/src/components/sharedComponents/BigNumberInput.tsx +++ b/src/components/sharedComponents/BigNumberInput.tsx @@ -120,7 +120,7 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ if (value === '') { prevValueRef.current = BigInt(0) - setDisplayValue('') + if (renderInput) setDisplayValue('') setHasError(false) onChange(BigInt(0)) return @@ -164,7 +164,7 @@ export const BigNumberInput: FC<BigNumberInputProps> = ({ // Set prevValueRef before onChange so the render-time sync doesn't override the user's input. prevValueRef.current = newValue - setDisplayValue(value) + if (renderInput) setDisplayValue(value) onChange(newValue) } From 0ff495be3af073e46b2953d1ecf5b692c1c927cf Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Fri, 10 Apr 2026 09:26:53 -0300 Subject: [PATCH 069/115] fix: destructure decimal part in TokenAmountField isAllowed validator The isAllowed callback was destructuring index 0 from split('.'), which is the integer part, not the decimal part. This caused the validation to compare token decimals against the integer digit count instead of the actual decimal digit count. --- src/components/sharedComponents/TokenInput/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index 85d8a409..f6171e17 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -228,7 +228,7 @@ function TokenAmountField({ const { onChange, inputRef, ...restProps } = renderInputProps const isAllowed = ({ value }: NumberFormatValues) => { - const [inputDecimals] = value.toString().split('.') + const [, inputDecimals] = value.toString().split('.') if (!inputDecimals) { return true From c3c99a568c84f8bc8b538cfdf7dd3d14c0b070d9 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Fri, 10 Apr 2026 10:53:32 -0300 Subject: [PATCH 070/115] fix: use error toast type in watchSignature catch block Closes #453 --- src/providers/TransactionNotificationProvider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/providers/TransactionNotificationProvider.tsx b/src/providers/TransactionNotificationProvider.tsx index debaa4b5..66c69ac4 100644 --- a/src/providers/TransactionNotificationProvider.tsx +++ b/src/providers/TransactionNotificationProvider.tsx @@ -89,7 +89,7 @@ export const TransactionNotificationProvider: FC<PropsWithChildren> = ({ childre notificationToaster.create({ description: message, - type: 'success', + type: 'error', id: toastId, }) } From 1a86f587b473b1b9e9c6b84e594032df3758ebba Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Fri, 10 Apr 2026 11:23:22 -0300 Subject: [PATCH 071/115] test: use top-level import in SignButton tests Replace per-test dynamic imports with a standard static import, matching the pattern used in TransactionButton and SwitchNetwork tests. Closes #455 --- .../sharedComponents/SignButton.test.tsx | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/components/sharedComponents/SignButton.test.tsx b/src/components/sharedComponents/SignButton.test.tsx index f4e07cae..2c715192 100644 --- a/src/components/sharedComponents/SignButton.test.tsx +++ b/src/components/sharedComponents/SignButton.test.tsx @@ -3,6 +3,7 @@ import { render, screen } from '@testing-library/react' import type { ReactNode } from 'react' import { createElement } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' +import SignButton from './SignButton' const mockSwitchChain = vi.fn() const mockSignMessageAsync = vi.fn() @@ -54,7 +55,7 @@ describe('SignButton', () => { vi.clearAllMocks() }) - it('renders connect button when wallet needs connect', async () => { + it('renders connect button when wallet needs connect', () => { mockedUseWalletStatus.mockReturnValue({ isReady: false, needsConnect: true, @@ -64,15 +65,13 @@ describe('SignButton', () => { switchChain: mockSwitchChain, }) - const { default: SignButton } = await import('./SignButton') - renderWithChakra(<SignButton message="Hello" />) expect(screen.getByTestId('connect-wallet-button')).toBeInTheDocument() expect(screen.queryByText('Sign Message')).toBeNull() }) - it('renders custom fallback when provided and wallet needs connect', async () => { + it('renders custom fallback when provided and wallet needs connect', () => { mockedUseWalletStatus.mockReturnValue({ isReady: false, needsConnect: true, @@ -82,8 +81,6 @@ describe('SignButton', () => { switchChain: mockSwitchChain, }) - const { default: SignButton } = await import('./SignButton') - renderWithChakra( <SignButton message="Hello" @@ -95,7 +92,7 @@ describe('SignButton', () => { expect(screen.queryByText('Sign Message')).toBeNull() }) - it('renders switch chain button when wallet needs chain switch', async () => { + it('renders switch chain button when wallet needs chain switch', () => { mockedUseWalletStatus.mockReturnValue({ isReady: false, needsConnect: false, @@ -107,8 +104,6 @@ describe('SignButton', () => { switchChain: mockSwitchChain, }) - const { default: SignButton } = await import('./SignButton') - renderWithChakra(<SignButton message="Hello" />) expect(screen.getByText(/Switch to/)).toBeInTheDocument() @@ -116,7 +111,7 @@ describe('SignButton', () => { expect(screen.queryByText('Sign Message')).toBeNull() }) - it('renders sign button when wallet is ready', async () => { + it('renders sign button when wallet is ready', () => { mockedUseWalletStatus.mockReturnValue({ isReady: true, needsConnect: false, @@ -126,8 +121,6 @@ describe('SignButton', () => { switchChain: mockSwitchChain, }) - const { default: SignButton } = await import('./SignButton') - renderWithChakra(<SignButton message="Hello" />) expect(screen.getByText('Sign Message')).toBeInTheDocument() From 9e1d4e22e1a07fb9a48f59b8d8c09d4154b7290c Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Fri, 10 Apr 2026 11:35:24 -0300 Subject: [PATCH 072/115] docs: sync architecture.md with current codebase Update five stale references: - TypeScript 5 -> 6 - Vite 6 + SWC -> Vite 8 + React plugin - Remove nonexistent withWalletStatusVerifier HOC references - Token list sources: remove 1INCH (only CoinGecko exists) - staleTime/gcTime: Infinity -> 1 hour Closes #452 --- architecture.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/architecture.md b/architecture.md index 90c6da52..1f4c23a3 100644 --- a/architecture.md +++ b/architecture.md @@ -10,13 +10,13 @@ | Category | Technology | Notes | |----------|-----------|-------| | Framework | React 19 | StrictMode enabled | -| Language | TypeScript 5 (strict, ESM) | Path aliases: `@/src/*`, `@packageJSON` | +| Language | TypeScript 6 (strict, ESM) | Path aliases: `@/src/*`, `@packageJSON` | | Blockchain | wagmi 2 + viem 2 | Type-safe Ethereum interaction | | Data fetching | TanStack Query 5, graphql-request | Suspense-based contract reads | | Routing | TanStack Router | File-based with auto code-splitting | | UI | Chakra UI 3 + Emotion | Semantic tokens, light/dark mode | | Testing | Vitest + Testing Library | jsdom environment, colocated test files | -| Build | Vite 6 + SWC | Manual chunk splitting for vendors | +| Build | Vite 8 + React plugin | Manual chunk splitting for vendors | | Linting | Biome | Format + lint in one tool | | Env validation | Zod + @t3-oss/env-core | All vars `PUBLIC_` prefixed | @@ -65,7 +65,6 @@ ComponentName/ **HOC patterns:** - `withSuspenseAndRetry(Component)` -- primary pattern for async components; wraps in `QueryErrorResetBoundary` + `ErrorBoundary` + `Suspense` for automatic retry on query failures - `withSuspense(Component)` -- simpler variant without retry -- `withWalletStatusVerifier(Component)` -- gates a component behind wallet connection + chain sync **Contract hooks** (auto-generated by wagmi-cli from ABIs): - `useRead{Contract}{Function}` -- standard read @@ -92,7 +91,7 @@ Four external data paths. Components never call external services directly -- th 3. **Subgraph queries**: `graphql-request` with typed document nodes from `@graphql-codegen` -> TanStack Query cache. Queries live in `src/subgraphs/queries/`, generated types in `src/subgraphs/gql/`. -4. **Token data**: LI.FI SDK (`getChains` -> `getTokens` -> `getTokenBalances`) via `useTokens` hook. Token lists fetched in parallel via `useTokenLists` (Suspense-based, sources: 1INCH, CoinGecko, optional Uniswap default list). Tokens deduplicated by `chainId + address`, native tokens auto-injected per chain. +4. **Token data**: LI.FI SDK (`getChains` -> `getTokens` -> `getTokenBalances`) via `useTokens` hook. Token lists fetched in parallel via `useTokenLists` (Suspense-based, source: CoinGecko, optional Uniswap default list). Tokens deduplicated by `chainId + address`, native tokens auto-injected per chain. ## Routes @@ -117,7 +116,7 @@ Token list URLs ───> fetch + Zod validate ───> Tan Caching strategy: - All async state lives in TanStack Query. Components do not hold async data in local state. -- Token lists: `staleTime: Infinity`, `gcTime: Infinity` (fetched once per session). +- Token lists: `staleTime: 1 hour`, `gcTime: 1 hour`. - Token balances: refreshed every ~32s (`BALANCE_EXPIRATION_TIME`). - Contract reads: Suspense-based -- component suspends until data arrives, then cached normally. @@ -223,7 +222,7 @@ When adding a new provider: place it inside the outermost provider it depends on **Web3 connection state** (`src/hooks/useWeb3Status.tsx`): - `useWeb3Status()` -- returns `{ readOnlyClient, appChainId, address, isWalletConnected, isWalletSynced, switchChain, disconnect, ... }` -- `useWeb3StatusConnected()` -- same but throws if wallet is not connected; use inside components that are already gated by `withWalletStatusVerifier` +- `useWeb3StatusConnected()` -- same but throws if wallet is not connected; callers must ensure the wallet is connected before rendering **Token hooks**: - `useTokens()` -- token list + LI.FI prices + account balances, sorted by balance value @@ -264,6 +263,6 @@ To add a new contract: save the ABI, add it to the contracts array, run `pnpm wa 2. Connected but `walletChainId !== appChainId` -> "Switch to [Network]" button 3. Connected + synced -> renders children -**`withWalletStatusVerifier(Component)`** HOC -- wraps the component with the above logic. Already applied to `TransactionButton` and `SignButton` -- do not double-wrap. +`TransactionButton` and `SignButton` use the `useWalletStatus()` hook directly for inline wallet state checks rather than wrapping with the `WalletStatusVerifier` component. Sync check: `isWalletSynced = isWalletConnected && walletChainId === appChainId`. From cc578ef5421890f4d89a3f31aea3bc98b9038ec5 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Fri, 10 Apr 2026 11:43:37 -0300 Subject: [PATCH 073/115] fix: type WalletStatusVerifier children as ReactNode instead of ReactElement Closes #454 --- .../demos/TransactionButton/index.tsx | 27 +++++++++---------- .../sharedComponents/WalletStatusVerifier.tsx | 4 +-- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx index c8233417..a8733bb2 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/index.tsx @@ -18,21 +18,18 @@ const TransactionButton = () => { return ( <WalletStatusVerifier chainId={sepolia.id}> - {/* biome-ignore lint/complexity/noUselessFragments: WalletStatusVerifier expects a single ReactElement child */} - <> - <OptionsDropdown items={items} /> - <Flex - alignItems="center" - display="flex" - flexDirection="column" - justifyContent="center" - paddingTop={{ base: 2, lg: 6 }} - width="100%" - > - {currentTokenInput === 'erc20' && <ERC20ApproveAndTransferButton />} - {currentTokenInput === 'native' && <NativeToken />} - </Flex> - </> + <OptionsDropdown items={items} /> + <Flex + alignItems="center" + display="flex" + flexDirection="column" + justifyContent="center" + paddingTop={{ base: 2, lg: 6 }} + width="100%" + > + {currentTokenInput === 'erc20' && <ERC20ApproveAndTransferButton />} + {currentTokenInput === 'native' && <NativeToken />} + </Flex> </WalletStatusVerifier> ) } diff --git a/src/components/sharedComponents/WalletStatusVerifier.tsx b/src/components/sharedComponents/WalletStatusVerifier.tsx index 9d39d13b..4c883563 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.tsx @@ -1,4 +1,4 @@ -import { createContext, type FC, type ReactElement, useContext } from 'react' +import { createContext, type FC, type ReactElement, type ReactNode, useContext } from 'react' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' import { useWeb3Status, type Web3Status } from '@/src/hooks/useWeb3Status' @@ -27,7 +27,7 @@ export const useWeb3StatusConnected = () => { interface WalletStatusVerifierProps { chainId?: ChainsIds - children?: ReactElement + children?: ReactNode fallback?: ReactElement switchChainLabel?: string } From 23a5e8adda1edcbb66ca31d4064c64768127e6ba Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Fri, 10 Apr 2026 12:21:07 -0300 Subject: [PATCH 074/115] docs: fix useWeb3StatusConnected description in architecture.md Move from Web3 connection state section to Wallet Access Control section and correct the file path and throw behavior to match the actual implementation in WalletStatusVerifier.tsx. --- architecture.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/architecture.md b/architecture.md index 1f4c23a3..a3c26022 100644 --- a/architecture.md +++ b/architecture.md @@ -222,7 +222,6 @@ When adding a new provider: place it inside the outermost provider it depends on **Web3 connection state** (`src/hooks/useWeb3Status.tsx`): - `useWeb3Status()` -- returns `{ readOnlyClient, appChainId, address, isWalletConnected, isWalletSynced, switchChain, disconnect, ... }` -- `useWeb3StatusConnected()` -- same but throws if wallet is not connected; callers must ensure the wallet is connected before rendering **Token hooks**: - `useTokens()` -- token list + LI.FI prices + account balances, sorted by balance value @@ -263,6 +262,8 @@ To add a new contract: save the ABI, add it to the contracts array, run `pnpm wa 2. Connected but `walletChainId !== appChainId` -> "Switch to [Network]" button 3. Connected + synced -> renders children +`useWeb3StatusConnected()` (same file) -- companion hook that provides typed connected-wallet status (`address`, `readOnlyClient`, etc.) inside the `<WalletStatusVerifier>` tree. Throws a `DeveloperError` if called outside it. + `TransactionButton` and `SignButton` use the `useWalletStatus()` hook directly for inline wallet state checks rather than wrapping with the `WalletStatusVerifier` component. Sync check: `isWalletSynced = isWalletConnected && walletChainId === appChainId`. From 891f9927ad4365f3e33470f8efc47bd467957140 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Fri, 10 Apr 2026 13:48:17 -0300 Subject: [PATCH 075/115] docs: correct chain comparison reference in WalletStatusVerifier docs The fallback cascade step 2 referenced appChainId, but useWalletStatus compares against targetChainId which accounts for the optional chainId prop. Updated wording to reflect the actual behavior. --- architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/architecture.md b/architecture.md index a3c26022..d7d81948 100644 --- a/architecture.md +++ b/architecture.md @@ -259,7 +259,7 @@ To add a new contract: save the ABI, add it to the contracts array, run `pnpm wa **`WalletStatusVerifier`** component (`src/components/sharedComponents/WalletStatusVerifier.tsx`) -- renders a fallback cascade based on wallet state: 1. Not connected -> `ConnectWalletButton` -2. Connected but `walletChainId !== appChainId` -> "Switch to [Network]" button +2. Connected but `walletChainId !== targetChainId` (where `targetChainId` is the optional `chainId` prop if provided, otherwise `appChainId`) -> "Switch to [Network]" button 3. Connected + synced -> renders children `useWeb3StatusConnected()` (same file) -- companion hook that provides typed connected-wallet status (`address`, `readOnlyClient`, etc.) inside the `<WalletStatusVerifier>` tree. Throws a `DeveloperError` if called outside it. From f31ea126c68b2b8e9cdf577e4735c06cf8512515 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 13:31:11 -0300 Subject: [PATCH 076/115] feat: add Sepolia to TokenInput demo network selector Appends Sepolia as a 5th entry in the demo's networks array, gated on `includeTestnets` so it only appears when `PUBLIC_INCLUDE_TESTNETS=true`. Uses `NetworkSepolia` from `@web3icons/react` (the icon exists; earlier issue note claiming it was absent was incorrect). Also guards the LI.FI token price query against an empty `chainsToFetch` array, which caused 400s when a testnet chain (unsupported by LI.FI) was selected. Closes #461 --- .../home/Examples/demos/TokenInput/index.tsx | 19 ++++++++++++++++++- src/hooks/useTokens.ts | 2 +- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx index 38a3eba9..b14987be 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx @@ -4,14 +4,16 @@ import { NetworkEthereum, NetworkOptimism, NetworkPolygon, + NetworkSepolia, } from '@web3icons/react' import { useState } from 'react' -import { arbitrum, mainnet, optimism, polygon } from 'viem/chains' +import { arbitrum, mainnet, optimism, polygon, sepolia } from 'viem/chains' import OptionsDropdown from '@/src/components/pageComponents/home/Examples/demos/OptionsDropdown' import Icon from '@/src/components/pageComponents/home/Examples/demos/TokenInput/Icon' import BaseTokenInput from '@/src/components/sharedComponents/TokenInput' import { useTokenInput } from '@/src/components/sharedComponents/TokenInput/useTokenInput' import type { Networks } from '@/src/components/sharedComponents/TokenSelect/types' +import { includeTestnets } from '@/src/constants/common' import { useTokenLists } from '@/src/hooks/useTokenLists' import { useTokenSearch } from '@/src/hooks/useTokenSearch' import { useWeb3Status } from '@/src/hooks/useWeb3Status' @@ -105,6 +107,21 @@ const TokenInputMode = withSuspenseAndRetry( label: polygon.name, onClick: () => setCurrentNetworkId(polygon.id), }, + ...(includeTestnets + ? [ + { + icon: ( + <NetworkSepolia + size={24} + variant="background" + /> + ), + id: sepolia.id, + label: sepolia.name, + onClick: () => setCurrentNetworkId(sepolia.id), + }, + ] + : []), ] return ( diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index d829a12d..8d29d4b4 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -104,7 +104,7 @@ export const useTokens = ( staleTime: BALANCE_EXPIRATION_TIME, refetchInterval: BALANCE_EXPIRATION_TIME, gcTime: Number.POSITIVE_INFINITY, - enabled: canFetchBalance && !!chains, + enabled: canFetchBalance && !!chains && chainsToFetch.length > 0, }) const { data: tokensBalances, isLoading: isLoadingBalances } = useQuery({ From c7c43b14df8cf4ea64c58c156e5fb3d9e93dd645 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 15:38:07 -0300 Subject: [PATCH 077/115] feat(token-select): add Sepolia support with AAVE faucet tokens and graceful fallback display - Add Sepolia to the TokenInput demo network selector, gated by PUBLIC_INCLUDE_TESTNETS - Bundle AAVE v3 Sepolia faucet tokens (DAI, LINK, USDC, WBTC, WETH, USDT, AAVE, EURS, GHO) with Trust Wallet CDN icons, wired through the existing useTokenLists pipeline - Fix HTTP 400 from LI.FI SDK when Sepolia is selected by guarding the price query with chainsToFetch.length > 0 - Replace indefinite balance/USD skeletons on LI.FI-unsupported chains with on-chain fallback balances (wagmi useBalance for native, useErc20Balance for ERC-20) and N/A for the USD value - Show N/A in the TokenInput estimated USD field when no price data is available Closes #461 --- .../sharedComponents/TokenInput/index.tsx | 12 +- .../TokenSelect/List/TokenBalance.test.tsx | 126 +++++++++++++++++ .../TokenSelect/List/TokenBalance.tsx | 127 +++++++++++------- src/constants/aaveSepoliaFaucet.ts | 88 ++++++++++++ src/constants/tokenLists.ts | 24 ++++ src/hooks/useTokenLists.test.ts | 1 + src/hooks/useTokenLists.ts | 24 +++- 7 files changed, 349 insertions(+), 53 deletions(-) create mode 100644 src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx create mode 100644 src/constants/aaveSepoliaFaucet.ts diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index a3e9bac6..5555dd80 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -92,6 +92,14 @@ const TokenInput: FC<Props> = ({ () => (balance && selectedToken ? balance : BigInt(0)), [balance, selectedToken], ) + + const estimatedUSDValue = useMemo(() => { + const priceUSD = selectedToken?.extensions?.priceUSD + if (!priceUSD || !amount) return null + const tokenAmount = Number.parseFloat(formatUnits(amount, selectedToken?.decimals ?? 0)) + return (Number.parseFloat(priceUSD as string) * tokenAmount).toFixed(2) + }, [selectedToken, amount]) + const selectIconSize = 24 const decimals = selectedToken ? selectedToken.decimals : 2 @@ -167,7 +175,9 @@ const TokenInput: FC<Props> = ({ )} </TopRow> <BottomRow> - <EstimatedUSDValue>~$0.00</EstimatedUSDValue> + <EstimatedUSDValue> + {estimatedUSDValue !== null ? `~$${estimatedUSDValue}` : 'N/A'} + </EstimatedUSDValue> <Balance> <BalanceValue> {balanceError && 'Error...'} diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx new file mode 100644 index 00000000..a3b29b03 --- /dev/null +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx @@ -0,0 +1,126 @@ +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { screen } from '@testing-library/react' +import { describe, expect, it, vi } from 'vitest' +import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' +import TokenBalance from './TokenBalance' + +const mockAddress = '0x1234567890123456789012345678901234567890' as const +const nativeAddress = '0x0000000000000000000000000000000000000000' + +const erc20Token = { + name: 'USD Coin', + symbol: 'USDC', + address: '0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8' as `0x${string}`, + decimals: 6, + chainId: 11155111, +} + +const nativeToken = { + name: 'Sepolia Ether', + symbol: 'ETH', + address: nativeAddress as `0x${string}`, + decimals: 18, + chainId: 11155111, +} + +const tokenWithExtensions = { + ...erc20Token, + extensions: { + balance: 5_000_000n, + priceUSD: '1.00', + }, +} + +vi.mock('@/src/hooks/useWeb3Status', () => ({ + useWeb3Status: vi.fn(() => + createMockWeb3Status({ address: mockAddress, isWalletConnected: true }), + ), +})) + +vi.mock('@/src/hooks/useErc20Balance', () => ({ + useErc20Balance: vi.fn(() => ({ + balance: 0n, + balanceError: null, + isLoadingBalance: false, + })), +})) + +vi.mock('wagmi', () => ({ + useBalance: vi.fn(() => ({ data: undefined, isLoading: false })), +})) + +vi.mock('@/src/env', () => ({ + env: { + PUBLIC_NATIVE_TOKEN_ADDRESS: '0x0000000000000000000000000000000000000000', + PUBLIC_APP_NAME: 'test', + }, +})) + +function renderTokenBalance(props: { + isLoading?: boolean + token: typeof erc20Token | typeof nativeToken | typeof tokenWithExtensions +}) { + const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } }) + return renderWithProviders( + <QueryClientProvider client={queryClient}> + <TokenBalance {...props} /> + </QueryClientProvider>, + ) +} + +describe('TokenBalance', () => { + it('shows skeleton while isLoading is true', () => { + renderTokenBalance({ isLoading: true, token: erc20Token }) + // Suspense fallback (BalanceLoading skeletons) renders — nothing from the component itself + expect(screen.queryByText('N/A')).toBeNull() + expect(screen.queryByText('$')).toBeNull() + }) + + it('renders LI.FI balance and USD value when extensions are present', () => { + renderTokenBalance({ isLoading: false, token: tokenWithExtensions }) + // balance: 5_000_000 / 10^6 = 5 (viem trims trailing zeros) + expect(screen.getByText('5')).toBeDefined() + expect(screen.getByText('$ 5.00')).toBeDefined() + }) + + it('shows balance skeleton and N/A while on-chain fetch is in flight', async () => { + const { useErc20Balance } = await import('@/src/hooks/useErc20Balance') + vi.mocked(useErc20Balance).mockReturnValue({ + balance: undefined, + balanceError: null, + isLoadingBalance: true, + }) + + renderTokenBalance({ isLoading: false, token: erc20Token }) + // N/A is visible immediately; balance skeleton is rendered (no balance text) + expect(screen.getByText('N/A')).toBeDefined() + expect(screen.queryByText('0')).toBeNull() + }) + + it('renders on-chain ERC-20 balance and N/A when no extensions', async () => { + const { useErc20Balance } = await import('@/src/hooks/useErc20Balance') + vi.mocked(useErc20Balance).mockReturnValue({ + balance: 2_500_000n, + balanceError: null, + isLoadingBalance: false, + }) + + renderTokenBalance({ isLoading: false, token: erc20Token }) + // balance: 2_500_000 / 10^6 = 2.5 + expect(screen.getByText('2.5')).toBeDefined() + expect(screen.getByText('N/A')).toBeDefined() + }) + + it('renders on-chain native balance and N/A when no extensions', async () => { + const { useBalance } = await import('wagmi') + vi.mocked(useBalance).mockReturnValue({ + data: { value: 1_000_000_000_000_000_000n, decimals: 18, formatted: '1.0', symbol: 'ETH' }, + isLoading: false, + } as ReturnType<typeof useBalance>) + + renderTokenBalance({ isLoading: false, token: nativeToken }) + // balance: 1e18 / 10^18 = 1 (viem trims trailing zeros) + expect(screen.getByText('1')).toBeDefined() + expect(screen.getByText('N/A')).toBeDefined() + }) +}) diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx index 4a0fec9e..8641bcc5 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx @@ -1,6 +1,10 @@ -import { Box, Flex } from '@chakra-ui/react' +import { Box, Flex, Skeleton } from '@chakra-ui/react' import { formatUnits } from 'viem' +import { useBalance } from 'wagmi' +import { useErc20Balance } from '@/src/hooks/useErc20Balance' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' +import { isNativeToken } from '@/src/utils/address' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' interface TokenBalanceProps { @@ -8,62 +12,95 @@ interface TokenBalanceProps { token: Token } +const balanceBoxProps = { + color: 'var(--row-token-balance-color)', + fontSize: '16px', + fontWeight: '400', + lineHeight: '1.2', + _groupHover: { color: 'var(--row-token-balance-color-hover, var(--row-token-balance-color)' }, +} as const + +const valueBoxProps = { + color: 'var(--row-token-value-color)', + fontSize: '12px', + fontWeight: '400', + lineHeight: '1.2', + _groupHover: { color: 'var(--row-token-value-color-hover, var(--row-token-value-color)' }, +} as const + +const flexProps = { + alignItems: 'flex-end', + display: 'flex', + flexDirection: 'column', + rowGap: 1, +} as const + /** - * Renders the token balance in the token list row. + * Renders the token balance and USD value in a token list row. * - * @param {object} props - The component props. - * @param {boolean} props.isLoading - Indicates if the token balance is currently being loaded. - * @param {Token} props.token - The token object containing the amount, decimals, and price in USD. + * When LI.FI price/balance data is available (`token.extensions`), it displays + * the enriched balance and computed USD value. On chains LI.FI does not support + * (e.g. Sepolia), it falls back to on-chain balance via wagmi and renders "N/A" + * for the USD value. * - * @throws {Promise} If the token balance is still loading or if the token does not have balance information. - * @returns {JSX.Element} The rendered token balance component. + * @param {object} props + * @param {boolean} props.isLoading - True while the LI.FI price/balance fetch is in flight. + * @param {Token} props.token - The token to display. * - * @example - * ```tsx - * <TokenBalance isLoading={false} token={token} /> - * ``` + * @throws {Promise} While loading (triggers Suspense skeleton). */ const TokenBalance = withSuspenseAndRetry<TokenBalanceProps>(({ isLoading, token }) => { - const tokenHasBalanceInfo = !!token.extensions + const { address } = useWeb3Status() + const isNative = isNativeToken(token.address) + const hasExtensions = !!token.extensions + + // Both hooks are called unconditionally; `enabled` flags prevent unnecessary fetches. + const { data: nativeBalanceData, isLoading: isLoadingNative } = useBalance({ + address, + chainId: token.chainId, + query: { enabled: !!address && isNative && !hasExtensions }, + }) - if (isLoading || !tokenHasBalanceInfo) { + const { balance: erc20Balance, isLoadingBalance: isLoadingErc20 } = useErc20Balance({ + address: !isNative && !hasExtensions ? address : undefined, + token: !isNative && !hasExtensions ? token : undefined, + }) + + if (isLoading) { throw Promise.reject() } - const balance = formatUnits((token.extensions?.balance ?? 0n) as bigint, token.decimals) - const value = ( - Number.parseFloat((token.extensions?.priceUSD ?? '0') as string) * Number.parseFloat(balance) - ).toFixed(2) + if (hasExtensions) { + const balance = formatUnits((token.extensions?.balance ?? 0n) as bigint, token.decimals) + const value = ( + Number.parseFloat((token.extensions?.priceUSD ?? '0') as string) * Number.parseFloat(balance) + ).toFixed(2) + + return ( + <Flex {...flexProps}> + <Box {...balanceBoxProps}>{balance}</Box> + <Box {...valueBoxProps}>$ {value}</Box> + </Flex> + ) + } + + // No LI.FI data — skeleton for balance while on-chain fetch is in flight, N/A immediately for value. + const isLoadingFallback = isNative ? isLoadingNative : isLoadingErc20 + const fallbackBalance = isNative + ? formatUnits(nativeBalanceData?.value ?? 0n, token.decimals) + : formatUnits(erc20Balance ?? 0n, token.decimals) return ( - <Flex - alignItems="flex-end" - display="flex" - flexDirection="column" - rowGap={1} - > - <Box - color="var(--row-token-balance-color)" - fontSize="16px" - fontWeight="400" - lineHeight="1.2" - _groupHover={{ - color: 'var(--row-token-balance-color-hover, var(--row-token-balance-color)', - }} - > - {balance} - </Box> - <Box - color="var(--row-token-value-color)" - fontSize="12px" - fontWeight="400" - lineHeight="1.2" - _groupHover={{ - color: 'var(--row-token-value-color-hover, var(--row-token-value-color)', - }} - > - $ {value} - </Box> + <Flex {...flexProps}> + {isLoadingFallback ? ( + <Skeleton + height="19px" + width="50px" + /> + ) : ( + <Box {...balanceBoxProps}>{fallbackBalance}</Box> + )} + <Box {...valueBoxProps}>N/A</Box> </Flex> ) }) diff --git a/src/constants/aaveSepoliaFaucet.ts b/src/constants/aaveSepoliaFaucet.ts new file mode 100644 index 00000000..d8357527 --- /dev/null +++ b/src/constants/aaveSepoliaFaucet.ts @@ -0,0 +1,88 @@ +import { getAddress } from 'viem' +import { sepolia } from 'viem/chains' +import type { TokenList } from '@/src/types/token' + +const TW = 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets' + +// Source: AAVE v3 Sepolia deployment — https://github.com/bgd-labs/aave-address-book/blob/main/src/AaveV3Sepolia.sol +// Addresses are the underlying ERC-20 assets (not aTokens). +// logoURIs point to Trust Wallet CDN using each token's mainnet checksummed address. +export const aaveSepoliaFaucetTokens: TokenList = { + name: 'AAVE Sepolia Faucet', + timestamp: '2024-01-01T00:00:00Z', + version: { major: 1, minor: 0, patch: 0 }, + tokens: [ + { + chainId: sepolia.id, + address: getAddress('0xFF34B3d4Aee8ddCd6F9AFFFB6Fe49bD371b8a357'), + name: 'Dai Stablecoin', + symbol: 'DAI', + decimals: 18, + logoURI: `${TW}/0x6B175474E89094C44Da98b954EedeAC495271d0F/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0xf8Fb3713D459D7C1018BD0A49D19b4C44290EBE5'), + name: 'Chainlink Token', + symbol: 'LINK', + decimals: 18, + logoURI: `${TW}/0x514910771AF9Ca656af840dff83E8264EcF986CA/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0x94a9D9AC8a22534E3FaCa9F4e7F2E2cf85d5E4C8'), + name: 'USD Coin', + symbol: 'USDC', + decimals: 6, + logoURI: `${TW}/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0x29f2D40B0605204364af54EC677bD022dA425d03'), + name: 'Wrapped Bitcoin', + symbol: 'WBTC', + decimals: 8, + logoURI: `${TW}/0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0xC558DBdd856501FCd9aaF1E62eae57A9F0629a3c'), + name: 'Wrapped Ether', + symbol: 'WETH', + decimals: 18, + logoURI: `${TW}/0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0'), + name: 'Tether USD', + symbol: 'USDT', + decimals: 6, + logoURI: `${TW}/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0x88541670E55cC00bEEFD87eB59EDd1b7C511AC9a'), + name: 'Aave Token', + symbol: 'AAVE', + decimals: 18, + logoURI: `${TW}/0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0x6d906e526a4e2Ca02097BA9d0caA3c382F52278E'), + name: 'Euro Stablecoin', + symbol: 'EURS', + decimals: 2, + logoURI: `${TW}/0xdB25f211AB05b1c97D595516F45794528a807ad8/logo.png`, + }, + { + chainId: sepolia.id, + address: getAddress('0xc4bF5CbDaBE595361438F8c6a187bDc330539c60'), + name: 'Gho Token', + symbol: 'GHO', + decimals: 18, + logoURI: `${TW}/0x40D16FC0246aD3160Ccc09B8D0D3A2cD28aE6C2f/logo.png`, + }, + ], +} diff --git a/src/constants/tokenLists.ts b/src/constants/tokenLists.ts index 12475c5b..4f08f945 100644 --- a/src/constants/tokenLists.ts +++ b/src/constants/tokenLists.ts @@ -1,3 +1,7 @@ +import { aaveSepoliaFaucetTokens } from '@/src/constants/aaveSepoliaFaucet' +import { includeTestnets } from '@/src/constants/common' +import type { TokenList } from '@/src/types/token' + /** * @dev Here you can add the list of tokens you want to use in the app * The list follow the standard from: https://tokenlists.org/ @@ -7,3 +11,23 @@ export const tokenLists = { COINGECKO: 'https://tokens.coingecko.com/uniswap/all.json', } as const + +export type BundledTokenList = { + key: string + list: TokenList + enabled: boolean +} + +/** + * @dev Bundled (offline) token lists included at build time. + * Add entries here to ship curated token sets without a network request. + * Each entry is gated by an `enabled` flag so testnet lists stay out of + * production builds when PUBLIC_INCLUDE_TESTNETS is false. + */ +export const bundledTokenLists: BundledTokenList[] = [ + { + key: 'aave-sepolia-faucet', + list: aaveSepoliaFaucetTokens, + enabled: includeTestnets, + }, +] diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index d76e996e..6763fcaf 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -28,6 +28,7 @@ vi.mock('@/src/env', () => ({ vi.mock('@/src/constants/tokenLists', () => ({ tokenLists: {}, + bundledTokenLists: [], })) vi.mock('@tanstack/react-query', async (importActual) => { diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 57ddc697..700347b0 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -7,7 +7,7 @@ import defaultTokens from '@uniswap/default-token-list' import { useMemo } from 'react' import * as chains from 'viem/chains' -import { tokenLists } from '@/src/constants/tokenLists' +import { bundledTokenLists, tokenLists } from '@/src/constants/tokenLists' import { env } from '@/src/env' import { type Token, type TokenList, tokenSchema } from '@/src/types/token' import { logger } from '@/src/utils/logger' @@ -58,13 +58,23 @@ export const useTokenLists = (): TokensMap => { return env.PUBLIC_USE_DEFAULT_TOKENS ? ['default', ...urls] : urls }, []) + const enabledBundledLists = bundledTokenLists.filter((b) => b.enabled) + return useSuspenseQueries({ - queries: tokenListUrls.map<UseSuspenseQueryOptions<TokenList>>((url) => ({ - queryKey: ['tokens-list', url], - queryFn: () => fetchTokenList(url), - staleTime: 60 * 60 * 1000, - gcTime: 60 * 60 * 1000, - })), + queries: [ + ...tokenListUrls.map<UseSuspenseQueryOptions<TokenList>>((url) => ({ + queryKey: ['tokens-list', url], + queryFn: () => fetchTokenList(url), + staleTime: 60 * 60 * 1000, + gcTime: 60 * 60 * 1000, + })), + ...enabledBundledLists.map<UseSuspenseQueryOptions<TokenList>>((b) => ({ + queryKey: ['tokens-list', b.key], + queryFn: () => Promise.resolve(b.list), + staleTime: Number.POSITIVE_INFINITY, + gcTime: Number.POSITIVE_INFINITY, + })), + ], combine: combineTokenLists, }) } From c5d24f70b6efca913f323b816d681599991cab7d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 17:24:23 -0300 Subject: [PATCH 078/115] fix(token-select): address code review findings for Sepolia support - close missing ) in CSS var() fallback in TokenBalance const blocks - extract BalanceLoading to shared file; Row.tsx imports from it - harmonize fallback-path loading state to render two skeletons (matching the Suspense fallback) instead of one skeleton + immediate N/A - guard tokensBalances query on chainsToFetch.length > 0 to match the prices query, making the cascade explicit - pin Trust Wallet CDN URL to commit SHA instead of master - update aaveSepoliaFaucet.ts timestamp to 2026-04-20 - extract N/A display label to NO_PRICE_DATA_LABEL constant in common.ts - fix misleading test comment; replace per-test dynamic imports with static imports and a beforeEach that resets mocks between tests - add tests for ERC-20 error, native error, and disconnected wallet states - remove em-dashes from new comments --- .../sharedComponents/TokenInput/index.tsx | 3 +- .../TokenSelect/List/BalanceLoading.tsx | 26 ++++++ .../sharedComponents/TokenSelect/List/Row.tsx | 22 +---- .../TokenSelect/List/TokenBalance.test.tsx | 88 ++++++++++++++----- .../TokenSelect/List/TokenBalance.tsx | 25 +++--- src/constants/aaveSepoliaFaucet.ts | 8 +- src/constants/common.ts | 3 + src/hooks/useTokens.ts | 2 +- 8 files changed, 116 insertions(+), 61 deletions(-) create mode 100644 src/components/sharedComponents/TokenSelect/List/BalanceLoading.tsx diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index 5555dd80..f2b17018 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -27,6 +27,7 @@ import type { UseTokenInputReturnType } from '@/src/components/sharedComponents/ import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import TokenSelect, { type TokenSelectProps } from '@/src/components/sharedComponents/TokenSelect' import Spinner from '@/src/components/sharedComponents/ui/Spinner' +import { NO_PRICE_DATA_LABEL } from '@/src/constants/common' import type { Token } from '@/src/types/token' import styles from './styles' @@ -176,7 +177,7 @@ const TokenInput: FC<Props> = ({ </TopRow> <BottomRow> <EstimatedUSDValue> - {estimatedUSDValue !== null ? `~$${estimatedUSDValue}` : 'N/A'} + {estimatedUSDValue !== null ? `~$${estimatedUSDValue}` : NO_PRICE_DATA_LABEL} </EstimatedUSDValue> <Balance> <BalanceValue> diff --git a/src/components/sharedComponents/TokenSelect/List/BalanceLoading.tsx b/src/components/sharedComponents/TokenSelect/List/BalanceLoading.tsx new file mode 100644 index 00000000..86688e92 --- /dev/null +++ b/src/components/sharedComponents/TokenSelect/List/BalanceLoading.tsx @@ -0,0 +1,26 @@ +import { Flex, type FlexProps, Skeleton } from '@chakra-ui/react' +import type { FC } from 'react' + +/** + * Skeleton placeholder for token balance and USD value, shown while data is loading. + */ +const BalanceLoading: FC<FlexProps> = ({ ...restProps }) => ( + <Flex + alignItems="flex-end" + display="flex" + flexDirection="column" + rowGap={1} + {...restProps} + > + <Skeleton + height="19px" + width="50px" + /> + <Skeleton + height="14px" + width="50px" + /> + </Flex> +) + +export default BalanceLoading diff --git a/src/components/sharedComponents/TokenSelect/List/Row.tsx b/src/components/sharedComponents/TokenSelect/List/Row.tsx index 5e981137..ba4aeef4 100644 --- a/src/components/sharedComponents/TokenSelect/List/Row.tsx +++ b/src/components/sharedComponents/TokenSelect/List/Row.tsx @@ -1,7 +1,8 @@ -import { Box, Flex, type FlexProps, Skeleton } from '@chakra-ui/react' +import { Box, Flex, type FlexProps } from '@chakra-ui/react' import type { FC } from 'react' import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import AddERC20TokenButton from '@/src/components/sharedComponents/TokenSelect/List/AddERC20TokenButton' +import BalanceLoading from '@/src/components/sharedComponents/TokenSelect/List/BalanceLoading' import TokenBalance from '@/src/components/sharedComponents/TokenSelect/List/TokenBalance' import type { Token } from '@/src/types/token' @@ -20,25 +21,6 @@ const Icon: FC<{ size: number } & FlexProps> = ({ size, children, ...restProps } </Flex> ) -const BalanceLoading: FC<FlexProps> = ({ ...restProps }) => ( - <Flex - alignItems="flex-end" - display="flex" - flexDirection="column" - rowGap={1} - {...restProps} - > - <Skeleton - height="19px" - width="50px" - /> - <Skeleton - height="14px" - width="50px" - /> - </Flex> -) - interface TokenSelectRowProps extends Omit<FlexProps, 'onClick'> { iconSize: number isLoadingBalances?: boolean diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx index a3b29b03..f29f2fe9 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx @@ -1,6 +1,9 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { screen } from '@testing-library/react' -import { describe, expect, it, vi } from 'vitest' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { useBalance } from 'wagmi' +import { useErc20Balance } from '@/src/hooks/useErc20Balance' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import TokenBalance from './TokenBalance' @@ -32,21 +35,15 @@ const tokenWithExtensions = { } vi.mock('@/src/hooks/useWeb3Status', () => ({ - useWeb3Status: vi.fn(() => - createMockWeb3Status({ address: mockAddress, isWalletConnected: true }), - ), + useWeb3Status: vi.fn(), })) vi.mock('@/src/hooks/useErc20Balance', () => ({ - useErc20Balance: vi.fn(() => ({ - balance: 0n, - balanceError: null, - isLoadingBalance: false, - })), + useErc20Balance: vi.fn(), })) vi.mock('wagmi', () => ({ - useBalance: vi.fn(() => ({ data: undefined, isLoading: false })), + useBalance: vi.fn(), })) vi.mock('@/src/env', () => ({ @@ -69,9 +66,26 @@ function renderTokenBalance(props: { } describe('TokenBalance', () => { - it('shows skeleton while isLoading is true', () => { + beforeEach(() => { + vi.mocked(useWeb3Status).mockReturnValue( + createMockWeb3Status({ address: mockAddress, isWalletConnected: true }) as ReturnType< + typeof useWeb3Status + >, + ) + vi.mocked(useErc20Balance).mockReturnValue({ + balance: 0n, + balanceError: null, + isLoadingBalance: false, + }) + vi.mocked(useBalance).mockReturnValue({ + data: undefined, + isLoading: false, + } as ReturnType<typeof useBalance>) + }) + + it('suspends the component while isLoading is true, showing no balance or price text', () => { renderTokenBalance({ isLoading: true, token: erc20Token }) - // Suspense fallback (BalanceLoading skeletons) renders — nothing from the component itself + // DefaultFallback spinner renders; no component output visible. expect(screen.queryByText('N/A')).toBeNull() expect(screen.queryByText('$')).toBeNull() }) @@ -83,44 +97,72 @@ describe('TokenBalance', () => { expect(screen.getByText('$ 5.00')).toBeDefined() }) - it('shows balance skeleton and N/A while on-chain fetch is in flight', async () => { - const { useErc20Balance } = await import('@/src/hooks/useErc20Balance') + it('shows two loading skeletons while on-chain ERC-20 fetch is in flight', () => { vi.mocked(useErc20Balance).mockReturnValue({ balance: undefined, balanceError: null, isLoadingBalance: true, }) - renderTokenBalance({ isLoading: false, token: erc20Token }) - // N/A is visible immediately; balance skeleton is rendered (no balance text) - expect(screen.getByText('N/A')).toBeDefined() + // BalanceLoading renders two skeletons; no balance text or N/A visible yet. expect(screen.queryByText('0')).toBeNull() + expect(screen.queryByText('N/A')).toBeNull() }) - it('renders on-chain ERC-20 balance and N/A when no extensions', async () => { - const { useErc20Balance } = await import('@/src/hooks/useErc20Balance') + it('renders on-chain ERC-20 balance and N/A when no extensions', () => { vi.mocked(useErc20Balance).mockReturnValue({ balance: 2_500_000n, balanceError: null, isLoadingBalance: false, }) - renderTokenBalance({ isLoading: false, token: erc20Token }) // balance: 2_500_000 / 10^6 = 2.5 expect(screen.getByText('2.5')).toBeDefined() expect(screen.getByText('N/A')).toBeDefined() }) - it('renders on-chain native balance and N/A when no extensions', async () => { - const { useBalance } = await import('wagmi') + it('renders on-chain native balance and N/A when no extensions', () => { vi.mocked(useBalance).mockReturnValue({ data: { value: 1_000_000_000_000_000_000n, decimals: 18, formatted: '1.0', symbol: 'ETH' }, isLoading: false, } as ReturnType<typeof useBalance>) - renderTokenBalance({ isLoading: false, token: nativeToken }) // balance: 1e18 / 10^18 = 1 (viem trims trailing zeros) expect(screen.getByText('1')).toBeDefined() expect(screen.getByText('N/A')).toBeDefined() }) + + it('shows zero balance and N/A when ERC-20 fetch returns an error', () => { + vi.mocked(useErc20Balance).mockReturnValue({ + balance: undefined, + balanceError: new Error('fetch failed'), + isLoadingBalance: false, + }) + renderTokenBalance({ isLoading: false, token: erc20Token }) + // TODO: surface error state instead of silently rendering 0 + expect(screen.getByText('0')).toBeDefined() + expect(screen.getByText('N/A')).toBeDefined() + }) + + it('shows zero balance and N/A when native balance fetch returns an error', () => { + // useBalance returns undefined data on error; fallback resolves to 0n. + vi.mocked(useBalance).mockReturnValue({ + data: undefined, + isLoading: false, + } as ReturnType<typeof useBalance>) + renderTokenBalance({ isLoading: false, token: nativeToken }) + expect(screen.getByText('0')).toBeDefined() + expect(screen.getByText('N/A')).toBeDefined() + }) + + it('shows zero balance and N/A when no wallet is connected', () => { + vi.mocked(useWeb3Status).mockReturnValue( + createMockWeb3Status({ address: undefined, isWalletConnected: false }) as ReturnType< + typeof useWeb3Status + >, + ) + renderTokenBalance({ isLoading: false, token: erc20Token }) + expect(screen.getByText('0')).toBeDefined() + expect(screen.getByText('N/A')).toBeDefined() + }) }) diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx index 8641bcc5..7108186b 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx @@ -1,11 +1,13 @@ -import { Box, Flex, Skeleton } from '@chakra-ui/react' +import { Box, Flex } from '@chakra-ui/react' import { formatUnits } from 'viem' import { useBalance } from 'wagmi' +import { NO_PRICE_DATA_LABEL } from '@/src/constants/common' import { useErc20Balance } from '@/src/hooks/useErc20Balance' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import { isNativeToken } from '@/src/utils/address' import { withSuspenseAndRetry } from '@/src/utils/suspenseWrapper' +import BalanceLoading from './BalanceLoading' interface TokenBalanceProps { isLoading?: boolean @@ -17,7 +19,7 @@ const balanceBoxProps = { fontSize: '16px', fontWeight: '400', lineHeight: '1.2', - _groupHover: { color: 'var(--row-token-balance-color-hover, var(--row-token-balance-color)' }, + _groupHover: { color: 'var(--row-token-balance-color-hover, var(--row-token-balance-color))' }, } as const const valueBoxProps = { @@ -25,7 +27,7 @@ const valueBoxProps = { fontSize: '12px', fontWeight: '400', lineHeight: '1.2', - _groupHover: { color: 'var(--row-token-value-color-hover, var(--row-token-value-color)' }, + _groupHover: { color: 'var(--row-token-value-color-hover, var(--row-token-value-color))' }, } as const const flexProps = { @@ -84,23 +86,20 @@ const TokenBalance = withSuspenseAndRetry<TokenBalanceProps>(({ isLoading, token ) } - // No LI.FI data — skeleton for balance while on-chain fetch is in flight, N/A immediately for value. + // No LI.FI data - show two skeletons while on-chain fetch is in flight, then balance + N/A for USD. const isLoadingFallback = isNative ? isLoadingNative : isLoadingErc20 + if (isLoadingFallback) { + return <BalanceLoading /> + } + const fallbackBalance = isNative ? formatUnits(nativeBalanceData?.value ?? 0n, token.decimals) : formatUnits(erc20Balance ?? 0n, token.decimals) return ( <Flex {...flexProps}> - {isLoadingFallback ? ( - <Skeleton - height="19px" - width="50px" - /> - ) : ( - <Box {...balanceBoxProps}>{fallbackBalance}</Box> - )} - <Box {...valueBoxProps}>N/A</Box> + <Box {...balanceBoxProps}>{fallbackBalance}</Box> + <Box {...valueBoxProps}>{NO_PRICE_DATA_LABEL}</Box> </Flex> ) }) diff --git a/src/constants/aaveSepoliaFaucet.ts b/src/constants/aaveSepoliaFaucet.ts index d8357527..123d3a61 100644 --- a/src/constants/aaveSepoliaFaucet.ts +++ b/src/constants/aaveSepoliaFaucet.ts @@ -2,14 +2,16 @@ import { getAddress } from 'viem' import { sepolia } from 'viem/chains' import type { TokenList } from '@/src/types/token' -const TW = 'https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets' +// trustwallet/assets pinned 2026-04-18; bump SHA when icons need updating +const TW_SHA = 'a2c7ba6ca5cc1f16f1be80f642618396ed6df6be' +const TW = `https://raw.githubusercontent.com/trustwallet/assets/${TW_SHA}/blockchains/ethereum/assets` -// Source: AAVE v3 Sepolia deployment — https://github.com/bgd-labs/aave-address-book/blob/main/src/AaveV3Sepolia.sol +// Source: AAVE v3 Sepolia deployment - https://github.com/bgd-labs/aave-address-book/blob/main/src/AaveV3Sepolia.sol // Addresses are the underlying ERC-20 assets (not aTokens). // logoURIs point to Trust Wallet CDN using each token's mainnet checksummed address. export const aaveSepoliaFaucetTokens: TokenList = { name: 'AAVE Sepolia Faucet', - timestamp: '2024-01-01T00:00:00Z', + timestamp: '2026-04-20T00:00:00Z', version: { major: 1, minor: 0, patch: 0 }, tokens: [ { diff --git a/src/constants/common.ts b/src/constants/common.ts index a12b5a0e..991b8e66 100644 --- a/src/constants/common.ts +++ b/src/constants/common.ts @@ -9,3 +9,6 @@ export const isDev = import.meta.env.DEV * @source */ export const includeTestnets = env.PUBLIC_INCLUDE_TESTNETS + +/** Displayed when no price data is available (e.g. chains unsupported by LI.FI). */ +export const NO_PRICE_DATA_LABEL = 'N/A' diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 8d29d4b4..0260da58 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -121,7 +121,7 @@ export const useTokens = ( staleTime: BALANCE_EXPIRATION_TIME, refetchInterval: BALANCE_EXPIRATION_TIME, gcTime: Number.POSITIVE_INFINITY, - enabled: canFetchBalance && !!tokensPricesByChain, + enabled: canFetchBalance && !!tokensPricesByChain && chainsToFetch.length > 0, }) const cache = useMemo(() => { From 43250726b1d267fa4f0b9b5b8bbf0c1a6ba9a381 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 17:27:54 -0300 Subject: [PATCH 079/115] feat(token-input): default to multi token mode in demo Reorders the dropdown so multi token appears first, matching the new default. --- .../home/Examples/demos/TokenInput/index.test.tsx | 4 ++-- .../pageComponents/home/Examples/demos/TokenInput/index.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx index eb6848cf..4648295b 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx @@ -43,7 +43,7 @@ describe('TokenInput demo', () => { renderWithProviders( <QueryClientProvider client={queryClient}>{tokenInput.demo}</QueryClientProvider>, ) - // The mode dropdown should be visible - expect(screen.getByText('Single token')).toBeDefined() + // The mode dropdown should be visible with the default mode selected + expect(screen.getByText('Multi token')).toBeDefined() }) }) diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx index b14987be..99d44408 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.tsx @@ -144,10 +144,10 @@ const TokenInputMode = withSuspenseAndRetry( * token or multi token mode. */ const TokenInput = () => { - const [currentTokenInput, setCurrentTokenInput] = useState<Options>('single') + const [currentTokenInput, setCurrentTokenInput] = useState<Options>('multi') const dropdownItems = [ - { label: 'Single token', onClick: () => setCurrentTokenInput('single') }, { label: 'Multi token', onClick: () => setCurrentTokenInput('multi') }, + { label: 'Single token', onClick: () => setCurrentTokenInput('single') }, ] return ( From 44fb39740a7962c858317b1256d8f98c1d6ea90e Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 17:44:03 -0300 Subject: [PATCH 080/115] fix(token-select): fix CloseButton layout and children render position Replace absolute positioning on CloseButton with margin-based flow layout. Move children slot to render before Search instead of after List. --- src/components/sharedComponents/TokenInput/Components.tsx | 7 ++++--- src/components/sharedComponents/TokenSelect/index.tsx | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/sharedComponents/TokenInput/Components.tsx b/src/components/sharedComponents/TokenInput/Components.tsx index 51be2218..9842af7d 100644 --- a/src/components/sharedComponents/TokenInput/Components.tsx +++ b/src/components/sharedComponents/TokenInput/Components.tsx @@ -277,9 +277,10 @@ export const CloseButton: FC<ButtonProps> = ({ children, ...restProps }) => ( border="none" color="var(--title-color-default)" cursor="pointer" - position="absolute" - right={0} - top={10} + marginLeft={'auto'} + marginRight={4} + marginBottom={4} + marginTop={0} _active={{ opacity: 0.7, }} diff --git a/src/components/sharedComponents/TokenSelect/index.tsx b/src/components/sharedComponents/TokenSelect/index.tsx index 0ca21ff8..b2baead7 100644 --- a/src/components/sharedComponents/TokenSelect/index.tsx +++ b/src/components/sharedComponents/TokenSelect/index.tsx @@ -152,6 +152,7 @@ const TokenSelect = withSuspenseAndRetry<Props>( overflow="hidden" {...restProps} > + {children} <Search currentNetworkId={chainId} disabled={!tokensByChainId[chainId]?.length} @@ -176,7 +177,6 @@ const TokenSelect = withSuspenseAndRetry<Props>( showBalance={showBalance} tokenList={searchResult} /> - {children} </Flex> ) }, From 06104b669263c2d89e0133ff249a3469f024792a Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:02:12 -0300 Subject: [PATCH 081/115] fix(token-input): bind native balance client to selected token chain The native balance query used the hook's initial `token` argument for `usePublicClient`, so picking ETH on a different chain (e.g. Sepolia) kept fetching from the initial chain's client and reported 0. Switch the binding to `selectedToken?.chainId` so the client tracks the current selection, matching the ERC-20 branch. Covered by a new regression test for the chain-switch path. --- .../TokenInput/useTokenInput.test.ts | 88 +++++++++++++++++++ .../TokenInput/useTokenInput.tsx | 2 +- 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 src/components/sharedComponents/TokenInput/useTokenInput.test.ts diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.test.ts b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts new file mode 100644 index 00000000..de56c069 --- /dev/null +++ b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts @@ -0,0 +1,88 @@ +import { QueryClient, QueryClientProvider } from '@tanstack/react-query' +import { act, renderHook, waitFor } from '@testing-library/react' +import { createElement, type ReactNode } from 'react' +import { zeroAddress } from 'viem' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Token } from '@/src/types/token' +import { useTokenInput } from './useTokenInput' + +const walletAddress = '0x71C7656EC7ab88b098defB751B7401B5f6d8976F' as const + +const mockUsePublicClient = vi.fn() +const mockGetBalance = vi.fn() + +vi.mock('wagmi', () => ({ + useAccount: () => ({ address: walletAddress }), + usePublicClient: (args: { chainId?: number } = {}) => { + mockUsePublicClient(args) + return { getBalance: mockGetBalance } + }, +})) + +vi.mock('@/src/hooks/useErc20Balance', () => ({ + useErc20Balance: () => ({ balance: undefined, balanceError: null, isLoadingBalance: false }), +})) + +vi.mock('@/src/env', () => ({ + env: { PUBLIC_NATIVE_TOKEN_ADDRESS: zeroAddress.toLowerCase() }, +})) + +const mainnetUsdc: Token = { + address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', + chainId: 1, + decimals: 6, + name: 'USD Coin', + symbol: 'USDC', +} + +const sepoliaEth: Token = { + address: zeroAddress, + chainId: 11155111, + decimals: 18, + name: 'Sepolia Ether', + symbol: 'ETH', +} + +const wrapper = ({ children }: { children: ReactNode }) => + createElement( + QueryClientProvider, + { client: new QueryClient({ defaultOptions: { queries: { retry: false } } }) }, + children, + ) + +describe('useTokenInput', () => { + beforeEach(() => { + mockUsePublicClient.mockClear() + mockGetBalance.mockReset() + }) + + it('rebinds the native public client to the selected token chain when the user switches chains', async () => { + mockGetBalance.mockResolvedValue(42n) + + const { result } = renderHook(() => useTokenInput(mainnetUsdc), { wrapper }) + + act(() => { + result.current.setTokenSelected(sepoliaEth) + }) + + await waitFor(() => + expect(mockUsePublicClient).toHaveBeenLastCalledWith({ chainId: sepoliaEth.chainId }), + ) + await waitFor(() => expect(result.current.balance).toBe(42n)) + }) + + it('binds the native public client to the selected token chain when no initial token is given', async () => { + mockGetBalance.mockResolvedValue(7n) + + const { result } = renderHook(() => useTokenInput(), { wrapper }) + + act(() => { + result.current.setTokenSelected(sepoliaEth) + }) + + await waitFor(() => + expect(mockUsePublicClient).toHaveBeenLastCalledWith({ chainId: sepoliaEth.chainId }), + ) + await waitFor(() => expect(result.current.balance).toBe(7n)) + }) +}) diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index 7bc881a2..37d7e1ac 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -54,7 +54,7 @@ export function useTokenInput(token?: Token) { token: selectedToken, }) - const publicClient = usePublicClient({ chainId: token?.chainId }) + const publicClient = usePublicClient({ chainId: selectedToken?.chainId }) const isNative = selectedToken?.address ? isNativeToken(selectedToken.address) : false const { From 9baf5fa5f54b6979b2e6810eefc6aedb752348da Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:08:21 -0300 Subject: [PATCH 082/115] fix(token-select): map LI.FI native address to configured sentinel LI.FI returns native tokens at the zero address, but the app builds its local native token from `env.PUBLIC_NATIVE_TOKEN_ADDRESS`, which can be overridden (e.g. `0xEeee...eE`). The price/balance merge keyed on LI.FI's address, so any non-default sentinel caused every native-token lookup to miss and the list to render "0" for ETH on supported chains. Normalize LI.FI's zero-address entries back to the configured sentinel when building the lookup maps. No-op on the default config. --- src/hooks/useTokens.test.ts | 71 +++++++++++++++++++++++++++++++++++++ src/hooks/useTokens.ts | 18 +++++++--- 2 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 src/hooks/useTokens.test.ts diff --git a/src/hooks/useTokens.test.ts b/src/hooks/useTokens.test.ts new file mode 100644 index 00000000..85f1cb71 --- /dev/null +++ b/src/hooks/useTokens.test.ts @@ -0,0 +1,71 @@ +import type { TokenAmount, TokensResponse } from '@lifi/sdk' +import { zeroAddress } from 'viem' +import { describe, expect, it, vi } from 'vitest' +import type { Token, Tokens } from '@/src/types/token' +import { udpateTokensBalances } from './useTokens' + +// Mimic a setup that overrides PUBLIC_NATIVE_TOKEN_ADDRESS to the Aave-style sentinel +// (0xEeee...), which env.ts lowercases. The merge must bridge this back to LI.FI's +// zero-address convention. +const { LOCAL_NATIVE } = vi.hoisted(() => ({ + LOCAL_NATIVE: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee', +})) + +vi.mock('@/src/env', () => ({ + env: { PUBLIC_NATIVE_TOKEN_ADDRESS: LOCAL_NATIVE, PUBLIC_APP_NAME: 'test' }, +})) + +const usdcAddress = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48' + +const localTokens: Tokens = [ + { chainId: 1, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, + { chainId: 1, address: usdcAddress, name: 'USD Coin', symbol: 'USDC', decimals: 6 }, +] + +const makeLifiToken = (address: string, symbol: string, decimals: number, priceUSD: string) => ({ + chainId: 1, + address, + symbol, + name: symbol, + decimals, + priceUSD, +}) + +describe('udpateTokensBalances', () => { + it('merges LI.FI native balance onto a local native token that uses a non-zero sentinel', () => { + const prices: TokensResponse = { + tokens: { + 1: [ + makeLifiToken(zeroAddress, 'ETH', 18, '2300'), + makeLifiToken(usdcAddress, 'USDC', 6, '1'), + ], + }, + } + const balances: TokenAmount[] = [ + { ...makeLifiToken(zeroAddress, 'ETH', 18, '2300'), amount: 1_758_640_884_554_030_066n }, + { ...makeLifiToken(usdcAddress, 'USDC', 6, '1'), amount: 5_000_000n }, + ] + + const { tokens } = udpateTokensBalances(localTokens, [balances, prices]) + + const eth = tokens.find((t: Token) => t.address === LOCAL_NATIVE) + const usdc = tokens.find((t: Token) => t.address === usdcAddress) + + expect(eth?.extensions?.balance).toBe(1_758_640_884_554_030_066n) + expect(eth?.extensions?.priceUSD).toBe('2300') + expect(usdc?.extensions?.balance).toBe(5_000_000n) + expect(usdc?.extensions?.priceUSD).toBe('1') + }) + + it('falls back to zero balance when LI.FI has no data for a local token', () => { + const prices: TokensResponse = { tokens: { 1: [] } } + const balances: TokenAmount[] = [] + + const { tokens } = udpateTokensBalances(localTokens, [balances, prices]) + + for (const token of tokens) { + expect(token.extensions?.balance).toBe(0n) + expect(token.extensions?.priceUSD).toBe('0') + } + }) +}) diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 0260da58..bc7f2541 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -9,7 +9,7 @@ import { } from '@lifi/sdk' import { useQuery } from '@tanstack/react-query' import { useMemo } from 'react' -import { type Address, type Chain, formatUnits } from 'viem' +import { type Address, type Chain, formatUnits, zeroAddress } from 'viem' import { env } from '@/src/env' import { useTokenLists } from '@/src/hooks/useTokenLists' @@ -159,16 +159,26 @@ export const useTokens = ( * @param results - The results containing the balance tokens and prices. * @returns An object containing the updated tokens and tokens grouped by chain ID. */ -function udpateTokensBalances(tokens: Tokens, results: [Array<TokenAmount>, TokensResponse]) { +export function udpateTokensBalances( + tokens: Tokens, + results: [Array<TokenAmount>, TokensResponse], +) { const [balanceTokens, prices] = results + // LI.FI reports native tokens at the zero address. Rewrite it to the app's + // configured native sentinel (env.PUBLIC_NATIVE_TOKEN_ADDRESS) so the downstream + // lookup keyed on local token addresses matches. No-op when the app is left on + // the default zero-address sentinel. + const toLocalAddress = (address: string): string => + address.toLowerCase() === zeroAddress ? env.PUBLIC_NATIVE_TOKEN_ADDRESS : address + logger.time('extending tokens with balance info') const priceByChainAddress = Object.entries(prices.tokens).reduce( (acc, [chainId, tokens]) => { acc[chainId] = {} tokens.forEach((token) => { - acc[chainId][token.address] = token.priceUSD ?? '0' + acc[chainId][toLocalAddress(token.address)] = token.priceUSD ?? '0' }) return acc @@ -182,7 +192,7 @@ function udpateTokensBalances(tokens: Tokens, results: [Array<TokenAmount>, Toke acc[balanceToken.chainId] = {} } - acc[balanceToken.chainId][balanceToken.address] = balanceToken.amount ?? 0n + acc[balanceToken.chainId][toLocalAddress(balanceToken.address)] = balanceToken.amount ?? 0n return acc }, From 0bc38ab285fcbc22c6e8d602aba67a19d7d7e9dc Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:21:08 -0300 Subject: [PATCH 083/115] fix(token-input): drive USD "N/A" label from active chain, not token state The estimated USD value rendered "N/A" whenever no token was selected or the amount was zero, conflating "no price data for this chain" with "nothing to price yet". On mainnet that surfaced as a spurious N/A on the default view. Base the label on `chain.testnet` of the active chain (selected token's chain, then network selector, then wallet/app chain). Mainnet shows `~$0.00` until the user enters an amount; testnets keep `N/A` and the label flips immediately when the user toggles networks, without needing to pick a token first. --- .../sharedComponents/TokenInput/index.tsx | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index f2b17018..3b40b2b4 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -2,6 +2,7 @@ import { Dialog, type FlexProps, Portal } from '@chakra-ui/react' import { type FC, useMemo, useState } from 'react' import { type NumberFormatValues, NumericFormat } from 'react-number-format' import { formatUnits } from 'viem' +import * as viemChains from 'viem/chains' import { BigNumberInput, type BigNumberInputProps, @@ -28,6 +29,7 @@ import TokenLogo from '@/src/components/sharedComponents/TokenLogo' import TokenSelect, { type TokenSelectProps } from '@/src/components/sharedComponents/TokenSelect' import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { NO_PRICE_DATA_LABEL } from '@/src/constants/common' +import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token } from '@/src/types/token' import styles from './styles' @@ -94,12 +96,21 @@ const TokenInput: FC<Props> = ({ [balance, selectedToken], ) + const { appChainId, walletChainId } = useWeb3Status() + const activeChainId = selectedToken?.chainId ?? currentNetworkId ?? walletChainId ?? appChainId + const isTestnetChain = useMemo( + () => Object.values(viemChains).find((c) => c.id === activeChainId)?.testnet === true, + [activeChainId], + ) + const estimatedUSDValue = useMemo(() => { - const priceUSD = selectedToken?.extensions?.priceUSD - if (!priceUSD || !amount) return null - const tokenAmount = Number.parseFloat(formatUnits(amount, selectedToken?.decimals ?? 0)) - return (Number.parseFloat(priceUSD as string) * tokenAmount).toFixed(2) - }, [selectedToken, amount]) + if (isTestnetChain) return null + if (!selectedToken) return 0 + const priceUSD = selectedToken.extensions?.priceUSD + if (priceUSD === undefined || priceUSD === null) return 0 + const tokenAmount = Number.parseFloat(formatUnits(amount, selectedToken.decimals ?? 0)) + return Number.parseFloat(priceUSD as string) * tokenAmount + }, [isTestnetChain, selectedToken, amount]) const selectIconSize = 24 const decimals = selectedToken ? selectedToken.decimals : 2 @@ -177,7 +188,7 @@ const TokenInput: FC<Props> = ({ </TopRow> <BottomRow> <EstimatedUSDValue> - {estimatedUSDValue !== null ? `~$${estimatedUSDValue}` : NO_PRICE_DATA_LABEL} + {estimatedUSDValue === null ? NO_PRICE_DATA_LABEL : `~$${estimatedUSDValue.toFixed(2)}`} </EstimatedUSDValue> <Balance> <BalanceValue> From fb2660f5773eae156599b409eea1bbed635946ab Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 19:50:08 -0300 Subject: [PATCH 084/115] refactor: simplify token input and balance code - replace viemChains wildcard scan with configured chains lookup in TokenInput - extract toLocalNativeAddress helper into utils/address alongside isNativeToken - drop redundant !!chains guard in useTokens (implied by chainsToFetch.length > 0) - memoize enabledBundledLists filter in useTokenLists - remove WHAT-style comments in TokenBalance and aaveSepoliaFaucet - fix marginLeft string literal in CloseButton --- .../sharedComponents/TokenInput/Components.tsx | 2 +- .../sharedComponents/TokenInput/index.tsx | 4 ++-- .../TokenSelect/List/TokenBalance.test.tsx | 1 - .../TokenSelect/List/TokenBalance.tsx | 2 -- src/constants/aaveSepoliaFaucet.ts | 2 -- src/hooks/useTokenLists.ts | 2 +- src/hooks/useTokens.ts | 17 ++++++----------- src/utils/address.ts | 9 +++++++++ 8 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/components/sharedComponents/TokenInput/Components.tsx b/src/components/sharedComponents/TokenInput/Components.tsx index 9842af7d..a7e80371 100644 --- a/src/components/sharedComponents/TokenInput/Components.tsx +++ b/src/components/sharedComponents/TokenInput/Components.tsx @@ -277,7 +277,7 @@ export const CloseButton: FC<ButtonProps> = ({ children, ...restProps }) => ( border="none" color="var(--title-color-default)" cursor="pointer" - marginLeft={'auto'} + marginLeft="auto" marginRight={4} marginBottom={4} marginTop={0} diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index 3b40b2b4..964836b1 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -2,7 +2,6 @@ import { Dialog, type FlexProps, Portal } from '@chakra-ui/react' import { type FC, useMemo, useState } from 'react' import { type NumberFormatValues, NumericFormat } from 'react-number-format' import { formatUnits } from 'viem' -import * as viemChains from 'viem/chains' import { BigNumberInput, type BigNumberInputProps, @@ -30,6 +29,7 @@ import TokenSelect, { type TokenSelectProps } from '@/src/components/sharedCompo import Spinner from '@/src/components/sharedComponents/ui/Spinner' import { NO_PRICE_DATA_LABEL } from '@/src/constants/common' import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { chains } from '@/src/lib/networks.config' import type { Token } from '@/src/types/token' import styles from './styles' @@ -99,7 +99,7 @@ const TokenInput: FC<Props> = ({ const { appChainId, walletChainId } = useWeb3Status() const activeChainId = selectedToken?.chainId ?? currentNetworkId ?? walletChainId ?? appChainId const isTestnetChain = useMemo( - () => Object.values(viemChains).find((c) => c.id === activeChainId)?.testnet === true, + () => chains.find((c) => c.id === activeChainId)?.testnet === true, [activeChainId], ) diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx index f29f2fe9..a8376299 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.test.tsx @@ -139,7 +139,6 @@ describe('TokenBalance', () => { isLoadingBalance: false, }) renderTokenBalance({ isLoading: false, token: erc20Token }) - // TODO: surface error state instead of silently rendering 0 expect(screen.getByText('0')).toBeDefined() expect(screen.getByText('N/A')).toBeDefined() }) diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx index 7108186b..56b702d6 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx @@ -56,7 +56,6 @@ const TokenBalance = withSuspenseAndRetry<TokenBalanceProps>(({ isLoading, token const isNative = isNativeToken(token.address) const hasExtensions = !!token.extensions - // Both hooks are called unconditionally; `enabled` flags prevent unnecessary fetches. const { data: nativeBalanceData, isLoading: isLoadingNative } = useBalance({ address, chainId: token.chainId, @@ -86,7 +85,6 @@ const TokenBalance = withSuspenseAndRetry<TokenBalanceProps>(({ isLoading, token ) } - // No LI.FI data - show two skeletons while on-chain fetch is in flight, then balance + N/A for USD. const isLoadingFallback = isNative ? isLoadingNative : isLoadingErc20 if (isLoadingFallback) { return <BalanceLoading /> diff --git a/src/constants/aaveSepoliaFaucet.ts b/src/constants/aaveSepoliaFaucet.ts index 123d3a61..49e29bb9 100644 --- a/src/constants/aaveSepoliaFaucet.ts +++ b/src/constants/aaveSepoliaFaucet.ts @@ -7,8 +7,6 @@ const TW_SHA = 'a2c7ba6ca5cc1f16f1be80f642618396ed6df6be' const TW = `https://raw.githubusercontent.com/trustwallet/assets/${TW_SHA}/blockchains/ethereum/assets` // Source: AAVE v3 Sepolia deployment - https://github.com/bgd-labs/aave-address-book/blob/main/src/AaveV3Sepolia.sol -// Addresses are the underlying ERC-20 assets (not aTokens). -// logoURIs point to Trust Wallet CDN using each token's mainnet checksummed address. export const aaveSepoliaFaucetTokens: TokenList = { name: 'AAVE Sepolia Faucet', timestamp: '2026-04-20T00:00:00Z', diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 700347b0..8f53e944 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -58,7 +58,7 @@ export const useTokenLists = (): TokensMap => { return env.PUBLIC_USE_DEFAULT_TOKENS ? ['default', ...urls] : urls }, []) - const enabledBundledLists = bundledTokenLists.filter((b) => b.enabled) + const enabledBundledLists = useMemo(() => bundledTokenLists.filter((b) => b.enabled), []) return useSuspenseQueries({ queries: [ diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index bc7f2541..6e0a0a1b 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -9,12 +9,13 @@ import { } from '@lifi/sdk' import { useQuery } from '@tanstack/react-query' import { useMemo } from 'react' -import { type Address, type Chain, formatUnits, zeroAddress } from 'viem' +import { type Address, type Chain, formatUnits } from 'viem' import { env } from '@/src/env' import { useTokenLists } from '@/src/hooks/useTokenLists' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import type { Token, Tokens } from '@/src/types/token' +import { toLocalNativeAddress } from '@/src/utils/address' import { logger } from '@/src/utils/logger' import type { TokensMap } from '@/src/utils/tokenListsCache' @@ -104,7 +105,7 @@ export const useTokens = ( staleTime: BALANCE_EXPIRATION_TIME, refetchInterval: BALANCE_EXPIRATION_TIME, gcTime: Number.POSITIVE_INFINITY, - enabled: canFetchBalance && !!chains && chainsToFetch.length > 0, + enabled: canFetchBalance && chainsToFetch.length > 0, }) const { data: tokensBalances, isLoading: isLoadingBalances } = useQuery({ @@ -165,20 +166,13 @@ export function udpateTokensBalances( ) { const [balanceTokens, prices] = results - // LI.FI reports native tokens at the zero address. Rewrite it to the app's - // configured native sentinel (env.PUBLIC_NATIVE_TOKEN_ADDRESS) so the downstream - // lookup keyed on local token addresses matches. No-op when the app is left on - // the default zero-address sentinel. - const toLocalAddress = (address: string): string => - address.toLowerCase() === zeroAddress ? env.PUBLIC_NATIVE_TOKEN_ADDRESS : address - logger.time('extending tokens with balance info') const priceByChainAddress = Object.entries(prices.tokens).reduce( (acc, [chainId, tokens]) => { acc[chainId] = {} tokens.forEach((token) => { - acc[chainId][toLocalAddress(token.address)] = token.priceUSD ?? '0' + acc[chainId][toLocalNativeAddress(token.address)] = token.priceUSD ?? '0' }) return acc @@ -192,7 +186,8 @@ export function udpateTokensBalances( acc[balanceToken.chainId] = {} } - acc[balanceToken.chainId][toLocalAddress(balanceToken.address)] = balanceToken.amount ?? 0n + acc[balanceToken.chainId][toLocalNativeAddress(balanceToken.address)] = + balanceToken.amount ?? 0n return acc }, diff --git a/src/utils/address.ts b/src/utils/address.ts index d9d0a5e4..49244839 100644 --- a/src/utils/address.ts +++ b/src/utils/address.ts @@ -1,3 +1,4 @@ +import { zeroAddress } from 'viem' import { env } from '@/src/env' /** @@ -19,3 +20,11 @@ import { env } from '@/src/env' export const isNativeToken = (address: string) => { return address.toLowerCase() === env.PUBLIC_NATIVE_TOKEN_ADDRESS } + +/** + * LI.FI reports native tokens at the zero address. Rewrite it to the app's + * configured native sentinel (env.PUBLIC_NATIVE_TOKEN_ADDRESS) so lookups keyed + * on local token addresses match. No-op when the app uses the zero-address sentinel. + */ +export const toLocalNativeAddress = (address: string): string => + address.toLowerCase() === zeroAddress ? env.PUBLIC_NATIVE_TOKEN_ADDRESS : address From 3cad9a99fb213ccee5d1d64ceaf1bcb2215ba188 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 21:32:37 -0300 Subject: [PATCH 085/115] fix(token-input): guard native balance query when wallet is disconnected - Add !!userWallet to the enabled predicate in useTokenInput so the native-balance query does not fire (and getAddress('') does not throw) when no wallet is connected - Rename udpateTokensBalances to updateTokensBalances (typo) - Add disconnected-wallet test to useTokenInput - Add integration test: Sepolia appears in the network selector when includeTestnets is true --- .../Examples/demos/TokenInput/index.test.tsx | 45 ++++++++++++++++++- .../TokenInput/useTokenInput.test.ts | 15 ++++++- .../TokenInput/useTokenInput.tsx | 2 +- src/hooks/useTokens.test.ts | 8 ++-- src/hooks/useTokens.ts | 4 +- 5 files changed, 64 insertions(+), 10 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx index 4648295b..e7952897 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx @@ -1,5 +1,6 @@ import { QueryClient, QueryClientProvider } from '@tanstack/react-query' -import { screen } from '@testing-library/react' +import { screen, waitFor } from '@testing-library/react' +import userEvent from '@testing-library/user-event' import { describe, expect, it, vi } from 'vitest' import { createMockWeb3Status, renderWithProviders } from '@/src/test-utils' import tokenInput from './index' @@ -20,6 +21,8 @@ vi.mock('@/src/hooks/useTokenLists', () => ({ vi.mock('@/src/hooks/useTokenSearch', () => ({ useTokenSearch: vi.fn(() => ({ searchResult: [], + searchTerm: '', + setSearchTerm: vi.fn(), })), })) @@ -37,13 +40,51 @@ vi.mock('@/src/components/sharedComponents/TokenInput/useTokenInput', () => ({ })), })) +// TokenSelect calls useTokens internally; return empty arrays per chain to avoid +// TopTokens receiving undefined and crashing on .find() +vi.mock('@/src/hooks/useTokens', () => ({ + useTokens: vi.fn(() => ({ + tokens: [], + tokensByChainId: { 1: [], 10: [], 42161: [], 137: [], 11155111: [] }, + isLoadingBalances: false, + })), +})) + +vi.mock('@/src/constants/common', () => ({ + includeTestnets: true, + isDev: false, + NO_PRICE_DATA_LABEL: 'N/A', +})) + describe('TokenInput demo', () => { it('renders the token input container', () => { const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } }) renderWithProviders( <QueryClientProvider client={queryClient}>{tokenInput.demo}</QueryClientProvider>, ) - // The mode dropdown should be visible with the default mode selected expect(screen.getByText('Multi token')).toBeDefined() }) + + it('shows Sepolia in the network selector when includeTestnets is true', async () => { + const user = userEvent.setup() + const queryClient = new QueryClient({ defaultOptions: { queries: { retry: false } } }) + + renderWithProviders( + <QueryClientProvider client={queryClient}>{tokenInput.demo}</QueryClientProvider>, + ) + + // Open the TokenSelect dialog + await user.click(screen.getByText('Select')) + + // There are two "Chevron down" SVGs: one in the DropdownButton trigger (pointer-events:none) + // and one in the NetworkButton inside the dialog. Click the last one (the network switcher). + const chevrons = await screen.findAllByTitle('Chevron down') + const networkChevron = chevrons[chevrons.length - 1] + const networkButton = networkChevron.closest('button') + expect(networkButton).not.toBeNull() + await user.click(networkButton as HTMLButtonElement) + + // Sepolia should be listed as a network option + await waitFor(() => expect(screen.getByText('Sepolia')).toBeDefined()) + }) }) diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.test.ts b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts index de56c069..930d23d6 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.test.ts +++ b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts @@ -8,11 +8,12 @@ import { useTokenInput } from './useTokenInput' const walletAddress = '0x71C7656EC7ab88b098defB751B7401B5f6d8976F' as const +const mockUseAccount = vi.fn() const mockUsePublicClient = vi.fn() const mockGetBalance = vi.fn() vi.mock('wagmi', () => ({ - useAccount: () => ({ address: walletAddress }), + useAccount: () => mockUseAccount(), usePublicClient: (args: { chainId?: number } = {}) => { mockUsePublicClient(args) return { getBalance: mockGetBalance } @@ -52,6 +53,7 @@ const wrapper = ({ children }: { children: ReactNode }) => describe('useTokenInput', () => { beforeEach(() => { + mockUseAccount.mockReturnValue({ address: walletAddress }) mockUsePublicClient.mockClear() mockGetBalance.mockReset() }) @@ -85,4 +87,15 @@ describe('useTokenInput', () => { ) await waitFor(() => expect(result.current.balance).toBe(7n)) }) + + it('does not fetch native balance when wallet is disconnected', () => { + mockUseAccount.mockReturnValue({ address: undefined }) + + const { result } = renderHook(() => useTokenInput(sepoliaEth), { wrapper }) + + expect(result.current.balance).toBeUndefined() + expect(result.current.balanceError).toBeNull() + expect(result.current.isLoadingBalance).toBe(false) + expect(mockGetBalance).not.toHaveBeenCalled() + }) }) diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index 37d7e1ac..954d4862 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -64,7 +64,7 @@ export function useTokenInput(token?: Token) { } = useQuery({ queryKey: ['nativeBalance', selectedToken?.address, selectedToken?.chainId, userWallet], queryFn: () => publicClient?.getBalance({ address: getAddress(userWallet ?? '') }), - enabled: isNative, + enabled: isNative && !!userWallet, }) return { diff --git a/src/hooks/useTokens.test.ts b/src/hooks/useTokens.test.ts index 85f1cb71..f3d3b62c 100644 --- a/src/hooks/useTokens.test.ts +++ b/src/hooks/useTokens.test.ts @@ -2,7 +2,7 @@ import type { TokenAmount, TokensResponse } from '@lifi/sdk' import { zeroAddress } from 'viem' import { describe, expect, it, vi } from 'vitest' import type { Token, Tokens } from '@/src/types/token' -import { udpateTokensBalances } from './useTokens' +import { updateTokensBalances } from './useTokens' // Mimic a setup that overrides PUBLIC_NATIVE_TOKEN_ADDRESS to the Aave-style sentinel // (0xEeee...), which env.ts lowercases. The merge must bridge this back to LI.FI's @@ -31,7 +31,7 @@ const makeLifiToken = (address: string, symbol: string, decimals: number, priceU priceUSD, }) -describe('udpateTokensBalances', () => { +describe('updateTokensBalances', () => { it('merges LI.FI native balance onto a local native token that uses a non-zero sentinel', () => { const prices: TokensResponse = { tokens: { @@ -46,7 +46,7 @@ describe('udpateTokensBalances', () => { { ...makeLifiToken(usdcAddress, 'USDC', 6, '1'), amount: 5_000_000n }, ] - const { tokens } = udpateTokensBalances(localTokens, [balances, prices]) + const { tokens } = updateTokensBalances(localTokens, [balances, prices]) const eth = tokens.find((t: Token) => t.address === LOCAL_NATIVE) const usdc = tokens.find((t: Token) => t.address === usdcAddress) @@ -61,7 +61,7 @@ describe('udpateTokensBalances', () => { const prices: TokensResponse = { tokens: { 1: [] } } const balances: TokenAmount[] = [] - const { tokens } = udpateTokensBalances(localTokens, [balances, prices]) + const { tokens } = updateTokensBalances(localTokens, [balances, prices]) for (const token of tokens) { expect(token.extensions?.balance).toBe(0n) diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 6e0a0a1b..d25c24c1 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -134,7 +134,7 @@ export const useTokens = ( tokensBalances && tokensPricesByChain ) { - return udpateTokensBalances(tokensData.tokens, [tokensBalances, tokensPricesByChain]) + return updateTokensBalances(tokensData.tokens, [tokensBalances, tokensPricesByChain]) } return tokensData }, [ @@ -160,7 +160,7 @@ export const useTokens = ( * @param results - The results containing the balance tokens and prices. * @returns An object containing the updated tokens and tokens grouped by chain ID. */ -export function udpateTokensBalances( +export function updateTokensBalances( tokens: Tokens, results: [Array<TokenAmount>, TokensResponse], ) { From e8fcfcda3989b88686a05327319ac4dc707467b9 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 22:35:01 -0300 Subject: [PATCH 086/115] fix(token-input): display balance USD value and show spinner while loading MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Compute the estimated USD field from price × balance instead of price × amount, so selecting a token immediately shows its USD worth without requiring user input or pressing MAX. Add useTokens call inside useTokenInput to fetch prices for the selected token chain, fixing single-token mode where the initial token carries no priceUSD. Expose priceUSD and isLoadingPrice from the hook. Show a spinner in the USD slot while price or balance is loading. Closes #393 --- .../sharedComponents/TokenInput/index.tsx | 20 ++++--- .../TokenInput/useTokenInput.test.ts | 54 +++++++++++++++++++ .../TokenInput/useTokenInput.tsx | 12 +++++ 3 files changed, 79 insertions(+), 7 deletions(-) diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index 964836b1..aa647821 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -85,6 +85,8 @@ const TokenInput: FC<Props> = ({ balance, balanceError, isLoadingBalance, + isLoadingPrice, + priceUSD, selectedToken, setAmount, setAmountError, @@ -105,12 +107,10 @@ const TokenInput: FC<Props> = ({ const estimatedUSDValue = useMemo(() => { if (isTestnetChain) return null - if (!selectedToken) return 0 - const priceUSD = selectedToken.extensions?.priceUSD - if (priceUSD === undefined || priceUSD === null) return 0 - const tokenAmount = Number.parseFloat(formatUnits(amount, selectedToken.decimals ?? 0)) - return Number.parseFloat(priceUSD as string) * tokenAmount - }, [isTestnetChain, selectedToken, amount]) + if (!selectedToken || !priceUSD || !balance) return 0 + const tokenBalance = Number.parseFloat(formatUnits(balance, selectedToken.decimals ?? 0)) + return Number.parseFloat(priceUSD) * tokenBalance + }, [isTestnetChain, selectedToken, priceUSD, balance]) const selectIconSize = 24 const decimals = selectedToken ? selectedToken.decimals : 2 @@ -188,7 +188,13 @@ const TokenInput: FC<Props> = ({ </TopRow> <BottomRow> <EstimatedUSDValue> - {estimatedUSDValue === null ? NO_PRICE_DATA_LABEL : `~$${estimatedUSDValue.toFixed(2)}`} + {estimatedUSDValue === null ? ( + NO_PRICE_DATA_LABEL + ) : selectedToken && !isTestnetChain && (isLoadingPrice || isLoadingBalance) ? ( + <Spinner size="sm" /> + ) : ( + `~$${(estimatedUSDValue as number).toFixed(2)}` + )} </EstimatedUSDValue> <Balance> <BalanceValue> diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.test.ts b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts index 930d23d6..f926a78f 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.test.ts +++ b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts @@ -11,6 +11,7 @@ const walletAddress = '0x71C7656EC7ab88b098defB751B7401B5f6d8976F' as const const mockUseAccount = vi.fn() const mockUsePublicClient = vi.fn() const mockGetBalance = vi.fn() +const mockUseTokens = vi.fn() vi.mock('wagmi', () => ({ useAccount: () => mockUseAccount(), @@ -24,6 +25,10 @@ vi.mock('@/src/hooks/useErc20Balance', () => ({ useErc20Balance: () => ({ balance: undefined, balanceError: null, isLoadingBalance: false }), })) +vi.mock('@/src/hooks/useTokens', () => ({ + useTokens: (args: unknown) => mockUseTokens(args), +})) + vi.mock('@/src/env', () => ({ env: { PUBLIC_NATIVE_TOKEN_ADDRESS: zeroAddress.toLowerCase() }, })) @@ -56,6 +61,7 @@ describe('useTokenInput', () => { mockUseAccount.mockReturnValue({ address: walletAddress }) mockUsePublicClient.mockClear() mockGetBalance.mockReset() + mockUseTokens.mockReturnValue({ tokensByChainId: {}, isLoadingBalances: false, tokens: [] }) }) it('rebinds the native public client to the selected token chain when the user switches chains', async () => { @@ -98,4 +104,52 @@ describe('useTokenInput', () => { expect(result.current.isLoadingBalance).toBe(false) expect(mockGetBalance).not.toHaveBeenCalled() }) + + it('exposes priceUSD for the selected token from useTokens', async () => { + mockUseTokens.mockReturnValue({ + tokensByChainId: { + 1: [{ ...mainnetUsdc, extensions: { priceUSD: '1.00' } }], + }, + isLoadingBalances: false, + tokens: [], + }) + + const { result } = renderHook(() => useTokenInput(mainnetUsdc), { wrapper }) + + await waitFor(() => expect(result.current.priceUSD).toBe('1.00')) + }) + + it('exposes isLoadingPrice as true while useTokens is loading', () => { + mockUseTokens.mockReturnValue({ tokensByChainId: {}, isLoadingBalances: true, tokens: [] }) + + const { result } = renderHook(() => useTokenInput(mainnetUsdc), { wrapper }) + + expect(result.current.isLoadingPrice).toBe(true) + }) + + it('updates priceUSD when a different token is selected', async () => { + const mainnetEth: Token = { + address: zeroAddress, + chainId: 1, + decimals: 18, + name: 'Ether', + symbol: 'ETH', + } + mockUseTokens.mockReturnValue({ + tokensByChainId: { + 1: [{ ...mainnetEth, extensions: { priceUSD: '3000.00' } }], + }, + isLoadingBalances: false, + tokens: [], + }) + mockGetBalance.mockResolvedValue(1000000000000000000n) + + const { result } = renderHook(() => useTokenInput(mainnetUsdc), { wrapper }) + + act(() => { + result.current.setTokenSelected(mainnetEth) + }) + + await waitFor(() => expect(result.current.priceUSD).toBe('3000.00')) + }) }) diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index 954d4862..6ac6ac26 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -3,6 +3,7 @@ import { useEffect, useState } from 'react' import { getAddress } from 'viem' import { useAccount, usePublicClient } from 'wagmi' import { useErc20Balance } from '@/src/hooks/useErc20Balance' +import { useTokens } from '@/src/hooks/useTokens' import type { Token } from '@/src/types/token' import { isNativeToken } from '@/src/utils/address' @@ -49,6 +50,15 @@ export function useTokenInput(token?: Token) { }, [token]) const { address: userWallet } = useAccount() + const { tokensByChainId, isLoadingBalances: isLoadingPrice } = useTokens({ + chainId: selectedToken?.chainId, + withBalance: true, + }) + const priceUSD = selectedToken + ? (tokensByChainId[selectedToken.chainId]?.find((t) => t.address === selectedToken.address) + ?.extensions?.priceUSD as string | undefined) + : undefined + const { balance, balanceError, isLoadingBalance } = useErc20Balance({ address: userWallet ? getAddress(userWallet) : undefined, token: selectedToken, @@ -75,6 +85,8 @@ export function useTokenInput(token?: Token) { balance: isNative ? nativeBalance : balance, balanceError: isNative ? nativeBalanceError : balanceError, isLoadingBalance: isNative ? isLoadingNativeBalance : isLoadingBalance, + isLoadingPrice, + priceUSD, selectedToken, setTokenSelected, } From 373f72e820fa761b77432405afa59bb0c1954430 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 22:40:47 -0300 Subject: [PATCH 087/115] refactor(token-input): remove redundant testnet guard and unnecessary cast in USD value render --- src/components/sharedComponents/TokenInput/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index aa647821..7497c428 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -190,10 +190,10 @@ const TokenInput: FC<Props> = ({ <EstimatedUSDValue> {estimatedUSDValue === null ? ( NO_PRICE_DATA_LABEL - ) : selectedToken && !isTestnetChain && (isLoadingPrice || isLoadingBalance) ? ( + ) : selectedToken && (isLoadingPrice || isLoadingBalance) ? ( <Spinner size="sm" /> ) : ( - `~$${(estimatedUSDValue as number).toFixed(2)}` + `~$${estimatedUSDValue.toFixed(2)}` )} </EstimatedUSDValue> <Balance> From fa4a12f3fe2e99db4dabe329a96a989d419e2a4d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:10:14 -0300 Subject: [PATCH 088/115] fix(token-input): compare token addresses case-insensitively when resolving priceUSD --- .../home/Examples/demos/TokenInput/index.test.tsx | 2 ++ src/components/sharedComponents/TokenInput/useTokenInput.tsx | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx index e7952897..faa053d8 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx @@ -35,6 +35,8 @@ vi.mock('@/src/components/sharedComponents/TokenInput/useTokenInput', () => ({ balance: 0n, balanceError: null, isLoadingBalance: false, + isLoadingPrice: false, + priceUSD: undefined, selectedToken: undefined, setTokenSelected: vi.fn(), })), diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index 6ac6ac26..f3a6435b 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -55,8 +55,9 @@ export function useTokenInput(token?: Token) { withBalance: true, }) const priceUSD = selectedToken - ? (tokensByChainId[selectedToken.chainId]?.find((t) => t.address === selectedToken.address) - ?.extensions?.priceUSD as string | undefined) + ? (tokensByChainId[selectedToken.chainId]?.find( + (t) => t.address.toLowerCase() === selectedToken.address.toLowerCase(), + )?.extensions?.priceUSD as string | undefined) : undefined const { balance, balanceError, isLoadingBalance } = useErc20Balance({ From 24715bfe331c75c74c5dc506780a3332509e951b Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:32:33 -0300 Subject: [PATCH 089/115] refactor(use-tokens): expose dedicated isLoadingPrices signal Decouple price loading from combined isLoadingBalances so consumers that only need to know when price data is ready (TokenInput's USD display) are not kept in a loading state by unrelated balance queries. isLoadingBalances retains its current union semantics; TokenSelect consumers are unaffected. --- .../Examples/demos/TokenInput/index.test.tsx | 1 + .../TokenInput/useTokenInput.test.ts | 16 ++++++++++++++-- .../TokenInput/useTokenInput.tsx | 2 +- src/hooks/useTokens.ts | 2 ++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx index faa053d8..c582dd3d 100644 --- a/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx +++ b/src/components/pageComponents/home/Examples/demos/TokenInput/index.test.tsx @@ -49,6 +49,7 @@ vi.mock('@/src/hooks/useTokens', () => ({ tokens: [], tokensByChainId: { 1: [], 10: [], 42161: [], 137: [], 11155111: [] }, isLoadingBalances: false, + isLoadingPrices: false, })), })) diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.test.ts b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts index f926a78f..68631017 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.test.ts +++ b/src/components/sharedComponents/TokenInput/useTokenInput.test.ts @@ -61,7 +61,12 @@ describe('useTokenInput', () => { mockUseAccount.mockReturnValue({ address: walletAddress }) mockUsePublicClient.mockClear() mockGetBalance.mockReset() - mockUseTokens.mockReturnValue({ tokensByChainId: {}, isLoadingBalances: false, tokens: [] }) + mockUseTokens.mockReturnValue({ + tokensByChainId: {}, + isLoadingBalances: false, + isLoadingPrices: false, + tokens: [], + }) }) it('rebinds the native public client to the selected token chain when the user switches chains', async () => { @@ -111,6 +116,7 @@ describe('useTokenInput', () => { 1: [{ ...mainnetUsdc, extensions: { priceUSD: '1.00' } }], }, isLoadingBalances: false, + isLoadingPrices: false, tokens: [], }) @@ -120,7 +126,12 @@ describe('useTokenInput', () => { }) it('exposes isLoadingPrice as true while useTokens is loading', () => { - mockUseTokens.mockReturnValue({ tokensByChainId: {}, isLoadingBalances: true, tokens: [] }) + mockUseTokens.mockReturnValue({ + tokensByChainId: {}, + isLoadingBalances: true, + isLoadingPrices: true, + tokens: [], + }) const { result } = renderHook(() => useTokenInput(mainnetUsdc), { wrapper }) @@ -140,6 +151,7 @@ describe('useTokenInput', () => { 1: [{ ...mainnetEth, extensions: { priceUSD: '3000.00' } }], }, isLoadingBalances: false, + isLoadingPrices: false, tokens: [], }) mockGetBalance.mockResolvedValue(1000000000000000000n) diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index f3a6435b..99417995 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -50,7 +50,7 @@ export function useTokenInput(token?: Token) { }, [token]) const { address: userWallet } = useAccount() - const { tokensByChainId, isLoadingBalances: isLoadingPrice } = useTokens({ + const { tokensByChainId, isLoadingPrices: isLoadingPrice } = useTokens({ chainId: selectedToken?.chainId, withBalance: true, }) diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index d25c24c1..776e1c1b 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -47,6 +47,7 @@ export const lifiConfig = createConfig({ * @returns {Token[]} returns.tokens - Array of tokens with price and balance information * @returns {Record<number, Token[]>} returns.tokensByChainId - Tokens organized by chain ID * @returns {boolean} returns.isLoadingBalances - Loading state for token balances and prices + * @returns {boolean} returns.isLoadingPrices - Loading state for token prices only * * @example * ```tsx @@ -150,6 +151,7 @@ export const useTokens = ( return { ...cache, isLoadingBalances: Boolean(isLoadingChains || isLoadingBalances || isLoadingPrices), + isLoadingPrices: Boolean(isLoadingChains || isLoadingPrices), } } From 3035958ac926d217a1a846dcdb1f7a981d3a2d38 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Mon, 20 Apr 2026 23:33:32 -0300 Subject: [PATCH 090/115] docs(token-input): document priceUSD and isLoadingPrice return fields Add missing @returns entries to useTokenInput JSDoc so consumers can discover the USD price value and its loading state. --- src/components/sharedComponents/TokenInput/useTokenInput.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/sharedComponents/TokenInput/useTokenInput.tsx b/src/components/sharedComponents/TokenInput/useTokenInput.tsx index 99417995..1c273ebf 100644 --- a/src/components/sharedComponents/TokenInput/useTokenInput.tsx +++ b/src/components/sharedComponents/TokenInput/useTokenInput.tsx @@ -26,6 +26,8 @@ export type UseTokenInputReturnType = ReturnType<typeof useTokenInput> * @returns {bigint} returns.balance - Current token balance (ERC20 or native) * @returns {Error|null} returns.balanceError - Error from balance fetching * @returns {boolean} returns.isLoadingBalance - Loading state for balance + * @returns {string|undefined} returns.priceUSD - USD price of the selected token (from useTokens) + * @returns {boolean} returns.isLoadingPrice - Loading state for the selected token's USD price * @returns {Token|undefined} returns.selectedToken - Currently selected token * @returns {function} returns.setTokenSelected - Function to update selected token * From 32cdc6cca5a6d14ba68ad132f67d66bc26dff597 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 10:41:49 -0300 Subject: [PATCH 091/115] feat(token-logo): render chain icons for native tokens Native tokens (ETH, POL, OP, ARB, etc.) previously rendered the letter-placeholder because buildNativeToken() has no logoURI. Detect native tokens in TokenLogo via isNativeToken(token.address) and render the matching @web3icons/react NetworkXxx component keyed by chainId, falling back to the existing img/placeholder for unmapped chains. Closes #164 --- .../{ => TokenLogo}/TokenLogo.test.tsx | 44 ++++++++++++++++++- .../{TokenLogo.tsx => TokenLogo/index.tsx} | 23 +++++++++- .../TokenLogo/nativeTokenIcons.tsx | 20 +++++++++ 3 files changed, 85 insertions(+), 2 deletions(-) rename src/components/sharedComponents/{ => TokenLogo}/TokenLogo.test.tsx (62%) rename src/components/sharedComponents/{TokenLogo.tsx => TokenLogo/index.tsx} (80%) create mode 100644 src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx diff --git a/src/components/sharedComponents/TokenLogo.test.tsx b/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx similarity index 62% rename from src/components/sharedComponents/TokenLogo.test.tsx rename to src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx index b8d4aa93..3adefb70 100644 --- a/src/components/sharedComponents/TokenLogo.test.tsx +++ b/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx @@ -1,8 +1,9 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { fireEvent, render, screen } from '@testing-library/react' +import { zeroAddress } from 'viem' import { describe, expect, it } from 'vitest' import type { Token } from '@/src/types/token' -import TokenLogo from './TokenLogo' +import TokenLogo from '.' const system = createSystem(defaultConfig) @@ -72,4 +73,45 @@ describe('TokenLogo', () => { const img = screen.getByRole('img') expect(img.getAttribute('src')).toBe('https://ipfs.io/ipfs/QmHash123') }) + + it('renders the chain icon (not the img or placeholder) for a native token on a mapped chain', () => { + const nativeEthToken: Token = { + address: zeroAddress, + chainId: 1, + decimals: 18, + name: 'Ether', + symbol: 'ETH', + } + const { container } = renderTokenLogo(nativeEthToken) + expect(screen.queryByRole('img')).toBeNull() + expect(screen.queryByText('E')).toBeNull() + expect(container.querySelector('svg')).not.toBeNull() + }) + + it('renders the chain icon for the native POL on Polygon (chainId 137)', () => { + const nativePolToken: Token = { + address: zeroAddress, + chainId: 137, + decimals: 18, + name: 'POL', + symbol: 'POL', + } + const { container } = renderTokenLogo(nativePolToken) + expect(screen.queryByRole('img')).toBeNull() + expect(screen.queryByText('P')).toBeNull() + expect(container.querySelector('svg')).not.toBeNull() + }) + + it('falls back to placeholder for a native token on an unmapped chain', () => { + const nativeUnknownToken: Token = { + address: zeroAddress, + chainId: 999999, + decimals: 18, + name: 'Unknown', + symbol: 'XXX', + } + renderTokenLogo(nativeUnknownToken) + expect(screen.queryByRole('img')).toBeNull() + expect(screen.getByText('X')).toBeDefined() + }) }) diff --git a/src/components/sharedComponents/TokenLogo.tsx b/src/components/sharedComponents/TokenLogo/index.tsx similarity index 80% rename from src/components/sharedComponents/TokenLogo.tsx rename to src/components/sharedComponents/TokenLogo/index.tsx index de2f6041..37e23b46 100644 --- a/src/components/sharedComponents/TokenLogo.tsx +++ b/src/components/sharedComponents/TokenLogo/index.tsx @@ -1,6 +1,10 @@ import { Flex } from '@chakra-ui/react' import { type ComponentProps, type FC, useCallback, useEffect, useState } from 'react' + +import { nativeTokenIcons } from '@/src/components/sharedComponents/TokenLogo/nativeTokenIcons' +import type { ChainsIds } from '@/src/lib/networks.config' import type { Token } from '@/src/types/token' +import { isNativeToken } from '@/src/utils/address' interface PlaceholderProps extends ComponentProps<'div'> { size: number @@ -75,10 +79,14 @@ interface TokenLogoProps { /** * TokenLogo component, displays a token logo based on the provided token object. * + * Native tokens (detected via `token.address === env.PUBLIC_NATIVE_TOKEN_ADDRESS`) + * render the chain-specific icon from `@web3icons/react` when the chain is mapped + * in `nativeTokenIcons`. Otherwise the component renders `logoURI` as an image, + * falling back to the colored-letter Placeholder on load failure or missing URI. + * * @param {TokenLogoProps} props - TokenLogo component props. * @param {Token} props.token - The token object to display the logo for. * @param {number} [props.size=24] - The size of the logo in pixels. - * @param {ComponentProps<'img'>} [props.restProps] - Additional props for the img element. * * @example * ```tsx @@ -97,6 +105,19 @@ const TokenLogo: FC<TokenLogoProps> = ({ size = 24, token }) => { setHasError(false) }, [logoURI]) + const NativeIcon = isNativeToken(token.address) + ? nativeTokenIcons[token.chainId as ChainsIds] + : undefined + + if (NativeIcon) { + return ( + <NativeIcon + size={size} + variant="background" + /> + ) + } + return logoURI && !hasError ? ( <img alt={token.name} diff --git a/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx b/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx new file mode 100644 index 00000000..56c0849a --- /dev/null +++ b/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx @@ -0,0 +1,20 @@ +import type { IconComponent } from '@web3icons/react' +import { + NetworkArbitrumOne, + NetworkEthereum, + NetworkOptimism, + NetworkOptimismSepolia, + NetworkPolygon, + NetworkSepolia, +} from '@web3icons/react' + +import type { ChainsIds } from '@/src/lib/networks.config' + +export const nativeTokenIcons: Partial<Record<ChainsIds, IconComponent>> = { + 1: NetworkEthereum, + 10: NetworkOptimism, + 137: NetworkPolygon, + 42161: NetworkArbitrumOne, + 11155111: NetworkSepolia, + 11155420: NetworkOptimismSepolia, +} From 7253982315fa91e6fe0193469b9c7670e6bc0d89 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:00:18 -0300 Subject: [PATCH 092/115] test(token-logo): assert no svg in unmapped-chain fallback test --- src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx b/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx index 3adefb70..b0e4e6cc 100644 --- a/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx +++ b/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx @@ -110,8 +110,9 @@ describe('TokenLogo', () => { name: 'Unknown', symbol: 'XXX', } - renderTokenLogo(nativeUnknownToken) + const { container } = renderTokenLogo(nativeUnknownToken) expect(screen.queryByRole('img')).toBeNull() + expect(container.querySelector('svg')).toBeNull() expect(screen.getByText('X')).toBeDefined() }) }) From 0454a809a73ec9a44d3ea28d67063720064b1691 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:20:35 -0300 Subject: [PATCH 093/115] refactor(token-logo): apply code-review fixes - hoist Chakra system to module scope in provider.tsx and export it - use real project system in TokenLogo tests instead of bare defaultConfig - replace Placeholder useState+useEffect+useCallback with useMemo - fix padStart pad char from '6' to '0' in generateHexColor - tighten nativeTokenIcons from Partial<Record> to Record so adding a chain to networks.config.ts surfaces a TS error on missing icon entry --- .../TokenLogo/TokenLogo.test.tsx | 5 +- .../sharedComponents/TokenLogo/index.tsx | 59 +++--- .../TokenLogo/nativeTokenIcons.tsx | 2 +- src/components/ui/provider.tsx | 200 +++++++++--------- 4 files changed, 128 insertions(+), 138 deletions(-) diff --git a/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx b/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx index b0e4e6cc..6a8f12a5 100644 --- a/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx +++ b/src/components/sharedComponents/TokenLogo/TokenLogo.test.tsx @@ -1,12 +1,11 @@ -import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' +import { ChakraProvider } from '@chakra-ui/react' import { fireEvent, render, screen } from '@testing-library/react' import { zeroAddress } from 'viem' import { describe, expect, it } from 'vitest' +import { system } from '@/src/components/ui/provider' import type { Token } from '@/src/types/token' import TokenLogo from '.' -const system = createSystem(defaultConfig) - const mockToken: Token = { address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', chainId: 1, diff --git a/src/components/sharedComponents/TokenLogo/index.tsx b/src/components/sharedComponents/TokenLogo/index.tsx index 37e23b46..e2e0fc7a 100644 --- a/src/components/sharedComponents/TokenLogo/index.tsx +++ b/src/components/sharedComponents/TokenLogo/index.tsx @@ -1,5 +1,5 @@ import { Flex } from '@chakra-ui/react' -import { type ComponentProps, type FC, useCallback, useEffect, useState } from 'react' +import { type ComponentProps, type FC, useEffect, useMemo, useState } from 'react' import { nativeTokenIcons } from '@/src/components/sharedComponents/TokenLogo/nativeTokenIcons' import type { ChainsIds } from '@/src/lib/networks.config' @@ -11,40 +11,31 @@ interface PlaceholderProps extends ComponentProps<'div'> { symbol: string } -const Placeholder: FC<PlaceholderProps> = ({ size, symbol, ...restProps }) => { - const [backgroundColor, setBackgroundColor] = useState<string>('') - - const generateHexColor = useCallback((symbol: string): string => { - // Convert symbol to a hash number - let hash = 0 - for (let i = 0; i < symbol.length; i++) { - hash = symbol.charCodeAt(i) + ((hash << 5) - hash) - } - - // Convert hash to a hexadecimal string and ensure it is 6 characters long - const baseColor = - ((hash >> 24) & 0xff).toString(16).padStart(2, '0') + - ((hash >> 16) & 0xff).toString(16).padStart(2, '0') + - ((hash >> 8) & 0xff).toString(16).padStart(2, '0') - - // Ensure the baseColor is dark-ish by making sure each component is less than 196 - const r = Number.parseInt(baseColor.slice(0, 2), 16) % 196 - const g = Number.parseInt(baseColor.slice(2, 4), 16) % 196 - const b = Number.parseInt(baseColor.slice(4, 6), 16) % 196 - - // Convert back to hex string and pad with leading 6s if necessary and also - // because I love Satan - const color = - r.toString(16).padStart(2, '6') + - g.toString(16).padStart(2, '6') + - b.toString(16).padStart(2, '6') - - return `#${color}` - }, []) +const generateHexColor = (symbol: string): string => { + let hash = 0 + for (let i = 0; i < symbol.length; i++) { + hash = symbol.charCodeAt(i) + ((hash << 5) - hash) + } - useEffect(() => { - setBackgroundColor(generateHexColor(symbol)) - }, [symbol, generateHexColor]) + const baseColor = + ((hash >> 24) & 0xff).toString(16).padStart(2, '0') + + ((hash >> 16) & 0xff).toString(16).padStart(2, '0') + + ((hash >> 8) & 0xff).toString(16).padStart(2, '0') + + const r = Number.parseInt(baseColor.slice(0, 2), 16) % 196 + const g = Number.parseInt(baseColor.slice(2, 4), 16) % 196 + const b = Number.parseInt(baseColor.slice(4, 6), 16) % 196 + + const color = + r.toString(16).padStart(2, '0') + + g.toString(16).padStart(2, '0') + + b.toString(16).padStart(2, '0') + + return `#${color}` +} + +const Placeholder: FC<PlaceholderProps> = ({ size, symbol, ...restProps }) => { + const backgroundColor = useMemo(() => generateHexColor(symbol), [symbol]) return ( <Flex diff --git a/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx b/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx index 56c0849a..da366a80 100644 --- a/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx +++ b/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx @@ -10,7 +10,7 @@ import { import type { ChainsIds } from '@/src/lib/networks.config' -export const nativeTokenIcons: Partial<Record<ChainsIds, IconComponent>> = { +export const nativeTokenIcons: Record<ChainsIds, IconComponent> = { 1: NetworkEthereum, 10: NetworkOptimism, 137: NetworkPolygon, diff --git a/src/components/ui/provider.tsx b/src/components/ui/provider.tsx index e9451067..1d6fa447 100644 --- a/src/components/ui/provider.tsx +++ b/src/components/ui/provider.tsx @@ -3,129 +3,129 @@ import { ChakraProvider, createSystem, defaultConfig, defineConfig } from '@chakra-ui/react' import { ColorModeProvider, type ColorModeProviderProps } from './color-mode' -export function Provider(props: ColorModeProviderProps) { - const customConfig = defineConfig({ - theme: { - // Use tokens for values that don't change with light / dark themes - tokens: { - fonts: { - body: { - value: '"Manrope", "Arial", "Helvetica Neue", "Helvetica", sans-serif', - }, - heading: { - value: '{fonts.body}', - }, - mono: { - value: '"Roboto Mono", "Courier New", monospace', - }, +const customConfig = defineConfig({ + theme: { + // Use tokens for values that don't change with light / dark themes + tokens: { + fonts: { + body: { + value: '"Manrope", "Arial", "Helvetica Neue", "Helvetica", sans-serif', + }, + heading: { + value: '{fonts.body}', + }, + mono: { + value: '"Roboto Mono", "Courier New", monospace', }, }, - // Use semantic tokens for light / dark values - semanticTokens: { - colors: { - bg: { - default: { - value: { - _light: '#f7f7f7', - _dark: '#292B43', - }, - }, - emphasized: { - value: { - _light: '#ccc', - _dark: '#888', - }, + }, + // Use semantic tokens for light / dark values + semanticTokens: { + colors: { + bg: { + default: { + value: { + _light: '#f7f7f7', + _dark: '#292B43', }, }, - primary: { - default: { - value: { - _light: '#692581', - _dark: '#8b46a4', - }, + emphasized: { + value: { + _light: '#ccc', + _dark: '#888', }, }, - text: { - default: { - value: { - _light: '#4b4d60', - _dark: '#e2e0e7', - }, + }, + primary: { + default: { + value: { + _light: '#692581', + _dark: '#8b46a4', }, }, - danger: { - default: { - value: { - _light: '#800', - _dark: '#ff6666', - }, + }, + text: { + default: { + value: { + _light: '#4b4d60', + _dark: '#e2e0e7', }, }, - ok: { - default: { - value: { - _light: '#006600', - _dark: '#66ee66', - }, + }, + danger: { + default: { + value: { + _light: '#800', + _dark: '#ff6666', }, }, - warning: { - default: { - value: { - _light: '#996600', - _dark: '#e6b800', - }, + }, + ok: { + default: { + value: { + _light: '#006600', + _dark: '#66ee66', }, }, }, - }, - // Some custom animations - keyframes: { - rotateSwitch: { - from: { - transform: 'rotate(0)', - }, - to: { - transform: 'rotate(360deg)', + warning: { + default: { + value: { + _light: '#996600', + _dark: '#e6b800', + }, }, }, }, }, - globalCss: { - ////////////////////////////////////////////////// - // Just some basic stuff, don't add too much here. - ////////////////////////////////////////////////// - html: { - scrollBehavior: 'smooth', - overflowX: 'hidden', - }, - body: { - '--moz-osx-font-smoothing': 'grayscale', - '--webkit-font-smoothing': 'antialiased', - background: '{colors.bg.default}', - backgroundPosition: '100% 0', - backgroundRepeat: 'no-repeat', - color: '{colors.text.default}', - fontFamily: '{fonts.body}', - lineHeight: 1.5, - outlineColor: '{colors.text.default}', - overflowX: 'hidden', - }, - code: { - fontFamily: '{fonts.mono}', - }, - a: { - color: '{colors.primary.default}', - }, - img: { - display: 'block', - maxInlineSize: '100%', + // Some custom animations + keyframes: { + rotateSwitch: { + from: { + transform: 'rotate(0)', + }, + to: { + transform: 'rotate(360deg)', + }, }, }, - }) + }, + globalCss: { + ////////////////////////////////////////////////// + // Just some basic stuff, don't add too much here. + ////////////////////////////////////////////////// + html: { + scrollBehavior: 'smooth', + overflowX: 'hidden', + }, + body: { + '--moz-osx-font-smoothing': 'grayscale', + '--webkit-font-smoothing': 'antialiased', + background: '{colors.bg.default}', + backgroundPosition: '100% 0', + backgroundRepeat: 'no-repeat', + color: '{colors.text.default}', + fontFamily: '{fonts.body}', + lineHeight: 1.5, + outlineColor: '{colors.text.default}', + overflowX: 'hidden', + }, + code: { + fontFamily: '{fonts.mono}', + }, + a: { + color: '{colors.primary.default}', + }, + img: { + display: 'block', + maxInlineSize: '100%', + }, + }, +}) - const system = createSystem(defaultConfig, customConfig) +export const system = createSystem(defaultConfig, customConfig) +export function Provider(props: ColorModeProviderProps) { return ( <ChakraProvider value={system}> <ColorModeProvider {...props} /> From 9ae8e55fc77ac399de6f50e4c7e7026e292a280b Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:38:34 -0300 Subject: [PATCH 094/115] docs(token-logo): correct native-token detection reference in JSDoc --- src/components/sharedComponents/TokenLogo/index.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/sharedComponents/TokenLogo/index.tsx b/src/components/sharedComponents/TokenLogo/index.tsx index e2e0fc7a..0fbcfcdd 100644 --- a/src/components/sharedComponents/TokenLogo/index.tsx +++ b/src/components/sharedComponents/TokenLogo/index.tsx @@ -70,10 +70,11 @@ interface TokenLogoProps { /** * TokenLogo component, displays a token logo based on the provided token object. * - * Native tokens (detected via `token.address === env.PUBLIC_NATIVE_TOKEN_ADDRESS`) - * render the chain-specific icon from `@web3icons/react` when the chain is mapped - * in `nativeTokenIcons`. Otherwise the component renders `logoURI` as an image, - * falling back to the colored-letter Placeholder on load failure or missing URI. + * Native tokens (detected via `isNativeToken(token.address)`, a case-insensitive + * match against `env.PUBLIC_NATIVE_TOKEN_ADDRESS`) render the chain-specific icon + * from `@web3icons/react` when the chain is mapped in `nativeTokenIcons`. Otherwise + * the component renders `logoURI` as an image, falling back to the colored-letter + * Placeholder on load failure or missing URI. * * @param {TokenLogoProps} props - TokenLogo component props. * @param {Token} props.token - The token object to display the logo for. From 505e6efda4467388bc55637351b76c52359565bb Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:38:50 -0300 Subject: [PATCH 095/115] refactor(token-logo): type native icon map as Partial to model unmapped chains --- src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx b/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx index da366a80..56c0849a 100644 --- a/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx +++ b/src/components/sharedComponents/TokenLogo/nativeTokenIcons.tsx @@ -10,7 +10,7 @@ import { import type { ChainsIds } from '@/src/lib/networks.config' -export const nativeTokenIcons: Record<ChainsIds, IconComponent> = { +export const nativeTokenIcons: Partial<Record<ChainsIds, IconComponent>> = { 1: NetworkEthereum, 10: NetworkOptimism, 137: NetworkPolygon, From 940e33f7e1a67a7cb664632f4760387895faf532 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 11:53:13 -0300 Subject: [PATCH 096/115] fix(token-lists): drop tokens whose chainId is absent from viem/chains @uniswap/default-token-list still ships tokens for Ropsten (chainId 3) and Rinkeby (chainId 4), both removed from viem/chains. combineTokenLists caught the buildNativeToken throw but logged it via console.error before ignoring it, producing noise on every cold load. Extend the existing safeParse filter to also drop tokens whose chainId is not present in viem/chains, mirroring the existing non-EVM drop. This removes the throw at source and keeps tokensByChainId free of unreachable buckets. Closes #465 --- src/hooks/useTokenLists.test.ts | 23 +++++++++++++++++++++++ src/hooks/useTokenLists.ts | 10 +++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index 6763fcaf..93ad81f0 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -222,6 +222,29 @@ describe('useTokenLists', () => { expect(nativeToken?.symbol).toBe('ETH') }) + it('filters out tokens whose chainId is not present in viem/chains and does not log', () => { + // biome-ignore lint/suspicious/noExplicitAny: mocking internal combine param + vi.mocked(tanstackQuery.useSuspenseQueries).mockImplementation(({ combine }: any) => { + const ropstenToken: Token = { + address: '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6', + chainId: 3, + decimals: 18, + name: 'Wrapped Ether (Ropsten)', + symbol: 'WETH', + } + return combine([mockSuspenseQueryResult([mockToken1, ropstenToken])]) + }) + + const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => {}) + const { result } = renderHook(() => useTokenLists(), { wrapper }) + + expect(result.current.tokens.some((t) => t.chainId === 3)).toBe(false) + expect(result.current.tokensByChainId[3]).toBeUndefined() + expect(errorSpy).not.toHaveBeenCalled() + + errorSpy.mockRestore() + }) + it('filters out tokens that fail schema validation', () => { // biome-ignore lint/suspicious/noExplicitAny: mocking internal combine param vi.mocked(tanstackQuery.useSuspenseQueries).mockImplementation(({ combine }: any) => { diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 8f53e944..7a9370df 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -110,12 +110,14 @@ function combineTokenLists(results: Array<UseSuspenseQueryResult<TokenList>>): T .flatMap((result) => result.data.tokens) // tokenSchema enforces EVM address format (0x + 40 hex chars), so non-EVM entries // (e.g. Solana tokens from @uniswap/default-token-list v18+) are silently dropped here. + // Tokens whose chainId is not present in viem/chains (e.g. deprecated testnets like + // Ropsten/Rinkeby still shipped by @uniswap/default-token-list) are also dropped so + // buildNativeToken never throws and tokensByChainId stays free of unreachable buckets. // Supporting non-EVM chains would require changes to the address schema, chain config, // wallet integration, and contract lookup -- out of scope for this EVM-focused starter kit. .filter((token) => { - const result = tokenSchema.safeParse(token) - - return result.success + if (!tokenSchema.safeParse(token).success) return false + return supportedChainIds.has(token.chainId) }) .map((token) => [tokenKey(token), token]), ).values(), @@ -201,6 +203,8 @@ export async function fetchTokenList(url: string): Promise<TokenList> { } } +const supportedChainIds = new Set<number>(Object.values(chains).map((c) => c.id)) + /** * Builds a native token object based on the chain ID. * From c7ee0adc831af9792866cc88c8468c459e8bff8f Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:00:51 -0300 Subject: [PATCH 097/115] refactor(token-lists): replace supportedChainIds Set with shared chainsById Map Eliminates the double enumeration of viem/chains: the Set built for filter membership and the Object.values().find() in buildNativeToken both traversed the same data. A single module-level Map keyed by chain id serves both lookups, making buildNativeToken an O(1) get instead of O(n) find. Also flattens the two-statement filter predicate into a single && expression and condenses the 7-line inline comment to the essential WHY. --- src/hooks/useTokenLists.ts | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 7a9370df..0a1d8e9f 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -108,17 +108,11 @@ function combineTokenLists(results: Array<UseSuspenseQueryResult<TokenList>>): T new Map( results .flatMap((result) => result.data.tokens) - // tokenSchema enforces EVM address format (0x + 40 hex chars), so non-EVM entries - // (e.g. Solana tokens from @uniswap/default-token-list v18+) are silently dropped here. - // Tokens whose chainId is not present in viem/chains (e.g. deprecated testnets like - // Ropsten/Rinkeby still shipped by @uniswap/default-token-list) are also dropped so - // buildNativeToken never throws and tokensByChainId stays free of unreachable buckets. - // Supporting non-EVM chains would require changes to the address schema, chain config, - // wallet integration, and contract lookup -- out of scope for this EVM-focused starter kit. - .filter((token) => { - if (!tokenSchema.safeParse(token).success) return false - return supportedChainIds.has(token.chainId) - }) + // tokenSchema enforces EVM address format, so non-EVM entries (e.g. Solana in + // @uniswap/default-token-list v18+) are dropped. Tokens on chainIds absent from + // viem/chains are also dropped, so buildNativeToken cannot throw and + // tokensByChainId never accumulates unreachable buckets. + .filter((token) => tokenSchema.safeParse(token).success && chainsById.has(token.chainId)) .map((token) => [tokenKey(token), token]), ).values(), ) @@ -203,7 +197,7 @@ export async function fetchTokenList(url: string): Promise<TokenList> { } } -const supportedChainIds = new Set<number>(Object.values(chains).map((c) => c.id)) +const chainsById = new Map(Object.values(chains).map((c) => [c.id, c])) /** * Builds a native token object based on the chain ID. @@ -212,7 +206,7 @@ const supportedChainIds = new Set<number>(Object.values(chains).map((c) => c.id) * @returns The native token object. */ function buildNativeToken(chainId: Token['chainId']): Token { - const tokenInfo = Object.values(chains).find((chain) => chain.id === chainId)?.nativeCurrency + const tokenInfo = chainsById.get(chainId)?.nativeCurrency if (!tokenInfo) { throw new Error(`Native token not found for chain ID: ${chainId}`) From 72059eb326ac4aede89167474408b02750ab7a14 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:04:04 -0300 Subject: [PATCH 098/115] fix(token-lists): annotate chainsById key as number to satisfy tsc --- src/hooks/useTokenLists.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index 0a1d8e9f..baffc23a 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -197,7 +197,9 @@ export async function fetchTokenList(url: string): Promise<TokenList> { } } -const chainsById = new Map(Object.values(chains).map((c) => [c.id, c])) +const chainsById: Map<number, (typeof chains)[keyof typeof chains]> = new Map( + Object.values(chains).map((c) => [c.id, c]), +) /** * Builds a native token object based on the chain ID. From fc65ac96ac9354c484dbae7f8ffedecf600f134c Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:13:54 -0300 Subject: [PATCH 099/115] fix(token-lists): preserve first-wins semantics in chainsById and drop dead catch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit viem/chains exports 702 chain objects spanning 675 unique IDs; 27 export names share a chainId, and 10 of those collisions have divergent nativeCurrency. The previous Map(...map) construction was last-wins, silently changing buildNativeToken results versus the original find()-first-wins behaviour for chainIds 9, 166, 260, 999, 1001, 1337, 8217, 9496, 200810, 200901 -- most consequentially chainId 1337 (Localhost ETH/18 → Tempo USD/6). Replace with an explicit first-wins loop. Hoist chainsById to the top of the module so both the filter in combineTokenLists and buildNativeToken reference the same declaration without a forward-reference. After the chainsById.has(token.chainId) filter, every token entering the reduce accumulator has a known chain, making the try/catch/console.error branch unreachable. Remove it; the throw inside buildNativeToken remains as a defensive invariant for callers that bypass the filter. Add a positive-survival assertion to the unsupported-chainId test to guard against future filter inversions silently dropping valid tokens. --- src/hooks/useTokenLists.test.ts | 1 + src/hooks/useTokenLists.ts | 24 ++++++++---------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/hooks/useTokenLists.test.ts b/src/hooks/useTokenLists.test.ts index 93ad81f0..a68e229a 100644 --- a/src/hooks/useTokenLists.test.ts +++ b/src/hooks/useTokenLists.test.ts @@ -241,6 +241,7 @@ describe('useTokenLists', () => { expect(result.current.tokens.some((t) => t.chainId === 3)).toBe(false) expect(result.current.tokensByChainId[3]).toBeUndefined() expect(errorSpy).not.toHaveBeenCalled() + expect(result.current.tokens.some((t) => t.address === mockToken1.address)).toBe(true) errorSpy.mockRestore() }) diff --git a/src/hooks/useTokenLists.ts b/src/hooks/useTokenLists.ts index baffc23a..38c4397c 100644 --- a/src/hooks/useTokenLists.ts +++ b/src/hooks/useTokenLists.ts @@ -13,6 +13,11 @@ import { type Token, type TokenList, tokenSchema } from '@/src/types/token' import { logger } from '@/src/utils/logger' import tokenListsCache, { type TokensMap, updateTokenListsCache } from '@/src/utils/tokenListsCache' +const chainsById: Map<number, (typeof chains)[keyof typeof chains]> = new Map() +for (const chain of Object.values(chains)) { + if (!chainsById.has(chain.id)) chainsById.set(chain.id, chain) +} + /** * Loads and processes token lists from configured sources * @@ -122,18 +127,9 @@ function combineTokenLists(results: Array<UseSuspenseQueryResult<TokenList>>): T const tokensMap = uniqueTokens.reduce<TokensMap>( (acc, token) => { if (!acc.tokensByChainId[token.chainId]) { - try { - // if there's a native token for the chain - const nativeToken = buildNativeToken(token.chainId) - - // add it to the list - acc.tokensByChainId[token.chainId] = [nativeToken] - acc.tokens.push(nativeToken) - } catch (err) { - console.error(err) - // if there's no native token for the chain, ignore the error - acc.tokensByChainId[token.chainId] = [] - } + const nativeToken = buildNativeToken(token.chainId) + acc.tokensByChainId[token.chainId] = [nativeToken] + acc.tokens.push(nativeToken) } acc.tokens.push(token) @@ -197,10 +193,6 @@ export async function fetchTokenList(url: string): Promise<TokenList> { } } -const chainsById: Map<number, (typeof chains)[keyof typeof chains]> = new Map( - Object.values(chains).map((c) => [c.id, c]), -) - /** * Builds a native token object based on the chain ID. * From 6e2d2a6334300560f74a20d98fe5978b15d88695 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:30:00 -0300 Subject: [PATCH 100/115] fix: pair logger.timeEnd for 'updating tokens cache' in useTokens The third logger.time call in updateTokensBalances was never ended, causing repeated "Timer 'updating tokens cache' already exists" warnings on every recompute of the useMemo that wraps the function. Closes #467 --- src/hooks/useTokens.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 776e1c1b..d127dc45 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -226,6 +226,7 @@ export function updateTokensBalances( }, {} as TokensMap['tokensByChainId'], ) + logger.timeEnd('updating tokens cache') return { tokens: tokensWithBalances, tokensByChainId: tokensByChain } } From 922dacc073b0b1a3a57a415f525ec1ecb0df96ae Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 12:42:20 -0300 Subject: [PATCH 101/115] fix(use-tokens): route LI.FI RPC calls through configured transports Extract RPC URL strings from networks.config.ts into an exported `rpcUrls` map (single source of truth) and pass them to LI.FI's createConfig via the `rpcUrls` option. Without this, LI.FI's EVM provider fell back to hardcoded default RPCs from the li.quest API (arb1.arbitrum.io for Arbitrum), which hit CORS blocks and 429 rate limits, causing getTokenBalances to fail entirely. Closes #469 --- src/hooks/useTokens.ts | 4 ++++ src/lib/networks.config.ts | 24 ++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 776e1c1b..4c106798 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -14,6 +14,7 @@ import { type Address, type Chain, formatUnits } from 'viem' import { env } from '@/src/env' import { useTokenLists } from '@/src/hooks/useTokenLists' import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { rpcUrls } from '@/src/lib/networks.config' import type { Token, Tokens } from '@/src/types/token' import { toLocalNativeAddress } from '@/src/utils/address' import { logger } from '@/src/utils/logger' @@ -25,6 +26,9 @@ const BALANCE_EXPIRATION_TIME = 32_000 export const lifiConfig = createConfig({ integrator: env.PUBLIC_APP_NAME, providers: [EVM()], + rpcUrls: Object.fromEntries( + Object.entries(rpcUrls).map(([chainId, url]) => [Number(chainId), [url]]), + ), }) /** diff --git a/src/lib/networks.config.ts b/src/lib/networks.config.ts index f1f8c0d5..7431ce27 100644 --- a/src/lib/networks.config.ts +++ b/src/lib/networks.config.ts @@ -16,14 +16,22 @@ const allChains = [...devChains, ...prodChains] as const export const chains = includeTestnets ? allChains : prodChains export type ChainsIds = (typeof chains)[number]['id'] +export const rpcUrls = { + [mainnet.id]: env.PUBLIC_RPC_MAINNET || 'https://ethereum-rpc.publicnode.com', + [arbitrum.id]: env.PUBLIC_RPC_ARBITRUM || 'https://arbitrum-one-rpc.publicnode.com', + [optimism.id]: env.PUBLIC_RPC_OPTIMISM || 'https://optimism-rpc.publicnode.com', + [optimismSepolia.id]: + env.PUBLIC_RPC_OPTIMISM_SEPOLIA || 'https://optimism-sepolia-rpc.publicnode.com', + [polygon.id]: env.PUBLIC_RPC_POLYGON || 'https://polygon-bor-rpc.publicnode.com', + [sepolia.id]: env.PUBLIC_RPC_SEPOLIA || 'https://ethereum-sepolia-rpc.publicnode.com', +} as const satisfies Record<ChainsIds, string> + type RestrictedTransports = Record<ChainsIds, Transport> export const transports: RestrictedTransports = { - [mainnet.id]: http(env.PUBLIC_RPC_MAINNET || 'https://ethereum-rpc.publicnode.com'), - [arbitrum.id]: http(env.PUBLIC_RPC_ARBITRUM || 'https://arbitrum-one-rpc.publicnode.com'), - [optimism.id]: http(env.PUBLIC_RPC_OPTIMISM || 'https://optimism-rpc.publicnode.com'), - [optimismSepolia.id]: http( - env.PUBLIC_RPC_OPTIMISM_SEPOLIA || 'https://optimism-sepolia-rpc.publicnode.com', - ), - [polygon.id]: http(env.PUBLIC_RPC_POLYGON || 'https://polygon-bor-rpc.publicnode.com'), - [sepolia.id]: http(env.PUBLIC_RPC_SEPOLIA || 'https://ethereum-sepolia-rpc.publicnode.com'), + [mainnet.id]: http(rpcUrls[mainnet.id]), + [arbitrum.id]: http(rpcUrls[arbitrum.id]), + [optimism.id]: http(rpcUrls[optimism.id]), + [optimismSepolia.id]: http(rpcUrls[optimismSepolia.id]), + [polygon.id]: http(rpcUrls[polygon.id]), + [sepolia.id]: http(rpcUrls[sepolia.id]), } From 5341cf63327f41870f778f035c5ec5e848f86002 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 13:14:56 -0300 Subject: [PATCH 102/115] fix(use-tokens): route LI.FI RPC calls through configured transports Extract rpcUrls into a shared map and derive lifiRpcUrls from it so LI.FI's createConfig receives the project-configured endpoints instead of its bundled defaults. Fixes CORS errors and 429s on Arbitrum. --- src/hooks/useTokens.ts | 6 +-- src/lib/networks.config.test.ts | 77 +++++++++++++++++++++++++++++++++ src/lib/networks.config.ts | 10 +++++ 3 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 src/lib/networks.config.test.ts diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 2a7e9f2a..10c9e87d 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -14,7 +14,7 @@ import { type Address, type Chain, formatUnits } from 'viem' import { env } from '@/src/env' import { useTokenLists } from '@/src/hooks/useTokenLists' import { useWeb3Status } from '@/src/hooks/useWeb3Status' -import { rpcUrls } from '@/src/lib/networks.config' +import { lifiRpcUrls } from '@/src/lib/networks.config' import type { Token, Tokens } from '@/src/types/token' import { toLocalNativeAddress } from '@/src/utils/address' import { logger } from '@/src/utils/logger' @@ -26,9 +26,7 @@ const BALANCE_EXPIRATION_TIME = 32_000 export const lifiConfig = createConfig({ integrator: env.PUBLIC_APP_NAME, providers: [EVM()], - rpcUrls: Object.fromEntries( - Object.entries(rpcUrls).map(([chainId, url]) => [Number(chainId), [url]]), - ), + rpcUrls: lifiRpcUrls, }) /** diff --git a/src/lib/networks.config.test.ts b/src/lib/networks.config.test.ts new file mode 100644 index 00000000..480cce87 --- /dev/null +++ b/src/lib/networks.config.test.ts @@ -0,0 +1,77 @@ +import { arbitrum, mainnet, optimism, optimismSepolia, polygon, sepolia } from 'viem/chains' +import { describe, expect, it, vi } from 'vitest' + +const CUSTOM_ARBITRUM_RPC = 'https://custom.example/arbitrum' + +vi.mock('@/src/env', () => ({ + env: { + PUBLIC_APP_NAME: 'test', + PUBLIC_INCLUDE_TESTNETS: true, + PUBLIC_RPC_ARBITRUM: CUSTOM_ARBITRUM_RPC, + }, +})) + +vi.mock('@/src/constants/common', () => ({ + includeTestnets: true, +})) + +const { chains, rpcUrls, lifiRpcUrls } = await import('@/src/lib/networks.config') + +const ALL_CHAIN_IDS = [ + mainnet.id, + arbitrum.id, + optimism.id, + optimismSepolia.id, + polygon.id, + sepolia.id, +] + +describe('rpcUrls', () => { + it('covers every configured chain', () => { + for (const id of ALL_CHAIN_IDS) { + expect(rpcUrls).toHaveProperty(String(id)) + expect(typeof rpcUrls[id as keyof typeof rpcUrls]).toBe('string') + expect(rpcUrls[id as keyof typeof rpcUrls].length).toBeGreaterThan(0) + } + }) + + it('uses the env-supplied URL when set', () => { + expect(rpcUrls[arbitrum.id]).toBe(CUSTOM_ARBITRUM_RPC) + }) + + it('falls back to publicnode.com when env var is absent', () => { + expect(rpcUrls[mainnet.id]).toContain('publicnode.com') + expect(rpcUrls[optimism.id]).toContain('publicnode.com') + expect(rpcUrls[polygon.id]).toContain('publicnode.com') + }) +}) + +describe('lifiRpcUrls', () => { + it('covers the same chain IDs as rpcUrls', () => { + const rpcKeys = Object.keys(rpcUrls).map(Number).sort() + const lifiKeys = Object.keys(lifiRpcUrls).map(Number).sort() + expect(lifiKeys).toEqual(rpcKeys) + }) + + it('wraps each rpcUrls value in a single-element array', () => { + for (const id of ALL_CHAIN_IDS) { + const lifiEntry = lifiRpcUrls[id as keyof typeof lifiRpcUrls] + expect(Array.isArray(lifiEntry)).toBe(true) + expect(lifiEntry).toHaveLength(1) + expect(lifiEntry[0]).toBe(rpcUrls[id as keyof typeof rpcUrls]) + } + }) + + it('propagates the env-supplied URL', () => { + expect(lifiRpcUrls[arbitrum.id]).toEqual([CUSTOM_ARBITRUM_RPC]) + }) +}) + +describe('chains', () => { + it('contains all chain IDs covered by rpcUrls when testnets enabled', () => { + const chainIds = chains.map((c) => c.id) + for (const id of ALL_CHAIN_IDS) { + expect(chainIds).toContain(id) + } + }) +}) diff --git a/src/lib/networks.config.ts b/src/lib/networks.config.ts index 7431ce27..c79b0420 100644 --- a/src/lib/networks.config.ts +++ b/src/lib/networks.config.ts @@ -26,6 +26,16 @@ export const rpcUrls = { [sepolia.id]: env.PUBLIC_RPC_SEPOLIA || 'https://ethereum-sepolia-rpc.publicnode.com', } as const satisfies Record<ChainsIds, string> +/** RPC URL map in the shape expected by LI.FI's `createConfig({ rpcUrls })`. */ +export const lifiRpcUrls: Record<ChainsIds, string[]> = { + [mainnet.id]: [rpcUrls[mainnet.id]], + [arbitrum.id]: [rpcUrls[arbitrum.id]], + [optimism.id]: [rpcUrls[optimism.id]], + [optimismSepolia.id]: [rpcUrls[optimismSepolia.id]], + [polygon.id]: [rpcUrls[polygon.id]], + [sepolia.id]: [rpcUrls[sepolia.id]], +} + type RestrictedTransports = Record<ChainsIds, Transport> export const transports: RestrictedTransports = { [mainnet.id]: http(rpcUrls[mainnet.id]), From fb803fe9364453e9068a7ff21aee1f4bc2d3d14c Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:08:02 -0300 Subject: [PATCH 103/115] chore: sync SDLC files with bootnode-sdlc starter-kit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove legacy pull_request_template.md, bug_report.md, feature_request.md - Replace .github/PULL_REQUEST_TEMPLATE.md with current starter-kit version (adds "No related issue" hint, splits Test plan, adds Screenshots section) - Replace issue templates 1-bug, 2-feature, 3-epic with starter-kit versions (unifies Severity → Priority across all issue types) - Replace .claude/skills/issue/SKILL.md (renamed to sdlc:issue, priority unified) - Add .claude/skills/create-pr/ skill (new) - Update AGENTS.md to match starter-kit wording - Smart-merge CLAUDE.md: add "No related issue" guidance, unify Label Conventions to single Priority table, update skill references to sdlc:issue and sdlc:create-pr Closes #472 --- .claude/skills/create-pr/SKILL.md | 203 ++++++++++++++++++++ .claude/skills/create-pr/get-base-branch.sh | 60 ++++++ .claude/skills/create-pr/get-reviewers.sh | 34 ++++ .claude/skills/issue/SKILL.md | 46 +++-- .github/ISSUE_TEMPLATE/1-bug.yml | 18 +- .github/ISSUE_TEMPLATE/2-feature.yml | 15 +- .github/ISSUE_TEMPLATE/3-epic.yml | 15 +- .github/ISSUE_TEMPLATE/bug_report.md | 27 --- .github/ISSUE_TEMPLATE/feature_request.md | 19 -- .github/PULL_REQUEST_TEMPLATE.md | 18 +- AGENTS.md | 4 +- CLAUDE.md | 22 +-- pull_request_template.md | 36 ---- 13 files changed, 392 insertions(+), 125 deletions(-) create mode 100644 .claude/skills/create-pr/SKILL.md create mode 100755 .claude/skills/create-pr/get-base-branch.sh create mode 100755 .claude/skills/create-pr/get-reviewers.sh delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 pull_request_template.md diff --git a/.claude/skills/create-pr/SKILL.md b/.claude/skills/create-pr/SKILL.md new file mode 100644 index 00000000..a15bc923 --- /dev/null +++ b/.claude/skills/create-pr/SKILL.md @@ -0,0 +1,203 @@ +--- +name: sdlc:create-pr +description: Use when creating a pull request -- reads the PR template, auto-fills from git context and linked issue, confirms with the user, then creates via gh CLI. +--- + +# /sdlc:create-pr + +Create a well-structured GitHub pull request by reading the repo's PR template and filling it from context. + +**Core principle:** Templates own the format. Context owns the content. User owns the final word. + +## Template Location + +Read `.github/PULL_REQUEST_TEMPLATE.md` relative to the project root on every invocation. This path is fixed -- do not search for it. + +## Core Pattern + +1. **Gather** -- Collect all inputs silently. Ask only when auto-derivation fails. +2. **Draft** -- Fill every template section from the gathered context. +3. **Confirm** -- Show the full draft. Wait for explicit approval. Iterate. +4. **Create** -- Run `gh pr create` with `--body-file`. Report the URL. + +## Step 1: Gather + +**Auto-derive (no user interaction):** + +- Read `.github/PULL_REQUEST_TEMPLATE.md` +- Run `git diff <base>...HEAD` -- the branch diff +- Run `git log <base>..HEAD --oneline` -- the commit history +- Extract issue number from branch name (pattern: `type/NNN-description`, e.g., `feat/17-add-skill` → `#17`) +- If issue number found, run `gh issue view NNN --json title,body,labels` and extract acceptance criteria from the body + +**Ask when needed (use multiple-choice where possible):** + +| Question | When | Options | +|----------|------|---------| +| "Which issue does this PR close?" | Branch name has no issue number | List of recent open issues (via `gh issue list --state open --limit 5 --json number,title`) + "None" + Other | +| "PR type?" | Always; pre-select "Ready for review" | "Ready for review" / "Draft" | +| "Base branch?" | Always; **must be asked even when auto-detected** -- the auto-detected value is the pre-selected default, not a reason to skip | Branch we branched from (auto-detected via `git merge-base` against known remote branches; pre-selected as default) / `develop` (if present in remote) / `main` / Other | +| "Who should review this PR?" | Always; multi-select | All reviewers returned by script (see below), in order, plus "Other" as the last option | +| "Who should this PR be assigned to?" | Always; pre-select "Me" | "Me" (resolved via `gh api user --jq '.login'`) / "Nobody" (default if "Me" feels presumptuous) / Other | +| "Which checklist items have you completed?" | Always; multi-select; zero selections is valid (means none completed yet) | "Self-reviewed my own diff" / "Tests added or updated" / "Docs updated (if applicable)" / "No unrelated changes bundled in" | +| "Will you add screenshots to this PR?" | Always | "Yes, I'll add them after creation" / "No" (default) | + +### Helper scripts + +**IMPORTANT:** Do NOT run `bash .claude/skills/create-pr/*.sh` directly -- that path only works for project-local installs. Always use the commands below, which resolve the script location first. + +Auto-detect base branch: + +```bash +if [[ -f .claude/skills/create-pr/get-base-branch.sh ]]; then bash .claude/skills/create-pr/get-base-branch.sh; elif [[ -f "$HOME/.claude/skills/create-pr/get-base-branch.sh" ]]; then bash "$HOME/.claude/skills/create-pr/get-base-branch.sh"; fi +``` + +It outputs the branch name (e.g., `main`, `develop`) whose merge-base with HEAD is most recent -- i.e., the branch we most likely forked from. Present it as the pre-selected default in the base branch question. + +Fetch recent reviewers: + +```bash +if [[ -f .claude/skills/create-pr/get-reviewers.sh ]]; then bash .claude/skills/create-pr/get-reviewers.sh; elif [[ -f "$HOME/.claude/skills/create-pr/get-reviewers.sh" ]]; then bash "$HOME/.claude/skills/create-pr/get-reviewers.sh"; fi +``` + +It outputs up to 4 reviewer logins, one per line, ordered most-recent-first (excludes the current user; falls back to alphabetical collaborators for new repos). Show every login the script returns as an option, in the exact order returned. Add "Other" as the last option. Do not add a "Skip" or "None" option -- if the user wants no reviewers, they select only "Other" and leave it empty. + +Do not add labels to the PR. Labels are managed separately. + +## Step 2: Draft + +### PR Title + +Conventional commit format: `type(scope): subject` or `type: subject`. + +Allowed types: `feat`, `fix`, `docs`, `test`, `ci`, `refactor`, `perf`, `chore`, `revert`, `wip`, `build`, `style`, `release`. + +<!-- Standard Conventional Commits prefixes only, matching the types documented in CLAUDE.md. Projects adopting this starter kit can extend this list to suit their conventions. --> + +- Derive from branch name and commit history +- Scope is optional +- Subject: lowercase, imperative mood, no trailing period + +### PR Body + +Fill every section in template order. Strip all HTML comments (`<!-- ... -->`). + +#### Summary + +First line: `Closes #` + +If no linked issue, first line: `No related issue. <one sentence motivation>` + +Followed by 1-3 sentences synthesizing commits and issue description, focused on *why* not *what*. If no issue is linked, derive from commits and branch name only. + +#### Changes + +Bullet list. Each bullet = one discrete change from the diff or commit messages. + +#### Acceptance criteria + +- **Issue has AC:** Mirror as checkboxes. Check off items the diff demonstrates are fulfilled. +- **Issue has no AC, or no issue:** Suggest AC based on the changes made. Present as unchecked checkboxes. +- **AC diverged from issue:** Note it explicitly. Example: "Note: criterion X was moved to #M" or "Added: Y discovered during implementation." + +#### Test plan + +Two subsections, always present: + +##### Automated tests +List test files added/modified in the diff and the command to run them. If none: `No automated tests added.` + +##### Manual verification +If the change has user-facing or integration behavior, list manual steps. If purely internal: `No manual steps required.` + +#### Breaking changes + +If breaking changes detected (API changes, removed exports, schema changes): describe what breaks and migration steps. + +If none: `None.` + +#### Checklist + +Render all four items based on the user's selections from the Gather step: + +- Items selected by the user → `- [x] <item>` +- Items not selected → `- [ ] <item>` + +The four items, in order: + +1. Self-reviewed my own diff +2. Tests added or updated +3. Docs updated (if applicable) +4. No unrelated changes bundled in + +#### Screenshots + +Based on the Step 1 answer: + +- "Yes": `To be added after PR creation.` (remind user to attach via GitHub UI) +- "No" (default): `None.` + +**The section is always present.** + +## Step 3: Confirm + +Show to the user: +- PR title +- Complete body (all sections, no HTML comments) +- Target base branch +- The exact `gh pr create` command that will run + +Wait for explicit approval. Accept edits to any section. Loop until approved. + +## Step 4: Create + +```bash +BODY_FILE=$(mktemp /tmp/gh_pr_body_XXXXXX) + +# Replace the placeholder below with the actual drafted PR body: +cat > "$BODY_FILE" << 'EOF' +{{PR_BODY}} +EOF + +gh pr create \ + --title "<title>" \ + --base "<base-branch>" \ + --body-file "$BODY_FILE" \ + [--reviewer <handle> ...] \ + [--assignee <handle>] +``` + +Add `--draft` if user selected "Draft" in Step 1. Add one `--reviewer <handle>` flag per reviewer selected in Step 1; if "Other" was selected, use the handle the user provided. Add `--assignee <handle>` using the resolved login if "Me" or "Other" was selected; omit if "Nobody". + +After reporting the PR URL: if the user selected "Yes" for screenshots in Step 1, remind them to attach screenshots via the GitHub UI. + +## Edge Cases + +### Branch is behind base +Present options: +1. **Continue as-is** -- create the PR and note it's behind +2. **Rebase onto base** -- run `git rebase <base>`; if conflicts, help resolve +3. **Merge base in** -- run `git merge <base>`; if conflicts, help resolve +4. **Abort** -- stop; do not create the PR + +### No commits ahead of base +Stop. "No commits ahead of `<base>`. Nothing to create a PR from." + +## Common Mistakes + +- **Reconstructing the template from memory** -- read `.github/PULL_REQUEST_TEMPLATE.md` every time. +- **Generating an ad-hoc format** -- every section from the template must appear, in template order. +- **Creating before confirmation** -- never run `gh pr create` without explicit user approval. +- **Leaving HTML comments** -- strip all `<!-- ... -->` from the output. +- **Silently omitting `Closes #`** -- if no issue, say so explicitly on the first line. +- **Deleting empty sections** -- Breaking changes and Screenshots are always present; use `None.` +- **Ignoring AC divergence** -- note explicitly when PR criteria differ from the issue's. +- **Skipping the base-branch question** -- always present it. Auto-detection provides the default, not the answer. + +## Installation + +This skill includes helper scripts alongside `SKILL.md`. When installing or updating, copy (or symlink) the **entire `create-pr/` directory** -- not just `SKILL.md`. All files in this directory are required: + +- `SKILL.md` -- skill definition +- `get-base-branch.sh` -- auto-detects the base branch +- `get-reviewers.sh` -- fetches recent reviewer logins diff --git a/.claude/skills/create-pr/get-base-branch.sh b/.claude/skills/create-pr/get-base-branch.sh new file mode 100755 index 00000000..6bc2d1ff --- /dev/null +++ b/.claude/skills/create-pr/get-base-branch.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Find the base branch: the most likely target for a pull request. +# +# Strategy: pick the remote branch whose merge-base with HEAD is most recent +# (i.e., the branch we most likely forked from). This works even when the +# base branch has advanced past the fork point. +# +# 1. Check well-known stable branches first (main, master, develop, staging). +# Among those that exist, pick the one with the closest merge-base to HEAD. +# 2. If none match, fall back to any remote branch with the closest merge-base. + +current=$(git rev-parse --abbrev-ref HEAD) + +# Priority 1: well-known base branches -- pick closest merge-base +best_branch="" +best_ts=0 + +for candidate in main master develop staging; do + ref="origin/$candidate" + git rev-parse --verify "$ref" >/dev/null 2>&1 || continue + [[ "$candidate" == "$current" ]] && continue + mb=$(git merge-base HEAD "$ref" 2>/dev/null) || continue + ts=$(git log -1 --format=%ct "$mb" 2>/dev/null) || continue + [[ -n "$ts" ]] || continue + if (( ts > best_ts )); then + best_ts=$ts + best_branch=$candidate + fi +done + +if [[ -n "$best_branch" ]]; then + echo "$best_branch" + exit 0 +fi + +# Priority 2: any other remote branch, pick closest merge-base +best_branch="" +best_ts=0 + +while IFS= read -r ref; do + branch="${ref#origin/}" + [[ "$branch" == "HEAD" ]] && continue + [[ "$branch" == "$current" ]] && continue + mb=$(git merge-base HEAD "$ref" 2>/dev/null) || continue + ts=$(git log -1 --format=%ct "$mb" 2>/dev/null) || continue + [[ -n "$ts" ]] || continue + if (( ts > best_ts )); then + best_ts=$ts + best_branch=$branch + fi +done < <(git for-each-ref --format='%(refname:short)' refs/remotes/origin/) + +if [[ -z "$best_branch" ]]; then + echo "No base branch found" >&2 + exit 1 +fi + +echo "$best_branch" diff --git a/.claude/skills/create-pr/get-reviewers.sh b/.claude/skills/create-pr/get-reviewers.sh new file mode 100755 index 00000000..733e3753 --- /dev/null +++ b/.claude/skills/create-pr/get-reviewers.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euo pipefail + +me=$(gh api user --jq '.login' 2>/dev/null) || true + +# Attempt: recent PR reviewers sorted by most-recent-first +reviewers=$( + gh pr list --state all --limit 20 --json reviews \ + --jq " + [ .[].reviews[] + | { login: .author.login, ts: .submittedAt } + ] + | sort_by(.ts) | reverse + | map(.login) + | map(select(. != \"$me\")) + | reduce .[] as \$x ( + { seen: {}, out: [] }; + if .seen[\$x] then . else { seen: (.seen | .[\$x] = true), out: (.out + [\$x]) } end + ) + | .out[:4] + | .[] + " 2>/dev/null || true +) + +if [[ -n "$reviewers" ]]; then + echo "$reviewers" + exit 0 +fi + +# Fallback: collaborators (alphabetical, excluding self) +repo=$(gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null) || exit 0 +gh api "/repos/$repo/collaborators" \ + --jq "[ .[].login | select(. != \"$me\") ] | sort | .[:4] | .[]" \ + 2>/dev/null || true diff --git a/.claude/skills/issue/SKILL.md b/.claude/skills/issue/SKILL.md index 806f9391..69987385 100644 --- a/.claude/skills/issue/SKILL.md +++ b/.claude/skills/issue/SKILL.md @@ -1,9 +1,9 @@ --- -name: issue +name: sdlc:issue description: Use when creating a GitHub issue from a brief -- bug, feature, epic, or spike -- against the repo's GitHub issue templates via gh CLI. --- -# /issue +# /sdlc:issue Create a well-structured GitHub issue using the repo's own templates and `gh` CLI. @@ -18,28 +18,50 @@ Create a well-structured GitHub issue using the repo's own templates and `gh` CL 5. **Confirm** -- Show full draft including labels. Wait for explicit approval. Iterate until approved. 6. **Create** -- Write body to temp file, run `gh issue create` with all labels, report issue URL. +## Title Format + +Issue titles must be **natural language, sentence case** (code terms and command names retain their canonical casing) -- no conventional commit prefixes, no scope tags. + +Conventional commit format (`type(scope): subject`) is for **commits and PR titles only**. It is not appropriate for issue titles, which appear in GitHub's issue list and must be scannable at a glance. + +**Good:** +- `Issue skill defaults to conventional commit format for titles` +- `mktemp fails with .md suffix` +- `Add natural language title guidance to issue skill` + +**Bad:** +- `fix(skills): mktemp fails with .md suffix` +- `fix: issue skill defaults to conventional commit format` +- `feat(issue): add title guidance` + +Rule: if a reader has to mentally strip a prefix to understand the title, the title is wrong. + ## Template Map | Type | File | Type label | Additional labels | |---------|-----------------|---------------|---------------------------| -| Bug | `1-bug.yml` | `bug` | `severity: <level>` | +| Bug | `1-bug.yml` | `bug` | `priority: <level>` | | Feature | `2-feature.yml` | `enhancement` | `priority: <level>` | | Epic | `3-epic.yml` | `epic` | `priority: <level>` | | Spike | `4-spike.yml` | `spike` | -- | ## Labels -Severity and priority are applied as labels, not form dropdowns. See the Label Conventions section in `CLAUDE.md` for the full table and descriptions. +Priority is applied as a label, not a form dropdown. See the Label Conventions section in `CLAUDE.md` for the full table and descriptions. + +- Bugs, features, and epics each get a `priority: <level>` label. +- Spikes don't carry priority. +- If the brief doesn't specify a level, ask once using a numbered list -- never default silently: -- Bugs get a `severity: <level>` label (critical / high / medium / low). -- Features and epics get a `priority: <level>` label (high / medium / low). -- Spikes don't carry severity or priority. -- If the brief doesn't specify a level, ask once. Never default silently. + 1. Critical + 2. High + 3. Medium + 4. Low ## gh Command ```bash -BODY_FILE=$(mktemp /tmp/gh_issue_body.XXXXXX.md) +BODY_FILE=$(mktemp /tmp/gh_issue_body_XXXXXX) cat > "$BODY_FILE" << 'EOF' <body> @@ -48,11 +70,11 @@ EOF gh issue create \ --title "<title>" \ --label "<type-label>" \ - --label "<severity-or-priority-label>" \ # omit for spikes + --label "<priority-label>" \ # omit for spikes --body-file "$BODY_FILE" ``` -Multiple `--label` flags can be chained. The type label is always present. The severity/priority label is added for bugs (severity), features, and epics (priority) -- omit it for spikes. +Multiple `--label` flags can be chained. The type label is always present. The priority label is added for bugs, features, and epics -- omit it for spikes. Optional flags: `--assignee "<username>"`, `--milestone "<name>"`, `--project "<name>"` @@ -61,4 +83,4 @@ Optional flags: `--assignee "<username>"`, `--milestone "<name>"`, `--project "< - **Skipping the template read** -- Field names and order come from the YAML, not assumptions. Read it every time. - **Pre-emptively asking for optional fields** -- Required fields are the floor. Let the user volunteer the rest. - **Creating before confirmation** -- Never run `gh` without explicit approval. Always show the full draft first. -- **Omitting severity/priority labels** -- Form dropdowns do not survive `gh` CLI creation. Always apply these as labels. +- **Omitting priority labels** -- Form dropdowns do not survive `gh` CLI creation. Always apply these as labels. diff --git a/.github/ISSUE_TEMPLATE/1-bug.yml b/.github/ISSUE_TEMPLATE/1-bug.yml index f7863826..f287be78 100644 --- a/.github/ISSUE_TEMPLATE/1-bug.yml +++ b/.github/ISSUE_TEMPLATE/1-bug.yml @@ -58,7 +58,7 @@ body: render: bash placeholder: | OS: macOS 15.3 - Node: 24.x + Node: 22.x Package: 1.0.0 validations: required: false @@ -66,18 +66,18 @@ body: - type: markdown attributes: value: | - > **Programmatic creation:** When using `gh` CLI or REST API, apply `severity: <level>` labels instead of using the Severity dropdown (e.g., `--label "severity: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. + > **Programmatic creation:** When using `gh` CLI or REST API, apply `priority: <level>` labels instead of using the Priority dropdown (e.g., `--label "priority: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. - type: dropdown - id: severity + id: priority attributes: - label: Severity - description: How much does this impact your work? + label: Priority + description: How urgently does this need to be addressed? options: - - Low — cosmetic or minor inconvenience - - Medium — broken feature, workaround exists - - High — broken feature, no workaround - - Critical — system down, data loss, or security issue + - Critical — blocking work, system down, or security issue + - High — must be addressed in current sprint + - Medium — should be addressed soon + - Low — nice to have, can wait validations: required: false diff --git a/.github/ISSUE_TEMPLATE/2-feature.yml b/.github/ISSUE_TEMPLATE/2-feature.yml index e1f798fa..725bdf8e 100644 --- a/.github/ISSUE_TEMPLATE/2-feature.yml +++ b/.github/ISSUE_TEMPLATE/2-feature.yml @@ -11,7 +11,20 @@ body: - type: markdown attributes: value: | - > **Priority:** When using `gh` CLI or REST API, apply `priority: <level>` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. + > **Programmatic creation:** When using `gh` CLI or REST API, apply `priority: <level>` labels instead of using the Priority dropdown (e.g., `--label "priority: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. + + - type: dropdown + id: priority + attributes: + label: Priority + description: How urgently does this need to be addressed? + options: + - Critical — blocking work, system down, or security issue + - High — must be addressed in current sprint + - Medium — should be addressed soon + - Low — nice to have, can wait + validations: + required: false - type: textarea id: user-story diff --git a/.github/ISSUE_TEMPLATE/3-epic.yml b/.github/ISSUE_TEMPLATE/3-epic.yml index fa51fa51..99b2badf 100644 --- a/.github/ISSUE_TEMPLATE/3-epic.yml +++ b/.github/ISSUE_TEMPLATE/3-epic.yml @@ -11,7 +11,20 @@ body: - type: markdown attributes: value: | - > **Priority:** When using `gh` CLI or REST API, apply `priority: <level>` labels (e.g., `--label "priority: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. + > **Programmatic creation:** When using `gh` CLI or REST API, apply `priority: <level>` labels instead of using the Priority dropdown (e.g., `--label "priority: high"`). See the Label Conventions section in `CLAUDE.md` for the full table. + + - type: dropdown + id: priority + attributes: + label: Priority + description: How urgently does this need to be addressed? + options: + - Critical — blocking work, system down, or security issue + - High — must be addressed in current sprint + - Medium — should be addressed soon + - Low — nice to have, can wait + validations: + required: false - type: textarea id: objective diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index b8e90d9d..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: bug -assignees: '' ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: - -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 5f0a04ce..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: enhancement -assignees: '' ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 85eec745..73fcc919 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,8 +1,9 @@ ## Summary -<!-- Why this change? What problem does it solve? Link motivation, not just mechanics. --> - Closes # +<!-- Or: No related issue. <motivation> --> + +<!-- Why this change? What problem does it solve? Link motivation, not just mechanics. --> ## Changes @@ -13,16 +14,19 @@ Closes # ## Acceptance criteria <!-- Mirror the criteria from the linked issue. Check them off as you go. --> +<!-- If criteria diverged from the issue (new discoveries, scope splits, etc.), note what changed and why. --> - [ ] ## Test plan -<!-- How was this tested? Commands, screenshots, recordings — show your work. --> +<!-- How was this tested? Include both automated and manual verification. --> -## Breaking changes +### Automated tests -<!-- If none, delete this section. If any, describe what breaks and migration steps. --> +### Manual verification + +## Breaking changes None. @@ -32,3 +36,7 @@ None. - [ ] Tests added or updated - [ ] Docs updated (if applicable) - [ ] No unrelated changes bundled in + +## Screenshots + +None. diff --git a/AGENTS.md b/AGENTS.md index b14931c8..7f0d014b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,5 +1,5 @@ # Agent Configuration -This repo's agent configuration lives in [`CLAUDE.md`](./CLAUDE.md). +This project's agent configuration lives in [`CLAUDE.md`](./CLAUDE.md). -Claude Code reads `CLAUDE.md` natively. If your agent reads `AGENTS.md` (Cursor, Windsurf, etc.), load rules from `CLAUDE.md` -- it is the single source of truth for this repo's conventions and working rules. +Claude Code reads `CLAUDE.md` natively. If your agent reads `AGENTS.md` (Cursor, Windsurf, etc.), load rules from `CLAUDE.md` -- it is the single source of truth for this project's conventions, stack, and working rules. diff --git a/CLAUDE.md b/CLAUDE.md index f782a89f..aa0deee8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -61,35 +61,31 @@ Use [Conventional Commits](https://www.conventionalcommits.org/): ## PR Workflow - Every PR must reference an issue (`Closes #N`) + + > No related issue? Use `No related issue.` as the first line of the Summary section. + - Mirror the issue's acceptance criteria in the PR - Self-review your diff before requesting peer review - Keep PRs small and focused -- one issue, one PR - PR titles use the same conventional commit format (`feat: add user dashboard`) +- Use `/sdlc:create-pr` to create PRs -- it reads the template and fills every section automatically ## Label Conventions -GitHub form dropdowns (like the Severity field in `1-bug.yml`) only work through the web UI. When issues are created via `gh` CLI or REST API, dropdown values become unstructured body text -- not queryable, not consistent. **Labels are the API-reliable mechanism for structured metadata.** - -**Severity** (bugs only): - -| Label | Description | -|-------|-------------| -| `severity: critical` | System down, data loss, or security issue | -| `severity: high` | Broken feature, no workaround | -| `severity: medium` | Broken feature, workaround exists | -| `severity: low` | Cosmetic or minor inconvenience | +GitHub form dropdowns (like the Priority field in issue templates) only work through the web UI. When issues are created via `gh` CLI or REST API, dropdown values become unstructured body text -- not queryable, not consistent. **Labels are the API-reliable mechanism for structured metadata.** -**Priority** (features and epics): +**Priority** (bugs, features, and epics): | Label | Description | |-------|-------------| +| `priority: critical` | Blocking work, system down, or security issue | | `priority: high` | Must be addressed in current sprint | | `priority: medium` | Should be addressed soon | | `priority: low` | Nice to have, can wait | -Labels are queryable: `gh issue list --label "severity: high"`, `gh issue list --label "priority: medium"`. +Labels are queryable: `gh issue list --label "priority: high"`. -The `/issue` skill applies these labels automatically when creating issues via CLI. The bug template's severity dropdown is kept for web UI users but is not the source of truth for programmatic workflows. +The `/sdlc:issue` skill applies these labels automatically when creating issues via CLI. Bug, feature, and epic templates include a Priority dropdown for web UI users, but labels are the source of truth for programmatic workflows. ## Code Style diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 80f6191b..00000000 --- a/pull_request_template.md +++ /dev/null @@ -1,36 +0,0 @@ -Closes # - -# Description: - -(Please include a summary of the changes and the related issue) - -# Steps: - -(Required steps to reproduce or test the fix / feature) - -## Type of change: - -- [ ] New feature -- [ ] Bug fix -- [ ] Breaking change -- [ ] Enhancement -- [ ] Refactoring -- [ ] Chore - -# How Has This Been Tested? - -- [ ] Manual testing -- [ ] Automated tests -- [ ] Other (explain) - -# Remember to check that: - -- Your code follows the style guidelines of this project -- You have performed a self-review of your code -- You have commented your code in hard-to-understand areas -- You have made corresponding changes to the documentation -- Your changes generate no new warnings - -# Screenshots - -(Add screenshots or videos to help test this pull request) From 8615ab3c36ca467331ae0773d7601c6787220b9d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:17:52 -0300 Subject: [PATCH 104/115] fix(issue-template): update Node version placeholder to 24.x --- .github/ISSUE_TEMPLATE/1-bug.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/1-bug.yml b/.github/ISSUE_TEMPLATE/1-bug.yml index f287be78..c57894cd 100644 --- a/.github/ISSUE_TEMPLATE/1-bug.yml +++ b/.github/ISSUE_TEMPLATE/1-bug.yml @@ -58,7 +58,7 @@ body: render: bash placeholder: | OS: macOS 15.3 - Node: 22.x + Node: 24.x Package: 1.0.0 validations: required: false From d1c6ed644a6b5e10e12a0243687cbb11816f58ab Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:17:56 -0300 Subject: [PATCH 105/115] fix(skill): move inline comment above line continuation in issue create snippet --- .claude/skills/issue/SKILL.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.claude/skills/issue/SKILL.md b/.claude/skills/issue/SKILL.md index 69987385..169eea68 100644 --- a/.claude/skills/issue/SKILL.md +++ b/.claude/skills/issue/SKILL.md @@ -70,7 +70,8 @@ EOF gh issue create \ --title "<title>" \ --label "<type-label>" \ - --label "<priority-label>" \ # omit for spikes + # omit the next label for spikes + --label "<priority-label>" \ --body-file "$BODY_FILE" ``` From 165c16716c25029d2ba189605c8ad4474a6c2df9 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 14:53:33 -0300 Subject: [PATCH 106/115] feat(token-select): sort by positive balance by default when wallet connected - Add sortByBalance prop to TokenSelect / TokenInput / TokenDropdown; defaults to isWalletConnected so held tokens surface without any consumer-side change - Decouple balance fetch/sort from showBalance so the balance column and the sort are independent concerns; showBalance only controls the per-row balance column - Add updateTokensWithRawBalances export for on-chain multicall path - Add multicall fallback in useTokens: when the active chain is not covered by LI.FI (e.g. Sepolia), fetch ERC-20 balances via multicall and native balance via getBalance, then sort with the same sortFn - Add tests asserting positive-balance tokens precede zero-balance tokens and that source order is preserved within each group Closes #466 --- .../sharedComponents/TokenDropdown.tsx | 3 +- .../sharedComponents/TokenInput/index.tsx | 5 +- .../TokenSelect/List/TokenBalance.tsx | 10 +- .../sharedComponents/TokenSelect/index.tsx | 11 +- src/hooks/useTokens.test.ts | 107 +++++++++++++- src/hooks/useTokens.ts | 130 ++++++++++++++++-- 6 files changed, 244 insertions(+), 22 deletions(-) diff --git a/src/components/sharedComponents/TokenDropdown.tsx b/src/components/sharedComponents/TokenDropdown.tsx index 5e68f989..ba34631f 100644 --- a/src/components/sharedComponents/TokenDropdown.tsx +++ b/src/components/sharedComponents/TokenDropdown.tsx @@ -28,8 +28,9 @@ type Props = ComponentPropsWithoutRef<'span'> & TokenDropdownProps * @param {string} [props.placeholder] - Placeholder text for the search input. * @param {number} [props.containerHeight] - Height of the virtualized tokens list. * @param {number} [props.itemHeight] - Height of each item in the tokens list. - * @param {boolean} [props.showBalance] - Whether to show the token balance in the list. + * @param {boolean} [props.showBalance] - Whether to show the token balance column in each row. * @param {boolean} [props.showTopTokens] - Whether to show the top tokens section in the list. + * @param {boolean} [props.sortByBalance] - Sort tokens with a positive balance to the top, ordered by USD value descending. Defaults to true when a wallet is connected. * @param {ComponentPropsWithoutRef<'span'>} props.restProps - Additional props for the span element. * * @example diff --git a/src/components/sharedComponents/TokenInput/index.tsx b/src/components/sharedComponents/TokenInput/index.tsx index 7497c428..8fb86b61 100644 --- a/src/components/sharedComponents/TokenInput/index.tsx +++ b/src/components/sharedComponents/TokenInput/index.tsx @@ -58,8 +58,9 @@ type Props = FlexProps & TokenInputProps * @param {number} [props.iconSize=32] - Optional size of the token icon in the list. Default is 32. * @param {number} [props.itemHeight=64] - Optional height of each item in the list. Default is 64. * @param {boolean} [props.showAddTokenButton=false] - Optional flag to allow adding a token. Default is false. - * @param {boolean} [props.showBalance=false] - Optional flag to show the token balance in the list. Default is false. + * @param {boolean} [props.showBalance=false] - Optional flag to show the token balance column in each row. Default is false. * @param {boolean} [props.showTopTokens=false] - Optional flag to show the top tokens in the list. Default is false. + * @param {boolean} [props.sortByBalance] - Sort tokens with a positive balance to the top, ordered by USD value descending. Defaults to true when a wallet is connected. */ const TokenInput: FC<Props> = ({ containerHeight, @@ -73,6 +74,7 @@ const TokenInput: FC<Props> = ({ showBalance, showTopTokens, singleToken, + sortByBalance, thousandSeparator = true, title, tokenInput, @@ -230,6 +232,7 @@ const TokenInput: FC<Props> = ({ showAddTokenButton={showAddTokenButton} showBalance={showBalance} showTopTokens={showTopTokens} + sortByBalance={sortByBalance} > <CloseButton aria-label="Close" diff --git a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx index 56b702d6..ee960d00 100644 --- a/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx +++ b/src/components/sharedComponents/TokenSelect/List/TokenBalance.tsx @@ -73,14 +73,16 @@ const TokenBalance = withSuspenseAndRetry<TokenBalanceProps>(({ isLoading, token if (hasExtensions) { const balance = formatUnits((token.extensions?.balance ?? 0n) as bigint, token.decimals) - const value = ( - Number.parseFloat((token.extensions?.priceUSD ?? '0') as string) * Number.parseFloat(balance) - ).toFixed(2) + const priceUSD = token.extensions?.priceUSD as string | undefined + const usdLabel = + priceUSD !== undefined + ? `$ ${(Number.parseFloat(priceUSD) * Number.parseFloat(balance)).toFixed(2)}` + : NO_PRICE_DATA_LABEL return ( <Flex {...flexProps}> <Box {...balanceBoxProps}>{balance}</Box> - <Box {...valueBoxProps}>$ {value}</Box> + <Box {...valueBoxProps}>{usdLabel}</Box> </Flex> ) } diff --git a/src/components/sharedComponents/TokenSelect/index.tsx b/src/components/sharedComponents/TokenSelect/index.tsx index b2baead7..f037ffbd 100644 --- a/src/components/sharedComponents/TokenSelect/index.tsx +++ b/src/components/sharedComponents/TokenSelect/index.tsx @@ -25,6 +25,7 @@ export interface TokenSelectProps { showAddTokenButton?: boolean showTopTokens?: boolean showBalance?: boolean + sortByBalance?: boolean } /** @ignore */ @@ -42,8 +43,9 @@ type Props = FlexProps & TokenSelectProps * @param {number} [props.iconSize=32] - Optional size of the token icon in the list. Default is 32. * @param {number} [props.itemHeight=64] - Optional height of each item in the list. Default is 64. * @param {boolean} [props.showAddTokenButton=false] - Optional flag to allow adding a token. Default is false. - * @param {boolean} [props.showBalance=false] - Optional flag to show the token balance in the list. Default is false. + * @param {boolean} [props.showBalance=false] - Optional flag to show the token balance column in each row. Default is false. * @param {boolean} [props.showTopTokens=false] - Optional flag to show the top tokens in the list. Default is false. + * @param {boolean} [props.sortByBalance] - Sort tokens with a positive balance to the top, ordered by USD value descending. Defaults to true when a wallet is connected. */ const TokenSelect = withSuspenseAndRetry<Props>( ({ @@ -59,9 +61,10 @@ const TokenSelect = withSuspenseAndRetry<Props>( showAddTokenButton = false, showBalance = false, showTopTokens = false, + sortByBalance, ...restProps }) => { - const { appChainId, walletChainId } = useWeb3Status() + const { appChainId, isWalletConnected, walletChainId } = useWeb3Status() const [chainId, setChainId] = useState<Chain['id']>(() => getValidChainId({ @@ -122,9 +125,11 @@ const TokenSelect = withSuspenseAndRetry<Props>( previousDepsRef.current = [appChainId, currentNetworkId, walletChainId] }, [appChainId, currentNetworkId, networks, walletChainId]) + const resolvedSortByBalance = sortByBalance ?? isWalletConnected + const { isLoadingBalances, tokensByChainId } = useTokens({ chainId, - withBalance: showBalance, + withBalance: showBalance || resolvedSortByBalance, }) const { searchResult, searchTerm, setSearchTerm } = useTokenSearch( diff --git a/src/hooks/useTokens.test.ts b/src/hooks/useTokens.test.ts index f3d3b62c..8523eaec 100644 --- a/src/hooks/useTokens.test.ts +++ b/src/hooks/useTokens.test.ts @@ -2,7 +2,7 @@ import type { TokenAmount, TokensResponse } from '@lifi/sdk' import { zeroAddress } from 'viem' import { describe, expect, it, vi } from 'vitest' import type { Token, Tokens } from '@/src/types/token' -import { updateTokensBalances } from './useTokens' +import { updateTokensBalances, updateTokensWithRawBalances } from './useTokens' // Mimic a setup that overrides PUBLIC_NATIVE_TOKEN_ADDRESS to the Aave-style sentinel // (0xEeee...), which env.ts lowercases. The merge must bridge this back to LI.FI's @@ -31,6 +31,14 @@ const makeLifiToken = (address: string, symbol: string, decimals: number, priceU priceUSD, }) +const daiAddress = '0x6B175474E89094C44Da98b954EedeAC495271d0F' + +const threeTokens: Tokens = [ + { chainId: 1, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, + { chainId: 1, address: usdcAddress, name: 'USD Coin', symbol: 'USDC', decimals: 6 }, + { chainId: 1, address: daiAddress, name: 'Dai', symbol: 'DAI', decimals: 18 }, +] + describe('updateTokensBalances', () => { it('merges LI.FI native balance onto a local native token that uses a non-zero sentinel', () => { const prices: TokensResponse = { @@ -68,4 +76,101 @@ describe('updateTokensBalances', () => { expect(token.extensions?.priceUSD).toBe('0') } }) + + it('places tokens with positive balance before zero-balance tokens', () => { + const prices: TokensResponse = { + tokens: { + 1: [ + makeLifiToken(LOCAL_NATIVE, 'ETH', 18, '2300'), + makeLifiToken(usdcAddress, 'USDC', 6, '1'), + makeLifiToken(daiAddress, 'DAI', 18, '1'), + ], + }, + } + const balances: TokenAmount[] = [ + { ...makeLifiToken(LOCAL_NATIVE, 'ETH', 18, '2300'), amount: 0n }, + { ...makeLifiToken(usdcAddress, 'USDC', 6, '1'), amount: 5_000_000n }, + { ...makeLifiToken(daiAddress, 'DAI', 18, '1'), amount: 0n }, + ] + + const { tokens } = updateTokensBalances(threeTokens, [balances, prices]) + + expect(tokens[0].symbol).toBe('USDC') + expect(tokens[1].symbol).toBe('ETH') + expect(tokens[2].symbol).toBe('DAI') + }) + + it('zero-balance tokens retain source order among themselves', () => { + const prices: TokensResponse = { + tokens: { + 1: [ + makeLifiToken(LOCAL_NATIVE, 'ETH', 18, '2300'), + makeLifiToken(usdcAddress, 'USDC', 6, '1'), + makeLifiToken(daiAddress, 'DAI', 18, '1'), + ], + }, + } + const balances: TokenAmount[] = [] + + const { tokens } = updateTokensBalances(threeTokens, [balances, prices]) + + expect(tokens[0].symbol).toBe('ETH') + expect(tokens[1].symbol).toBe('USDC') + expect(tokens[2].symbol).toBe('DAI') + }) +}) + +describe('updateTokensWithRawBalances', () => { + it('places tokens with positive balance before zero-balance tokens', () => { + const rawBalances: Record<number, Record<string, bigint>> = { + 11155111: { + [LOCAL_NATIVE]: 2_000_000_000_000_000_000n, + [usdcAddress]: 0n, + }, + } + const sepoliaTokens: Tokens = [ + { chainId: 11155111, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, + { chainId: 11155111, address: usdcAddress, name: 'USD Coin', symbol: 'USDC', decimals: 6 }, + ] + + const { tokens } = updateTokensWithRawBalances(sepoliaTokens, rawBalances) + + expect(tokens[0].symbol).toBe('ETH') + expect(tokens[1].symbol).toBe('USDC') + }) + + it('zero-balance tokens retain source order', () => { + const rawBalances: Record<number, Record<string, bigint>> = { + 11155111: { + [LOCAL_NATIVE]: 0n, + [usdcAddress]: 0n, + [daiAddress]: 0n, + }, + } + const sepoliaTokens: Tokens = [ + { chainId: 11155111, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, + { chainId: 11155111, address: usdcAddress, name: 'USD Coin', symbol: 'USDC', decimals: 6 }, + { chainId: 11155111, address: daiAddress, name: 'Dai', symbol: 'DAI', decimals: 18 }, + ] + + const { tokens } = updateTokensWithRawBalances(sepoliaTokens, rawBalances) + + expect(tokens[0].symbol).toBe('ETH') + expect(tokens[1].symbol).toBe('USDC') + expect(tokens[2].symbol).toBe('DAI') + }) + + it('sets balance extension but omits priceUSD so the balance column shows N/A', () => { + const rawBalances: Record<number, Record<string, bigint>> = { + 11155111: { [LOCAL_NATIVE]: 500n }, + } + const sepoliaTokens: Tokens = [ + { chainId: 11155111, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, + ] + + const { tokens } = updateTokensWithRawBalances(sepoliaTokens, rawBalances) + + expect(tokens[0].extensions?.balance).toBe(500n) + expect(tokens[0].extensions?.priceUSD).toBeUndefined() + }) }) diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 10c9e87d..4acbe196 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -9,14 +9,15 @@ import { } from '@lifi/sdk' import { useQuery } from '@tanstack/react-query' import { useMemo } from 'react' -import { type Address, type Chain, formatUnits } from 'viem' +import { type Address, type Chain, erc20Abi, formatUnits, getAddress } from 'viem' +import { usePublicClient } from 'wagmi' import { env } from '@/src/env' import { useTokenLists } from '@/src/hooks/useTokenLists' import { useWeb3Status } from '@/src/hooks/useWeb3Status' import { lifiRpcUrls } from '@/src/lib/networks.config' import type { Token, Tokens } from '@/src/types/token' -import { toLocalNativeAddress } from '@/src/utils/address' +import { isNativeToken, toLocalNativeAddress } from '@/src/utils/address' import { logger } from '@/src/utils/logger' import type { TokensMap } from '@/src/utils/tokenListsCache' @@ -128,31 +129,87 @@ export const useTokens = ( enabled: canFetchBalance && !!tokensPricesByChain && chainsToFetch.length > 0, }) + // Multicall fallback: used when a specific chain is provided and LI.FI does not + // cover it (e.g. Sepolia). We wait for the LI.FI chains list to load so we can + // confirm the chain is absent before triggering on-chain calls. + const publicClient = usePublicClient({ chainId }) + const useOnchainFallback = + canFetchBalance && !!chainId && !isLoadingChains && !!chains && !lifiChainsId.includes(chainId) + + const { data: onchainBalances, isLoading: isLoadingOnchainBalances } = useQuery({ + queryKey: ['onchain', 'balances', account, chainId], + queryFn: async () => { + // biome-ignore lint/style/noNonNullAssertion: chainId guarded by enabled: useOnchainFallback + const tokensForChain = tokensData.tokensByChainId[chainId!] ?? [] + const nativeTokens = tokensForChain.filter((t) => isNativeToken(t.address)) + const erc20Tokens = tokensForChain.filter((t) => !isNativeToken(t.address)) + + const balances: Record<string, bigint> = {} + + const nativeResults = await Promise.all( + nativeTokens.map((t) => + // biome-ignore lint/style/noNonNullAssertion: publicClient and account guarded by enabled: useOnchainFallback && !!publicClient + publicClient!.getBalance({ address: account! as Address }).then((b) => ({ t, b })), + ), + ) + for (const { t, b } of nativeResults) { + balances[t.address] = b + } + + if (erc20Tokens.length > 0) { + // biome-ignore lint/style/noNonNullAssertion: publicClient and account guarded by enabled: useOnchainFallback && !!publicClient + const results = await publicClient!.multicall({ + contracts: erc20Tokens.map((token) => ({ + address: getAddress(token.address), + abi: erc20Abi, + functionName: 'balanceOf' as const, + // biome-ignore lint/style/noNonNullAssertion: account guarded by enabled: useOnchainFallback + args: [account! as Address], + })), + }) + results.forEach((result, i) => { + balances[erc20Tokens[i].address] = + result.status === 'success' ? (result.result as bigint) : 0n + }) + } + + return balances + }, + staleTime: BALANCE_EXPIRATION_TIME, + refetchInterval: BALANCE_EXPIRATION_TIME, + gcTime: Number.POSITIVE_INFINITY, + enabled: useOnchainFallback && !!publicClient, + }) + const cache = useMemo(() => { - if ( - withBalance && - account && - !isLoadingPrices && - !isLoadingBalances && - tokensBalances && - tokensPricesByChain - ) { - return updateTokensBalances(tokensData.tokens, [tokensBalances, tokensPricesByChain]) + if (withBalance && account) { + if (!isLoadingPrices && !isLoadingBalances && tokensBalances && tokensPricesByChain) { + return updateTokensBalances(tokensData.tokens, [tokensBalances, tokensPricesByChain]) + } + if (useOnchainFallback && !isLoadingOnchainBalances && onchainBalances && chainId) { + return updateTokensWithRawBalances(tokensData.tokens, { [chainId]: onchainBalances }) + } } return tokensData }, [ account, + chainId, isLoadingBalances, + isLoadingOnchainBalances, isLoadingPrices, + onchainBalances, tokensBalances, tokensData, tokensPricesByChain, + useOnchainFallback, withBalance, ]) return { ...cache, - isLoadingBalances: Boolean(isLoadingChains || isLoadingBalances || isLoadingPrices), + isLoadingBalances: Boolean( + isLoadingChains || isLoadingBalances || isLoadingPrices || isLoadingOnchainBalances, + ), isLoadingPrices: Boolean(isLoadingChains || isLoadingPrices), } } @@ -233,6 +290,45 @@ export function updateTokensBalances( return { tokens: tokensWithBalances, tokensByChainId: tokensByChain } } +/** + * Updates tokens with raw on-chain balances (no price data), sorting tokens with + * a positive balance before zero-balance tokens. Within each group, source order + * is preserved. Used as a fallback for chains not covered by LI.FI. + * + * @param tokens - The array of tokens to enrich. + * @param rawBalances - Map of `chainId → address → bigint balance`. + * @returns Updated tokens and tokens grouped by chain ID. + */ +export function updateTokensWithRawBalances( + tokens: Tokens, + rawBalances: Record<number, Record<string, bigint>>, +) { + const tokensWithBalances = tokens.map( + (token): Token => ({ + ...token, + extensions: { + balance: rawBalances[token.chainId]?.[token.address] ?? 0n, + }, + }), + ) + + tokensWithBalances.sort(sortByBalancePresenceFn) + + const tokensByChainId = tokensWithBalances.reduce( + (acc, token) => { + if (!acc[token.chainId]) { + acc[token.chainId] = [token] + } else { + acc[token.chainId].push(token) + } + return acc + }, + {} as Record<number, Token[]>, + ) + + return { tokens: tokensWithBalances, tokensByChainId } +} + /** * A sorting function used to sort tokens by balance. * @param a The first token. @@ -248,3 +344,13 @@ function sortFn(a: Token, b: Token) { Number.parseFloat((a.extensions?.priceUSD as string) ?? '0') ) } + +/** + * Sorts tokens so those with a positive balance come first, preserving source + * order within each group. Used when USD price data is unavailable. + */ +function sortByBalancePresenceFn(a: Token, b: Token) { + const aHas = ((a.extensions?.balance as bigint) ?? 0n) > 0n ? 1 : 0 + const bHas = ((b.extensions?.balance as bigint) ?? 0n) > 0n ? 1 : 0 + return bHas - aHas +} From ebb18fbc127c0dae2dfa8c259a49899d3aa5fa5c Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 15:24:12 -0300 Subject: [PATCH 107/115] refactor(wallet): expose web3Status from useWalletStatus to avoid double hook call MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WalletStatusVerifier was calling useWeb3Status() directly in addition to calling it internally via useWalletStatus(), executing the hook body twice per render. Exposing web3Status from useWalletStatus eliminates the redundant call. Also fixes || to ?? for chain ID fallback (prevents a falsy 0 chainId from silently falling through) and adds chainId={sepolia.id} to the TransactionButton in NativeToken — without it the inner button checked against appChainId instead of the Sepolia chain already verified by the parent WalletStatusVerifier. --- .../home/Examples/demos/TransactionButton/NativeToken.tsx | 2 ++ src/hooks/useWalletStatus.ts | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx index 890f4225..c9055276 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx @@ -1,6 +1,7 @@ import { Dialog } from '@chakra-ui/react' import { type ReactElement, useState } from 'react' import { type Hash, parseEther, type TransactionReceipt } from 'viem' +import { sepolia } from 'viem/chains' import { useSendTransaction } from 'wagmi' import Wrapper from '@/src/components/pageComponents/home/Examples/demos/TransactionButton/Wrapper' import TransactionButton from '@/src/components/sharedComponents/TransactionButton' @@ -47,6 +48,7 @@ const NativeToken = () => { title="Native token demo" > <TransactionButton + chainId={sepolia.id} labelSending="Sending 0.1 ETH..." onMined={handleOnMined} transaction={handleSendTransaction} diff --git a/src/hooks/useWalletStatus.ts b/src/hooks/useWalletStatus.ts index 845a3713..44a04d7f 100644 --- a/src/hooks/useWalletStatus.ts +++ b/src/hooks/useWalletStatus.ts @@ -21,7 +21,7 @@ export const useWalletStatus = (options?: UseWalletStatusOptions): WalletStatus const { appChainId, isWalletConnected, isWalletSynced, switchChain, walletChainId } = useWeb3Status() - const targetChainId = options?.chainId || appChainId || chains[0].id + const targetChainId = options?.chainId ?? appChainId ?? chains[0].id const targetChain = extractChain({ chains, id: targetChainId }) const needsConnect = !isWalletConnected From f1a8adce7438999ca4ba99de61cd312cad8382b4 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:08:56 -0300 Subject: [PATCH 108/115] fix: address normalisation in multicall path and complete web3Status refactor - Lowercase token addresses when keying the on-chain balances map and when reading in updateTokensWithRawBalances, preventing silent zero-balance fallback if token lists mix address casing - Complete web3Status exposure from useWalletStatus (was missing from the previous commit): add web3Status to WalletStatus interface and return, remove the redundant useWeb3Status() call from WalletStatusVerifier - Assert result.current.web3Status in useWalletStatus tests - Update all useWalletStatus mock shapes across test files to carry web3Status - Document multicall fallback path and absent priceUSD in useTokens JSDoc - Add inline comment on NativeToken chainId prop - Move threeTokens fixture inside its describe block --- .../demos/TransactionButton/NativeToken.tsx | 2 + .../sharedComponents/SignButton.test.tsx | 4 ++ .../TransactionButton.test.tsx | 5 +++ .../WalletStatusVerifier.test.tsx | 40 +++++++++++-------- .../sharedComponents/WalletStatusVerifier.tsx | 5 +-- src/hooks/useTokens.test.ts | 11 +++-- src/hooks/useTokens.ts | 10 +++-- src/hooks/useWalletStatus.test.ts | 3 ++ src/hooks/useWalletStatus.ts | 8 ++-- src/hooks/useWeb3Status.test.ts | 21 ++++++---- 10 files changed, 70 insertions(+), 39 deletions(-) diff --git a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx index c9055276..03d40677 100644 --- a/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx +++ b/src/components/pageComponents/home/Examples/demos/TransactionButton/NativeToken.tsx @@ -47,6 +47,8 @@ const NativeToken = () => { text="Demo transaction that sends 0.1 Sepolia ETH from / to your wallet." title="Native token demo" > + {/* chainId must be explicit: the parent WalletStatusVerifier already verified Sepolia, + but TransactionButton checks against appChainId without it. */} <TransactionButton chainId={sepolia.id} labelSending="Sending 0.1 ETH..." diff --git a/src/components/sharedComponents/SignButton.test.tsx b/src/components/sharedComponents/SignButton.test.tsx index 2c715192..b0f82cb9 100644 --- a/src/components/sharedComponents/SignButton.test.tsx +++ b/src/components/sharedComponents/SignButton.test.tsx @@ -63,6 +63,7 @@ describe('SignButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra(<SignButton message="Hello" />) @@ -79,6 +80,7 @@ describe('SignButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra( @@ -102,6 +104,7 @@ describe('SignButton', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra(<SignButton message="Hello" />) @@ -119,6 +122,7 @@ describe('SignButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra(<SignButton message="Hello" />) diff --git a/src/components/sharedComponents/TransactionButton.test.tsx b/src/components/sharedComponents/TransactionButton.test.tsx index 032dc575..26df9b8e 100644 --- a/src/components/sharedComponents/TransactionButton.test.tsx +++ b/src/components/sharedComponents/TransactionButton.test.tsx @@ -61,6 +61,7 @@ describe('TransactionButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra(<TransactionButton transaction={mockTransaction}>Send</TransactionButton>) @@ -77,6 +78,7 @@ describe('TransactionButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra( @@ -102,6 +104,7 @@ describe('TransactionButton', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra(<TransactionButton transaction={mockTransaction}>Send</TransactionButton>) @@ -121,6 +124,7 @@ describe('TransactionButton', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra( @@ -144,6 +148,7 @@ describe('TransactionButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) renderWithChakra(<TransactionButton transaction={mockTransaction}>Send ETH</TransactionButton>) diff --git a/src/components/sharedComponents/WalletStatusVerifier.test.tsx b/src/components/sharedComponents/WalletStatusVerifier.test.tsx index 8487e9b3..7f9fc23e 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.test.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.test.tsx @@ -3,10 +3,26 @@ import { render, screen } from '@testing-library/react' import userEvent from '@testing-library/user-event' import { createElement, type ReactNode } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Web3Status } from '@/src/hooks/useWeb3Status' import { useWeb3StatusConnected, WalletStatusVerifier } from './WalletStatusVerifier' const mockSwitchChain = vi.fn() +const mockWeb3Status = { + readOnlyClient: undefined, + appChainId: 1, + address: '0xdeadbeef', + balance: undefined, + connectingWallet: false, + switchingChain: false, + isWalletConnected: true, + walletClient: undefined, + isWalletSynced: true, + walletChainId: 1, + switchChain: vi.fn(), + disconnect: vi.fn(), +} as unknown as Web3Status + vi.mock('@/src/hooks/useWalletStatus', () => ({ useWalletStatus: vi.fn(() => ({ isReady: false, @@ -15,23 +31,7 @@ vi.mock('@/src/hooks/useWalletStatus', () => ({ targetChain: { id: 1, name: 'Ethereum' }, targetChainId: 1, switchChain: mockSwitchChain, - })), -})) - -vi.mock('@/src/hooks/useWeb3Status', () => ({ - useWeb3Status: vi.fn(() => ({ - readOnlyClient: {}, - appChainId: 1, - address: '0xdeadbeef', - balance: undefined, - connectingWallet: false, - switchingChain: false, - isWalletConnected: true, - walletClient: undefined, - isWalletSynced: true, - walletChainId: 1, - switchChain: vi.fn(), - disconnect: vi.fn(), + web3Status: mockWeb3Status, })), })) @@ -65,6 +65,7 @@ describe('WalletStatusVerifier', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: mockWeb3Status, }) renderWithChakra( @@ -87,6 +88,7 @@ describe('WalletStatusVerifier', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: mockWeb3Status, }) renderWithChakra( @@ -111,6 +113,7 @@ describe('WalletStatusVerifier', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, + web3Status: mockWeb3Status, }) renderWithChakra( @@ -134,6 +137,7 @@ describe('WalletStatusVerifier', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: mockWeb3Status, }) renderWithChakra( @@ -159,6 +163,7 @@ describe('WalletStatusVerifier', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, + web3Status: mockWeb3Status, }) renderWithChakra( @@ -179,6 +184,7 @@ describe('WalletStatusVerifier', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, + web3Status: mockWeb3Status, }) const ChildComponent = () => { diff --git a/src/components/sharedComponents/WalletStatusVerifier.tsx b/src/components/sharedComponents/WalletStatusVerifier.tsx index 4c883563..5d30c336 100644 --- a/src/components/sharedComponents/WalletStatusVerifier.tsx +++ b/src/components/sharedComponents/WalletStatusVerifier.tsx @@ -1,7 +1,7 @@ import { createContext, type FC, type ReactElement, type ReactNode, useContext } from 'react' import SwitchChainButton from '@/src/components/sharedComponents/ui/SwitchChainButton' import { useWalletStatus } from '@/src/hooks/useWalletStatus' -import { useWeb3Status, type Web3Status } from '@/src/hooks/useWeb3Status' +import type { Web3Status } from '@/src/hooks/useWeb3Status' import type { ChainsIds } from '@/src/lib/networks.config' import { ConnectWalletButton } from '@/src/providers/Web3Provider' import type { RequiredNonNull } from '@/src/types/utils' @@ -51,9 +51,8 @@ const WalletStatusVerifier: FC<WalletStatusVerifierProps> = ({ fallback = <ConnectWalletButton />, switchChainLabel = 'Switch to', }: WalletStatusVerifierProps) => { - const { needsConnect, needsChainSwitch, targetChain, targetChainId, switchChain } = + const { needsConnect, needsChainSwitch, targetChain, targetChainId, switchChain, web3Status } = useWalletStatus({ chainId }) - const web3Status = useWeb3Status() if (needsConnect) { return fallback diff --git a/src/hooks/useTokens.test.ts b/src/hooks/useTokens.test.ts index 8523eaec..5d493772 100644 --- a/src/hooks/useTokens.test.ts +++ b/src/hooks/useTokens.test.ts @@ -33,13 +33,12 @@ const makeLifiToken = (address: string, symbol: string, decimals: number, priceU const daiAddress = '0x6B175474E89094C44Da98b954EedeAC495271d0F' -const threeTokens: Tokens = [ - { chainId: 1, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, - { chainId: 1, address: usdcAddress, name: 'USD Coin', symbol: 'USDC', decimals: 6 }, - { chainId: 1, address: daiAddress, name: 'Dai', symbol: 'DAI', decimals: 18 }, -] - describe('updateTokensBalances', () => { + const threeTokens: Tokens = [ + { chainId: 1, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, + { chainId: 1, address: usdcAddress, name: 'USD Coin', symbol: 'USDC', decimals: 6 }, + { chainId: 1, address: daiAddress, name: 'Dai', symbol: 'DAI', decimals: 18 }, + ] it('merges LI.FI native balance onto a local native token that uses a non-zero sentinel', () => { const prices: TokensResponse = { tokens: { diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 4acbe196..69aa752a 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -41,6 +41,10 @@ export const lifiConfig = createConfig({ * - Automatic sorting by token value (balance × price) * - Periodic refetching for up-to-date balances and prices * + * On chains not covered by LI.FI (e.g. Sepolia), balance fetching falls back to a + * direct on-chain multicall. In this mode `priceUSD` is absent from token extensions, + * so any UI that reads `extensions.priceUSD` should treat `undefined` as "N/A". + * * @param {Object} params - Parameters for tokens fetching * @param {Address} [params.account] - Account address for balance fetching (defaults to connected wallet) * @param {Chain['id']} [params.chainId] - Specific chain ID to filter tokens (defaults to all supported chains) @@ -153,7 +157,7 @@ export const useTokens = ( ), ) for (const { t, b } of nativeResults) { - balances[t.address] = b + balances[t.address.toLowerCase()] = b } if (erc20Tokens.length > 0) { @@ -168,7 +172,7 @@ export const useTokens = ( })), }) results.forEach((result, i) => { - balances[erc20Tokens[i].address] = + balances[erc20Tokens[i].address.toLowerCase()] = result.status === 'success' ? (result.result as bigint) : 0n }) } @@ -307,7 +311,7 @@ export function updateTokensWithRawBalances( (token): Token => ({ ...token, extensions: { - balance: rawBalances[token.chainId]?.[token.address] ?? 0n, + balance: rawBalances[token.chainId]?.[token.address.toLowerCase()] ?? 0n, }, }), ) diff --git a/src/hooks/useWalletStatus.test.ts b/src/hooks/useWalletStatus.test.ts index ce5bd0fd..63ba8c2c 100644 --- a/src/hooks/useWalletStatus.test.ts +++ b/src/hooks/useWalletStatus.test.ts @@ -110,6 +110,9 @@ describe('useWalletStatus', () => { expect(result.current.needsConnect).toBe(false) expect(result.current.needsChainSwitch).toBe(false) expect(result.current.isReady).toBe(true) + expect(result.current.web3Status).toBeDefined() + expect(result.current.web3Status.appChainId).toBe(1) + expect(result.current.web3Status.isWalletConnected).toBe(true) }) it('uses provided chainId over appChainId', () => { diff --git a/src/hooks/useWalletStatus.ts b/src/hooks/useWalletStatus.ts index 44a04d7f..0a769bab 100644 --- a/src/hooks/useWalletStatus.ts +++ b/src/hooks/useWalletStatus.ts @@ -1,7 +1,7 @@ import type { Chain } from 'viem' import { extractChain } from 'viem' -import { useWeb3Status } from '@/src/hooks/useWeb3Status' +import { useWeb3Status, type Web3Status } from '@/src/hooks/useWeb3Status' import { type ChainsIds, chains } from '@/src/lib/networks.config' interface UseWalletStatusOptions { @@ -15,11 +15,12 @@ interface WalletStatus { targetChain: Chain targetChainId: ChainsIds switchChain: (chainId: ChainsIds) => void + web3Status: Web3Status } export const useWalletStatus = (options?: UseWalletStatusOptions): WalletStatus => { - const { appChainId, isWalletConnected, isWalletSynced, switchChain, walletChainId } = - useWeb3Status() + const web3Status = useWeb3Status() + const { appChainId, isWalletConnected, isWalletSynced, switchChain, walletChainId } = web3Status const targetChainId = options?.chainId ?? appChainId ?? chains[0].id const targetChain = extractChain({ chains, id: targetChainId }) @@ -35,5 +36,6 @@ export const useWalletStatus = (options?: UseWalletStatusOptions): WalletStatus targetChain, targetChainId, switchChain, + web3Status, } } diff --git a/src/hooks/useWeb3Status.test.ts b/src/hooks/useWeb3Status.test.ts index 3fe34ca3..02e71aec 100644 --- a/src/hooks/useWeb3Status.test.ts +++ b/src/hooks/useWeb3Status.test.ts @@ -141,15 +141,22 @@ describe('useWeb3StatusConnected', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: vi.fn(), + web3Status: { + address: '0xdeadbeef' as Address, + appChainId: 1, + balance: undefined, + connectingWallet: false, + disconnect: vi.fn(), + isWalletConnected: true, + isWalletSynced: true, + readOnlyClient: undefined, + switchChain: vi.fn(), + switchingChain: false, + walletChainId: 1, + walletClient: undefined, + } as unknown as ReturnType<typeof useWalletStatus>['web3Status'], }) - vi.mocked(wagmi.useAccount).mockReturnValueOnce({ - address: '0xdeadbeef' as Address, - chainId: 1, - isConnected: true, - isConnecting: false, - } as unknown as ReturnType<typeof wagmi.useAccount>) - const wrapper = ({ children }: { children: React.ReactNode }) => createElement(WalletStatusVerifier, null, children) From 9f5b7732935fff00e97bdf6080f97c18501ea44e Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:35:14 -0300 Subject: [PATCH 109/115] test(transaction-button): replace web3Status undefined cast with valid stub --- .../TransactionButton.test.tsx | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/components/sharedComponents/TransactionButton.test.tsx b/src/components/sharedComponents/TransactionButton.test.tsx index 26df9b8e..c733d990 100644 --- a/src/components/sharedComponents/TransactionButton.test.tsx +++ b/src/components/sharedComponents/TransactionButton.test.tsx @@ -2,6 +2,7 @@ import { ChakraProvider, createSystem, defaultConfig } from '@chakra-ui/react' import { render, screen } from '@testing-library/react' import { createElement, type ReactNode } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Web3Status } from '@/src/hooks/useWeb3Status' import TransactionButton from './TransactionButton' const mockSwitchChain = vi.fn() @@ -43,6 +44,21 @@ vi.mock('wagmi', () => ({ const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') const mockedUseWalletStatus = vi.mocked(useWalletStatus) +const mockWeb3Status = { + readOnlyClient: undefined, + appChainId: 1, + address: '0xdeadbeef', + balance: undefined, + connectingWallet: false, + switchingChain: false, + isWalletConnected: true, + walletClient: undefined, + isWalletSynced: true, + walletChainId: 1, + switchChain: vi.fn(), + disconnect: vi.fn(), +} as unknown as Web3Status + const system = createSystem(defaultConfig) const renderWithChakra = (ui: ReactNode) => @@ -61,7 +77,7 @@ describe('TransactionButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra(<TransactionButton transaction={mockTransaction}>Send</TransactionButton>) @@ -78,7 +94,7 @@ describe('TransactionButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra( @@ -104,7 +120,7 @@ describe('TransactionButton', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra(<TransactionButton transaction={mockTransaction}>Send</TransactionButton>) @@ -124,7 +140,7 @@ describe('TransactionButton', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra( @@ -148,7 +164,7 @@ describe('TransactionButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra(<TransactionButton transaction={mockTransaction}>Send ETH</TransactionButton>) From d8c5ae20c67a08f39fd82b5fd1d11cb49266b147 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:36:30 -0300 Subject: [PATCH 110/115] test(sign-button): replace web3Status undefined cast with valid stub --- .../sharedComponents/SignButton.test.tsx | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/components/sharedComponents/SignButton.test.tsx b/src/components/sharedComponents/SignButton.test.tsx index b0f82cb9..4e5c40d5 100644 --- a/src/components/sharedComponents/SignButton.test.tsx +++ b/src/components/sharedComponents/SignButton.test.tsx @@ -3,6 +3,7 @@ import { render, screen } from '@testing-library/react' import type { ReactNode } from 'react' import { createElement } from 'react' import { beforeEach, describe, expect, it, vi } from 'vitest' +import type { Web3Status } from '@/src/hooks/useWeb3Status' import SignButton from './SignButton' const mockSwitchChain = vi.fn() @@ -45,6 +46,21 @@ vi.mock('wagmi', () => ({ const { useWalletStatus } = await import('@/src/hooks/useWalletStatus') const mockedUseWalletStatus = vi.mocked(useWalletStatus) +const mockWeb3Status = { + readOnlyClient: undefined, + appChainId: 1, + address: '0xdeadbeef', + balance: undefined, + connectingWallet: false, + switchingChain: false, + isWalletConnected: true, + walletClient: undefined, + isWalletSynced: true, + walletChainId: 1, + switchChain: vi.fn(), + disconnect: vi.fn(), +} as unknown as Web3Status + const system = createSystem(defaultConfig) const renderWithChakra = (ui: ReactNode) => @@ -63,7 +79,7 @@ describe('SignButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra(<SignButton message="Hello" />) @@ -80,7 +96,7 @@ describe('SignButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra( @@ -104,7 +120,7 @@ describe('SignButton', () => { >['targetChain'], targetChainId: 10, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra(<SignButton message="Hello" />) @@ -122,7 +138,7 @@ describe('SignButton', () => { targetChain: { id: 1, name: 'Ethereum' } as ReturnType<typeof useWalletStatus>['targetChain'], targetChainId: 1, switchChain: mockSwitchChain, - web3Status: undefined as unknown as ReturnType<typeof useWalletStatus>['web3Status'], + web3Status: mockWeb3Status, }) renderWithChakra(<SignButton message="Hello" />) From 0897b15b78b5fbb994ae7722a83df4f7c628ef78 Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 16:45:51 -0300 Subject: [PATCH 111/115] fix(token-select): decouple sortByBalance from balance fetching --- .../sharedComponents/TokenSelect/index.tsx | 1 + src/hooks/useTokens.test.ts | 45 +++++++++++++++++++ src/hooks/useTokens.ts | 29 +++++++++--- 3 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/components/sharedComponents/TokenSelect/index.tsx b/src/components/sharedComponents/TokenSelect/index.tsx index f037ffbd..28d0f51e 100644 --- a/src/components/sharedComponents/TokenSelect/index.tsx +++ b/src/components/sharedComponents/TokenSelect/index.tsx @@ -130,6 +130,7 @@ const TokenSelect = withSuspenseAndRetry<Props>( const { isLoadingBalances, tokensByChainId } = useTokens({ chainId, withBalance: showBalance || resolvedSortByBalance, + sortByBalance: resolvedSortByBalance, }) const { searchResult, searchTerm, setSearchTerm } = useTokenSearch( diff --git a/src/hooks/useTokens.test.ts b/src/hooks/useTokens.test.ts index 5d493772..b2b17906 100644 --- a/src/hooks/useTokens.test.ts +++ b/src/hooks/useTokens.test.ts @@ -117,6 +117,31 @@ describe('updateTokensBalances', () => { expect(tokens[1].symbol).toBe('USDC') expect(tokens[2].symbol).toBe('DAI') }) + + it('preserves source order when sortByBalance is false', () => { + const prices: TokensResponse = { + tokens: { + 1: [ + makeLifiToken(LOCAL_NATIVE, 'ETH', 18, '2300'), + makeLifiToken(usdcAddress, 'USDC', 6, '1'), + makeLifiToken(daiAddress, 'DAI', 18, '1'), + ], + }, + } + const balances: TokenAmount[] = [ + { ...makeLifiToken(LOCAL_NATIVE, 'ETH', 18, '2300'), amount: 0n }, + { ...makeLifiToken(usdcAddress, 'USDC', 6, '1'), amount: 5_000_000n }, + { ...makeLifiToken(daiAddress, 'DAI', 18, '1'), amount: 0n }, + ] + + const { tokens } = updateTokensBalances(threeTokens, [balances, prices], { + sortByBalance: false, + }) + + expect(tokens[0].symbol).toBe('ETH') + expect(tokens[1].symbol).toBe('USDC') + expect(tokens[2].symbol).toBe('DAI') + }) }) describe('updateTokensWithRawBalances', () => { @@ -172,4 +197,24 @@ describe('updateTokensWithRawBalances', () => { expect(tokens[0].extensions?.balance).toBe(500n) expect(tokens[0].extensions?.priceUSD).toBeUndefined() }) + + it('preserves source order when sortByBalance is false', () => { + const rawBalances: Record<number, Record<string, bigint>> = { + 11155111: { + [LOCAL_NATIVE]: 0n, + [usdcAddress]: 1_000_000n, + }, + } + const sepoliaTokens: Tokens = [ + { chainId: 11155111, address: LOCAL_NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 }, + { chainId: 11155111, address: usdcAddress, name: 'USD Coin', symbol: 'USDC', decimals: 6 }, + ] + + const { tokens } = updateTokensWithRawBalances(sepoliaTokens, rawBalances, { + sortByBalance: false, + }) + + expect(tokens[0].symbol).toBe('ETH') + expect(tokens[1].symbol).toBe('USDC') + }) }) diff --git a/src/hooks/useTokens.ts b/src/hooks/useTokens.ts index 69aa752a..95338b9b 100644 --- a/src/hooks/useTokens.ts +++ b/src/hooks/useTokens.ts @@ -49,6 +49,7 @@ export const lifiConfig = createConfig({ * @param {Address} [params.account] - Account address for balance fetching (defaults to connected wallet) * @param {Chain['id']} [params.chainId] - Specific chain ID to filter tokens (defaults to all supported chains) * @param {boolean} [params.withBalance=true] - Whether to fetch token balances + * @param {boolean} [params.sortByBalance=true] - Whether to sort tokens by balance. When false, source order is preserved even if balances are fetched. * * @returns {Object} Token data and loading state * @returns {Token[]} returns.tokens - Array of tokens with price and balance information @@ -78,12 +79,15 @@ export const useTokens = ( account, chainId, withBalance, + sortByBalance = true, }: { account?: Address chainId?: Chain['id'] withBalance?: boolean + sortByBalance?: boolean } = { withBalance: true, + sortByBalance: true, }, ) => { const { address } = useWeb3Status() @@ -188,10 +192,16 @@ export const useTokens = ( const cache = useMemo(() => { if (withBalance && account) { if (!isLoadingPrices && !isLoadingBalances && tokensBalances && tokensPricesByChain) { - return updateTokensBalances(tokensData.tokens, [tokensBalances, tokensPricesByChain]) + return updateTokensBalances(tokensData.tokens, [tokensBalances, tokensPricesByChain], { + sortByBalance, + }) } if (useOnchainFallback && !isLoadingOnchainBalances && onchainBalances && chainId) { - return updateTokensWithRawBalances(tokensData.tokens, { [chainId]: onchainBalances }) + return updateTokensWithRawBalances( + tokensData.tokens, + { [chainId]: onchainBalances }, + { sortByBalance }, + ) } } return tokensData @@ -202,6 +212,7 @@ export const useTokens = ( isLoadingOnchainBalances, isLoadingPrices, onchainBalances, + sortByBalance, tokensBalances, tokensData, tokensPricesByChain, @@ -228,6 +239,7 @@ export const useTokens = ( export function updateTokensBalances( tokens: Tokens, results: [Array<TokenAmount>, TokensResponse], + { sortByBalance = true }: { sortByBalance?: boolean } = {}, ) { const [balanceTokens, prices] = results @@ -273,9 +285,11 @@ export function updateTokensBalances( }) logger.timeEnd('extending tokens with balance info') - logger.time('sorting tokens by balance') - tokensWithBalances.sort(sortFn) - logger.timeEnd('sorting tokens by balance') + if (sortByBalance) { + logger.time('sorting tokens by balance') + tokensWithBalances.sort(sortFn) + logger.timeEnd('sorting tokens by balance') + } logger.time('updating tokens cache') const tokensByChain = tokensWithBalances.reduce( @@ -306,6 +320,7 @@ export function updateTokensBalances( export function updateTokensWithRawBalances( tokens: Tokens, rawBalances: Record<number, Record<string, bigint>>, + { sortByBalance = true }: { sortByBalance?: boolean } = {}, ) { const tokensWithBalances = tokens.map( (token): Token => ({ @@ -316,7 +331,9 @@ export function updateTokensWithRawBalances( }), ) - tokensWithBalances.sort(sortByBalancePresenceFn) + if (sortByBalance) { + tokensWithBalances.sort(sortByBalancePresenceFn) + } const tokensByChainId = tokensWithBalances.reduce( (acc, token) => { From 333beff418cefc2dbecc7766a1ace8089917bf3d Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 17:33:03 -0300 Subject: [PATCH 112/115] fix(header): remove fixed height from logo to preserve aspect ratio --- src/components/sharedComponents/ui/Header/Logo.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/sharedComponents/ui/Header/Logo.tsx b/src/components/sharedComponents/ui/Header/Logo.tsx index d43a68d7..449edd01 100644 --- a/src/components/sharedComponents/ui/Header/Logo.tsx +++ b/src/components/sharedComponents/ui/Header/Logo.tsx @@ -15,7 +15,6 @@ const LogoLight = const Logo: FC<ImageProps> = ({ ...restProps }) => ( <chakra.img width={193} - height={77} content="var(--base-logo)" display="block" flexShrink="0" From a8947fa15bde234e4ab9491a357cfa2ea997852f Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 17:33:17 -0300 Subject: [PATCH 113/115] fix(menu): remove trailing divider from last menu item --- src/components/sharedComponents/ui/Menu/index.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/sharedComponents/ui/Menu/index.tsx b/src/components/sharedComponents/ui/Menu/index.tsx index 27137f0b..921fb410 100644 --- a/src/components/sharedComponents/ui/Menu/index.tsx +++ b/src/components/sharedComponents/ui/Menu/index.tsx @@ -23,6 +23,7 @@ export const MenuItem: FC<MenuItemProps> = ({ children, css, ...restProps }) => alignItems="center" backgroundColor="var(--item-background-color)" borderBottom="1px solid var(--item-border-color)" + _last={{ borderBottom: 'none' }} color="var(--item-color)" columnGap={2} cursor="pointer" From f16a6520947780e7ab3d5aa77d4c243362130cbb Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 18:01:56 -0300 Subject: [PATCH 114/115] fix(menu): suppress border on last item hover and active states --- src/components/sharedComponents/ui/Menu/index.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/sharedComponents/ui/Menu/index.tsx b/src/components/sharedComponents/ui/Menu/index.tsx index 921fb410..65ff3695 100644 --- a/src/components/sharedComponents/ui/Menu/index.tsx +++ b/src/components/sharedComponents/ui/Menu/index.tsx @@ -23,7 +23,11 @@ export const MenuItem: FC<MenuItemProps> = ({ children, css, ...restProps }) => alignItems="center" backgroundColor="var(--item-background-color)" borderBottom="1px solid var(--item-border-color)" - _last={{ borderBottom: 'none' }} + _last={{ + borderBottom: 'none', + _hover: { borderBottom: 'none' }, + _active: { borderBottom: 'none' }, + }} color="var(--item-color)" columnGap={2} cursor="pointer" From f7d0de064d7023afb3461a59a46e657b7521559b Mon Sep 17 00:00:00 2001 From: Gabito Esmiapodo <4015436+gabitoesmiapodo@users.noreply.github.com> Date: Tue, 21 Apr 2026 18:20:38 -0300 Subject: [PATCH 115/115] release: bump version to 2.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f104bc53..eb5ba679 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "dappbooster", "private": true, - "version": "2.0.4", + "version": "2.5.0", "type": "module", "scripts": { "build": "tsc --noEmit --pretty && vite build",