From df0c98e5fa5ca0876d46e7471cb63fb5fe6e2088 Mon Sep 17 00:00:00 2001 From: titix Date: Fri, 12 Jul 2024 09:54:06 -0300 Subject: [PATCH 01/82] feat: basic architecture --- src/components/CustomHead.tsx | 18 ++ src/components/index.ts | 1 + src/containers/Footer/index.tsx | 2 +- src/containers/Header/index.tsx | 2 +- src/data/chainMockData.ts | 190 ++++++++++++++++++ src/hooks/ScrollToTop.tsx | 19 -- src/hooks/index.ts | 3 +- src/hooks/useContext/index.ts | 1 + src/hooks/useContext/useData.tsx | 13 ++ .../{ => useContext}/useStateContext.tsx | 0 src/hooks/{ => useContext}/useTheme.tsx | 0 src/pages/[chain]/index.tsx | 14 ++ src/pages/index.tsx | 2 +- src/providers/DataProvider.tsx | 29 +++ src/types/Data.ts | 32 +++ src/types/index.ts | 1 + tsconfig.json | 2 +- 17 files changed, 304 insertions(+), 25 deletions(-) create mode 100644 src/components/CustomHead.tsx create mode 100644 src/data/chainMockData.ts delete mode 100644 src/hooks/ScrollToTop.tsx create mode 100644 src/hooks/useContext/index.ts create mode 100644 src/hooks/useContext/useData.tsx rename src/hooks/{ => useContext}/useStateContext.tsx (100%) rename src/hooks/{ => useContext}/useTheme.tsx (100%) create mode 100644 src/pages/[chain]/index.tsx create mode 100644 src/providers/DataProvider.tsx create mode 100644 src/types/Data.ts diff --git a/src/components/CustomHead.tsx b/src/components/CustomHead.tsx new file mode 100644 index 0000000..46a146b --- /dev/null +++ b/src/components/CustomHead.tsx @@ -0,0 +1,18 @@ +import Head from 'next/head'; + +interface MetadataProps { + title: string; + description?: string; + image?: string; + type?: string; +} + +export const CustomHead = ({ title }: MetadataProps) => { + return ( + + {`${title} - ZKchainHub`} + + + + ); +}; diff --git a/src/components/index.ts b/src/components/index.ts index 0fe1f0b..a25d295 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,2 +1,3 @@ export * from './Theme'; export * from './Disclaimer'; +export * from './CustomHead'; diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index 6fc8f48..5d98840 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -1,5 +1,5 @@ import { styled } from '@mui/material/styles'; -import { useCustomTheme } from '~/hooks/useTheme'; +import { useCustomTheme } from '~/hooks/useContext/useTheme'; import { FOOTER_HEIGHT } from '~/utils'; diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 2caa8a9..6afb5cd 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -4,7 +4,7 @@ import { IconButton } from '@mui/material'; import LightModeIcon from '@mui/icons-material/LightMode'; import DarkModeIcon from '@mui/icons-material/DarkMode'; -import { useCustomTheme } from '~/hooks/useTheme'; +import { useCustomTheme } from '~/hooks/useContext/useTheme'; import { zIndex, HEADER_HEIGHT } from '~/utils'; export const Header = () => { diff --git a/src/data/chainMockData.ts b/src/data/chainMockData.ts new file mode 100644 index 0000000..3ea9a9b --- /dev/null +++ b/src/data/chainMockData.ts @@ -0,0 +1,190 @@ +export const mockData = [ + { + name: 'ZKSync Era', + chainId: 324, + website: 'https://example.com', + explorer: 'https://example.com', + launchDate: '2023-12-05', + environment: 'Production', + nativeToken: 'ETH', + chainType: 'ZKRollup', + lastBlock: 123456789, + lastBlockVerified: 123456788, + transactionsPerSecond: 15, + totalBatchesCommitted: 1234567890, + totalBatchesExecuted: 1234567890, + totalBatchesVerified: 123456788, + averageBlockTime: 100000, + tvl: { + ETH: { + value: 500000000, + address: '0x79db...d692', + }, + USDT: { + value: 100000000, + address: '0x79db...d692', + }, + USDC: { + value: 50000000, + address: '0x79db...d692', + }, + WBTC: { + value: 30000000, + address: '0x79db...d692', + }, + }, + rpcs: [ + { + status: 'Active', + url: 'https://lrpc.com', + }, + { + status: 'Active', + url: 'https://blastapi.com', + }, + { + status: 'Inactive', + url: 'https://llamarpc.com', + }, + { + status: 'Active', + url: 'https://alchemy.com', + }, + ], + feeParams: { + batchOverheadL1Gas: 1234567890, + computeOverheadPart: 1234567890, + maxGasPerBatch: 123456788, + }, + }, + { + name: 'Optimism', + chainId: 10, + website: 'https://optimism.io', + explorer: 'https://explorer.optimism.io', + launchDate: '2022-05-01', + environment: 'Production', + nativeToken: 'ETH', + chainType: 'Optimistic Rollup', + lastBlock: 987654321, + lastBlockVerified: 987654320, + transactionsPerSecond: 12, + totalBatchesCommitted: 987654321, + totalBatchesExecuted: 987654321, + totalBatchesVerified: 987654320, + averageBlockTime: 150000, + tvl: { + ETH: { + value: 700000000, + address: '0x1234...abcd', + }, + DAI: { + value: 200000000, + address: '0x1234...abcd', + }, + }, + rpcs: [ + { + status: 'Active', + url: 'https://mainnet.optimism.io', + }, + { + status: 'Inactive', + url: 'https://backup.optimism.io', + }, + ], + feeParams: { + batchOverheadL1Gas: 987654321, + computeOverheadPart: 987654321, + maxGasPerBatch: 987654320, + }, + }, + { + name: 'Arbitrum One', + chainId: 42161, + website: 'https://arbitrum.io', + explorer: 'https://explorer.arbitrum.io', + launchDate: '2021-08-31', + environment: 'Production', + nativeToken: 'ETH', + chainType: 'Optimistic Rollup', + lastBlock: 112233445, + lastBlockVerified: 112233444, + transactionsPerSecond: 20, + totalBatchesCommitted: 112233445, + totalBatchesExecuted: 112233445, + totalBatchesVerified: 112233444, + averageBlockTime: 80000, + tvl: { + ETH: { + value: 800000000, + address: '0xabcd...1234', + }, + LINK: { + value: 150000000, + address: '0xabcd...1234', + }, + USDC: { + value: 60000000, + address: '0xabcd...1234', + }, + }, + rpcs: [ + { + status: 'Active', + url: 'https://arb1.arbitrum.io', + }, + ], + feeParams: { + batchOverheadL1Gas: 112233445, + computeOverheadPart: 112233445, + maxGasPerBatch: 112233444, + }, + }, + { + name: 'Polygon', + chainId: 137, + website: 'https://polygon.technology', + explorer: 'https://explorer.matic.network', + launchDate: '2020-05-18', + environment: 'Production', + nativeToken: 'MATIC', + chainType: 'Sidechain', + lastBlock: 998877665, + lastBlockVerified: 998877664, + transactionsPerSecond: 30, + totalBatchesCommitted: 998877665, + totalBatchesExecuted: 998877665, + totalBatchesVerified: 998877664, + averageBlockTime: 20000, + tvl: { + MATIC: { + value: 400000000, + address: '0x5678...efgh', + }, + AAVE: { + value: 50000000, + address: '0x5678...efgh', + }, + WBTC: { + value: 25000000, + address: '0x5678...efgh', + }, + }, + rpcs: [ + { + status: 'Active', + url: 'https://rpc-mainnet.maticvigil.com', + }, + { + status: 'Active', + url: 'https://rpc-mainnet.matic.network', + }, + ], + feeParams: { + batchOverheadL1Gas: 998877665, + computeOverheadPart: 998877665, + maxGasPerBatch: 998877664, + }, + }, +]; diff --git a/src/hooks/ScrollToTop.tsx b/src/hooks/ScrollToTop.tsx deleted file mode 100644 index 1f720d7..0000000 --- a/src/hooks/ScrollToTop.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { useEffect } from 'react'; -import { useRouter } from 'next/router'; - -export function ScrollToTop() { - const router = useRouter(); - - useEffect(() => { - const handleRouteChange = () => { - window.scrollTo(0, 0); - }; - router.events.on('routeChangeComplete', handleRouteChange); - - return () => { - router.events.off('routeChangeComplete', handleRouteChange); - }; - }, [router.events]); - - return null; -} diff --git a/src/hooks/index.ts b/src/hooks/index.ts index 3ffc027..af3d0f4 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1,2 +1 @@ -export * from './ScrollToTop'; -export * from './useStateContext'; +export * from './useContext'; diff --git a/src/hooks/useContext/index.ts b/src/hooks/useContext/index.ts new file mode 100644 index 0000000..92f170c --- /dev/null +++ b/src/hooks/useContext/index.ts @@ -0,0 +1 @@ +export * from './useStateContext'; diff --git a/src/hooks/useContext/useData.tsx b/src/hooks/useContext/useData.tsx new file mode 100644 index 0000000..43e0a8a --- /dev/null +++ b/src/hooks/useContext/useData.tsx @@ -0,0 +1,13 @@ +import { useContext } from 'react'; + +import { DataContext } from '~/providers/DataProvider'; + +export const useData = () => { + const context = useContext(DataContext); + + if (context === undefined) { + throw new Error('useData must be used within a StateProvider'); + } + + return context; +}; diff --git a/src/hooks/useStateContext.tsx b/src/hooks/useContext/useStateContext.tsx similarity index 100% rename from src/hooks/useStateContext.tsx rename to src/hooks/useContext/useStateContext.tsx diff --git a/src/hooks/useTheme.tsx b/src/hooks/useContext/useTheme.tsx similarity index 100% rename from src/hooks/useTheme.tsx rename to src/hooks/useContext/useTheme.tsx diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx new file mode 100644 index 0000000..a472e99 --- /dev/null +++ b/src/pages/[chain]/index.tsx @@ -0,0 +1,14 @@ +import { CustomHead } from '~/components'; + +const Chain = () => { + const title = 'Chain placeholder'; + + return ( + <> + + {/* TODO: Add chain page containers */} + + ); +}; + +export default Chain; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2283214..e78f744 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -6,7 +6,7 @@ const Home = () => { return ( <> - Web3 Boilerplate + ZKchainHub diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx new file mode 100644 index 0000000..c4fc115 --- /dev/null +++ b/src/providers/DataProvider.tsx @@ -0,0 +1,29 @@ +import { createContext, useState } from 'react'; + +import { ChainData } from '~/types'; + +type ContextType = { + selectedChain?: ChainData; + setSelectedChain: (val: ChainData) => void; +}; + +interface DataProps { + children: React.ReactElement; +} + +export const DataContext = createContext({} as ContextType); + +export const DataProvider = ({ children }: DataProps) => { + const [selectedChain, setSelectedChain] = useState(); + + return ( + + {children} + + ); +}; diff --git a/src/types/Data.ts b/src/types/Data.ts new file mode 100644 index 0000000..ee96ebb --- /dev/null +++ b/src/types/Data.ts @@ -0,0 +1,32 @@ +export interface ChainData { + name: string; + chainId: number; + website: string; + explorer: string; + launchDate: string; + environment: string; + nativeToken: string; + chainType: string; + lastBlock: number; + lastBlockVerified: number; + transactionsPerSecond: number; + totalBatchesCommitted: number; + totalBatchesExecuted: number; + totalBatchesVerified: number; + averageBlockTime: number; + tvl: { + [token: string]: { + value: number; + address: string; + }; + }; + rpcs: { + status: string; + url: string; + }[]; + feeParams: { + batchOverheadL1Gas: number; + computeOverheadPart: number; + maxGasPerBatch: number; + }; +} diff --git a/src/types/index.ts b/src/types/index.ts index 54d9f8d..f5e98b2 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,2 +1,3 @@ export * from './Config'; export * from './Theme'; +export * from './Data'; diff --git a/tsconfig.json b/tsconfig.json index 08b37f1..91e94bf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -26,6 +26,6 @@ "~/*": ["src/*"] } }, - "include": ["./src", "./dist/types/**/*.ts", "./next-env.d.ts", "./cypress/**/*.ts", "./jest.config.ts"], + "include": ["./src", "./dist/types/**/*.ts", "./next-env.d.ts", "./cypress/**/*.ts", "./jest.config.ts", "src/data/chainMockData.ts"], "exclude": ["./node_modules"] } \ No newline at end of file From 3e405d26f37aa123ebb1552ba6a1ddad2b1ea353 Mon Sep 17 00:00:00 2001 From: titix Date: Fri, 12 Jul 2024 17:37:48 -0300 Subject: [PATCH 02/82] feat: data fetching --- .env.example | 1 + .github/workflows/test.yml | 1 + src/config/env.ts | 2 + src/data/chainMockData.json | 60 ++++++++++ src/data/chainMockData.ts | 190 -------------------------------- src/data/ecosystemMockData.json | 92 ++++++++++++++++ src/pages/error.tsx | 5 + src/pages/index.tsx | 4 +- src/providers/DataProvider.tsx | 50 ++++++++- src/providers/index.tsx | 18 ++- src/types/Config.ts | 1 + src/types/Data.ts | 15 +++ src/types/index.ts | 6 +- src/utils/index.ts | 3 +- src/utils/services.ts | 29 +++++ 15 files changed, 274 insertions(+), 203 deletions(-) create mode 100644 src/data/chainMockData.json delete mode 100644 src/data/chainMockData.ts create mode 100644 src/data/ecosystemMockData.json create mode 100644 src/pages/error.tsx create mode 100644 src/utils/services.ts diff --git a/.env.example b/.env.example index fec4611..9607267 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,4 @@ +NEXT_PUBLIC_API_URL= # Example: https://api.example.com NEXT_PUBLIC_RPC_URL= # Example: https://localhost:8545 NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect NEXT_PUBLIC_ALCHEMY_KEY= # API key from Alchemy \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ea0cf54..2d3da82 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -22,6 +22,7 @@ jobs: echo "NEXT_PUBLIC_RPC_URL=${{ secrets.NEXT_PUBLIC_RPC_URL }}" >> .env echo "NEXT_PUBLIC_PROJECT_ID=${{ secrets.NEXT_PUBLIC_PROJECT_ID }}" >> .env echo "NEXT_PUBLIC_ALCHEMY_KEY=${{ secrets.NEXT_PUBLIC_ALCHEMY_KEY }}" >> .env + echo "NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}" >> .env - name: run Cypress and Jest uses: cypress-io/github-action@v6 diff --git a/src/config/env.ts b/src/config/env.ts index 4d3ba54..dd425c6 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -4,10 +4,12 @@ export const getEnv = (): Env => { const NEXT_PUBLIC_RPC_URL = process.env.NEXT_PUBLIC_RPC_URL; const NEXT_PUBLIC_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; const NEXT_PUBLIC_ALCHEMY_KEY = process.env.NEXT_PUBLIC_ALCHEMY_KEY; + const NEXT_PUBLIC_API_URL = process.env.NEXT_PUBLIC_API_BASE_URL; return { RPC_URL: NEXT_PUBLIC_RPC_URL as string, PROJECT_ID: NEXT_PUBLIC_PROJECT_ID as string, ALCHEMY_KEY: NEXT_PUBLIC_ALCHEMY_KEY as string, + API_URL: NEXT_PUBLIC_API_URL as string, }; }; diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json new file mode 100644 index 0000000..b7fe7b1 --- /dev/null +++ b/src/data/chainMockData.json @@ -0,0 +1,60 @@ +[ + { + "name": "ZKSync Era", + "chainId": 324, + "website": "https://example.com", + "explorer": "https://example.com", + "launchDate": "2023-12-05", + "environment": "Production", + "nativeToken": "ETH", + "chainType": "ZKRollup", + "lastBlock": 123456789, + "lastBlockVerified": 123456788, + "transactionsPerSecond": 15, + "totalBatchesCommitted": 1234567890, + "totalBatchesExecuted": 1234567890, + "totalBatchesVerified": 123456788, + "averageBlockTime": 100000, + "tvl": { + "ETH": { + "value": 500000000, + "address": "0x79db...d692" + }, + "USDT": { + "value": 100000000, + "address": "0x79db...d692" + }, + "USDC": { + "value": 50000000, + "address": "0x79db...d692" + }, + "WBTC": { + "value": 30000000, + "address": "0x79db...d692" + } + }, + "rpcs": [ + { + "status": "Active", + "url": "https://lrpc.com" + }, + { + "status": "Active", + "url": "https://blastapi.com" + }, + { + "status": "Inactive", + "url": "https://llamarpc.com" + }, + { + "status": "Active", + "url": "https://alchemy.com" + } + ], + "feeParams": { + "batchOverheadL1Gas": 1234567890, + "computeOverheadPart": 1234567890, + "maxGasPerBatch": 123456788 + } + } +] \ No newline at end of file diff --git a/src/data/chainMockData.ts b/src/data/chainMockData.ts deleted file mode 100644 index 3ea9a9b..0000000 --- a/src/data/chainMockData.ts +++ /dev/null @@ -1,190 +0,0 @@ -export const mockData = [ - { - name: 'ZKSync Era', - chainId: 324, - website: 'https://example.com', - explorer: 'https://example.com', - launchDate: '2023-12-05', - environment: 'Production', - nativeToken: 'ETH', - chainType: 'ZKRollup', - lastBlock: 123456789, - lastBlockVerified: 123456788, - transactionsPerSecond: 15, - totalBatchesCommitted: 1234567890, - totalBatchesExecuted: 1234567890, - totalBatchesVerified: 123456788, - averageBlockTime: 100000, - tvl: { - ETH: { - value: 500000000, - address: '0x79db...d692', - }, - USDT: { - value: 100000000, - address: '0x79db...d692', - }, - USDC: { - value: 50000000, - address: '0x79db...d692', - }, - WBTC: { - value: 30000000, - address: '0x79db...d692', - }, - }, - rpcs: [ - { - status: 'Active', - url: 'https://lrpc.com', - }, - { - status: 'Active', - url: 'https://blastapi.com', - }, - { - status: 'Inactive', - url: 'https://llamarpc.com', - }, - { - status: 'Active', - url: 'https://alchemy.com', - }, - ], - feeParams: { - batchOverheadL1Gas: 1234567890, - computeOverheadPart: 1234567890, - maxGasPerBatch: 123456788, - }, - }, - { - name: 'Optimism', - chainId: 10, - website: 'https://optimism.io', - explorer: 'https://explorer.optimism.io', - launchDate: '2022-05-01', - environment: 'Production', - nativeToken: 'ETH', - chainType: 'Optimistic Rollup', - lastBlock: 987654321, - lastBlockVerified: 987654320, - transactionsPerSecond: 12, - totalBatchesCommitted: 987654321, - totalBatchesExecuted: 987654321, - totalBatchesVerified: 987654320, - averageBlockTime: 150000, - tvl: { - ETH: { - value: 700000000, - address: '0x1234...abcd', - }, - DAI: { - value: 200000000, - address: '0x1234...abcd', - }, - }, - rpcs: [ - { - status: 'Active', - url: 'https://mainnet.optimism.io', - }, - { - status: 'Inactive', - url: 'https://backup.optimism.io', - }, - ], - feeParams: { - batchOverheadL1Gas: 987654321, - computeOverheadPart: 987654321, - maxGasPerBatch: 987654320, - }, - }, - { - name: 'Arbitrum One', - chainId: 42161, - website: 'https://arbitrum.io', - explorer: 'https://explorer.arbitrum.io', - launchDate: '2021-08-31', - environment: 'Production', - nativeToken: 'ETH', - chainType: 'Optimistic Rollup', - lastBlock: 112233445, - lastBlockVerified: 112233444, - transactionsPerSecond: 20, - totalBatchesCommitted: 112233445, - totalBatchesExecuted: 112233445, - totalBatchesVerified: 112233444, - averageBlockTime: 80000, - tvl: { - ETH: { - value: 800000000, - address: '0xabcd...1234', - }, - LINK: { - value: 150000000, - address: '0xabcd...1234', - }, - USDC: { - value: 60000000, - address: '0xabcd...1234', - }, - }, - rpcs: [ - { - status: 'Active', - url: 'https://arb1.arbitrum.io', - }, - ], - feeParams: { - batchOverheadL1Gas: 112233445, - computeOverheadPart: 112233445, - maxGasPerBatch: 112233444, - }, - }, - { - name: 'Polygon', - chainId: 137, - website: 'https://polygon.technology', - explorer: 'https://explorer.matic.network', - launchDate: '2020-05-18', - environment: 'Production', - nativeToken: 'MATIC', - chainType: 'Sidechain', - lastBlock: 998877665, - lastBlockVerified: 998877664, - transactionsPerSecond: 30, - totalBatchesCommitted: 998877665, - totalBatchesExecuted: 998877665, - totalBatchesVerified: 998877664, - averageBlockTime: 20000, - tvl: { - MATIC: { - value: 400000000, - address: '0x5678...efgh', - }, - AAVE: { - value: 50000000, - address: '0x5678...efgh', - }, - WBTC: { - value: 25000000, - address: '0x5678...efgh', - }, - }, - rpcs: [ - { - status: 'Active', - url: 'https://rpc-mainnet.maticvigil.com', - }, - { - status: 'Active', - url: 'https://rpc-mainnet.matic.network', - }, - ], - feeParams: { - batchOverheadL1Gas: 998877665, - computeOverheadPart: 998877665, - maxGasPerBatch: 998877664, - }, - }, -]; diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json new file mode 100644 index 0000000..8605087 --- /dev/null +++ b/src/data/ecosystemMockData.json @@ -0,0 +1,92 @@ +{ + "chains": [ + { + "name": "zkSync Era", + "id": 324, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "ZKRollup" + }, + { + "name": "Teva Chain", + "id": 100, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "ZKRollup" + }, + { + "name": "Cronos zkEVM", + "id": 101, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + }, + { + "name": "GRVT", + "id": 102, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + }, + { + "name": "Lens", + "id": 103, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + }, + { + "name": "ZKChain 104", + "id": 104, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "ZKRollup" + }, + { + "name": "ZKChain 105", + "id": 105, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + } + ], + "tvl": [ + { + "token": "ETH", + "value": 557596566 + }, + { + "token": "USDC", + "value": 90091851 + }, + { + "token": "KOI", + "value": 32757850 + }, + { + "token": "USDT", + "value": 18021853 + }, + { + "token": "WBTC", + "value": 12620248 + }, + { + "token": "wstETH", + "value": 3552439 + }, + { + "token": "MUTE", + "value": 2071481 + }, + { + "token": "rETH", + "value": 1404096 + }, + { + "token": "DAI", + "value": 1080375 + } + ] + } + \ No newline at end of file diff --git a/src/pages/error.tsx b/src/pages/error.tsx new file mode 100644 index 0000000..cb4879f --- /dev/null +++ b/src/pages/error.tsx @@ -0,0 +1,5 @@ +const ErrorPage = () => { + return
Sorry, something went wrong.
; +}; + +export default ErrorPage; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index e78f744..d753b21 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -2,7 +2,7 @@ import Head from 'next/head'; import { Landing } from '~/containers'; -const Home = () => { +const Ecosystem = () => { return ( <> @@ -13,4 +13,4 @@ const Home = () => { ); }; -export default Home; +export default Ecosystem; diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index c4fc115..720f5ba 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -1,10 +1,19 @@ -import { createContext, useState } from 'react'; +import { createContext, useState, useEffect } from 'react'; +import { useQuery } from '@tanstack/react-query'; +import { useRouter } from 'next/router'; -import { ChainData } from '~/types'; +import { ChainData, EcosystemData } from '~/types'; +import { fetchEcosystemData, fetchChainData } from '~/utils'; type ContextType = { selectedChain?: ChainData; setSelectedChain: (val: ChainData) => void; + + isEcosystemLoading: boolean; + isChainLoading: boolean; + + ecosystemData: EcosystemData; + chainData: ChainData; }; interface DataProps { @@ -15,12 +24,49 @@ export const DataContext = createContext({} as ContextType); export const DataProvider = ({ children }: DataProps) => { const [selectedChain, setSelectedChain] = useState(); + const router = useRouter(); + + const { + isLoading: isEcosystemLoading, + data: ecosystemData, + isError: isEcosystemError, + } = useQuery({ + queryKey: ['ecosystem'], + queryFn: fetchEcosystemData, + }); + + const { + isLoading: isChainLoading, + data: chainData, + isError: isChainError, + refetch: refetchChainData, + } = useQuery({ + queryKey: ['chainData', selectedChain?.chainId], + queryFn: () => fetchChainData(selectedChain!.chainId!), + enabled: !!selectedChain?.chainId, + }); + + useEffect(() => { + if (selectedChain) { + refetchChainData(); + } + }, [selectedChain, refetchChainData]); + + useEffect(() => { + if (isEcosystemError || isChainError) { + router.push('/error'); + } + }, [isEcosystemError, isChainError, router]); return ( {children} diff --git a/src/providers/index.tsx b/src/providers/index.tsx index 3047956..b702aa5 100644 --- a/src/providers/index.tsx +++ b/src/providers/index.tsx @@ -1,19 +1,27 @@ import type { ReactNode } from 'react'; +import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; import { StateProvider } from './StateProvider'; import { ThemeProvider } from './ThemeProvider'; import { WalletProvider } from './WalletProvider'; +import { DataProvider } from './DataProvider'; type Props = { children: ReactNode; }; +const queryClient = new QueryClient(); + export const Providers = ({ children }: Props) => { return ( - - - {children} - - + + + + + {children} + + + + ); }; diff --git a/src/types/Config.ts b/src/types/Config.ts index 7537f5c..3bd98b1 100644 --- a/src/types/Config.ts +++ b/src/types/Config.ts @@ -2,6 +2,7 @@ export interface Env { RPC_URL: string; PROJECT_ID: string; ALCHEMY_KEY: string; + API_URL: string; } export interface Constants { diff --git a/src/types/Data.ts b/src/types/Data.ts index ee96ebb..4598036 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -30,3 +30,18 @@ export interface ChainData { maxGasPerBatch: number; }; } + +export interface EcosystemData { + chain: { + name: string; + id: number; + nativeToken: string; + tvl: { + [token: string]: number; + }; + type: string; + }; + tvl: { + [token: string]: number; + }[]; +} diff --git a/src/types/index.ts b/src/types/index.ts index f5e98b2..4b0c6e3 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,3 +1,3 @@ -export * from './Config'; -export * from './Theme'; -export * from './Data'; +export * from './config'; +export * from './theme'; +export * from './data'; diff --git a/src/utils/index.ts b/src/utils/index.ts index a54ea12..9c03d2a 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,4 +1,5 @@ export * from './getTheme'; -export * from './Variables'; +export * from './variables'; export * from './config'; export * from './format'; +export * from './services'; diff --git a/src/utils/services.ts b/src/utils/services.ts new file mode 100644 index 0000000..6c9490b --- /dev/null +++ b/src/utils/services.ts @@ -0,0 +1,29 @@ +import { getConfig } from '~/config'; +import ecosystemMockData from '~/data/ecosystemMockData.json'; +import chainMockData from '~/data/chainMockData.json'; + +const { API_URL } = getConfig(); + +export const fetchEcosystemData = async () => { + // temporary for mock data + if (!API_URL) { + return Promise.resolve(ecosystemMockData); + } + const res = await fetch(`${API_URL}/ecosystem`); + if (!res.ok) { + throw new Error('Failed to fetch ecosystem data'); + } + return res.json(); +}; + +export const fetchChainData = async (chainId: number) => { + // temporary for mock data + if (!API_URL) { + return Promise.resolve(chainMockData); + } + const res = await fetch(`${API_URL}/zkchain/${chainId}`); + if (!res.ok) { + throw new Error('Failed to fetch chain data'); + } + return res.json(); +}; From 1138baf463d77c247c23bca8bec3f802997870d9 Mon Sep 17 00:00:00 2001 From: titix Date: Fri, 12 Jul 2024 17:41:51 -0300 Subject: [PATCH 03/82] style: file name --- src/utils/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index 9c03d2a..2b5edbb 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,5 +1,5 @@ export * from './getTheme'; -export * from './variables'; +export * from './Variables'; export * from './config'; export * from './format'; export * from './services'; From 1a5f8e5f27dfef0c91156cd6042cc1ccf32bf5e3 Mon Sep 17 00:00:00 2001 From: titix Date: Fri, 12 Jul 2024 17:45:11 -0300 Subject: [PATCH 04/82] style: file name --- src/types/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/types/index.ts b/src/types/index.ts index 4b0c6e3..f5e98b2 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,3 +1,3 @@ -export * from './config'; -export * from './theme'; -export * from './data'; +export * from './Config'; +export * from './Theme'; +export * from './Data'; From a0ca85a36329a9756e54dd1153398aac21fa697c Mon Sep 17 00:00:00 2001 From: titix Date: Fri, 12 Jul 2024 17:47:53 -0300 Subject: [PATCH 05/82] style: json formatting --- src/data/chainMockData.json | 2 +- src/data/ecosystemMockData.json | 181 ++++++++++++++++---------------- 2 files changed, 91 insertions(+), 92 deletions(-) diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json index b7fe7b1..767de09 100644 --- a/src/data/chainMockData.json +++ b/src/data/chainMockData.json @@ -57,4 +57,4 @@ "maxGasPerBatch": 123456788 } } -] \ No newline at end of file +] diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index 8605087..f738e79 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -1,92 +1,91 @@ { - "chains": [ - { - "name": "zkSync Era", - "id": 324, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "ZKRollup" - }, - { - "name": "Teva Chain", - "id": 100, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "ZKRollup" - }, - { - "name": "Cronos zkEVM", - "id": 101, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - }, - { - "name": "GRVT", - "id": 102, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - }, - { - "name": "Lens", - "id": 103, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - }, - { - "name": "ZKChain 104", - "id": 104, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "ZKRollup" - }, - { - "name": "ZKChain 105", - "id": 105, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - } - ], - "tvl": [ - { - "token": "ETH", - "value": 557596566 - }, - { - "token": "USDC", - "value": 90091851 - }, - { - "token": "KOI", - "value": 32757850 - }, - { - "token": "USDT", - "value": 18021853 - }, - { - "token": "WBTC", - "value": 12620248 - }, - { - "token": "wstETH", - "value": 3552439 - }, - { - "token": "MUTE", - "value": 2071481 - }, - { - "token": "rETH", - "value": 1404096 - }, - { - "token": "DAI", - "value": 1080375 - } - ] - } - \ No newline at end of file + "chains": [ + { + "name": "zkSync Era", + "id": 324, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "ZKRollup" + }, + { + "name": "Teva Chain", + "id": 100, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "ZKRollup" + }, + { + "name": "Cronos zkEVM", + "id": 101, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + }, + { + "name": "GRVT", + "id": 102, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + }, + { + "name": "Lens", + "id": 103, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + }, + { + "name": "ZKChain 104", + "id": 104, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "ZKRollup" + }, + { + "name": "ZKChain 105", + "id": 105, + "nativeToken": "ETH", + "tvl": 1000000, + "type": "Validium" + } + ], + "tvl": [ + { + "token": "ETH", + "value": 557596566 + }, + { + "token": "USDC", + "value": 90091851 + }, + { + "token": "KOI", + "value": 32757850 + }, + { + "token": "USDT", + "value": 18021853 + }, + { + "token": "WBTC", + "value": 12620248 + }, + { + "token": "wstETH", + "value": 3552439 + }, + { + "token": "MUTE", + "value": 2071481 + }, + { + "token": "rETH", + "value": 1404096 + }, + { + "token": "DAI", + "value": 1080375 + } + ] +} From 7ab5a8dbe0db96f671a82cd4c5df3bbb5049542e Mon Sep 17 00:00:00 2001 From: titix Date: Mon, 15 Jul 2024 16:55:00 -0300 Subject: [PATCH 06/82] fix: queryClient | remove refetch effect --- src/providers/DataProvider.tsx | 14 +++++--------- src/providers/index.tsx | 19 +++++++------------ 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index 720f5ba..f8d02a3 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -1,5 +1,5 @@ -import { createContext, useState, useEffect } from 'react'; -import { useQuery } from '@tanstack/react-query'; +import { createContext, useState, useEffect, ReactNode } from 'react'; +import { useQuery, UseQueryResult } from '@tanstack/react-query'; import { useRouter } from 'next/router'; import { ChainData, EcosystemData } from '~/types'; @@ -11,13 +11,14 @@ type ContextType = { isEcosystemLoading: boolean; isChainLoading: boolean; + refetchChainData: (options: { throwOnError: boolean; cancelRefetch: boolean }) => Promise; ecosystemData: EcosystemData; chainData: ChainData; }; interface DataProps { - children: React.ReactElement; + children: ReactNode; } export const DataContext = createContext({} as ContextType); @@ -46,12 +47,6 @@ export const DataProvider = ({ children }: DataProps) => { enabled: !!selectedChain?.chainId, }); - useEffect(() => { - if (selectedChain) { - refetchChainData(); - } - }, [selectedChain, refetchChainData]); - useEffect(() => { if (isEcosystemError || isChainError) { router.push('/error'); @@ -67,6 +62,7 @@ export const DataProvider = ({ children }: DataProps) => { isChainLoading, ecosystemData, chainData, + refetchChainData, }} > {children} diff --git a/src/providers/index.tsx b/src/providers/index.tsx index b702aa5..6bfc7e8 100644 --- a/src/providers/index.tsx +++ b/src/providers/index.tsx @@ -1,5 +1,4 @@ import type { ReactNode } from 'react'; -import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; import { StateProvider } from './StateProvider'; import { ThemeProvider } from './ThemeProvider'; @@ -10,18 +9,14 @@ type Props = { children: ReactNode; }; -const queryClient = new QueryClient(); - export const Providers = ({ children }: Props) => { return ( - - - - - {children} - - - - + + + + {children} + + + ); }; From 285c55bd9cdc27c6679002ad229f8d341c277b6d Mon Sep 17 00:00:00 2001 From: titix Date: Mon, 15 Jul 2024 18:16:24 -0300 Subject: [PATCH 07/82] feat: chain routes --- src/pages/[chain]/index.tsx | 49 +++++++++++++++++++++++++++++++--- src/providers/DataProvider.tsx | 16 +++++------ src/types/Data.ts | 20 +++++++------- 3 files changed, 65 insertions(+), 20 deletions(-) diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index a472e99..3e96de9 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -1,14 +1,57 @@ +import { GetStaticPaths, GetStaticProps } from 'next'; +import { useEffect } from 'react'; + +import { ecosystemChainData } from '~/types'; import { CustomHead } from '~/components'; +import { useData } from '~/hooks/useContext/useData'; +import { fetchEcosystemData } from '~/utils'; + +interface ChainProps { + chain: ecosystemChainData; +} + +const Chain = ({ chain }: ChainProps) => { + const { setSelectedChainId } = useData(); -const Chain = () => { - const title = 'Chain placeholder'; + useEffect(() => { + setSelectedChainId(chain.id); + }, [chain.id, setSelectedChainId]); return ( <> - + +

{chain.name}

{/* TODO: Add chain page containers */} ); }; +export const getStaticPaths: GetStaticPaths = async () => { + const ecosystemData = await fetchEcosystemData(); + const chains = ecosystemData.chains; + + const paths = chains.map((chain: ecosystemChainData) => ({ + params: { chain: chain.id.toString() }, + })); + + return { paths, fallback: false }; +}; + +export const getStaticProps: GetStaticProps = async ({ params }) => { + const ecosystemData = await fetchEcosystemData(); + const chains = ecosystemData.chains; + const chainId = parseInt(params?.chain as string); + const chain = chains.find((chain: ecosystemChainData) => chain.id === chainId); + + if (!chain) { + return { notFound: true }; + } + + return { + props: { + chain, + }, + }; +}; + export default Chain; diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index f8d02a3..5dc964e 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -6,8 +6,8 @@ import { ChainData, EcosystemData } from '~/types'; import { fetchEcosystemData, fetchChainData } from '~/utils'; type ContextType = { - selectedChain?: ChainData; - setSelectedChain: (val: ChainData) => void; + selectedChainId?: number; + setSelectedChainId: (val: number) => void; isEcosystemLoading: boolean; isChainLoading: boolean; @@ -24,7 +24,7 @@ interface DataProps { export const DataContext = createContext({} as ContextType); export const DataProvider = ({ children }: DataProps) => { - const [selectedChain, setSelectedChain] = useState(); + const [selectedChainId, setSelectedChainId] = useState(); const router = useRouter(); const { @@ -42,9 +42,9 @@ export const DataProvider = ({ children }: DataProps) => { isError: isChainError, refetch: refetchChainData, } = useQuery({ - queryKey: ['chainData', selectedChain?.chainId], - queryFn: () => fetchChainData(selectedChain!.chainId!), - enabled: !!selectedChain?.chainId, + queryKey: ['chainData', selectedChainId], + queryFn: () => fetchChainData(selectedChainId!), + enabled: !!selectedChainId, }); useEffect(() => { @@ -56,8 +56,8 @@ export const DataProvider = ({ children }: DataProps) => { return ( Date: Mon, 15 Jul 2024 18:21:19 -0300 Subject: [PATCH 08/82] style: type name --- src/pages/[chain]/index.tsx | 8 ++++---- src/types/Data.ts | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index 3e96de9..a6c83cd 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -1,13 +1,13 @@ import { GetStaticPaths, GetStaticProps } from 'next'; import { useEffect } from 'react'; -import { ecosystemChainData } from '~/types'; +import { EcosystemChainData } from '~/types'; import { CustomHead } from '~/components'; import { useData } from '~/hooks/useContext/useData'; import { fetchEcosystemData } from '~/utils'; interface ChainProps { - chain: ecosystemChainData; + chain: EcosystemChainData; } const Chain = ({ chain }: ChainProps) => { @@ -30,7 +30,7 @@ export const getStaticPaths: GetStaticPaths = async () => { const ecosystemData = await fetchEcosystemData(); const chains = ecosystemData.chains; - const paths = chains.map((chain: ecosystemChainData) => ({ + const paths = chains.map((chain: EcosystemChainData) => ({ params: { chain: chain.id.toString() }, })); @@ -41,7 +41,7 @@ export const getStaticProps: GetStaticProps = async ({ params }) => { const ecosystemData = await fetchEcosystemData(); const chains = ecosystemData.chains; const chainId = parseInt(params?.chain as string); - const chain = chains.find((chain: ecosystemChainData) => chain.id === chainId); + const chain = chains.find((chain: EcosystemChainData) => chain.id === chainId); if (!chain) { return { notFound: true }; diff --git a/src/types/Data.ts b/src/types/Data.ts index 7b0b4ee..d18071e 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -31,7 +31,7 @@ export interface ChainData { }; } -export interface ecosystemChainData { +export interface EcosystemChainData { name: string; id: number; nativeToken: string; @@ -42,7 +42,7 @@ export interface ecosystemChainData { } export interface EcosystemData { - chains: ecosystemChainData[]; + chains: EcosystemChainData[]; tvl: { [token: string]: number; }[]; From 35621eb60d08952d5d77dce65e7cf5d430424c3f Mon Sep 17 00:00:00 2001 From: titix Date: Tue, 16 Jul 2024 09:39:13 -0300 Subject: [PATCH 09/82] style: imports --- src/hooks/useContext/index.ts | 2 ++ src/pages/[chain]/index.tsx | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hooks/useContext/index.ts b/src/hooks/useContext/index.ts index 92f170c..c570b64 100644 --- a/src/hooks/useContext/index.ts +++ b/src/hooks/useContext/index.ts @@ -1 +1,3 @@ export * from './useStateContext'; +export * from './useData'; +export * from './useTheme'; diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index a6c83cd..34eed58 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -1,9 +1,9 @@ -import { GetStaticPaths, GetStaticProps } from 'next'; import { useEffect } from 'react'; +import { GetStaticPaths, GetStaticProps } from 'next'; import { EcosystemChainData } from '~/types'; import { CustomHead } from '~/components'; -import { useData } from '~/hooks/useContext/useData'; +import { useData } from '~/hooks'; import { fetchEcosystemData } from '~/utils'; interface ChainProps { From 0d1a4c15bc53efdb105d00440b6759beba42f6ba Mon Sep 17 00:00:00 2001 From: titix Date: Tue, 16 Jul 2024 16:51:06 -0300 Subject: [PATCH 10/82] feat: ecosystem layout --- src/components/SearchBar.tsx | 7 +++++++ src/components/Table.tsx | 28 +++++++++++++++++++++++++++ src/components/TitleBanner.tsx | 10 ++++++++++ src/components/TotalValueLocked.tsx | 21 ++++++++++++++++++++ src/components/index.ts | 3 +++ src/containers/Dashboard/index.tsx | 15 ++++++++++++++ src/containers/Landing/index.tsx | 9 ++++++--- src/containers/LockedAssets/index.tsx | 17 ++++++++++++++++ src/containers/index.ts | 1 + src/data/ecosystemMockData.json | 1 + src/types/Data.ts | 5 ++--- 11 files changed, 111 insertions(+), 6 deletions(-) create mode 100644 src/components/SearchBar.tsx create mode 100644 src/components/Table.tsx create mode 100644 src/components/TitleBanner.tsx create mode 100644 src/components/TotalValueLocked.tsx create mode 100644 src/containers/Dashboard/index.tsx create mode 100644 src/containers/LockedAssets/index.tsx diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx new file mode 100644 index 0000000..cd1018e --- /dev/null +++ b/src/components/SearchBar.tsx @@ -0,0 +1,7 @@ +export const SearchBar = () => { + return ( +
+ +
+ ); +}; diff --git a/src/components/Table.tsx b/src/components/Table.tsx new file mode 100644 index 0000000..377796c --- /dev/null +++ b/src/components/Table.tsx @@ -0,0 +1,28 @@ +import { useData } from '~/hooks'; + +export const Table = () => { + const { ecosystemData } = useData(); + return ( + + + + + + + + + + {ecosystemData?.chains.map((data, index) => { + return ( + + + + + + + + ); + })} +
ChainChain IDNative tokenTVL - L1Type
{data.name}{data.id}{data.nativeToken}{data.tvl}{data.type}
+ ); +}; diff --git a/src/components/TitleBanner.tsx b/src/components/TitleBanner.tsx new file mode 100644 index 0000000..36a52f4 --- /dev/null +++ b/src/components/TitleBanner.tsx @@ -0,0 +1,10 @@ +export const TitleBanner = () => { + return ( +
+ zkSync Ecosystem +
+ Gas Price: 10 wei ยท ERC-20 Transfer: $10 +
+
+ ); +}; diff --git a/src/components/TotalValueLocked.tsx b/src/components/TotalValueLocked.tsx new file mode 100644 index 0000000..38b4fe1 --- /dev/null +++ b/src/components/TotalValueLocked.tsx @@ -0,0 +1,21 @@ +export interface TokenValueLocked { + token: string; + value: number; +} + +interface TotalValueLockedProps { + tvl: { [token: string]: number }[]; +} + +export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { + return ( +
+ {tvl.map((data, index) => ( +
+ {data.token} + {data.value} +
+ ))} +
+ ); +}; diff --git a/src/components/index.ts b/src/components/index.ts index a25d295..c99907e 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,3 +1,6 @@ export * from './Theme'; export * from './Disclaimer'; export * from './CustomHead'; +export * from './Table'; +export * from './SearchBar'; +export * from './TotalValueLocked'; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx new file mode 100644 index 0000000..96b5855 --- /dev/null +++ b/src/containers/Dashboard/index.tsx @@ -0,0 +1,15 @@ +import { SearchBar, Table } from '~/components'; + +const Dashboard = () => { + return ( +
+
+

Chain list

+ +
+ + + ); +}; + +export default Dashboard; diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 7fe18b3..11feb44 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -1,11 +1,15 @@ import { styled } from '@mui/material/styles'; -import { DISCLAIMER_HEIGHT, SURROUND_HEIGHT } from '~/utils'; +import Dashboard from '../Dashboard'; +import { LockedAssets } from '../LockedAssets'; +import { TitleBanner } from '~/components/TitleBanner'; export const Landing = () => { return ( -

Web3 React Boilerplate

+ + +
); }; @@ -13,7 +17,6 @@ export const Landing = () => { const LandingContainer = styled('div')({ display: 'flex', flexDirection: 'column', - height: `calc(100vh - ${SURROUND_HEIGHT}rem - ${DISCLAIMER_HEIGHT}rem)`, padding: '0 8rem', alignItems: 'center', justifyContent: 'center', diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx new file mode 100644 index 0000000..6db0fd0 --- /dev/null +++ b/src/containers/LockedAssets/index.tsx @@ -0,0 +1,17 @@ +import { TotalValueLocked } from '~/components'; +import { useData } from '~/hooks'; + +export const LockedAssets = () => { + const { ecosystemData } = useData(); + + return ( +
+ {ecosystemData && ( + <> +

Locked assets in shared bridge: {ecosystemData.total}

+ + + )} +
+ ); +}; diff --git a/src/containers/index.ts b/src/containers/index.ts index 162e75c..f8f6565 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -2,3 +2,4 @@ export * from './Footer'; export * from './Header'; export * from './Layout'; export * from './Landing'; +export * from './Dashboard'; diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index f738e79..c701642 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -50,6 +50,7 @@ "type": "Validium" } ], + "total": 7000000, "tvl": [ { "token": "ETH", diff --git a/src/types/Data.ts b/src/types/Data.ts index d18071e..edce979 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -35,14 +35,13 @@ export interface EcosystemChainData { name: string; id: number; nativeToken: string; - tvl: { - [token: string]: number; - }; + tvl: number; type: string; } export interface EcosystemData { chains: EcosystemChainData[]; + total: number; tvl: { [token: string]: number; }[]; From 33b5e228f2739660031ef0ed82b9520915ffa2ec Mon Sep 17 00:00:00 2001 From: titix Date: Tue, 16 Jul 2024 16:56:53 -0300 Subject: [PATCH 11/82] tests: remove boilerplate datatest --- cypress/e2e/spec.cy.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/cypress/e2e/spec.cy.ts b/cypress/e2e/spec.cy.ts index e9e7f2a..029c8bb 100644 --- a/cypress/e2e/spec.cy.ts +++ b/cypress/e2e/spec.cy.ts @@ -1,6 +1,5 @@ describe('Renders every component', () => { it('Renders App component', () => { cy.visit('/'); - cy.getByTestId('boilerplate-title').should('exist'); }); }); From 8b82fb8c802f9c604f20a582a40f7f0e333dc5bb Mon Sep 17 00:00:00 2001 From: titix Date: Wed, 17 Jul 2024 11:22:48 -0300 Subject: [PATCH 12/82] fix: html tags --- src/components/Title.tsx | 11 +++++++++++ src/containers/Dashboard/index.tsx | 11 ++++++----- src/containers/Landing/index.tsx | 2 +- src/containers/LockedAssets/index.tsx | 7 ++++--- 4 files changed, 22 insertions(+), 9 deletions(-) create mode 100644 src/components/Title.tsx diff --git a/src/components/Title.tsx b/src/components/Title.tsx new file mode 100644 index 0000000..fb11d57 --- /dev/null +++ b/src/components/Title.tsx @@ -0,0 +1,11 @@ +interface TitleProps { + title: string; +} + +export const Title = ({ title }: TitleProps) => { + return ( + <> +

{title}

+ + ); +}; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 96b5855..113a271 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,14 +1,15 @@ import { SearchBar, Table } from '~/components'; +import { Title } from '~/components/Title'; const Dashboard = () => { return ( -
-
-

Chain list

+
+
+ <SearchBar /> - </div> + </header> <Table /> - </div> + </section> ); }; diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 11feb44..a18a028 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -14,7 +14,7 @@ export const Landing = () => { ); }; -const LandingContainer = styled('div')({ +const LandingContainer = styled('main')({ display: 'flex', flexDirection: 'column', padding: '0 8rem', diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 6db0fd0..03e48c8 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -1,17 +1,18 @@ import { TotalValueLocked } from '~/components'; +import { Title } from '~/components/Title'; import { useData } from '~/hooks'; export const LockedAssets = () => { const { ecosystemData } = useData(); return ( - <div> + <section> {ecosystemData && ( <> - <h2>Locked assets in shared bridge: {ecosystemData.total}</h2> + <Title title={`Locked assets in shared bridge: ${ecosystemData.total}`} /> <TotalValueLocked tvl={ecosystemData.tvl} /> </> )} - </div> + </section> ); }; From 3e1f3a91d2b700986e734d8cc81f3598ec61ea8e Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:51:48 -0300 Subject: [PATCH 13/82] style: fix quotes Co-authored-by: Ardy <116569704+0xArdy@users.noreply.github.com> --- src/containers/Dashboard/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 113a271..19e13d5 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -5,7 +5,7 @@ const Dashboard = () => { return ( <section> <header> - <Title title={'Chain list'} /> + <Title title="Chain list" /> <SearchBar /> </header> <Table /> From 27e757118a37f11c652d7338387f9263ce5b20b2 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:52:04 -0300 Subject: [PATCH 14/82] style: imports Co-authored-by: Ardy <116569704+0xArdy@users.noreply.github.com> --- src/containers/LockedAssets/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 03e48c8..c365ac0 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -1,5 +1,4 @@ -import { TotalValueLocked } from '~/components'; -import { Title } from '~/components/Title'; +import { TotalValueLocked, Title } from '~/components'; import { useData } from '~/hooks'; export const LockedAssets = () => { From c665412011481e6ded362baf6cc14e53e1183ab0 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 17 Jul 2024 11:52:16 -0300 Subject: [PATCH 15/82] style: imports Co-authored-by: Ardy <116569704+0xArdy@users.noreply.github.com> --- src/containers/Dashboard/index.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 19e13d5..e7fc3d1 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,5 +1,4 @@ -import { SearchBar, Table } from '~/components'; -import { Title } from '~/components/Title'; +import { SearchBar, Table, Title } from '~/components'; const Dashboard = () => { return ( From 99ac76ff1f3032f0e589b6405ed7a52d573df9b0 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 12:00:05 -0300 Subject: [PATCH 16/82] feat: search bar --- src/components/SearchBar.tsx | 13 +++++++++++-- src/components/Table.tsx | 11 +++++++---- src/components/index.ts | 1 + src/containers/Dashboard/index.tsx | 22 ++++++++++++++++++---- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index cd1018e..94fb92a 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,7 +1,16 @@ -export const SearchBar = () => { +interface SearchBarProps { + value: string; + onChange: (value: string) => void; +} + +export const SearchBar = ({ value, onChange }: SearchBarProps) => { + const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => { + onChange(event.target.value); + }; + return ( <form> - <input type='text' placeholder='Search...' /> + <input type='text' value={value} onChange={handleChange} placeholder='Search...' /> </form> ); }; diff --git a/src/components/Table.tsx b/src/components/Table.tsx index 377796c..348c80f 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,7 +1,10 @@ -import { useData } from '~/hooks'; +import { EcosystemChainData } from '~/types'; -export const Table = () => { - const { ecosystemData } = useData(); +interface TableProps { + chains: EcosystemChainData[]; +} + +export const Table = ({ chains }: TableProps) => { return ( <table> <tr> @@ -12,7 +15,7 @@ export const Table = () => { <th>Type</th> </tr> - {ecosystemData?.chains.map((data, index) => { + {chains?.map((data, index) => { return ( <tr key={index}> <td>{data.name}</td> diff --git a/src/components/index.ts b/src/components/index.ts index c99907e..35ed63f 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -4,3 +4,4 @@ export * from './CustomHead'; export * from './Table'; export * from './SearchBar'; export * from './TotalValueLocked'; +export * from './Title'; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 113a271..e8abe4b 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,14 +1,28 @@ -import { SearchBar, Table } from '~/components'; -import { Title } from '~/components/Title'; +import { useState } from 'react'; +import { SearchBar, Table, Title } from '~/components'; +import { useData } from '~/hooks'; const Dashboard = () => { + const { ecosystemData } = useData(); + const [searchTerm, setSearchTerm] = useState<string>(''); + + const handleChange = (value: string) => { + setSearchTerm(value); + }; + + // Filter chains based on search term + const filteredChains = ecosystemData?.chains.filter((chain) => + chain.name.toLowerCase().includes(searchTerm.toLowerCase()), + ); + return ( <section> <header> <Title title={'Chain list'} /> - <SearchBar /> + <SearchBar value={searchTerm} onChange={handleChange} /> </header> - <Table /> + + <Table chains={filteredChains} /> </section> ); }; From 6e39b9cd8433330bd96305756edc28f05a43a418 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 12:18:33 -0300 Subject: [PATCH 17/82] style: fix imports --- src/components/index.ts | 2 ++ src/containers/Dashboard/index.tsx | 6 ++---- src/containers/Landing/index.tsx | 5 ++--- src/containers/index.ts | 1 + src/utils/misc.ts | 0 5 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 src/utils/misc.ts diff --git a/src/components/index.ts b/src/components/index.ts index c99907e..e2912ee 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -4,3 +4,5 @@ export * from './CustomHead'; export * from './Table'; export * from './SearchBar'; export * from './TotalValueLocked'; +export * from './Title'; +export * from './TitleBanner'; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index e7fc3d1..2633f45 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,15 +1,13 @@ import { SearchBar, Table, Title } from '~/components'; -const Dashboard = () => { +export const Dashboard = () => { return ( <section> <header> - <Title title="Chain list" /> + <Title title='Chain list' /> <SearchBar /> </header> <Table /> </section> ); }; - -export default Dashboard; diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index a18a028..391e76a 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -1,8 +1,7 @@ import { styled } from '@mui/material/styles'; -import Dashboard from '../Dashboard'; -import { LockedAssets } from '../LockedAssets'; -import { TitleBanner } from '~/components/TitleBanner'; +import { Dashboard, LockedAssets } from '~/containers'; +import { TitleBanner } from '~/components'; export const Landing = () => { return ( diff --git a/src/containers/index.ts b/src/containers/index.ts index f8f6565..ac2a1af 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -3,3 +3,4 @@ export * from './Header'; export * from './Layout'; export * from './Landing'; export * from './Dashboard'; +export * from './LockedAssets'; diff --git a/src/utils/misc.ts b/src/utils/misc.ts new file mode 100644 index 0000000..e69de29 From c43abdbc67a74b89c6f4ec81b976ae18e3114c41 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 15:46:06 -0300 Subject: [PATCH 18/82] feat: i18n set up --- next-i18next.config.js | 9 +++++ next.config.mjs | 7 +++- package.json | 2 + pnpm-lock.yaml | 69 +++++++++++++++++++++++++++++++++++ public/locales/en/common.json | 0 public/locales/es/common.json | 0 src/pages/_app.tsx | 4 +- src/pages/index.tsx | 10 +++++ 8 files changed, 99 insertions(+), 2 deletions(-) create mode 100644 next-i18next.config.js create mode 100644 public/locales/en/common.json create mode 100644 public/locales/es/common.json diff --git a/next-i18next.config.js b/next-i18next.config.js new file mode 100644 index 0000000..226c96c --- /dev/null +++ b/next-i18next.config.js @@ -0,0 +1,9 @@ +/** @type {import('next-i18next').UserConfig} */ + +// eslint-disable-next-line no-undef +module.exports = { + i18n: { + locales: ['en', 'es'], + defaultLocale: 'en', + }, + }; \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs index 4678774..c8e5580 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,9 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + i18n: { + locales: ['en', 'es'], + defaultLocale: 'en', + }, +}; export default nextConfig; diff --git a/package.json b/package.json index e82fb5b..a85ef92 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,9 @@ "@next/eslint-plugin-next": "14.1.3", "@rainbow-me/rainbowkit": "2.0.2", "@tanstack/react-query": "5.28.0", + "i18next": "23.12.1", "next": "14.1.3", + "next-i18next": "15.3.0", "react": "18.2.0", "react-dom": "18.2.0", "react-router-dom": "6.15.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c0d77b..777c4ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,9 +35,15 @@ dependencies: '@tanstack/react-query': specifier: 5.28.0 version: 5.28.0(react@18.2.0) + i18next: + specifier: 23.12.1 + version: 23.12.1 next: specifier: 14.1.3 version: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) + next-i18next: + specifier: ^15.3.0 + version: 15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@13.5.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -3730,6 +3736,13 @@ packages: resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} dev: false + /@types/hoist-non-react-statics@3.3.5: + resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} + dependencies: + '@types/react': 18.2.15 + hoist-non-react-statics: 3.3.2 + dev: false + /@types/istanbul-lib-coverage@2.0.6: resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -5486,6 +5499,11 @@ packages: dependencies: browserslist: 4.23.0 + /core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + requiresBuild: true + dev: false + /core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} dev: true @@ -7423,12 +7441,22 @@ packages: '@babel/runtime': 7.24.1 dev: false + /i18next-fs-backend@2.3.1: + resolution: {integrity: sha512-tvfXskmG/9o+TJ5Fxu54sSO5OkY6d+uMn+K6JiUGLJrwxAVfer+8V3nU8jq3ts9Pe5lXJv4b1N7foIjJ8Iy2Gg==} + dev: false + /i18next@22.5.1: resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} dependencies: '@babel/runtime': 7.24.1 dev: false + /i18next@23.12.1: + resolution: {integrity: sha512-l4y291ZGRgUhKuqVSiqyuU2DDzxKStlIWSaoNBR4grYmh0X+pRYbFpTMs3CnJ5ECKbOI8sQcJ3PbTUfLgPRaMA==} + dependencies: + '@babel/runtime': 7.24.1 + dev: false + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -9302,6 +9330,26 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false + /next-i18next@15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@13.5.0)(react@18.2.0): + resolution: {integrity: sha512-bq7Cc9XJFcmGOCLnyEtHaeJ3+JJNsI/8Pkj9BaHAnhm4sZ9vNNC4ZsaqYnlRZ7VH5ypSo73fEqLK935jLsmCvQ==} + engines: {node: '>=14'} + peerDependencies: + i18next: '>= 23.7.13' + next: '>= 12.0.0' + react: '>= 17.0.2' + react-i18next: '>= 13.5.0' + dependencies: + '@babel/runtime': 7.24.1 + '@types/hoist-non-react-statics': 3.3.5 + core-js: 3.37.1 + hoist-non-react-statics: 3.3.2 + i18next: 23.12.1 + i18next-fs-backend: 2.3.1 + next: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-i18next: 13.5.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + dev: false + /next@14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g==} engines: {node: '>=18.17.0'} @@ -10106,6 +10154,27 @@ packages: react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) dev: false + /react-i18next@13.5.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.24.1 + html-parse-stringify: 3.0.1 + i18next: 23.12.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) + dev: false + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} diff --git a/public/locales/en/common.json b/public/locales/en/common.json new file mode 100644 index 0000000..e69de29 diff --git a/public/locales/es/common.json b/public/locales/es/common.json new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index bc4ba68..71e725f 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,4 +1,6 @@ import { AppProps } from 'next/app'; +import { appWithTranslation } from 'next-i18next'; + import { Providers } from '~/providers'; import Layout from './layout'; @@ -12,4 +14,4 @@ const Home = ({ Component, pageProps }: AppProps) => { ); }; -export default Home; +export default appWithTranslation(Home); diff --git a/src/pages/index.tsx b/src/pages/index.tsx index d753b21..1320a60 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,7 +1,17 @@ import Head from 'next/head'; +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { GetStaticProps, GetStaticPropsContext } from 'next'; import { Landing } from '~/containers'; +export const getStaticProps: GetStaticProps = async ({ locale }: GetStaticPropsContext) => { + return { + props: { + ...(await serverSideTranslations(locale ?? 'en', ['common'])), + }, + }; +}; + const Ecosystem = () => { return ( <> From e855fcb7a8f889fa2f56878746f9d688900a7458 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 15:50:41 -0300 Subject: [PATCH 19/82] fix: resolve dashboard export --- src/containers/Dashboard/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 6548cc7..e968b94 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { SearchBar, Table, Title } from '~/components'; import { useData } from '~/hooks'; -const Dashboard = () => { +export const Dashboard = () => { const { ecosystemData } = useData(); const [searchTerm, setSearchTerm] = useState<string>(''); From 7af1783a69c12eab5cdad0b41e27eb0c6491a7fb Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 16:04:29 -0300 Subject: [PATCH 20/82] chore: install --- pnpm-lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 777c4ef..475a111 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,7 +42,7 @@ dependencies: specifier: 14.1.3 version: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) next-i18next: - specifier: ^15.3.0 + specifier: 15.3.0 version: 15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@13.5.0)(react@18.2.0) react: specifier: 18.2.0 From 38d3de18e665e0fc9bea9a7cfef28c12bb9cba6f Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 16:21:12 -0300 Subject: [PATCH 21/82] fix: config --- next-i18next.config.js | 17 ++++++++++------- package.json | 3 +-- public/locales/en/common.json | 5 +++++ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index 226c96c..b9a1286 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -1,9 +1,12 @@ -/** @type {import('next-i18next').UserConfig} */ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable no-undef */ + +const path = require('path'); -// eslint-disable-next-line no-undef module.exports = { - i18n: { - locales: ['en', 'es'], - defaultLocale: 'en', - }, - }; \ No newline at end of file + i18n: { + locales: ['en', 'es'], + defaultLocale: 'en', + }, + localePath: typeof window === 'undefined' ? path.resolve('./public/locales') : '/locales', +}; diff --git a/package.json b/package.json index a85ef92..be79128 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,7 @@ { - "name": "web3-react-boilerplate", + "name": "ZKchainHub", "private": true, "version": "0.0.0", - "type": "module", "license": "MIT", "author": "Wonderland", "engines": { diff --git a/public/locales/en/common.json b/public/locales/en/common.json index e69de29..41e3090 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -0,0 +1,5 @@ +{ + "HOME":{ + + } +} \ No newline at end of file From c6e6722fc1ac95451999ea9ac972331830aafec7 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 17:53:14 -0300 Subject: [PATCH 22/82] feat: add translations --- pnpm-lock.yaml | 29 ++++++++----- public/locales/en/common.json | 59 +++++++++++++++++++++++++-- public/locales/es/common.json | 58 ++++++++++++++++++++++++++ src/components/Disclaimer.tsx | 8 ++-- src/components/SearchBar.tsx | 6 ++- src/components/Table.tsx | 14 ++++--- src/components/TitleBanner.tsx | 9 +++- src/containers/Dashboard/index.tsx | 6 ++- src/containers/Footer/index.tsx | 7 +++- src/containers/LockedAssets/index.tsx | 5 ++- 10 files changed, 171 insertions(+), 30 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 475a111..8a81a64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,7 +43,7 @@ dependencies: version: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) next-i18next: specifier: 15.3.0 - version: 15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@13.5.0)(react@18.2.0) + version: 15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@15.0.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -1535,6 +1535,13 @@ packages: dependencies: regenerator-runtime: 0.14.1 + /@babel/runtime@7.24.8: + resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} @@ -5757,7 +5764,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 dev: false /dayjs@1.11.10: @@ -7438,7 +7445,7 @@ packages: /i18next-browser-languagedetector@7.2.0: resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 dev: false /i18next-fs-backend@2.3.1: @@ -7448,7 +7455,7 @@ packages: /i18next@22.5.1: resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 dev: false /i18next@23.12.1: @@ -9023,7 +9030,7 @@ packages: resolution: {integrity: sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw==} engines: {node: '>=18'} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 dev: false /metro-source-map@0.80.6: @@ -9330,7 +9337,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-i18next@15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@13.5.0)(react@18.2.0): + /next-i18next@15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@15.0.0)(react@18.2.0): resolution: {integrity: sha512-bq7Cc9XJFcmGOCLnyEtHaeJ3+JJNsI/8Pkj9BaHAnhm4sZ9vNNC4ZsaqYnlRZ7VH5ypSo73fEqLK935jLsmCvQ==} engines: {node: '>=14'} peerDependencies: @@ -9347,7 +9354,7 @@ packages: i18next-fs-backend: 2.3.1 next: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 - react-i18next: 13.5.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + react-i18next: 15.0.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) dev: false /next@14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0): @@ -10146,7 +10153,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 html-parse-stringify: 3.0.1 i18next: 22.5.1 react: 18.2.0 @@ -10154,8 +10161,8 @@ packages: react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) dev: false - /react-i18next@13.5.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} + /react-i18next@15.0.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-2O3IgF4zivg57Q6p6i+ChDgJ371IDcEWbuWC6gvoh5NbkDMs0Q+O7RPr4v61+Se32E0V+LmtwePAeqWZW0bi6g==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -10167,7 +10174,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 html-parse-stringify: 3.0.1 i18next: 23.12.1 react: 18.2.0 diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 41e3090..5451f12 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -1,5 +1,58 @@ { - "HOME":{ - + "HOME": { + "title": "ZKsync Ecosystem", + "gasPrice": "Gas Price", + "transfer": "ERC-20 Transfer", + "lockedAssets": "Locked assets in shared bridge", + "DASHBOARD": { + "title": "Chain list", + "chain": "Chain", + "chainId": "Chain ID", + "nativeToken": "Native token", + "tvl": "TVL - L1", + "type": "Type", + "search": "Search by chain name or id..." } -} \ No newline at end of file + }, + "CHAINPAGE": { + "website": "Website", + "explorer": "Explorer", + "launchDate": "Launch date", + "environment": "Environment", + "nativeToken": "Native token", + "CHAININFORMATION": { + "title": "Chain information", + "chainType": "Chain type", + "lastBlock": "Last block", + "lastBlockVerified": "Last block verified", + "transactionsPerSecond": "Transactions per second", + "totalBatchesCommitted": "Total batches committed", + "totalBatchesVerified": "Total batches verified", + "averageBlockTime": "Average block time" + }, + "ZKCHAINTVL": { + "title": "ZKchain TVL" + }, + "RPC": { + "title": "RPC", + "status": "Status" + }, + "FEEPARAMS": { + "batch": "Batch Overhead L1 Gas", + "compute": "Compute Overhead Part", + "maxGasBatch": "Max Gas per Batch" + } + }, + "FOOTER": { + "docs": "Documentation", + "github": "GitHub", + "madeWithLove": "Made with โค๏ธ by" + }, + "DISCLAIMER": { + "disclaimer": "Disclaimer: This application is currently in beta. Please proceed at your own risk. Any funds lost through its use are non-recoverable." + }, + "LOCALES": { + "en": "English", + "es": "Spanish" + } +} diff --git a/public/locales/es/common.json b/public/locales/es/common.json index e69de29..6c8e324 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -0,0 +1,58 @@ +{ + "HOME": { + "title": "Ecosistema ZKsync", + "gasPrice": "Precio del gas", + "transfer": "Transferencia ERC-20", + "lockedAssets": "Activos bloqueados en puente compartido", + "DASHBOARD": { + "title": "Lista de cadenas", + "chain": "Cadena", + "chainId": "ID de cadena", + "nativeToken": "Token nativo", + "tvl": "TVL - L1", + "type": "Tipo", + "search": "Buscar por nombre o ID de la cadena..." + } + }, + "CHAINPAGE": { + "website": "Sitio web", + "explorer": "Explorador", + "launchDate": "Fecha de lanzamiento", + "environment": "Entorno", + "nativeToken": "Token nativo", + "CHAININFORMATION": { + "title": "Informaciรณn de la cadena", + "chainType": "Tipo de cadena", + "lastBlock": "รšltimo bloque", + "lastBlockVerified": "รšltimo bloque verificado", + "transactionsPerSecond": "Transacciones por segundo", + "totalBatchesCommitted": "Total de lotes comprometidos", + "totalBatchesVerified": "Total de lotes verificados", + "averageBlockTime": "Tiempo promedio de bloque" + }, + "ZKCHAINTVL": { + "title": "TVL de ZKchain" + }, + "RPC": { + "title": "RPC", + "status": "Estado" + }, + "FEEPARAMS": { + "batch": "Sobrecarga de lote L1 Gas", + "compute": "Parte de sobrecarga de cรณmputo", + "maxGasBatch": "Mรกximo gas por lote" + } + }, + "FOOTER": { + "docs": "Documentaciรณn", + "github": "GitHub", + "madeWithLove": "Hecho con โค๏ธ por" + }, + "DISCLAIMER": { + "disclaimer": "Advertencia: Esta aplicaciรณn estรก actualmente en beta. Por favor, proceda bajo su propio riesgo. Cualquier fondo perdido a travรฉs de su uso no es recuperable." + }, + "LOCALES": { + "en": "Inglรฉs", + "es": "Espaรฑol" + } +} diff --git a/src/components/Disclaimer.tsx b/src/components/Disclaimer.tsx index 81d4764..d201257 100644 --- a/src/components/Disclaimer.tsx +++ b/src/components/Disclaimer.tsx @@ -1,14 +1,14 @@ import { styled, Box, Typography } from '@mui/material'; +import { useTranslation } from 'next-i18next'; import { DISCLAIMER_HEIGHT } from '~/utils'; export const Disclaimer = () => { + const { t } = useTranslation(); + return ( <Container> - <Typography variant='h1'> - Disclaimer: This application is currently in beta. Please proceed at your own risk. Any funds lost through its - use are non-recoverable. - </Typography> + <Typography variant='h1'>{t('DISCLAIMER.disclaimer')}</Typography> </Container> ); }; diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index cd1018e..45d9ef5 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,7 +1,11 @@ +import { useTranslation } from 'next-i18next'; + export const SearchBar = () => { + const { t } = useTranslation(); + return ( <form> - <input type='text' placeholder='Search...' /> + <input type='text' placeholder={t('HOME.DASHBOARD.search')} /> </form> ); }; diff --git a/src/components/Table.tsx b/src/components/Table.tsx index 377796c..0ad112d 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,15 +1,19 @@ +import { useTranslation } from 'next-i18next'; + import { useData } from '~/hooks'; export const Table = () => { + const { t } = useTranslation(); const { ecosystemData } = useData(); + return ( <table> <tr> - <th>Chain</th> - <th>Chain ID</th> - <th>Native token</th> - <th>TVL - L1</th> - <th>Type</th> + <th>{t('HOME.DASHBOARD.chain')}</th> + <th>{t('HOME.DASHBOARD.chainId')}</th> + <th>{t('HOME.DASHBOARD.nativeToken')}</th> + <th>{t('HOME.DASHBOARD.tvl')}</th> + <th>{t('HOME.DASHBOARD.type')}</th> </tr> {ecosystemData?.chains.map((data, index) => { diff --git a/src/components/TitleBanner.tsx b/src/components/TitleBanner.tsx index 36a52f4..3d650d8 100644 --- a/src/components/TitleBanner.tsx +++ b/src/components/TitleBanner.tsx @@ -1,9 +1,14 @@ +import { useTranslation } from 'next-i18next'; + export const TitleBanner = () => { + const { t } = useTranslation(); + return ( <div> - <span>zkSync Ecosystem</span> + <span>{t('HOME.title')}</span> + <div> - <span>Gas Price: 10 wei ยท ERC-20 Transfer: $10</span> + <span>{`${t('HOME.gasPrice')}: 10 wei ${t('HOME.transfer')} $10`}</span> </div> </div> ); diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 2633f45..544d0e1 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,10 +1,14 @@ +import { useTranslation } from 'next-i18next'; + import { SearchBar, Table, Title } from '~/components'; export const Dashboard = () => { + const { t } = useTranslation(); + return ( <section> <header> - <Title title='Chain list' /> + <Title title={t('HOME.DASHBOARD.title')} /> <SearchBar /> </header> <Table /> diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index 5d98840..45f49cb 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -1,14 +1,17 @@ +import { useTranslation } from 'next-i18next'; import { styled } from '@mui/material/styles'; -import { useCustomTheme } from '~/hooks/useContext/useTheme'; +import { useCustomTheme } from '~/hooks'; import { FOOTER_HEIGHT } from '~/utils'; export const Footer = () => { + const { t } = useTranslation(); + return ( <FooterContainer> <h1>Footer</h1> <Subtitle> - <p>Made with ๐Ÿ’œ by</p> + <p>{t('FOOTER.madeWithLove')}</p> <a href='https://defi.sucks'>Wonderland</a> </Subtitle> </FooterContainer> diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index c365ac0..beb9cc6 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -1,14 +1,17 @@ +import { useTranslation } from 'next-i18next'; + import { TotalValueLocked, Title } from '~/components'; import { useData } from '~/hooks'; export const LockedAssets = () => { + const { t } = useTranslation(); const { ecosystemData } = useData(); return ( <section> {ecosystemData && ( <> - <Title title={`Locked assets in shared bridge: ${ecosystemData.total}`} /> + <Title title={`${t('HOME.lockedAssets')}: ${ecosystemData.total}`} /> <TotalValueLocked tvl={ecosystemData.tvl} /> </> )} From 5be359a6f8dd09cc290056a97a9bc132f681ba8a Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 18:11:15 -0300 Subject: [PATCH 23/82] fix: vercel deployment --- next.config.mjs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index c8e5580..74dad1c 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,9 +1,13 @@ /** @type {import('next').NextConfig} */ +const path = require('path'); + const nextConfig = { - i18n: { - locales: ['en', 'es'], - defaultLocale: 'en', - }, + i18n: { + locales: ['en', 'es'], + defaultLocale: 'en', + }, + localePath: path.resolve('./public/locales'), + outputFileTracing: true }; export default nextConfig; From 3dd2dfa816620058224479e92a28d600cd723cd8 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 18:13:59 -0300 Subject: [PATCH 24/82] fix: module import --- next.config.mjs | 2 -- 1 file changed, 2 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index 74dad1c..62250e1 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,12 +1,10 @@ /** @type {import('next').NextConfig} */ -const path = require('path'); const nextConfig = { i18n: { locales: ['en', 'es'], defaultLocale: 'en', }, - localePath: path.resolve('./public/locales'), outputFileTracing: true }; From d745108a6b8ae4b932667e1fd849df514ba71d7a Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 18:22:20 -0300 Subject: [PATCH 25/82] fix: locales path --- next-i18next.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index b9a1286..93b7a95 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -7,6 +7,6 @@ module.exports = { i18n: { locales: ['en', 'es'], defaultLocale: 'en', + localePath: path.resolve('./public/locales') }, - localePath: typeof window === 'undefined' ? path.resolve('./public/locales') : '/locales', }; From 6330bf139868e26b2fa7d371286b471b4541f0c8 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 18:27:21 -0300 Subject: [PATCH 26/82] fix: localePath --- next-i18next.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index 93b7a95..26c8323 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -7,6 +7,6 @@ module.exports = { i18n: { locales: ['en', 'es'], defaultLocale: 'en', - localePath: path.resolve('./public/locales') + localePath: path.resolve('./locales') }, }; From 23a749141f806494b0ba026d66e38e44a439a222 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 18:31:09 -0300 Subject: [PATCH 27/82] fix: static path --- next-i18next.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index 26c8323..f9c971b 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -7,6 +7,6 @@ module.exports = { i18n: { locales: ['en', 'es'], defaultLocale: 'en', - localePath: path.resolve('./locales') + localePath: path.resolve('./public/static/locales') }, }; From bae2b9c986548c2d2c53c97a0d7f3a9057bbeb48 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Wed, 17 Jul 2024 18:52:55 -0300 Subject: [PATCH 28/82] chore: dependencies --- next-i18next.config.js | 2 +- next.config.mjs | 1 - package.json | 5 +++-- pnpm-lock.yaml | 46 ++++++++++++++++++++++-------------------- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/next-i18next.config.js b/next-i18next.config.js index f9c971b..b9a1286 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -7,6 +7,6 @@ module.exports = { i18n: { locales: ['en', 'es'], defaultLocale: 'en', - localePath: path.resolve('./public/static/locales') }, + localePath: typeof window === 'undefined' ? path.resolve('./public/locales') : '/locales', }; diff --git a/next.config.mjs b/next.config.mjs index 62250e1..404aa72 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -5,7 +5,6 @@ const nextConfig = { locales: ['en', 'es'], defaultLocale: 'en', }, - outputFileTracing: true }; export default nextConfig; diff --git a/package.json b/package.json index be79128..6079f6d 100644 --- a/package.json +++ b/package.json @@ -40,11 +40,12 @@ "@next/eslint-plugin-next": "14.1.3", "@rainbow-me/rainbowkit": "2.0.2", "@tanstack/react-query": "5.28.0", - "i18next": "23.12.1", + "i18next": "23.7.6", "next": "14.1.3", - "next-i18next": "15.3.0", + "next-i18next": "15.2.0", "react": "18.2.0", "react-dom": "18.2.0", + "react-i18next": "14.0.0", "react-router-dom": "6.15.0", "viem": "2.8.6", "wagmi": "2.5.7" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a81a64..fcd394e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,20 +36,23 @@ dependencies: specifier: 5.28.0 version: 5.28.0(react@18.2.0) i18next: - specifier: 23.12.1 - version: 23.12.1 + specifier: 23.7.6 + version: 23.7.6 next: specifier: 14.1.3 version: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) next-i18next: - specifier: 15.3.0 - version: 15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@15.0.0)(react@18.2.0) + specifier: 15.2.0 + version: 15.2.0(i18next@23.7.6)(next@14.1.3)(react-i18next@14.0.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + react-i18next: + specifier: 14.0.0 + version: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) react-router-dom: specifier: 6.15.0 version: 6.15.0(react-dom@18.2.0)(react@18.2.0) @@ -1540,7 +1543,6 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - dev: false /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} @@ -2583,7 +2585,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 '@mui/utils': 5.15.14(@types/react@18.2.15)(react@18.2.0) '@types/react': 18.2.15 prop-types: 15.8.1 @@ -2603,7 +2605,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 '@emotion/cache': 11.11.0 '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.15)(react@18.2.0) @@ -4931,7 +4933,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 cosmiconfig: 7.1.0 resolve: 1.22.8 dev: false @@ -5994,7 +5996,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 csstype: 3.1.3 dev: false @@ -7458,10 +7460,10 @@ packages: '@babel/runtime': 7.24.8 dev: false - /i18next@23.12.1: - resolution: {integrity: sha512-l4y291ZGRgUhKuqVSiqyuU2DDzxKStlIWSaoNBR4grYmh0X+pRYbFpTMs3CnJ5ECKbOI8sQcJ3PbTUfLgPRaMA==} + /i18next@23.7.6: + resolution: {integrity: sha512-O66BhXBw0fH4bEJMA0/klQKPEbcwAp5wjXEL803pdAynNbg2f4qhLIYlNHJyE7icrL6XmSZKPYaaXwy11kJ6YQ==} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 dev: false /iconv-lite@0.6.3: @@ -8922,7 +8924,7 @@ packages: /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 dev: false /memoize-one@5.2.1: @@ -9337,8 +9339,8 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-i18next@15.3.0(i18next@23.12.1)(next@14.1.3)(react-i18next@15.0.0)(react@18.2.0): - resolution: {integrity: sha512-bq7Cc9XJFcmGOCLnyEtHaeJ3+JJNsI/8Pkj9BaHAnhm4sZ9vNNC4ZsaqYnlRZ7VH5ypSo73fEqLK935jLsmCvQ==} + /next-i18next@15.2.0(i18next@23.7.6)(next@14.1.3)(react-i18next@14.0.0)(react@18.2.0): + resolution: {integrity: sha512-Rl5yZ4oGffsB0AjRykZ5PzNQ2M6am54MaMayldGmH/UKZisrIxk2SKEPJvaHhKlWe1qgdNi2FkodwK8sEjfEmg==} engines: {node: '>=14'} peerDependencies: i18next: '>= 23.7.13' @@ -9346,15 +9348,15 @@ packages: react: '>= 17.0.2' react-i18next: '>= 13.5.0' dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 '@types/hoist-non-react-statics': 3.3.5 core-js: 3.37.1 hoist-non-react-statics: 3.3.2 - i18next: 23.12.1 + i18next: 23.7.6 i18next-fs-backend: 2.3.1 next: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 - react-i18next: 15.0.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + react-i18next: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) dev: false /next@14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0): @@ -10161,8 +10163,8 @@ packages: react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) dev: false - /react-i18next@15.0.0(i18next@23.12.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-2O3IgF4zivg57Q6p6i+ChDgJ371IDcEWbuWC6gvoh5NbkDMs0Q+O7RPr4v61+Se32E0V+LmtwePAeqWZW0bi6g==} + /react-i18next@14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + resolution: {integrity: sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==} peerDependencies: i18next: '>= 23.2.3' react: '>= 16.8.0' @@ -10176,7 +10178,7 @@ packages: dependencies: '@babel/runtime': 7.24.8 html-parse-stringify: 3.0.1 - i18next: 23.12.1 + i18next: 23.7.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) @@ -10476,7 +10478,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.24.1 + '@babel/runtime': 7.24.8 /regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} From 8c414627d735e9e82c84fd11ab9b013ba6679d46 Mon Sep 17 00:00:00 2001 From: titix <titi@defi.sucks> Date: Thu, 18 Jul 2024 13:49:34 -0300 Subject: [PATCH 29/82] style: eslint --- src/components/SearchBar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 450c236..f4bdda0 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -7,7 +7,7 @@ interface SearchBarProps { export const SearchBar = ({ value, onChange }: SearchBarProps) => { const { t } = useTranslation(); - + const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => { onChange(event.target.value); }; From ae661226bf51296e4406d60b93ff7712f4bb4294 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 22 Jul 2024 17:51:48 -0300 Subject: [PATCH 30/82] feat: format number (#5) closes ZKS-111 --- src/components/Table.tsx | 3 +- src/components/TotalValueLocked.tsx | 4 ++- src/containers/LockedAssets/index.tsx | 3 +- src/data/ecosystemMockData.json | 2 +- src/utils/format.ts | 43 +++++++++++++++++++++++++++ 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/src/components/Table.tsx b/src/components/Table.tsx index 2be096b..4aec5f6 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,6 +1,7 @@ import { useTranslation } from 'next-i18next'; import { EcosystemChainData } from '~/types'; +import { formatDataNumber } from '~/utils'; interface TableProps { chains: EcosystemChainData[]; @@ -25,7 +26,7 @@ export const Table = ({ chains }: TableProps) => { <td>{data.name}</td> <td>{data.id}</td> <td>{data.nativeToken}</td> - <td>{data.tvl}</td> + <td>{formatDataNumber(data.tvl, 0, true)}</td> <td>{data.type}</td> </tr> ); diff --git a/src/components/TotalValueLocked.tsx b/src/components/TotalValueLocked.tsx index 38b4fe1..bc502c9 100644 --- a/src/components/TotalValueLocked.tsx +++ b/src/components/TotalValueLocked.tsx @@ -1,3 +1,5 @@ +import { formatDataNumber } from '~/utils'; + export interface TokenValueLocked { token: string; value: number; @@ -13,7 +15,7 @@ export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { {tvl.map((data, index) => ( <div key={index}> <span>{data.token}</span> - <span>{data.value}</span> + <span>{formatDataNumber(data.value, 0, true)}</span> </div> ))} </div> diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index beb9cc6..3d0212d 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -2,6 +2,7 @@ import { useTranslation } from 'next-i18next'; import { TotalValueLocked, Title } from '~/components'; import { useData } from '~/hooks'; +import { formatDataNumber } from '~/utils'; export const LockedAssets = () => { const { t } = useTranslation(); @@ -11,7 +12,7 @@ export const LockedAssets = () => { <section> {ecosystemData && ( <> - <Title title={`${t('HOME.lockedAssets')}: ${ecosystemData.total}`} /> + <Title title={`${t('HOME.lockedAssets')}: ${formatDataNumber(ecosystemData.total, 0, true, true)}`} /> <TotalValueLocked tvl={ecosystemData.tvl} /> </> )} diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index c701642..acb7d40 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -50,7 +50,7 @@ "type": "Validium" } ], - "total": 7000000, + "total": 700000000, "tvl": [ { "token": "ETH", diff --git a/src/utils/format.ts b/src/utils/format.ts index d650ed3..1b39c3d 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -1,3 +1,46 @@ export const truncateAddress = (address: string) => { return `${address.slice(0, 6)}...${address.slice(-4)}`; }; + +export function formatDataNumber(input: string | number, formatDecimal = 3, currency?: boolean, compact?: boolean) { + const res: number = Number.parseFloat(input.toString()); + + if (res === 0 || isNaN(res)) return `${currency ? '$0' : '0'}`; + + if (res < 0.01) return formatSmallNumber(res); + + const userNotation = compact ? 'compact' : 'standard'; + const notation = res > 1e12 ? 'scientific' : userNotation; + + return new Intl.NumberFormat('en-US', { + maximumFractionDigits: formatDecimal, + notation: notation, + style: currency ? 'currency' : 'decimal', + currency: 'USD', + }).format(res); +} + +export const formatSmallNumber = (value: number) => { + if (value === 0) { + return '0'; + } + + const formattedValue = value.toString(); + + let numLeadingZeros = 0; + + // Count the leading zeros and decimal point + for (let i = 0; i < formattedValue.length; i++) { + if (formattedValue[i] === '0' || formattedValue[i] === '.') { + numLeadingZeros++; + } else { + break; + } + } + + // Return the number with 3 digits after the last leading zero + const result = formattedValue.slice(0, numLeadingZeros + 3); + + // Trim any trailing zeros from the result + return result.replace(/\.?0+$/, ''); +}; From 9669d7f9e5f21cee3c33bac5a90418218206488e Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 22 Jul 2024 17:52:02 -0300 Subject: [PATCH 31/82] feat: search chain by id (#8) closes ZKS-112 --- public/locales/en/common.json | 3 ++- public/locales/es/common.json | 3 ++- src/components/NotFound.tsx | 11 +++++++++++ src/components/index.ts | 1 + src/containers/Dashboard/index.tsx | 23 ++++++++++++++++------- 5 files changed, 32 insertions(+), 9 deletions(-) create mode 100644 src/components/NotFound.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 5451f12..58bc09c 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -11,7 +11,8 @@ "nativeToken": "Native token", "tvl": "TVL - L1", "type": "Type", - "search": "Search by chain name or id..." + "search": "Search by chain name or id...", + "notFound": "Chain not found" } }, "CHAINPAGE": { diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 6c8e324..f85b9a8 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -11,7 +11,8 @@ "nativeToken": "Token nativo", "tvl": "TVL - L1", "type": "Tipo", - "search": "Buscar por nombre o ID de la cadena..." + "search": "Buscar por nombre o ID de la cadena...", + "notFound": "Cadena no encontrada" } }, "CHAINPAGE": { diff --git a/src/components/NotFound.tsx b/src/components/NotFound.tsx new file mode 100644 index 0000000..358cdd8 --- /dev/null +++ b/src/components/NotFound.tsx @@ -0,0 +1,11 @@ +interface NotFoundProps { + text: string; +} + +export const NotFound = ({ text }: NotFoundProps) => { + return ( + <div> + <p>{text}</p> + </div> + ); +}; diff --git a/src/components/index.ts b/src/components/index.ts index e2912ee..7657955 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -6,3 +6,4 @@ export * from './SearchBar'; export * from './TotalValueLocked'; export * from './Title'; export * from './TitleBanner'; +export * from './NotFound'; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index eb023e4..8410897 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,7 +1,7 @@ import { useTranslation } from 'next-i18next'; import { useState } from 'react'; -import { SearchBar, Table, Title } from '~/components'; +import { NotFound, SearchBar, Table, Title } from '~/components'; import { useData } from '~/hooks'; export const Dashboard = () => { @@ -9,15 +9,23 @@ export const Dashboard = () => { const { ecosystemData } = useData(); const [searchTerm, setSearchTerm] = useState<string>(''); + const filteredChains = ecosystemData?.chains.filter((chain) => { + const chainIdStr = String(chain.id); + const formattedSearchTerm = String(searchTerm).toLowerCase(); + + // Check if either chain name or chain ID matches the search term + const matchesName = chain.name.toLowerCase().includes(formattedSearchTerm); + const matchesId = chainIdStr.includes(formattedSearchTerm); + + return matchesName || matchesId; + }); + + const availableChains = filteredChains?.length > 0; + const handleChange = (value: string) => { setSearchTerm(value); }; - // Filter chains based on search term - const filteredChains = ecosystemData?.chains.filter((chain) => - chain.name.toLowerCase().includes(searchTerm.toLowerCase()), - ); - return ( <section> <header> @@ -25,7 +33,8 @@ export const Dashboard = () => { <SearchBar value={searchTerm} onChange={handleChange} /> </header> - <Table chains={filteredChains} /> + {availableChains && <Table chains={filteredChains} />} + {!availableChains && <NotFound text={t('HOME.DASHBOARD.notFound')} />} </section> ); }; From 443e50de6b69a18a42eb47d9145d237471ee6d9a Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 23 Jul 2024 11:08:32 -0300 Subject: [PATCH 32/82] feat: language select (#7) closes ZKS-108 - Add language toggle --- src/components/BasicSelect.tsx | 51 +++++++++++++++++++++++++++++++++ src/components/index.ts | 1 + src/config/constants.ts | 3 +- src/containers/Header/index.tsx | 24 ++++++++++++++-- src/types/Config.ts | 5 +++- 5 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 src/components/BasicSelect.tsx diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx new file mode 100644 index 0000000..17d98c8 --- /dev/null +++ b/src/components/BasicSelect.tsx @@ -0,0 +1,51 @@ +import { useState } from 'react'; + +interface BasicSelectProps { + value: string; + setValue: (explorer: string) => void; + list: string[]; + disabled?: boolean; + dataTest?: string; +} + +export const BasicSelect = ({ list, value, setValue }: BasicSelectProps) => { + const [isOpen, setIsOpen] = useState(false); + + const handleClick = () => { + setIsOpen(!isOpen); + }; + + const selectItem = (explorer?: string) => { + setIsOpen(false); + if (!explorer) return; + setValue(explorer); + }; + + const handleKeyDown = (event: React.KeyboardEvent<HTMLLIElement>, explorer?: string) => { + if (event.key === 'Enter' || event.key === ' ') { + selectItem(explorer); + } + }; + + return ( + <div> + <button onClick={handleClick}>{value}</button> + {isOpen && ( + <ul role='listbox'> + {list.map((item) => ( + <li + key={item} + role='option' + tabIndex={0} + aria-selected={item === value} + onClick={() => selectItem(item)} + onKeyDown={(event) => handleKeyDown(event, item)} + > + {item} + </li> + ))} + </ul> + )} + </div> + ); +}; diff --git a/src/components/index.ts b/src/components/index.ts index 7657955..25f07aa 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -6,4 +6,5 @@ export * from './SearchBar'; export * from './TotalValueLocked'; export * from './Title'; export * from './TitleBanner'; +export * from './BasicSelect'; export * from './NotFound'; diff --git a/src/config/constants.ts b/src/config/constants.ts index d2f469a..42d7405 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -1,7 +1,8 @@ import { Constants } from '~/types'; const constants: Constants = { - // Put your project constants here + SUPPORTED_LANGUAGES: ['en', 'es'], + DEFAULT_LANG: 'en', }; export const getConstants = (): Constants => { diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 6afb5cd..6519891 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -1,20 +1,38 @@ -import { ConnectButton } from '@rainbow-me/rainbowkit'; import { styled } from '@mui/material/styles'; import { IconButton } from '@mui/material'; import LightModeIcon from '@mui/icons-material/LightMode'; import DarkModeIcon from '@mui/icons-material/DarkMode'; +import { useRouter } from 'next/router'; +import { useTranslation } from 'next-i18next'; +import { BasicSelect } from '~/components'; import { useCustomTheme } from '~/hooks/useContext/useTheme'; import { zIndex, HEADER_HEIGHT } from '~/utils'; +import { getConfig } from '~/config'; + +const { DEFAULT_LANG } = getConfig(); export const Header = () => { const { changeTheme, theme } = useCustomTheme(); + const { + t, + i18n: { changeLanguage, language }, + } = useTranslation(); + const { locales, replace } = useRouter(); + + const localesMap = locales ? Object.fromEntries(locales.map((locale) => [locale, t(`LOCALES.${locale}`)])) : {}; + + const handleChangeLanguage = (value: string) => { + const locale = Object.keys(localesMap).find((key) => localesMap[key] === value) || DEFAULT_LANG; + replace('/', undefined, { locale: locale }); + changeLanguage(locale); + }; return ( <StyledHeader> - <Logo>Logo</Logo> + <Logo>ZKchainHub</Logo> <SIconButton onClick={changeTheme}>{theme === 'dark' ? <LightModeIcon /> : <DarkModeIcon />}</SIconButton> - <ConnectButton /> + <BasicSelect value={t(`LOCALES.${language}`)} setValue={handleChangeLanguage} list={Object.values(localesMap)} /> </StyledHeader> ); }; diff --git a/src/types/Config.ts b/src/types/Config.ts index 3bd98b1..e818436 100644 --- a/src/types/Config.ts +++ b/src/types/Config.ts @@ -5,8 +5,11 @@ export interface Env { API_URL: string; } +export type SupportedLanguage = 'en' | 'es'; + export interface Constants { - // ... + SUPPORTED_LANGUAGES: SupportedLanguage[]; + DEFAULT_LANG: SupportedLanguage; } export interface Config extends Env, Constants {} From afe39150c3cba68c6af43ec9ce9f79f1ce471a50 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 31 Jul 2024 16:19:02 -0300 Subject: [PATCH 33/82] feat: chain page details (#9) closes ZKS-103 closes ZKS-114 closes ZKS-116 closes ZKS-117 closes ZKS-113 Description: - Add chain page details HTML structure - Add dashboard chain navigation FYI: Currently using mock data so all chains show data from chain id: 324. Since ecosystemData mock has all available chains, chain page change is shown in route but rendered data is just 324 temporary. --- public/locales/en/common.json | 9 +- public/locales/es/common.json | 9 +- src/components/ChainInformation.tsx | 36 +++++++ src/components/FeeParams.tsx | 19 ++++ src/components/InfoBox.tsx | 13 +++ src/components/RPC.tsx | 22 +++++ src/components/TVL.tsx | 20 ++++ src/components/Table.tsx | 8 +- src/components/index.ts | 5 + .../ChainDetail/ChainDescription.tsx | 12 +++ src/containers/ChainDetail/ChainMetadata.tsx | 49 ++++++++++ src/containers/ChainDetail/InfoCard.tsx | 16 ++++ src/containers/ChainDetail/index.tsx | 11 +++ src/containers/Header/index.tsx | 5 +- src/containers/index.ts | 1 + src/data/chainMockData.json | 93 ++++++++----------- src/pages/[chain]/index.tsx | 37 +++++--- src/types/Data.ts | 54 ++++++----- src/utils/format.ts | 4 + src/utils/misc.ts | 0 20 files changed, 326 insertions(+), 97 deletions(-) create mode 100644 src/components/ChainInformation.tsx create mode 100644 src/components/FeeParams.tsx create mode 100644 src/components/InfoBox.tsx create mode 100644 src/components/RPC.tsx create mode 100644 src/components/TVL.tsx create mode 100644 src/containers/ChainDetail/ChainDescription.tsx create mode 100644 src/containers/ChainDetail/ChainMetadata.tsx create mode 100644 src/containers/ChainDetail/InfoCard.tsx create mode 100644 src/containers/ChainDetail/index.tsx delete mode 100644 src/utils/misc.ts diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 58bc09c..fd7f356 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -15,7 +15,7 @@ "notFound": "Chain not found" } }, - "CHAINPAGE": { + "CHAIN": { "website": "Website", "explorer": "Explorer", "launchDate": "Launch date", @@ -28,10 +28,11 @@ "lastBlockVerified": "Last block verified", "transactionsPerSecond": "Transactions per second", "totalBatchesCommitted": "Total batches committed", + "totalBatchesExecuted": "Total batches executed", "totalBatchesVerified": "Total batches verified", "averageBlockTime": "Average block time" }, - "ZKCHAINTVL": { + "TVL": { "title": "ZKchain TVL" }, "RPC": { @@ -39,10 +40,12 @@ "status": "Status" }, "FEEPARAMS": { + "title": "Fee params", "batch": "Batch Overhead L1 Gas", "compute": "Compute Overhead Part", "maxGasBatch": "Max Gas per Batch" - } + }, + "backButton": "Go back" }, "FOOTER": { "docs": "Documentation", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index f85b9a8..bcd8170 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -15,7 +15,7 @@ "notFound": "Cadena no encontrada" } }, - "CHAINPAGE": { + "CHAIN": { "website": "Sitio web", "explorer": "Explorador", "launchDate": "Fecha de lanzamiento", @@ -28,10 +28,11 @@ "lastBlockVerified": "รšltimo bloque verificado", "transactionsPerSecond": "Transacciones por segundo", "totalBatchesCommitted": "Total de lotes comprometidos", + "totalBatchesExecuted": "Total de lotes ejecutados", "totalBatchesVerified": "Total de lotes verificados", "averageBlockTime": "Tiempo promedio de bloque" }, - "ZKCHAINTVL": { + "TVL": { "title": "TVL de ZKchain" }, "RPC": { @@ -39,10 +40,12 @@ "status": "Estado" }, "FEEPARAMS": { + "title": "Parรกmetros de gas", "batch": "Sobrecarga de lote L1 Gas", "compute": "Parte de sobrecarga de cรณmputo", "maxGasBatch": "Mรกximo gas por lote" - } + }, + "backButton": "Volver" }, "FOOTER": { "docs": "Documentaciรณn", diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx new file mode 100644 index 0000000..49bc4d0 --- /dev/null +++ b/src/components/ChainInformation.tsx @@ -0,0 +1,36 @@ +import { useTranslation } from 'next-i18next'; +import { InfoBox, Title } from '~/components'; +import { useData } from '~/hooks'; + +export const ChainInformation = () => { + const { t } = useTranslation(); + const { chainData } = useData(); + + return ( + <article> + <Title title={t('CHAIN.CHAININFORMATION.title')} /> + <div> + <InfoBox title={t('CHAIN.CHAININFORMATION.chainType')} description={chainData?.chainType} /> + <InfoBox title={t('CHAIN.CHAININFORMATION.lastBlock')} description={chainData?.l2ChainInfo.lastBlock} /> + <InfoBox + title={t('CHAIN.CHAININFORMATION.lastBlockVerified')} + description={chainData?.l2ChainInfo.lastBlockVerified} + /> + <InfoBox title={t('CHAIN.CHAININFORMATION.transactionsPerSecond')} description={chainData?.l2ChainInfo.tps} /> + <InfoBox + title={t('CHAIN.CHAININFORMATION.totalBatchesCommitted')} + description={chainData?.batchesInfo.commited} + /> + <InfoBox title={t('CHAIN.CHAININFORMATION.totalBatchesExecuted')} description={chainData?.batchesInfo.proved} /> + <InfoBox + title={t('CHAIN.CHAININFORMATION.totalBatchesVerified')} + description={chainData?.batchesInfo.verified} + /> + <InfoBox + title={t('CHAIN.CHAININFORMATION.averageBlockTime')} + description={chainData?.l2ChainInfo.avgBlockTime} + /> + </div> + </article> + ); +}; diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx new file mode 100644 index 0000000..51f218b --- /dev/null +++ b/src/components/FeeParams.tsx @@ -0,0 +1,19 @@ +import { useTranslation } from 'next-i18next'; +import { InfoBox, Title } from '~/components'; +import { useData } from '~/hooks'; + +export const FeeParams = () => { + const { t } = useTranslation(); + const { chainData } = useData(); + + return ( + <article> + <Title title={t('CHAIN.FEEPARAMS.title')} /> + <div> + <InfoBox title={t('CHAIN.FEEPARAMS.batch')} description={chainData?.feeParams.batchOverheadL1Gas} /> + <InfoBox title={t('CHAIN.FEEPARAMS.compute')} description={chainData?.feeParams.maxPubdataPerBatch} /> + <InfoBox title={t('CHAIN.FEEPARAMS.maxGasBatch')} description={chainData?.feeParams.maxL2GasPerBatch} /> + </div> + </article> + ); +}; diff --git a/src/components/InfoBox.tsx b/src/components/InfoBox.tsx new file mode 100644 index 0000000..8a9ead6 --- /dev/null +++ b/src/components/InfoBox.tsx @@ -0,0 +1,13 @@ +interface InfoBoxProps { + title: string; + description: string | number; +} + +export const InfoBox = ({ title, description }: InfoBoxProps) => { + return ( + <div> + <p>{title}</p> + <p>{description}</p> + </div> + ); +}; diff --git a/src/components/RPC.tsx b/src/components/RPC.tsx new file mode 100644 index 0000000..9a74845 --- /dev/null +++ b/src/components/RPC.tsx @@ -0,0 +1,22 @@ +import { useTranslation } from 'next-i18next'; +import { InfoBox, Title } from '~/components'; +import { useData } from '~/hooks'; + +export const TVL = () => { + const { t } = useTranslation(); + const { chainData } = useData(); + + return ( + <article> + <Title title={t('CHAIN.RPC.title')} /> + <div> + {chainData?.metadata?.publicRpcs && + chainData.metadata.publicRpcs.map((rpc, index) => ( + <div key={index}> + <InfoBox title={t('CHAIN.RPC.status')} description={rpc.url} /> + </div> + ))} + </div> + </article> + ); +}; diff --git a/src/components/TVL.tsx b/src/components/TVL.tsx new file mode 100644 index 0000000..c841dcc --- /dev/null +++ b/src/components/TVL.tsx @@ -0,0 +1,20 @@ +import { useTranslation } from 'next-i18next'; +import { InfoBox, Title } from '~/components'; +import { useData } from '~/hooks'; + +export const RPC = () => { + const { t } = useTranslation(); + const { chainData } = useData(); + + return ( + <article> + <Title title={t('CHAIN.TVL.title')} /> + <div> + {chainData?.tvl && + Object.entries(chainData.tvl).map(([token, value]) => ( + <InfoBox key={token} title={token} description={value.toString()} /> + ))} + </div> + </article> + ); +}; diff --git a/src/components/Table.tsx b/src/components/Table.tsx index 4aec5f6..11560e4 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,4 +1,5 @@ import { useTranslation } from 'next-i18next'; +import { useRouter } from 'next/router'; import { EcosystemChainData } from '~/types'; import { formatDataNumber } from '~/utils'; @@ -9,6 +10,11 @@ interface TableProps { export const Table = ({ chains }: TableProps) => { const { t } = useTranslation(); + const router = useRouter(); + + const handleChainNavigation = (id: number) => { + router.push(`/${id}`); + }; return ( <table> @@ -22,7 +28,7 @@ export const Table = ({ chains }: TableProps) => { {chains?.map((data, index) => { return ( - <tr key={index}> + <tr key={index} onClick={() => handleChainNavigation(data.id)}> <td>{data.name}</td> <td>{data.id}</td> <td>{data.nativeToken}</td> diff --git a/src/components/index.ts b/src/components/index.ts index 25f07aa..bd43e0e 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -6,5 +6,10 @@ export * from './SearchBar'; export * from './TotalValueLocked'; export * from './Title'; export * from './TitleBanner'; +export * from './InfoBox'; +export * from './FeeParams'; +export * from './RPC'; +export * from './TVL'; +export * from './ChainInformation'; export * from './BasicSelect'; export * from './NotFound'; diff --git a/src/containers/ChainDetail/ChainDescription.tsx b/src/containers/ChainDetail/ChainDescription.tsx new file mode 100644 index 0000000..b1b4df5 --- /dev/null +++ b/src/containers/ChainDetail/ChainDescription.tsx @@ -0,0 +1,12 @@ +import { ChainInformation, FeeParams, RPC, TVL } from '~/components'; + +export const ChainDescription = () => { + return ( + <section> + <ChainInformation /> + <TVL /> + <RPC /> + <FeeParams /> + </section> + ); +}; diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx new file mode 100644 index 0000000..35f1f91 --- /dev/null +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -0,0 +1,49 @@ +import { useTranslation } from 'next-i18next'; +import { useRouter } from 'next/router'; +import { InfoBox } from '~/components'; +import { useData } from '~/hooks'; +import { formatTimestampToDate } from '~/utils'; + +export const ChainMetadata = () => { + const { t } = useTranslation(); + const { chainData, ecosystemData } = useData(); + const router = useRouter(); + const data = chainData?.metadata; + + const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => { + const selectedChainId = event.target.value; + router.push(`/${selectedChainId}`); + }; + + const handleBack = () => { + router.back(); + }; + + return ( + <div> + <div> + <div> + {/* <img></img> */} + <select onChange={handleChange} value={data?.chainName || ''}> + {ecosystemData?.chains.map((chain) => ( + <option key={chain.id} value={chain.id}> + {chain.name} + </option> + ))} + </select> + <span>{data?.chainId}</span> + </div> + + <button onClick={handleBack}>{t('CHAIN.backButton')}</button> + </div> + + <div> + <InfoBox title={t('CHAIN.website')} description={data?.websiteUrl} /> + <InfoBox title={t('CHAIN.explorer')} description={data?.explorerUrl} /> + <InfoBox title={t('CHAIN.launchDate')} description={formatTimestampToDate(data?.launchDate)} /> + <InfoBox title={t('CHAIN.environment')} description={data?.environment} /> + <InfoBox title={t('CHAIN.nativeToken')} description={data?.nativeToken} /> + </div> + </div> + ); +}; diff --git a/src/containers/ChainDetail/InfoCard.tsx b/src/containers/ChainDetail/InfoCard.tsx new file mode 100644 index 0000000..1a455cf --- /dev/null +++ b/src/containers/ChainDetail/InfoCard.tsx @@ -0,0 +1,16 @@ +import { InfoBox } from '~/components'; + +interface InfoCardProps { + title: string; +} + +export const InfoCard = ({ title }: InfoCardProps) => { + return ( + <section> + <h2>{title}</h2> + <div> + <InfoBox title='Website' description='https://www.example.com' /> + </div> + </section> + ); +}; diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx new file mode 100644 index 0000000..4ec3935 --- /dev/null +++ b/src/containers/ChainDetail/index.tsx @@ -0,0 +1,11 @@ +import { ChainMetadata } from './ChainMetadata'; +import { ChainDescription } from './ChainDescription'; + +export const ChainDetail = () => { + return ( + <div> + <ChainMetadata /> + <ChainDescription /> + </div> + ); +}; diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 6519891..8a76ce0 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -2,6 +2,7 @@ import { styled } from '@mui/material/styles'; import { IconButton } from '@mui/material'; import LightModeIcon from '@mui/icons-material/LightMode'; import DarkModeIcon from '@mui/icons-material/DarkMode'; +import Link from 'next/link'; import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; @@ -30,7 +31,9 @@ export const Header = () => { return ( <StyledHeader> - <Logo>ZKchainHub</Logo> + <Link href='/' passHref> + <Logo>ZKchainHub</Logo> + </Link> <SIconButton onClick={changeTheme}>{theme === 'dark' ? <LightModeIcon /> : <DarkModeIcon />}</SIconButton> <BasicSelect value={t(`LOCALES.${language}`)} setValue={handleChangeLanguage} list={Object.values(localesMap)} /> </StyledHeader> diff --git a/src/containers/index.ts b/src/containers/index.ts index ac2a1af..0698472 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -4,3 +4,4 @@ export * from './Layout'; export * from './Landing'; export * from './Dashboard'; export * from './LockedAssets'; +export * from './ChainDetail'; diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json index 767de09..5b90d97 100644 --- a/src/data/chainMockData.json +++ b/src/data/chainMockData.json @@ -1,60 +1,49 @@ -[ - { - "name": "ZKSync Era", - "chainId": 324, - "website": "https://example.com", - "explorer": "https://example.com", - "launchDate": "2023-12-05", - "environment": "Production", - "nativeToken": "ETH", - "chainType": "ZKRollup", - "lastBlock": 123456789, - "lastBlockVerified": 123456788, - "transactionsPerSecond": 15, - "totalBatchesCommitted": 1234567890, - "totalBatchesExecuted": 1234567890, - "totalBatchesVerified": 123456788, - "averageBlockTime": 100000, - "tvl": { - "ETH": { - "value": 500000000, - "address": "0x79db...d692" - }, - "USDT": { - "value": 100000000, - "address": "0x79db...d692" - }, - "USDC": { - "value": 50000000, - "address": "0x79db...d692" - }, - "WBTC": { - "value": 30000000, - "address": "0x79db...d692" - } - }, - "rpcs": [ - { - "status": "Active", - "url": "https://lrpc.com" - }, +{ + "chainType": "Rollup", + "tvl": { + "ETH": 1000000, + "USDC": 500000 + }, + "batchesInfo": { + "commited": 100, + "verified": 90, + "proved": 80 + }, + "feeParams": { + "batchOverheadL1Gas": 50000, + "maxPubdataPerBatch": 120000, + "maxL2GasPerBatch": 10000000, + "priorityTxMaxPubdata": 15000, + "minimalL2GasPrice": 0.25 + }, + "metadata": { + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "chainName": "ZKsyncERA", + "chainId": "324", + "publicRpcs": [ { - "status": "Active", - "url": "https://blastapi.com" + "url": "https://mainnet.era.zksync.io", + "status": true }, { - "status": "Inactive", - "url": "https://llamarpc.com" + "url": "https://1rpc.io/zksync2-era", + "status": true }, { - "status": "Active", - "url": "https://alchemy.com" + "url": "https://zksync.drpc.org", + "status": false } ], - "feeParams": { - "batchOverheadL1Gas": 1234567890, - "computeOverheadPart": 1234567890, - "maxGasPerBatch": 123456788 - } + "websiteUrl": "https://zksync.io/", + "explorerUrl": "https://explorer.zksync.io/", + "launchDate": 1679626800, + "environment": "mainnet", + "nativeToken": "ETH" + }, + "l2ChainInfo": { + "tps": 10000000, + "avgBlockTime": 12, + "lastBlock": 1000000, + "lastBlockVerified": 999999 } -] +} diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index 34eed58..c5b142c 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -1,27 +1,32 @@ import { useEffect } from 'react'; -import { GetStaticPaths, GetStaticProps } from 'next'; +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { GetStaticProps, GetStaticPaths, GetStaticPropsContext, InferGetStaticPropsType } from 'next'; import { EcosystemChainData } from '~/types'; import { CustomHead } from '~/components'; import { useData } from '~/hooks'; import { fetchEcosystemData } from '~/utils'; +import { ChainDetail } from '~/containers'; +import { getConfig } from '~/config'; + +const { DEFAULT_LANG, SUPPORTED_LANGUAGES } = getConfig(); interface ChainProps { chain: EcosystemChainData; } -const Chain = ({ chain }: ChainProps) => { - const { setSelectedChainId } = useData(); +const Chain = ({ chain }: InferGetStaticPropsType<typeof getStaticProps>) => { + const { setSelectedChainId, refetchChainData } = useData(); useEffect(() => { - setSelectedChainId(chain.id); - }, [chain.id, setSelectedChainId]); + setSelectedChainId(chain?.id); + refetchChainData({ throwOnError: true, cancelRefetch: false }); + }, [chain?.id, setSelectedChainId, refetchChainData]); return ( <> - <CustomHead title={chain.name} /> - <h1>{chain.name}</h1> - {/* TODO: Add chain page containers */} + <CustomHead title={chain?.name} /> + <ChainDetail /> </> ); }; @@ -30,14 +35,17 @@ export const getStaticPaths: GetStaticPaths = async () => { const ecosystemData = await fetchEcosystemData(); const chains = ecosystemData.chains; - const paths = chains.map((chain: EcosystemChainData) => ({ - params: { chain: chain.id.toString() }, - })); + const paths = SUPPORTED_LANGUAGES.flatMap((locale) => + chains.map((chain: EcosystemChainData) => ({ + params: { chain: chain.id.toString() }, + locale, + })), + ); - return { paths, fallback: false }; + return { paths, fallback: true }; }; -export const getStaticProps: GetStaticProps = async ({ params }) => { +export const getStaticProps: GetStaticProps<ChainProps> = async ({ params, locale }: GetStaticPropsContext) => { const ecosystemData = await fetchEcosystemData(); const chains = ecosystemData.chains; const chainId = parseInt(params?.chain as string); @@ -47,9 +55,12 @@ export const getStaticProps: GetStaticProps = async ({ params }) => { return { notFound: true }; } + const i18Config = await serverSideTranslations(locale || DEFAULT_LANG, ['common'], null, SUPPORTED_LANGUAGES); + return { props: { chain, + ...i18Config, }, }; }; diff --git a/src/types/Data.ts b/src/types/Data.ts index edce979..21121c0 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -1,33 +1,39 @@ export interface ChainData { - name: string; - chainId: number; - website: string; - explorer: string; - launchDate: string; - environment: string; - nativeToken: string; chainType: string; - lastBlock: number; - lastBlockVerified: number; - transactionsPerSecond: number; - totalBatchesCommitted: number; - totalBatchesExecuted: number; - totalBatchesVerified: number; - averageBlockTime: number; tvl: { - [token: string]: { - value: number; - address: string; - }; + [token: string]: number; + }; + batchesInfo: { + commited: number; + verified: number; + proved: number; }; - rpcs: { - status: string; - url: string; - }[]; feeParams: { batchOverheadL1Gas: number; - computeOverheadPart: number; - maxGasPerBatch: number; + maxPubdataPerBatch: number; + maxL2GasPerBatch: number; + priorityTxMaxPubdata: number; + minimalL2GasPrice: number; + }; + metadata: { + iconUrl: string; + chainName: string; + chainId: number; + publicRpcs: { + url: string; + status: boolean; + }[]; + websiteUrl: string; + explorerUrl: string; + launchDate: number; + environment: string; + nativeToken: string; + }; + l2ChainInfo: { + tps: number; + avgBlockTime: number; + lastBlock: number; + lastBlockVerified: number; }; } diff --git a/src/utils/format.ts b/src/utils/format.ts index 1b39c3d..542020c 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -2,6 +2,10 @@ export const truncateAddress = (address: string) => { return `${address.slice(0, 6)}...${address.slice(-4)}`; }; +export const formatTimestampToDate = (timestamp: number): string => { + return new Date(timestamp * 1000).toLocaleDateString(); +}; + export function formatDataNumber(input: string | number, formatDecimal = 3, currency?: boolean, compact?: boolean) { const res: number = Number.parseFloat(input.toString()); diff --git a/src/utils/misc.ts b/src/utils/misc.ts deleted file mode 100644 index e69de29..0000000 From 6172d5ca1261552083eaa94c2c9d4c8294b5defc Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 31 Jul 2024 17:00:30 -0300 Subject: [PATCH 34/82] feat: header design (#10) closes ZKS-122 closes ZKS-129 closes ZKS-130 --- public/locales/en/common.json | 5 +- public/locales/es/common.json | 5 +- src/assets/icons/arrowDown.svg | 3 + src/assets/icons/lightMode.svg | 11 +++ src/assets/icons/search.svg | 4 + src/components/BasicSelect.tsx | 147 +++++++++++++++++++++++------ src/components/Disclaimer.tsx | 36 ------- src/components/SearchBar.tsx | 56 ++++++++--- src/components/Theme/theme.ts | 9 +- src/components/index.ts | 1 - src/containers/Dashboard/index.tsx | 12 +-- src/containers/Header/index.tsx | 96 +++++++++++++------ src/pages/layout.tsx | 2 - src/providers/StateProvider.tsx | 6 ++ src/types/Theme.ts | 1 + src/utils/Variables.ts | 1 - 16 files changed, 266 insertions(+), 129 deletions(-) create mode 100644 src/assets/icons/arrowDown.svg create mode 100644 src/assets/icons/lightMode.svg create mode 100644 src/assets/icons/search.svg delete mode 100644 src/components/Disclaimer.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index fd7f356..948b147 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -11,7 +11,7 @@ "nativeToken": "Native token", "tvl": "TVL - L1", "type": "Type", - "search": "Search by chain name or id...", + "search": "Search", "notFound": "Chain not found" } }, @@ -52,9 +52,6 @@ "github": "GitHub", "madeWithLove": "Made with โค๏ธ by" }, - "DISCLAIMER": { - "disclaimer": "Disclaimer: This application is currently in beta. Please proceed at your own risk. Any funds lost through its use are non-recoverable." - }, "LOCALES": { "en": "English", "es": "Spanish" diff --git a/public/locales/es/common.json b/public/locales/es/common.json index bcd8170..b2a9b7e 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -11,7 +11,7 @@ "nativeToken": "Token nativo", "tvl": "TVL - L1", "type": "Tipo", - "search": "Buscar por nombre o ID de la cadena...", + "search": "Buscar", "notFound": "Cadena no encontrada" } }, @@ -52,9 +52,6 @@ "github": "GitHub", "madeWithLove": "Hecho con โค๏ธ por" }, - "DISCLAIMER": { - "disclaimer": "Advertencia: Esta aplicaciรณn estรก actualmente en beta. Por favor, proceda bajo su propio riesgo. Cualquier fondo perdido a travรฉs de su uso no es recuperable." - }, "LOCALES": { "en": "Inglรฉs", "es": "Espaรฑol" diff --git a/src/assets/icons/arrowDown.svg b/src/assets/icons/arrowDown.svg new file mode 100644 index 0000000..aaca543 --- /dev/null +++ b/src/assets/icons/arrowDown.svg @@ -0,0 +1,3 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M6 10L11.2929 15.2929C11.6834 15.6834 12.3166 15.6834 12.7071 15.2929L18 10" stroke="white"/> +</svg> diff --git a/src/assets/icons/lightMode.svg b/src/assets/icons/lightMode.svg new file mode 100644 index 0000000..e4b80e4 --- /dev/null +++ b/src/assets/icons/lightMode.svg @@ -0,0 +1,11 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="12" cy="12" r="4.5" stroke="white"/> +<path d="M12 1V5" stroke="white"/> +<path d="M12 19V23" stroke="white"/> +<path d="M1 12H5" stroke="white"/> +<path d="M19 12H23" stroke="white"/> +<path d="M4.22192 4.2218L7.05035 7.05023" stroke="white"/> +<path d="M16.9498 16.9497L19.7783 19.7781" stroke="white"/> +<path d="M19.7783 4.2218L16.9499 7.05023" stroke="white"/> +<path d="M7.05042 16.9497L4.22199 19.7781" stroke="white"/> +</svg> diff --git a/src/assets/icons/search.svg b/src/assets/icons/search.svg new file mode 100644 index 0000000..5194990 --- /dev/null +++ b/src/assets/icons/search.svg @@ -0,0 +1,4 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="10" cy="10" r="6.5" stroke="white"/> +<path d="M21 21L14.5 14.5" stroke="white"/> +</svg> diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index 17d98c8..d28afc4 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -1,6 +1,12 @@ import { useState } from 'react'; +import { styled, MenuProps, Menu, Box, Button, MenuItem } from '@mui/material'; +import Image from 'next/image'; + +import arrowDown from '~/assets/icons/arrowDown.svg'; +import { useCustomTheme } from '~/hooks'; interface BasicSelectProps { + label?: string; value: string; setValue: (explorer: string) => void; list: string[]; @@ -8,44 +14,127 @@ interface BasicSelectProps { dataTest?: string; } -export const BasicSelect = ({ list, value, setValue }: BasicSelectProps) => { - const [isOpen, setIsOpen] = useState(false); +export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: BasicSelectProps) => { + const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); + const open = Boolean(anchorEl); - const handleClick = () => { - setIsOpen(!isOpen); + const handleClick = (event: React.MouseEvent<HTMLElement>) => { + setAnchorEl(event.currentTarget); }; const selectItem = (explorer?: string) => { - setIsOpen(false); + setAnchorEl(null); + if (!explorer) return; setValue(explorer); }; - const handleKeyDown = (event: React.KeyboardEvent<HTMLLIElement>, explorer?: string) => { - if (event.key === 'Enter' || event.key === ' ') { - selectItem(explorer); - } - }; + const endIcon = disabled ? null : <Image src={arrowDown} alt='arrow-down' width={16} height={16} />; return ( - <div> - <button onClick={handleClick}>{value}</button> - {isOpen && ( - <ul role='listbox'> - {list.map((item) => ( - <li - key={item} - role='option' - tabIndex={0} - aria-selected={item === value} - onClick={() => selectItem(item)} - onKeyDown={(event) => handleKeyDown(event, item)} - > - {item} - </li> - ))} - </ul> - )} - </div> + <SBox> + <MenuButton + aria-controls={open ? 'basic-select-menu' : undefined} + aria-haspopup='true' + aria-expanded={open ? 'true' : undefined} + variant='contained' + disableElevation + onClick={handleClick} + endIcon={endIcon} + fullWidth + disabled={disabled} + data-test={dataTest} + > + {value} + </MenuButton> + + <StyledMenu + anchorEl={anchorEl} + open={open} + onClose={() => selectItem()} + MenuListProps={{ + 'aria-labelledby': 'basic-select-button', + }} + > + {list.map((explorer) => ( + <MenuItem key={explorer} value={explorer} onClick={() => selectItem(explorer)}> + {explorer} + </MenuItem> + ))} + </StyledMenu> + </SBox> ); }; + +const SBox = styled(Box)({ + display: 'flex', + flexDirection: 'column', + gap: '0.5rem', +}); + +const MenuButton = styled(Button)(() => { + const { currentTheme } = useCustomTheme(); + return { + width: '7.5rem', + height: '3.5rem', + backgroundColor: `${currentTheme.backgroundSecondary}`, + borderRadius: `${currentTheme.borderRadius}`, + textTransform: 'none', + fontSize: '1rem', + color: `${currentTheme.textPrimary}`, + '&:hover': { + backgroundColor: `${currentTheme.backgroundSecondary}`, + }, + }; +}); + +const StyledMenu = styled((props: MenuProps) => ( + <Menu + elevation={0} + anchorOrigin={{ + vertical: 'bottom', + horizontal: 'left', + }} + transformOrigin={{ + vertical: 'top', + horizontal: 'left', + }} + {...props} + /> +))(() => { + const { currentTheme } = useCustomTheme(); + return { + '& .MuiPaper-root': { + marginTop: '0.4rem', + width: '7.5rem', + + '& .MuiMenu-list': { + padding: '0.4rem 0', + }, + + '& .MuiMenuItem-root': { + padding: '1.2rem 1.6rem', + gap: '0.8rem', + + '&:hover': { + backgroundColor: currentTheme.backgroundSecondary, + }, + + '&:active': { + backgroundColor: currentTheme.backgroundSecondary, + }, + }, + + '@media (max-width: 600px)': { + minWidth: 'calc(100% - 7.4rem)', + ul: { + padding: '0.2rem 0', + }, + + '& .MuiMenuItem-root': { + fontSize: '1.4rem', + }, + }, + }, + }; +}); diff --git a/src/components/Disclaimer.tsx b/src/components/Disclaimer.tsx deleted file mode 100644 index d201257..0000000 --- a/src/components/Disclaimer.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { styled, Box, Typography } from '@mui/material'; -import { useTranslation } from 'next-i18next'; - -import { DISCLAIMER_HEIGHT } from '~/utils'; - -export const Disclaimer = () => { - const { t } = useTranslation(); - - return ( - <Container> - <Typography variant='h1'>{t('DISCLAIMER.disclaimer')}</Typography> - </Container> - ); -}; - -export const Container = styled(Box)` - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - padding: 1rem 1.6rem; - height: ${DISCLAIMER_HEIGHT}rem; - width: 100%; - margin: 0 auto; - background-color: white; - - h1 { - font-size: 1rem; - color: #121212; - font-weight: 500; - letter-spacing: 1; - @media (max-width: 720px) { - font-size: 0.8rem; - } - } -`; diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index f4bdda0..2dc0870 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,20 +1,54 @@ import { useTranslation } from 'next-i18next'; +import { useCustomTheme, useStateContext } from '~/hooks'; +import { styled, TextField, InputAdornment } from '@mui/material'; +import Image from 'next/image'; -interface SearchBarProps { - value: string; - onChange: (value: string) => void; -} +import Search from '~/assets/icons/search.svg'; -export const SearchBar = ({ value, onChange }: SearchBarProps) => { +export const SearchBar = () => { const { t } = useTranslation(); - + const { searchTerm, setSearchTerm } = useStateContext(); const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => { - onChange(event.target.value); + const value = event.target.value; + setSearchTerm(value); }; - return ( - <form> - <input type='text' value={value} onChange={handleChange} placeholder={t('HOME.DASHBOARD.search')} /> - </form> + <StyledTextField + variant='outlined' + value={searchTerm} + onChange={handleChange} + placeholder={t('HOME.DASHBOARD.search')} + InputProps={{ + startAdornment: ( + <InputAdornment position='start'> + <Image src={Search} alt='search' /> + </InputAdornment> + ), + }} + /> ); }; + +const StyledTextField = styled(TextField)(() => { + const { currentTheme } = useCustomTheme(); + + return { + width: '15rem', + height: '3.5rem', + borderRadius: `${currentTheme.borderRadius}`, + border: `1px solid ${currentTheme.backgroundSecondary}`, + backgroundColor: `${currentTheme.backgroundTertiary}`, + opacity: 1, + '& .MuiOutlinedInput-root': { + '& fieldset': { + border: 'none', + }, + '&:hover fieldset': { + border: 'none', + }, + '&.Mui-focused fieldset': { + border: 'none', + }, + }, + }; +}); diff --git a/src/components/Theme/theme.ts b/src/components/Theme/theme.ts index bfc0281..770353c 100644 --- a/src/components/Theme/theme.ts +++ b/src/components/Theme/theme.ts @@ -6,24 +6,27 @@ export const darkTheme: Theme = { textPrimary: '#ffffff', textSecondary: '#99A4B8', backgroundPrimary: '#000000', - backgroundSecondary: '#161616', + backgroundSecondary: '#262B33', + backgroundTertiary: '#11141A', titleFontFamily: 'Open Sans', textFontFamily: 'Open Sans', - borderRadius: '0.8rem', + borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', border: '0.1rem solid rgba(153, 164, 184, 0.1)', }; export const lightTheme: Theme = { + // TBD type: 'light', titleColor: '#000000', textPrimary: '#000000', textSecondary: '#717171', backgroundPrimary: '#ffffff', backgroundSecondary: '#f8f8f8', + backgroundTertiary: '#f8f8f8', titleFontFamily: 'Open Sans', textFontFamily: 'Open Sans', - borderRadius: '0.8rem', + borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', border: '0.1rem solid rgba(183, 183, 183, 0.3)', }; diff --git a/src/components/index.ts b/src/components/index.ts index bd43e0e..847f081 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,5 +1,4 @@ export * from './Theme'; -export * from './Disclaimer'; export * from './CustomHead'; export * from './Table'; export * from './SearchBar'; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 8410897..fb425bc 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,13 +1,12 @@ import { useTranslation } from 'next-i18next'; -import { useState } from 'react'; -import { NotFound, SearchBar, Table, Title } from '~/components'; -import { useData } from '~/hooks'; +import { NotFound, Table, Title } from '~/components'; +import { useData, useStateContext } from '~/hooks'; export const Dashboard = () => { const { t } = useTranslation(); const { ecosystemData } = useData(); - const [searchTerm, setSearchTerm] = useState<string>(''); + const { searchTerm } = useStateContext(); const filteredChains = ecosystemData?.chains.filter((chain) => { const chainIdStr = String(chain.id); @@ -22,15 +21,10 @@ export const Dashboard = () => { const availableChains = filteredChains?.length > 0; - const handleChange = (value: string) => { - setSearchTerm(value); - }; - return ( <section> <header> <Title title={t('HOME.DASHBOARD.title')} /> - <SearchBar value={searchTerm} onChange={handleChange} /> </header> {availableChains && <Table chains={filteredChains} />} diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 8a76ce0..c144c82 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -1,15 +1,17 @@ import { styled } from '@mui/material/styles'; -import { IconButton } from '@mui/material'; -import LightModeIcon from '@mui/icons-material/LightMode'; -import DarkModeIcon from '@mui/icons-material/DarkMode'; +import { IconButton, Box } from '@mui/material'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; +import Image from 'next/image'; -import { BasicSelect } from '~/components'; +import { BasicSelect, SearchBar } from '~/components'; import { useCustomTheme } from '~/hooks/useContext/useTheme'; -import { zIndex, HEADER_HEIGHT } from '~/utils'; +import { zIndex } from '~/utils'; import { getConfig } from '~/config'; +import LightMode from '~/assets/icons/lightMode.svg'; +// temporary awaiting dark mode icon +import DarkMode from '~/assets/icons/lightMode.svg'; const { DEFAULT_LANG } = getConfig(); @@ -19,49 +21,85 @@ export const Header = () => { t, i18n: { changeLanguage, language }, } = useTranslation(); - const { locales, replace } = useRouter(); + const router = useRouter(); + const { locales, pathname, query } = router; const localesMap = locales ? Object.fromEntries(locales.map((locale) => [locale, t(`LOCALES.${locale}`)])) : {}; const handleChangeLanguage = (value: string) => { const locale = Object.keys(localesMap).find((key) => localesMap[key] === value) || DEFAULT_LANG; - replace('/', undefined, { locale: locale }); + const newPath = `/${locale}${pathname}`; + + router.replace( + { + pathname: newPath, + query, + }, + undefined, + { locale }, + ); + changeLanguage(locale); }; return ( <StyledHeader> - <Link href='/' passHref> - <Logo>ZKchainHub</Logo> - </Link> - <SIconButton onClick={changeTheme}>{theme === 'dark' ? <LightModeIcon /> : <DarkModeIcon />}</SIconButton> - <BasicSelect value={t(`LOCALES.${language}`)} setValue={handleChangeLanguage} list={Object.values(localesMap)} /> + <Box> + <StyledLink href='/' passHref> + <Logo>ZKchainHub</Logo> + </StyledLink> + </Box> + <SBox> + <SearchBar /> + <BasicSelect + value={t(`LOCALES.${language}`)} + setValue={handleChangeLanguage} + list={Object.values(localesMap)} + /> + <SIconButton onClick={changeTheme}> + {theme === 'dark' ? <Image src={LightMode} alt='light mode' /> : <Image src={DarkMode} alt='dark mode' />} + </SIconButton> + </SBox> </StyledHeader> ); }; -//Styles -const StyledHeader = styled('header')(() => { - const { currentTheme } = useCustomTheme(); - return { - display: 'flex', - height: `${HEADER_HEIGHT}rem`, - padding: '0 8rem', - alignItems: 'center', - justifyContent: 'space-between', - backgroundColor: currentTheme.backgroundSecondary, - width: '100%', - zIndex: zIndex.HEADER, - }; +const StyledHeader = styled('header')({ + display: 'flex', + height: '5.5rem', + padding: '1rem', + alignItems: 'center', + justifyContent: 'space-between', + width: '100%', + zIndex: zIndex.HEADER, }); const Logo = styled('h1')({ fontSize: '1.5rem', - fontWeight: 'bold', cursor: 'pointer', }); -const SIconButton = styled(IconButton)({ - position: 'absolute', - left: '50%', +const StyledLink = styled(Link)({ + textDecoration: 'none', + color: 'inherit', +}); + +const SIconButton = styled(IconButton)(() => { + const { currentTheme } = useCustomTheme(); + return { + marginRight: '1rem', + color: `${currentTheme.textPrimary}`, + backgroundColor: `${currentTheme.backgroundSecondary}`, + borderRadius: `${currentTheme.borderRadius}`, + padding: '1rem', + gap: '0.5rem', + width: '3.5rem', + height: '3.5rem', + }; +}); + +const SBox = styled(Box)({ + display: 'flex', + alignItems: 'center', + gap: '0.25rem', }); diff --git a/src/pages/layout.tsx b/src/pages/layout.tsx index dfa21d7..d88bf38 100644 --- a/src/pages/layout.tsx +++ b/src/pages/layout.tsx @@ -1,13 +1,11 @@ import { Box, CssBaseline, styled } from '@mui/material'; -import { Disclaimer } from '~/components'; import { Footer, Header } from '~/containers'; export default function Layout({ children }: { children: React.ReactNode }) { return ( <> <CssBaseline /> - <Disclaimer /> <MainContent> <NoScriptMessage> diff --git a/src/providers/StateProvider.tsx b/src/providers/StateProvider.tsx index 280aa75..1b8c7f0 100644 --- a/src/providers/StateProvider.tsx +++ b/src/providers/StateProvider.tsx @@ -6,6 +6,9 @@ type ContextType = { isError: boolean; setIsError: (val: boolean) => void; + + searchTerm: string; + setSearchTerm: (val: string) => void; }; interface StateProps { @@ -17,6 +20,7 @@ export const StateContext = createContext({} as ContextType); export const StateProvider = ({ children }: StateProps) => { const [loading, setLoading] = useState<boolean>(false); const [isError, setIsError] = useState<boolean>(false); + const [searchTerm, setSearchTerm] = useState<string>(''); return ( <StateContext.Provider @@ -25,6 +29,8 @@ export const StateProvider = ({ children }: StateProps) => { setLoading, isError, setIsError, + searchTerm, + setSearchTerm, }} > {children} diff --git a/src/types/Theme.ts b/src/types/Theme.ts index 22f9536..e2b0e90 100644 --- a/src/types/Theme.ts +++ b/src/types/Theme.ts @@ -6,6 +6,7 @@ export interface Theme { textSecondary: string; backgroundPrimary: string; backgroundSecondary: string; + backgroundTertiary: string; titleColor: string; titleFontFamily: string; textFontFamily: string; diff --git a/src/utils/Variables.ts b/src/utils/Variables.ts index b12b822..4ca27b9 100644 --- a/src/utils/Variables.ts +++ b/src/utils/Variables.ts @@ -28,7 +28,6 @@ export const zIndex = { TOAST: 500, }; -export const DISCLAIMER_HEIGHT = 3; export const HEADER_HEIGHT = 8; // Header height in rem units export const FOOTER_HEIGHT = 8; // Footer height in rem units export const SURROUND_HEIGHT = HEADER_HEIGHT + FOOTER_HEIGHT; From 52d87c77cae249ffa168a1335080199f4285f41a Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 2 Aug 2024 16:01:08 -0300 Subject: [PATCH 35/82] feat: footer design styles (#11) closes ZKS-109 --- public/locales/en/common.json | 8 +- public/locales/es/common.json | 8 +- src/assets/font/css/inter.css | 21 +++++ .../Inter-Italic-VariableFont_opsz,wght.ttf | Bin 0 -> 904532 bytes .../fonts/Inter-VariableFont_opsz,wght.ttf | Bin 0 -> 874708 bytes src/assets/icons/darkMode.svg | 6 ++ src/assets/icons/gasDark.svg | 5 ++ src/assets/icons/gasLight.svg | 5 ++ src/assets/icons/githubDark.svg | 3 + src/assets/icons/githubLight.svg | 10 +++ src/assets/icons/heartDark.svg | 1 + src/assets/icons/heartLight.svg | 1 + .../icons/{search.svg => searchDark.svg} | 0 src/assets/icons/searchLight.svg | 4 + src/assets/icons/wonderlandDark.svg | 12 +++ src/assets/icons/wonderlandLight.svg | 12 +++ src/assets/icons/zkLogoDark.svg | 4 + src/assets/icons/zkLogoLight.svg | 4 + src/assets/react.svg | 1 - src/components/BasicSelect.tsx | 11 ++- src/components/Gas.tsx | 54 +++++++++++ src/components/SearchBar.tsx | 9 +- src/components/Theme/theme.ts | 14 +-- src/components/TitleBanner.tsx | 51 +++++++++-- src/components/index.ts | 1 + src/config/constants.ts | 1 + src/containers/Footer/index.tsx | 85 ++++++++++++++---- src/containers/Header/index.tsx | 14 +-- src/providers/ThemeProvider.tsx | 5 +- src/types/Config.ts | 1 + src/types/Theme.ts | 2 + src/utils/Variables.ts | 33 ------- src/utils/index.ts | 1 - 33 files changed, 296 insertions(+), 91 deletions(-) create mode 100644 src/assets/font/css/inter.css create mode 100644 src/assets/font/fonts/Inter-Italic-VariableFont_opsz,wght.ttf create mode 100644 src/assets/font/fonts/Inter-VariableFont_opsz,wght.ttf create mode 100644 src/assets/icons/darkMode.svg create mode 100644 src/assets/icons/gasDark.svg create mode 100644 src/assets/icons/gasLight.svg create mode 100644 src/assets/icons/githubDark.svg create mode 100644 src/assets/icons/githubLight.svg create mode 100644 src/assets/icons/heartDark.svg create mode 100644 src/assets/icons/heartLight.svg rename src/assets/icons/{search.svg => searchDark.svg} (100%) create mode 100644 src/assets/icons/searchLight.svg create mode 100644 src/assets/icons/wonderlandDark.svg create mode 100644 src/assets/icons/wonderlandLight.svg create mode 100644 src/assets/icons/zkLogoDark.svg create mode 100644 src/assets/icons/zkLogoLight.svg delete mode 100644 src/assets/react.svg create mode 100644 src/components/Gas.tsx delete mode 100644 src/utils/Variables.ts diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 948b147..e95bd49 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -1,7 +1,8 @@ { "HOME": { - "title": "ZKsync Ecosystem", - "gasPrice": "Gas Price", + "title": "ZKsync", + "subtitle": "Ecosystem", + "gasPrice": "L1 Gas Price", "transfer": "ERC-20 Transfer", "lockedAssets": "Locked assets in shared bridge", "DASHBOARD": { @@ -50,7 +51,8 @@ "FOOTER": { "docs": "Documentation", "github": "GitHub", - "madeWithLove": "Made with โค๏ธ by" + "madeWith": "Made with", + "by": "by" }, "LOCALES": { "en": "English", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index b2a9b7e..2b7daa8 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -1,7 +1,8 @@ { "HOME": { - "title": "Ecosistema ZKsync", - "gasPrice": "Precio del gas", + "title": "ZKsync", + "subtitle": "Ecosistema", + "gasPrice": "Precio del gas L1", "transfer": "Transferencia ERC-20", "lockedAssets": "Activos bloqueados en puente compartido", "DASHBOARD": { @@ -50,7 +51,8 @@ "FOOTER": { "docs": "Documentaciรณn", "github": "GitHub", - "madeWithLove": "Hecho con โค๏ธ por" + "madeWithLove": "Hecho con", + "by": "por" }, "LOCALES": { "en": "Inglรฉs", diff --git a/src/assets/font/css/inter.css b/src/assets/font/css/inter.css new file mode 100644 index 0000000..e2f6bb0 --- /dev/null +++ b/src/assets/font/css/inter.css @@ -0,0 +1,21 @@ +/* +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- +*/ + +@font-face { + font-family: 'Inter-Variable'; + src: + url('../fonts/Inter-Italic-VariableFont_opsz,wght.ttf') format('ttf'), + url('../fonts/Inter-VariableFont_opsz,wght.ttf') format('ttf'); + font-weight: 200 700; + font-display: swap; + font-style: normal; +} diff --git a/src/assets/font/fonts/Inter-Italic-VariableFont_opsz,wght.ttf b/src/assets/font/fonts/Inter-Italic-VariableFont_opsz,wght.ttf new file mode 100644 index 0000000000000000000000000000000000000000..43ed4f5ee6cb01173b448af26edb9d7459f9d365 GIT binary patch literal 904532 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%0DU}PRGK>Fb2L& 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±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 Z45&OeSD3Au{DRD*>1T?{E}>lZ{{Y=nJdywa literal 0 HcmV?d00001 diff --git a/src/assets/font/fonts/Inter-VariableFont_opsz,wght.ttf b/src/assets/font/fonts/Inter-VariableFont_opsz,wght.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e31b51e3e9388ae61767c692885e5d77ff7b5346 GIT binary patch literal 874708 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≷9WK0CApUWn4bB=meh;stxvU@ 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∋v-}R%UQhOtKB4X(PDI3U9MC> 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≠1AU|K%)`OS25Z{|o%e%0D+5{>04U9*Q*1!q^8U;HJTG%Y?XTKK#Ml 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г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ӰD$CJ9G6XR!q<IK#FOkLlk3<{V<&&jt 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/darkMode.svg b/src/assets/icons/darkMode.svg new file mode 100644 index 0000000..9658a20 --- /dev/null +++ b/src/assets/icons/darkMode.svg @@ -0,0 +1,6 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<mask id="path-1-inside-1_111_2867" fill="white"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M21.9995 11.8995C20.729 13.1957 18.9584 14 17 14C13.134 14 10 10.866 10 6.99997C10 5.04155 10.8042 3.27097 12.1005 2.00049C12.067 2.00017 12.0335 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22C17.5228 22 22 17.5228 22 12C22 11.9664 21.9998 11.9329 21.9995 11.8995Z"/> +</mask> +<path d="M21.9995 11.8995L22.9995 11.8896L22.9757 9.47488L21.2853 11.1995L21.9995 11.8995ZM12.1005 2.00049L12.8005 2.71466L14.5251 1.02431L12.1103 1.00054L12.1005 2.00049ZM21.2853 11.1995C20.1952 12.3118 18.6789 13 17 13V15C19.238 15 21.2629 14.0797 22.7137 12.5994L21.2853 11.1995ZM17 13C13.6863 13 11 10.3137 11 6.99997H9C9 11.4183 12.5817 15 17 15V13ZM11 6.99997C11 5.32112 11.6882 3.80481 12.8005 2.71466L11.4005 1.28633C9.92028 2.73714 9 4.76199 9 6.99997H11ZM12 3C12.0303 3 12.0605 3.00015 12.0906 3.00045L12.1103 1.00054C12.0736 1.00018 12.0368 1 12 1V3ZM3 12C3 7.02944 7.02944 3 12 3V1C5.92487 1 1 5.92487 1 12H3ZM12 21C7.02944 21 3 16.9706 3 12H1C1 18.0751 5.92487 23 12 23V21ZM21 12C21 16.9706 16.9706 21 12 21V23C18.0751 23 23 18.0751 23 12H21ZM20.9996 11.9093C20.9999 11.9395 21 11.9697 21 12H23C23 11.9632 22.9998 11.9264 22.9995 11.8896L20.9996 11.9093Z" fill="black" mask="url(#path-1-inside-1_111_2867)"/> +</svg> diff --git a/src/assets/icons/gasDark.svg b/src/assets/icons/gasDark.svg new file mode 100644 index 0000000..6b1864a --- /dev/null +++ b/src/assets/icons/gasDark.svg @@ -0,0 +1,5 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M5.5 5C5.5 3.61929 6.61929 2.5 8 2.5H12C13.3807 2.5 14.5 3.61929 14.5 5V21.5H5.5V5Z" stroke="#A1A7B3"/> +<path d="M7.5 5C7.5 4.72386 7.72386 4.5 8 4.5H12C12.2761 4.5 12.5 4.72386 12.5 5V12.5H7.5V5Z" stroke="#A1A7B3"/> +<path d="M5.5 12.5H15.5C16.6046 12.5 17.5 13.3954 17.5 14.5V19C17.5 19.8284 18.1716 20.5 19 20.5V20.5C19.8284 20.5 20.5 19.8284 20.5 19V10.3284C20.5 9.79799 20.2893 9.28929 19.9142 8.91421L17.5 6.5" stroke="#A1A7B3"/> +</svg> diff --git a/src/assets/icons/gasLight.svg b/src/assets/icons/gasLight.svg new file mode 100644 index 0000000..de24c5e --- /dev/null +++ b/src/assets/icons/gasLight.svg @@ -0,0 +1,5 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M5.5 5C5.5 3.61929 6.61929 2.5 8 2.5H12C13.3807 2.5 14.5 3.61929 14.5 5V21.5H5.5V5Z" stroke="#3D424D"/> +<path d="M7.5 5C7.5 4.72386 7.72386 4.5 8 4.5H12C12.2761 4.5 12.5 4.72386 12.5 5V12.5H7.5V5Z" stroke="#3D424D"/> +<path d="M5.5 12.5H15.5C16.6046 12.5 17.5 13.3954 17.5 14.5V19C17.5 19.8284 18.1716 20.5 19 20.5V20.5C19.8284 20.5 20.5 19.8284 20.5 19V10.3284C20.5 9.79799 20.2893 9.28929 19.9142 8.91421L17.5 6.5" stroke="#3D424D"/> +</svg> diff --git a/src/assets/icons/githubDark.svg b/src/assets/icons/githubDark.svg new file mode 100644 index 0000000..2bccb51 --- /dev/null +++ b/src/assets/icons/githubDark.svg @@ -0,0 +1,3 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M12 0C5.37 0 0 5.37 0 12C0 17.31 3.435 21.795 8.205 23.385C8.805 23.49 9.03 23.13 9.03 22.815C9.03 22.53 9.015 21.585 9.015 20.58C6 21.135 5.22 19.845 4.98 19.17C4.845 18.825 4.26 17.76 3.75 17.475C3.33 17.25 2.73 16.695 3.735 16.68C4.68 16.665 5.355 17.55 5.58 17.91C6.66 19.725 8.385 19.215 9.075 18.9C9.18 18.12 9.495 17.595 9.84 17.295C7.17 16.995 4.38 15.96 4.38 11.37C4.38 10.065 4.845 8.985 5.61 8.145C5.49 7.845 5.07 6.615 5.73 4.965C5.73 4.965 6.735 4.65 9.03 6.195C9.99 5.925 11.01 5.79 12.03 5.79C13.05 5.79 14.07 5.925 15.03 6.195C17.325 4.635 18.33 4.965 18.33 4.965C18.99 6.615 18.57 7.845 18.45 8.145C19.215 8.985 19.68 10.05 19.68 11.37C19.68 15.975 16.875 16.995 14.205 17.295C14.64 17.67 15.015 18.39 15.015 19.515C15.015 21.12 15 22.41 15 22.815C15 23.13 15.225 23.505 15.825 23.385C20.565 21.795 24 17.295 24 12C24 5.37 18.63 0 12 0Z" fill="white"/> +</svg> diff --git a/src/assets/icons/githubLight.svg b/src/assets/icons/githubLight.svg new file mode 100644 index 0000000..4a0a175 --- /dev/null +++ b/src/assets/icons/githubLight.svg @@ -0,0 +1,10 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_111_2093)"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M12 0C5.37 0 0 5.37 0 12C0 17.31 3.435 21.795 8.205 23.385C8.805 23.49 9.03 23.13 9.03 22.815C9.03 22.53 9.015 21.585 9.015 20.58C6 21.135 5.22 19.845 4.98 19.17C4.845 18.825 4.26 17.76 3.75 17.475C3.33 17.25 2.73 16.695 3.735 16.68C4.68 16.665 5.355 17.55 5.58 17.91C6.66 19.725 8.385 19.215 9.075 18.9C9.18 18.12 9.495 17.595 9.84 17.295C7.17 16.995 4.38 15.96 4.38 11.37C4.38 10.065 4.845 8.985 5.61 8.145C5.49 7.845 5.07 6.615 5.73 4.965C5.73 4.965 6.735 4.65 9.03 6.195C9.99 5.925 11.01 5.79 12.03 5.79C13.05 5.79 14.07 5.925 15.03 6.195C17.325 4.635 18.33 4.965 18.33 4.965C18.99 6.615 18.57 7.845 18.45 8.145C19.215 8.985 19.68 10.05 19.68 11.37C19.68 15.975 16.875 16.995 14.205 17.295C14.64 17.67 15.015 18.39 15.015 19.515C15.015 21.12 15 22.41 15 22.815C15 23.13 15.225 23.505 15.825 23.385C20.565 21.795 24 17.295 24 12C24 5.37 18.63 0 12 0Z" fill="#11141A"/> +</g> +<defs> +<clipPath id="clip0_111_2093"> +<rect width="24" height="24" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/src/assets/icons/heartDark.svg b/src/assets/icons/heartDark.svg new file mode 100644 index 0000000..6449470 --- /dev/null +++ b/src/assets/icons/heartDark.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#FFFFFF"><path d="m480-144-50-45q-100-89-165-152.5t-102.5-113Q125-504 110.5-545T96-629q0-89 61-150t150-61q49 0 95 21t78 59q32-38 78-59t95-21q89 0 150 61t61 150q0 43-14 83t-51.5 89q-37.5 49-103 113.5T528-187l-48 43Z"/></svg> \ No newline at end of file diff --git a/src/assets/icons/heartLight.svg b/src/assets/icons/heartLight.svg new file mode 100644 index 0000000..b52fd38 --- /dev/null +++ b/src/assets/icons/heartLight.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -960 960 960" width="20px" fill="#000"><path d="m480-144-50-45q-100-89-165-152.5t-102.5-113Q125-504 110.5-545T96-629q0-89 61-150t150-61q49 0 95 21t78 59q32-38 78-59t95-21q89 0 150 61t61 150q0 43-14 83t-51.5 89q-37.5 49-103 113.5T528-187l-48 43Z"/></svg> \ No newline at end of file diff --git a/src/assets/icons/search.svg b/src/assets/icons/searchDark.svg similarity index 100% rename from src/assets/icons/search.svg rename to src/assets/icons/searchDark.svg diff --git a/src/assets/icons/searchLight.svg b/src/assets/icons/searchLight.svg new file mode 100644 index 0000000..6a938ad --- /dev/null +++ b/src/assets/icons/searchLight.svg @@ -0,0 +1,4 @@ +<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> +<circle cx="10" cy="10" r="6.5" stroke="#11141A"/> +<path d="M21 21L14.5 14.5" stroke="#11141A"/> +</svg> diff --git a/src/assets/icons/wonderlandDark.svg b/src/assets/icons/wonderlandDark.svg new file mode 100644 index 0000000..2a5fdfc --- /dev/null +++ b/src/assets/icons/wonderlandDark.svg @@ -0,0 +1,12 @@ +<svg width="136" height="14" viewBox="0 0 136 14" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M18.8652 0.246246C18.8652 0.246246 16.9417 5.71358 16.3434 7.39979C16.3434 7.39979 14.9912 11.178 14.8945 11.4821C14.7679 11.881 14.4718 12.7086 14.0529 12.7086C13.5075 12.7086 13.1854 11.7952 13.0638 11.4821C12.6649 10.449 12.4954 9.28344 12.3309 8.19149C12.1439 6.94479 12.0409 5.68682 12.0227 4.4263C12.0164 3.97416 12.09 3.52457 12.2401 3.09806L13.2372 0.244217H10.8192C10.8192 0.244217 8.89463 5.71163 8.29638 7.39776C8.29638 7.39776 6.94424 11.176 6.84752 11.4801C6.72186 11.879 6.42469 12.7066 6.00689 12.7066C5.4605 12.7066 5.13838 11.7932 5.01776 11.4801C4.6189 10.4471 4.44837 9.28141 4.28385 8.18954C3.89973 5.5562 3.87057 2.88326 4.19705 0.242188H0.718018C0.718018 0.242188 3.33155 8.5575 4.10836 10.484C4.49226 11.4402 5.46246 13.99 6.90035 13.99C8.33825 13.99 8.82985 12.7645 9.29356 11.4782C9.52985 10.827 10.2089 8.89653 10.9399 6.81545C11.5142 8.55352 12.0148 10.0651 12.1563 10.484C12.4864 11.4602 13.5115 13.99 14.9484 13.99C16.3853 13.99 16.8789 12.7645 17.3415 11.4782C17.9299 9.85275 21.2903 0.242188 21.2903 0.242188L18.8652 0.246246Z" fill="white"/> +<path d="M76.4918 0.740907V13.7337H74.2739V0.246302C75.4306 0.246302 80.2977 0.22135 81.2537 0.29816C82.351 0.385867 83.4475 0.571354 84.2705 1.37207C84.7011 1.79287 84.9822 2.35722 84.9567 2.96749C84.8627 5.2261 82.1007 5.82036 80.4157 6.4655C80.1429 6.57019 79.8378 6.70984 79.7521 6.98904C79.6664 7.26825 79.8295 7.54144 79.9858 7.77879C81.4581 10.0064 83.1627 12.1114 85.2708 13.7517H82.1037C82.1037 13.7517 81.3326 13.0297 81.0064 12.6619C79.9024 11.4418 78.9269 10.1113 78.0949 8.69119C77.9115 8.37207 77.7304 8.00711 77.8236 7.65117C77.9017 7.35197 78.1528 7.13958 78.4053 6.96612C79.6559 6.11054 81.531 5.84027 82.3322 4.42034C82.8515 3.49802 82.7396 2.2396 81.9707 1.48676C81.3386 0.867545 80.3669 0.746844 79.5221 0.731888C78.5458 0.713925 77.5628 0.74489 76.5902 0.74489L76.4918 0.740907Z" fill="white"/> +<path d="M47.5374 0.246212H44.205C46.5642 3.9766 47.1884 7.96516 47.0159 12.0834C46.5293 11.7842 45.3447 11.173 42.8767 6.99196C41.7988 5.16415 41.4448 4.54794 40.328 2.74411C39.6609 1.66817 38.8114 0.00195312 37.3286 0.00195312C36.6625 0.00195312 36.3314 0.249218 36.3314 0.249218V13.7506H39.663C37.3036 10.0203 36.6804 6.03168 36.8529 1.91348C37.542 1.91348 39.645 5.90204 40.2493 6.99895C40.9184 8.2025 44.2788 13.9999 46.5403 13.9999C46.5214 13.9999 46.5583 13.9999 46.5403 13.9999C47.2064 13.9999 47.5374 13.7527 47.5374 13.7527V0.246212Z" fill="white"/> +<path d="M27.9571 0.020874C24.0393 0.020874 20.8624 3.14197 20.8624 6.99201C20.8624 10.842 24.0393 13.9621 27.9571 13.9621C31.875 13.9621 35.0519 10.841 35.0519 6.99201C35.0519 3.14295 31.8769 0.020874 27.9571 0.020874ZM28.017 13.5004C25.6517 13.5004 23.7342 10.5887 23.7342 6.99697C23.7342 3.40525 25.6517 0.493533 28.017 0.493533C30.3822 0.493533 32.3047 3.40525 32.3047 6.99697C32.3047 10.5887 30.3812 13.5004 28.017 13.5004Z" fill="white"/> +<path d="M96.3579 13.7477V10.4222C94.1183 12.7406 91.5329 13.3668 89.0557 13.2232V0.251221H86.7627V13.7447L96.3579 13.7477Z" fill="white"/> +<path d="M53.0336 0.246338H49.4727V13.7478H53.0355C58.9187 13.7478 60.9609 10.7194 60.9609 6.99306C60.9609 3.26673 58.9158 0.246338 53.0336 0.246338ZM53.0993 13.2931C52.6482 13.2931 52.1995 13.2275 51.7672 13.0986V0.899448C52.1992 0.768901 52.6479 0.701711 53.0993 0.700058C57.2575 0.700058 58.484 3.51798 58.484 6.99502C58.484 10.4721 57.2575 13.2931 53.0993 13.2931Z" fill="white"/> +<path d="M105.753 8.96835C106.519 11.1382 107.436 13.7477 107.436 13.7477H109.954L105.904 2.51181C105.439 1.2255 104.942 0 103.511 0C102.08 0 101.052 2.52977 100.719 3.50597C100.337 4.63776 97.329 13.7477 97.329 13.7477H100.808C100.619 12.1621 100.552 10.5642 100.609 8.96835H105.753ZM100.902 5.80043C101.067 4.71051 101.234 3.54483 101.635 2.50985C101.756 2.19675 102.079 1.2833 102.625 1.2833C103.043 1.2833 103.34 2.11295 103.466 2.50985C103.565 2.81393 104.915 6.59213 104.915 6.59213C105.071 7.03187 105.314 7.72894 105.596 8.51966H100.631C100.676 7.6129 100.767 6.70651 100.902 5.80043Z" fill="white"/> +<path d="M72.1418 13.7478L72.1215 10.4222C69.8805 12.7407 67.3159 13.3669 64.842 13.2232V7.16457C66.3377 7.06484 67.8963 7.43378 69.2534 8.83778L69.2643 7.14961V6.85049L69.2534 5.1603C67.8963 6.56429 66.3407 6.93121 64.842 6.8335V0.76582C67.3079 0.616258 69.5794 1.05006 71.8224 3.36841L71.8427 0.246338L64.6565 0.251298H62.5455V13.7447H64.839V13.7388L72.1418 13.7478Z" fill="white"/> +<path d="M122.267 0.246212H118.936C121.293 3.9766 121.918 7.96516 121.745 12.0834C121.259 11.7842 120.074 11.173 117.607 6.99196C116.528 5.16415 116.175 4.54794 115.058 2.74411C114.391 1.66817 113.544 0.00195312 112.058 0.00195312C111.392 0.00195312 111.061 0.249218 111.061 0.249218V13.7506H114.392C112.033 10.0203 111.41 6.03168 111.583 1.91348C112.272 1.91348 114.375 5.90204 114.979 6.99895C115.648 8.2025 119.008 13.9999 121.27 13.9999C121.252 13.9999 121.287 13.9999 121.27 13.9999C121.936 13.9999 122.267 13.7527 122.267 13.7527V0.246212Z" fill="white"/> +<path d="M128.072 0.246338H124.512V13.7478H128.074C133.957 13.7478 136 10.7194 136 6.99306C136 3.26673 133.954 0.246338 128.072 0.246338ZM128.138 13.2931C127.687 13.2931 127.238 13.2275 126.806 13.0986V0.899448C127.238 0.768901 127.687 0.701711 128.138 0.700058C132.296 0.700058 133.523 3.51798 133.523 6.99502C133.523 10.4721 132.296 13.2931 128.138 13.2931Z" fill="white"/> +</svg> diff --git a/src/assets/icons/wonderlandLight.svg b/src/assets/icons/wonderlandLight.svg new file mode 100644 index 0000000..78fd827 --- /dev/null +++ b/src/assets/icons/wonderlandLight.svg @@ -0,0 +1,12 @@ +<svg width="136" height="14" viewBox="0 0 136 14" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M18.8652 0.246246C18.8652 0.246246 16.9417 5.71358 16.3434 7.39979C16.3434 7.39979 14.9912 11.178 14.8945 11.4821C14.7679 11.881 14.4718 12.7086 14.0529 12.7086C13.5075 12.7086 13.1854 11.7952 13.0638 11.4821C12.6649 10.449 12.4954 9.28344 12.3309 8.19149C12.1439 6.94479 12.0409 5.68682 12.0227 4.4263C12.0164 3.97416 12.09 3.52457 12.2401 3.09806L13.2372 0.244217H10.8192C10.8192 0.244217 8.89463 5.71163 8.29638 7.39776C8.29638 7.39776 6.94424 11.176 6.84752 11.4801C6.72186 11.879 6.42469 12.7066 6.00689 12.7066C5.4605 12.7066 5.13838 11.7932 5.01776 11.4801C4.6189 10.4471 4.44837 9.28141 4.28385 8.18954C3.89973 5.5562 3.87057 2.88326 4.19705 0.242188H0.718018C0.718018 0.242188 3.33155 8.5575 4.10836 10.484C4.49226 11.4402 5.46246 13.99 6.90035 13.99C8.33825 13.99 8.82985 12.7645 9.29356 11.4782C9.52985 10.827 10.2089 8.89653 10.9399 6.81545C11.5142 8.55352 12.0148 10.0651 12.1563 10.484C12.4864 11.4602 13.5115 13.99 14.9484 13.99C16.3853 13.99 16.8789 12.7645 17.3415 11.4782C17.9299 9.85275 21.2903 0.242188 21.2903 0.242188L18.8652 0.246246Z" fill="#11141A"/> +<path d="M76.4918 0.740907V13.7337H74.2739V0.246302C75.4306 0.246302 80.2977 0.22135 81.2537 0.29816C82.351 0.385867 83.4475 0.571354 84.2705 1.37207C84.7011 1.79287 84.9822 2.35722 84.9567 2.96749C84.8627 5.2261 82.1007 5.82036 80.4157 6.4655C80.1429 6.57019 79.8378 6.70984 79.7521 6.98904C79.6664 7.26825 79.8295 7.54144 79.9858 7.77879C81.4581 10.0064 83.1627 12.1114 85.2708 13.7517H82.1037C82.1037 13.7517 81.3326 13.0297 81.0064 12.6619C79.9024 11.4418 78.9269 10.1113 78.0949 8.69119C77.9115 8.37207 77.7304 8.00711 77.8236 7.65117C77.9017 7.35197 78.1528 7.13958 78.4053 6.96612C79.6559 6.11054 81.531 5.84027 82.3322 4.42034C82.8515 3.49802 82.7396 2.2396 81.9707 1.48676C81.3386 0.867545 80.3669 0.746844 79.5221 0.731888C78.5458 0.713925 77.5628 0.74489 76.5902 0.74489L76.4918 0.740907Z" fill="#11141A"/> +<path d="M47.5374 0.246212H44.205C46.5642 3.9766 47.1884 7.96516 47.0159 12.0834C46.5293 11.7842 45.3447 11.173 42.8767 6.99196C41.7988 5.16415 41.4448 4.54794 40.328 2.74411C39.6609 1.66817 38.8114 0.00195312 37.3286 0.00195312C36.6625 0.00195312 36.3314 0.249218 36.3314 0.249218V13.7506H39.663C37.3036 10.0203 36.6804 6.03168 36.8529 1.91348C37.542 1.91348 39.645 5.90204 40.2493 6.99895C40.9184 8.2025 44.2788 13.9999 46.5403 13.9999C46.5214 13.9999 46.5583 13.9999 46.5403 13.9999C47.2064 13.9999 47.5374 13.7527 47.5374 13.7527V0.246212Z" fill="#11141A"/> +<path d="M27.9571 0.020752C24.0393 0.020752 20.8624 3.14185 20.8624 6.99189C20.8624 10.8419 24.0393 13.962 27.9571 13.962C31.875 13.962 35.0519 10.8409 35.0519 6.99189C35.0519 3.14283 31.8769 0.020752 27.9571 0.020752ZM28.017 13.5003C25.6517 13.5003 23.7342 10.5886 23.7342 6.99685C23.7342 3.40512 25.6517 0.493411 28.017 0.493411C30.3822 0.493411 32.3047 3.40512 32.3047 6.99685C32.3047 10.5886 30.3812 13.5003 28.017 13.5003Z" fill="#11141A"/> +<path d="M96.3579 13.7477V10.4222C94.1183 12.7406 91.5329 13.3668 89.0557 13.2232V0.251221H86.7627V13.7447L96.3579 13.7477Z" fill="#11141A"/> +<path d="M53.0336 0.246338H49.4727V13.7478H53.0355C58.9187 13.7478 60.9609 10.7194 60.9609 6.99306C60.9609 3.26673 58.9158 0.246338 53.0336 0.246338ZM53.0993 13.2931C52.6482 13.2931 52.1995 13.2275 51.7672 13.0986V0.899448C52.1992 0.768901 52.6479 0.701711 53.0993 0.700058C57.2575 0.700058 58.484 3.51798 58.484 6.99502C58.484 10.4721 57.2575 13.2931 53.0993 13.2931Z" fill="#11141A"/> +<path d="M105.753 8.96835C106.519 11.1382 107.436 13.7477 107.436 13.7477H109.954L105.904 2.51181C105.439 1.2255 104.942 0 103.511 0C102.08 0 101.052 2.52977 100.719 3.50597C100.337 4.63776 97.329 13.7477 97.329 13.7477H100.808C100.619 12.1621 100.552 10.5642 100.609 8.96835H105.753ZM100.902 5.80043C101.067 4.71051 101.234 3.54483 101.635 2.50985C101.756 2.19675 102.079 1.2833 102.625 1.2833C103.043 1.2833 103.34 2.11295 103.466 2.50985C103.565 2.81393 104.915 6.59213 104.915 6.59213C105.071 7.03187 105.314 7.72894 105.596 8.51966H100.631C100.676 7.6129 100.767 6.70651 100.902 5.80043Z" fill="#11141A"/> +<path d="M72.1418 13.7478L72.1215 10.4222C69.8805 12.7407 67.3159 13.3669 64.842 13.2232V7.16457C66.3377 7.06484 67.8963 7.43378 69.2534 8.83778L69.2643 7.14961V6.85049L69.2534 5.1603C67.8963 6.56429 66.3407 6.93121 64.842 6.8335V0.76582C67.3079 0.616258 69.5794 1.05006 71.8224 3.36841L71.8427 0.246338L64.6565 0.251298H62.5455V13.7447H64.839V13.7388L72.1418 13.7478Z" fill="#11141A"/> +<path d="M122.267 0.246212H118.936C121.293 3.9766 121.918 7.96516 121.745 12.0834C121.259 11.7842 120.074 11.173 117.607 6.99196C116.528 5.16415 116.175 4.54794 115.058 2.74411C114.391 1.66817 113.544 0.00195312 112.058 0.00195312C111.392 0.00195312 111.061 0.249218 111.061 0.249218V13.7506H114.392C112.033 10.0203 111.41 6.03168 111.583 1.91348C112.272 1.91348 114.375 5.90204 114.979 6.99895C115.648 8.2025 119.008 13.9999 121.27 13.9999C121.252 13.9999 121.287 13.9999 121.27 13.9999C121.936 13.9999 122.267 13.7527 122.267 13.7527V0.246212Z" fill="#11141A"/> +<path d="M128.072 0.246338H124.512V13.7478H128.074C133.957 13.7478 136 10.7194 136 6.99306C136 3.26673 133.954 0.246338 128.072 0.246338ZM128.138 13.2931C127.687 13.2931 127.238 13.2275 126.806 13.0986V0.899448C127.238 0.768901 127.687 0.701711 128.138 0.700058C132.296 0.700058 133.523 3.51798 133.523 6.99502C133.523 10.4721 132.296 13.2931 128.138 13.2931Z" fill="#11141A"/> +</svg> diff --git a/src/assets/icons/zkLogoDark.svg b/src/assets/icons/zkLogoDark.svg new file mode 100644 index 0000000..26b4294 --- /dev/null +++ b/src/assets/icons/zkLogoDark.svg @@ -0,0 +1,4 @@ +<svg width="77" height="44" viewBox="0 0 77 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M0 22L22 -1.14441e-05V11H44L22 27.5V44L0 22Z" fill="white"/> +<path d="M77 22L55 44V33H33L55 16.5V-1.14441e-05L77 22Z" fill="white"/> +</svg> diff --git a/src/assets/icons/zkLogoLight.svg b/src/assets/icons/zkLogoLight.svg new file mode 100644 index 0000000..9ca6152 --- /dev/null +++ b/src/assets/icons/zkLogoLight.svg @@ -0,0 +1,4 @@ +<svg width="77" height="44" viewBox="0 0 77 44" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M0 22L22 0V11H44L22 27.5V44L0 22Z" fill="black"/> +<path d="M77 22L55 44V33H33L55 16.5V0L77 22Z" fill="black"/> +</svg> diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg> \ No newline at end of file diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index d28afc4..57e1944 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -66,10 +66,13 @@ export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: Basic ); }; -const SBox = styled(Box)({ - display: 'flex', - flexDirection: 'column', - gap: '0.5rem', +export const SBox = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + gap: currentTheme.gap, + alignItems: 'center', + }; }); const MenuButton = styled(Button)(() => { diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx new file mode 100644 index 0000000..7b587a1 --- /dev/null +++ b/src/components/Gas.tsx @@ -0,0 +1,54 @@ +import { Typography, Box, styled } from '@mui/material'; +import Image from 'next/image'; +import { useTranslation } from 'next-i18next'; + +import GasLight from '~/assets/icons/gasLight.svg'; +import GasDark from '~/assets/icons/gasDark.svg'; +import { useCustomTheme } from '~/hooks'; +import { SBox } from '~/components'; + +export const Gas = () => { + const { theme } = useCustomTheme(); + const { t } = useTranslation(); + + return ( + <GasContainer> + <Image src={theme === 'dark' ? GasDark : GasLight} alt='gas' /> + <Box> + <SBox> + <Typography>{t('HOME.gasPrice')}:</Typography> + <GasValueText>10 wei</GasValueText> + </SBox> + <SBox> + <Typography>{t('HOME.transfer')}:</Typography> + <GasValueText>$10</GasValueText> + </SBox> + </Box> + </GasContainer> + ); +}; + +const GasContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + + return { + display: 'flex', + alignItems: 'center', + color: currentTheme.textSecondary, + gap: currentTheme.gap, + fontWeight: 400, + fontSize: '0.7rem', + lineHeight: '1.25rem', + padding: '0.5rem 1rem', + }; +}); + +const GasValueText = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + + return { + color: currentTheme.textPrimary, + fontWeight: 500, + letterSpacing: '-0.03em', + }; +}); diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 2dc0870..5a70701 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,13 +1,16 @@ import { useTranslation } from 'next-i18next'; -import { useCustomTheme, useStateContext } from '~/hooks'; import { styled, TextField, InputAdornment } from '@mui/material'; import Image from 'next/image'; -import Search from '~/assets/icons/search.svg'; +import SearchDark from '~/assets/icons/searchDark.svg'; +import SearchLight from '~/assets/icons/searchLight.svg'; +import { useCustomTheme, useStateContext } from '~/hooks'; export const SearchBar = () => { const { t } = useTranslation(); const { searchTerm, setSearchTerm } = useStateContext(); + const { theme } = useCustomTheme(); + const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => { const value = event.target.value; setSearchTerm(value); @@ -21,7 +24,7 @@ export const SearchBar = () => { InputProps={{ startAdornment: ( <InputAdornment position='start'> - <Image src={Search} alt='search' /> + <Image src={theme === 'dark' ? SearchDark : SearchLight} alt='search' /> </InputAdornment> ), }} diff --git a/src/components/Theme/theme.ts b/src/components/Theme/theme.ts index 770353c..adbf0c1 100644 --- a/src/components/Theme/theme.ts +++ b/src/components/Theme/theme.ts @@ -8,11 +8,13 @@ export const darkTheme: Theme = { backgroundPrimary: '#000000', backgroundSecondary: '#262B33', backgroundTertiary: '#11141A', - titleFontFamily: 'Open Sans', - textFontFamily: 'Open Sans', + titleFontFamily: 'Inter-Variable', + textFontFamily: 'Inter-Variable', borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', border: '0.1rem solid rgba(153, 164, 184, 0.1)', + gap: '0.25rem', + padding: '1rem', }; export const lightTheme: Theme = { @@ -22,11 +24,13 @@ export const lightTheme: Theme = { textPrimary: '#000000', textSecondary: '#717171', backgroundPrimary: '#ffffff', - backgroundSecondary: '#f8f8f8', + backgroundSecondary: '#E8ECF2', backgroundTertiary: '#f8f8f8', - titleFontFamily: 'Open Sans', - textFontFamily: 'Open Sans', + titleFontFamily: 'Inter-Variable', + textFontFamily: 'Inter-Variable', borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', border: '0.1rem solid rgba(183, 183, 183, 0.3)', + gap: '0.25rem', + padding: '1rem', }; diff --git a/src/components/TitleBanner.tsx b/src/components/TitleBanner.tsx index 3d650d8..c6c7aca 100644 --- a/src/components/TitleBanner.tsx +++ b/src/components/TitleBanner.tsx @@ -1,15 +1,52 @@ import { useTranslation } from 'next-i18next'; +import { Box, Typography, styled } from '@mui/material'; +import Image from 'next/image'; + +import ZkLogoDark from '~/assets/icons/zkLogoDark.svg'; +import ZkLogoLight from '~/assets/icons/zkLogoLight.svg'; +import { useCustomTheme } from '~/hooks'; export const TitleBanner = () => { const { t } = useTranslation(); + const { theme } = useCustomTheme(); return ( - <div> - <span>{t('HOME.title')}</span> - - <div> - <span>{`${t('HOME.gasPrice')}: 10 wei ${t('HOME.transfer')} $10`}</span> - </div> - </div> + <TitleBox> + <Image src={theme === 'dark' ? ZkLogoDark : ZkLogoLight} alt='zkLogo' /> + <Title> + <Bold>{t('HOME.title').slice(0, 2)}</Bold> + {t('HOME.title').slice(2)} + + {t('HOME.subtitle')} + ); }; + +const TitleBox = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + + return { + display: 'flex', + alignItems: 'center', + gap: currentTheme.gap, + }; +}); + +const Title = styled(Typography)(() => ({ + fontSize: '3rem', + lineHeight: '4rem', + letterSpacing: '-0.03em', + fontWeight: 300, +})); + +const Bold = styled('span')({ + fontWeight: 700, +}); + +const Subtitle = styled(Typography)(() => ({ + fontSize: '3rem', + fontWeight: 700, + lineHeight: '4rem', + letterSpacing: '-0.03em', + textAlign: 'left', +})); diff --git a/src/components/index.ts b/src/components/index.ts index 847f081..619f451 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -12,3 +12,4 @@ export * from './TVL'; export * from './ChainInformation'; export * from './BasicSelect'; export * from './NotFound'; +export * from './Gas'; diff --git a/src/config/constants.ts b/src/config/constants.ts index 42d7405..e81f76f 100644 --- a/src/config/constants.ts +++ b/src/config/constants.ts @@ -3,6 +3,7 @@ import { Constants } from '~/types'; const constants: Constants = { SUPPORTED_LANGUAGES: ['en', 'es'], DEFAULT_LANG: 'en', + THEME_KEY: 'theme', }; export const getConstants = (): Constants => { diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index 45f49cb..3713eb7 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -1,18 +1,40 @@ import { useTranslation } from 'next-i18next'; import { styled } from '@mui/material/styles'; +import { Box, Typography } from '@mui/material'; +import Image from 'next/image'; +import Link from 'next/link'; +import WonderlandDark from '~/assets/icons/wonderlandDark.svg'; +import WonderlandLight from '~/assets/icons/wonderlandLight.svg'; +import HeartDark from '~/assets/icons/heartDark.svg'; +import HeartLight from '~/assets/icons/heartLight.svg'; +import GithubDark from '~/assets/icons/githubDark.svg'; +import GithubLight from '~/assets/icons/githubLight.svg'; import { useCustomTheme } from '~/hooks'; -import { FOOTER_HEIGHT } from '~/utils'; +import { SBox } from '~/components'; export const Footer = () => { const { t } = useTranslation(); + const { theme } = useCustomTheme(); return ( -

Footer

+ + {t('FOOTER.docs')} + + + {t('FOOTER.github')} + + -

{t('FOOTER.madeWithLove')}

- Wonderland + + {t('FOOTER.madeWith')} + + {t('FOOTER.by')} + + + +
); @@ -20,27 +42,52 @@ export const Footer = () => { const FooterContainer = styled('footer')(() => { const { currentTheme } = useCustomTheme(); + return { display: 'flex', - height: `${FOOTER_HEIGHT}rem`, - padding: '0 8rem', + height: '5.5rem', + padding: currentTheme.padding, alignItems: 'center', justifyContent: 'space-between', - backgroundColor: currentTheme.backgroundSecondary, - borderTop: currentTheme.border, width: '100%', }; }); -const Subtitle = styled('div')({ - display: 'flex', - alignItems: 'center', - gap: '0.8rem', - '& p': { - display: 'inline-block', - }, - '& a': { - textDecoration: 'none', - color: 'inherit', - }, +const Subtitle = styled('div')(() => { + const { currentTheme } = useCustomTheme(); + + return { + display: 'flex', + alignItems: 'center', + gap: currentTheme.gap, + '& p': { + display: 'inline-block', + }, + '& a': { + textDecoration: 'none', + color: 'inherit', + }, + }; +}); + +const IconText = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + gap: currentTheme.gap, + alignItems: 'center', + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + }; +}); + +const SText = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + + return { + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + }; }); diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index c144c82..2d2a216 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -5,13 +5,11 @@ import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; -import { BasicSelect, SearchBar } from '~/components'; +import { BasicSelect, SearchBar, Gas, SBox } from '~/components'; import { useCustomTheme } from '~/hooks/useContext/useTheme'; -import { zIndex } from '~/utils'; import { getConfig } from '~/config'; import LightMode from '~/assets/icons/lightMode.svg'; -// temporary awaiting dark mode icon -import DarkMode from '~/assets/icons/lightMode.svg'; +import DarkMode from '~/assets/icons/darkMode.svg'; const { DEFAULT_LANG } = getConfig(); @@ -50,6 +48,7 @@ export const Header = () => { + { height: '3.5rem', }; }); - -const SBox = styled(Box)({ - display: 'flex', - alignItems: 'center', - gap: '0.25rem', -}); diff --git a/src/providers/ThemeProvider.tsx b/src/providers/ThemeProvider.tsx index 8c620ee..a809d53 100644 --- a/src/providers/ThemeProvider.tsx +++ b/src/providers/ThemeProvider.tsx @@ -4,7 +4,10 @@ import { ThemeProvider as MuiThemeProvider } from '@mui/material/styles'; import { getMuiThemeConfig } from '~/components'; import { Theme, ThemeName } from '~/types'; -import { THEME_KEY, getTheme } from '~/utils'; +import { getTheme } from '~/utils'; +import { getConfig } from '~/config'; + +const { THEME_KEY } = getConfig(); type ContextType = { theme: ThemeName; diff --git a/src/types/Config.ts b/src/types/Config.ts index e818436..6ee42a9 100644 --- a/src/types/Config.ts +++ b/src/types/Config.ts @@ -10,6 +10,7 @@ export type SupportedLanguage = 'en' | 'es'; export interface Constants { SUPPORTED_LANGUAGES: SupportedLanguage[]; DEFAULT_LANG: SupportedLanguage; + THEME_KEY: string; } export interface Config extends Env, Constants {} diff --git a/src/types/Theme.ts b/src/types/Theme.ts index e2b0e90..050dee9 100644 --- a/src/types/Theme.ts +++ b/src/types/Theme.ts @@ -13,6 +13,8 @@ export interface Theme { borderRadius: string; secondaryBorderRadius: string; border: string; + gap: string; + padding: string; } export interface PropTheme { diff --git a/src/utils/Variables.ts b/src/utils/Variables.ts deleted file mode 100644 index 4ca27b9..0000000 --- a/src/utils/Variables.ts +++ /dev/null @@ -1,33 +0,0 @@ -/*============================================= -= Misc Variables = -=============================================*/ - -export const THEME_KEY = 'react-app-theme'; -export const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; - -/*============================================= -= Style Variables = -=============================================*/ - -export const MOBILE_MAX_WIDTH = 600; -export const TABLET_MAX_WIDTH = 1024; - -export const fontSize = { - MAIN_TITLE: '5.2rem', - SECTION_TITLE: '2.4rem', - XL: '1.8rem', - LARGE: '1.6rem', - MEDIUM: '1.4rem', - SMALL: '1.2rem', -}; - -export const zIndex = { - HEADER: 100, - MODAL: 200, - BACKDROP: -1, - TOAST: 500, -}; - -export const HEADER_HEIGHT = 8; // Header height in rem units -export const FOOTER_HEIGHT = 8; // Footer height in rem units -export const SURROUND_HEIGHT = HEADER_HEIGHT + FOOTER_HEIGHT; diff --git a/src/utils/index.ts b/src/utils/index.ts index 2b5edbb..9828cc6 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,5 +1,4 @@ export * from './getTheme'; -export * from './Variables'; export * from './config'; export * from './format'; export * from './services'; From 8caa5ff9570507bbd7fbecb0b813539ea4b1ccb4 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 2 Aug 2024 17:24:26 -0300 Subject: [PATCH 36/82] feat: chain table (#12) --- public/locales/en/common.json | 8 +- public/locales/es/common.json | 8 +- src/assets/icons/github.svg | 3 + src/assets/icons/infoDark.svg | 5 + src/assets/icons/infoLight.svg | 5 + src/components/InfoTag.tsx | 44 +++++ src/components/Table.tsx | 162 ++++++++++++++++--- src/components/Theme/theme.ts | 100 +++++++++++- src/components/TotalValueLocked.tsx | 23 +-- src/containers/ChainDetail/ChainMetadata.tsx | 6 +- src/containers/Dashboard/index.tsx | 10 +- src/containers/LockedAssets/index.tsx | 6 +- src/data/ecosystemMockData.json | 137 ++++++++-------- src/pages/[chain]/index.tsx | 14 +- src/providers/DataProvider.tsx | 9 +- src/types/Data.ts | 26 ++- src/types/Theme.ts | 10 ++ 17 files changed, 432 insertions(+), 144 deletions(-) create mode 100644 src/assets/icons/github.svg create mode 100644 src/assets/icons/infoDark.svg create mode 100644 src/assets/icons/infoLight.svg create mode 100644 src/components/InfoTag.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index e95bd49..677ced4 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -10,10 +10,12 @@ "chain": "Chain", "chainId": "Chain ID", "nativeToken": "Native token", - "tvl": "TVL - L1", + "tvl": "TVL (L1)", "type": "Type", - "search": "Search", - "notFound": "Chain not found" + "search": "Search (Chain)", + "notFound": "Chain not found", + "noRPC": "No RPC", + "noMetadata": "No Metadata" } }, "CHAIN": { diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 2b7daa8..6537f38 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -10,10 +10,12 @@ "chain": "Cadena", "chainId": "ID de cadena", "nativeToken": "Token nativo", - "tvl": "TVL - L1", + "tvl": "TVL (L1)", "type": "Tipo", - "search": "Buscar", - "notFound": "Cadena no encontrada" + "search": "Buscar (Cadena)", + "notFound": "Cadena no encontrada", + "noRPC": "Sin RPC", + "noMetadata": "Sin Metadata" } }, "CHAIN": { diff --git a/src/assets/icons/github.svg b/src/assets/icons/github.svg new file mode 100644 index 0000000..2bccb51 --- /dev/null +++ b/src/assets/icons/github.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/infoDark.svg b/src/assets/icons/infoDark.svg new file mode 100644 index 0000000..93d0755 --- /dev/null +++ b/src/assets/icons/infoDark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/infoLight.svg b/src/assets/icons/infoLight.svg new file mode 100644 index 0000000..aa0e9fe --- /dev/null +++ b/src/assets/icons/infoLight.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/components/InfoTag.tsx b/src/components/InfoTag.tsx new file mode 100644 index 0000000..1d81fd3 --- /dev/null +++ b/src/components/InfoTag.tsx @@ -0,0 +1,44 @@ +import { styled, Box, Typography } from '@mui/material'; +import Image from 'next/image'; + +import { useCustomTheme } from '~/hooks'; +import informationIconDark from '~/assets/icons/infoDark.svg'; +import informationIconLight from '~/assets/icons/infoLight.svg'; + +interface InfoTagProps { + information: string; +} + +export const InfoTag = ({ information }: InfoTagProps) => { + const { theme } = useCustomTheme(); + return ( + + + {information} + + ); +}; + +const InfoTagContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + + return { + display: 'flex', + alignItems: 'center', + fontSize: '0.7rem', + gap: currentTheme.gap, + backgroundColor: currentTheme.warningBackground, + borderRadius: currentTheme.borderRadius, + padding: '0.1rem 0.5rem 0.1rem 0.1rem', + border: currentTheme.warningBorder, + }; +}); + +const InfoText = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + + return { + fontSize: '0.7rem', + color: currentTheme.warningText, + }; +}); diff --git a/src/components/Table.tsx b/src/components/Table.tsx index 11560e4..9eb7371 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,14 +1,27 @@ import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; +import { + styled, + TableContainer, + Table, + TableHead, + TableRow, + TableCell, + TableBody, + Typography, + Avatar, +} from '@mui/material'; import { EcosystemChainData } from '~/types'; import { formatDataNumber } from '~/utils'; +import { useCustomTheme } from '~/hooks'; +import { InfoTag } from './InfoTag'; interface TableProps { chains: EcosystemChainData[]; } -export const Table = ({ chains }: TableProps) => { +export const DataTable = ({ chains }: TableProps) => { const { t } = useTranslation(); const router = useRouter(); @@ -17,26 +30,131 @@ export const Table = ({ chains }: TableProps) => { }; return ( -
- - - - - - - - - {chains?.map((data, index) => { - return ( - handleChainNavigation(data.id)}> - - - - - - - ); - })} -
{t('HOME.DASHBOARD.chain')}{t('HOME.DASHBOARD.chainId')}{t('HOME.DASHBOARD.nativeToken')}{t('HOME.DASHBOARD.tvl')}{t('HOME.DASHBOARD.type')}
{data.name}{data.id}{data.nativeToken}{formatDataNumber(data.tvl, 0, true)}{data.type}
+ + + {/* Table titles */} + + + {t('HOME.DASHBOARD.chain')} + {t('HOME.DASHBOARD.chainId')} + {t('HOME.DASHBOARD.nativeToken')} + {t('HOME.DASHBOARD.tvl')} + {t('HOME.DASHBOARD.type')} + + + + {/* Table data */} + + {chains?.map((data, index) => { + return ( + handleChainNavigation(data.chainId)}> + {/* Chain Name with Logo and Tags */} + + + {data.chainName} + {!data.rpc && } + {!data.metadata && } + + + {data.chainId} + + + + {data.nativeToken} + + + {formatDataNumber(data.tvl, 0, true)} + + {data.chainType} + + ); + })} + +
+
); }; + +const STableContainer = styled(TableContainer)(() => { + const { currentTheme } = useCustomTheme(); + return { + width: '75rem', + borderRadius: currentTheme.borderRadius, + border: currentTheme.border, + overflow: 'hidden', + }; +}); + +const STableHead = styled(TableHead)(() => { + const { currentTheme } = useCustomTheme(); + return { + backgroundColor: currentTheme.backgroundTertiary, + color: currentTheme.textSecondary, + '&:not(:last-child)': { + borderBottom: currentTheme.border, + }, + }; +}); + +const STableBody = styled(TableBody)(() => { + const { currentTheme } = useCustomTheme(); + return { + backgroundColor: currentTheme.backgroundSecondary, + border: currentTheme.border, + }; +}); + +const STableRow = styled(TableRow)(() => { + const { currentTheme } = useCustomTheme(); + return { + '&:not(:last-child)': { + border: currentTheme.border, + }, + cursor: 'pointer', + transition: currentTheme.transition, + }; +}); + +const STableCellHead = styled(TableCell)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textSecondary, + textAlign: 'left', + }; +}); + +const STableCell = styled(TableCell)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + textAlign: 'left', + }; +}); + +const LogoCell = styled(TableCell)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + display: 'flex', + alignItems: 'center', + gap: currentTheme.gap, + border: 'none', + textAlign: 'left', + }; +}); + +const ChainAvatar = styled(Avatar)(() => { + return { + width: '2rem', + height: '2rem', + }; +}); + +const TokenAvatar = styled(Avatar)(() => { + const { currentTheme } = useCustomTheme(); + return { + width: '1.5rem', + height: '1.5rem', + backgroundColor: currentTheme.emptyBackground, + }; +}); diff --git a/src/components/Theme/theme.ts b/src/components/Theme/theme.ts index adbf0c1..793565b 100644 --- a/src/components/Theme/theme.ts +++ b/src/components/Theme/theme.ts @@ -1,10 +1,80 @@ import { Theme } from '~/types'; +const neutral: { [key: number]: string } = { + 50: '#F7F9FC', + 100: '#E8ECF2', + 200: '#DADDE5', + 300: '#BEC2CC', + 400: '#A1A7B3', + 500: '#858C99', + 600: '#6C7380', + 700: '#555A66', + 800: '#3D424D', + 900: '#262B33', + 950: '#11141A', +}; + +const primary: { [key: number]: string } = { + 50: '#D9E3FF', + 100: '#A6BFFF', + 200: '#739AFF', + 300: '#4075FF', + 400: '#1755F4', + 500: '#1650E5', + 600: '#2663FF', + 700: '#1347CC', + 800: '#113EB2', + 900: '#0C2C80', + 950: '#071B4D', +}; + +const warning: { [key: number]: string } = { + 50: '#FFF9E5', + 100: '#FFECB2', + 200: '#FFE080', + 300: '#FFD44D', + 400: '#FFC81A', + 500: '#FFC200', + 600: '#E5AF00', + 700: '#CC9B00', + 800: '#997500', + 900: '#664E00', + 950: '#4D3A00', +}; + +const error: { [key: number]: string } = { + 50: '#FFCCCC', + 100: '#FFB2B2', + 200: '#FF8C8C', + 300: '#FF6666', + 400: '#FF6666', + 500: '#FF0000', + 600: '#CC0000', + 700: '#A60000', + 800: '#800000', + 900: '#590000', + 950: '#330000', +}; + +const success: { [key: number]: string } = { + 50: '#CCFFE5', + 100: '#B2FFD9', + 200: '#8CFFC6', + 300: '#66FFB2', + 400: '#33FF99', + 500: '#00FF80', + 600: '#00CC66', + 700: '#00A653', + 800: '#008040', + 900: '#00592D', + 950: '#00331A', +}; + export const darkTheme: Theme = { type: 'dark', titleColor: '#000000', textPrimary: '#ffffff', - textSecondary: '#99A4B8', + textSecondary: '#A1A7B3', backgroundPrimary: '#000000', backgroundSecondary: '#262B33', backgroundTertiary: '#11141A', @@ -12,9 +82,19 @@ export const darkTheme: Theme = { textFontFamily: 'Inter-Variable', borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', - border: '0.1rem solid rgba(153, 164, 184, 0.1)', + transition: 'all 180ms ease-in-out', + border: '0.1rem solid rgba(255, 255, 255, 0.05)', gap: '0.25rem', padding: '1rem', + warningText: warning[400], + warningBackground: 'rgba(255, 200, 26, 0.1)', + warningBorder: '1px solid rgba(255, 200, 26, 0.051)', + emptyBackground: 'rgba(133, 140, 153, 0.3)', + neutral, + primary, + warning, + error, + success, }; export const lightTheme: Theme = { @@ -24,13 +104,23 @@ export const lightTheme: Theme = { textPrimary: '#000000', textSecondary: '#717171', backgroundPrimary: '#ffffff', - backgroundSecondary: '#E8ECF2', - backgroundTertiary: '#f8f8f8', + backgroundSecondary: 'rgba(232, 236, 242, 1)', + backgroundTertiary: ' rgba(218, 221, 229, 1)', titleFontFamily: 'Inter-Variable', textFontFamily: 'Inter-Variable', borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', - border: '0.1rem solid rgba(183, 183, 183, 0.3)', + transition: 'all 180ms ease-in-out', + border: '0.1rem solid rgba(0, 0, 0, 0.05)', gap: '0.25rem', + warningText: warning[800], padding: '1rem', + warningBackground: 'rgba(153, 117, 0, 0.051)', + warningBorder: '1px solid rgba(153, 117, 0, 0.01)', + emptyBackground: 'rgba(61, 66, 77, 1)', + neutral, + primary, + warning, + error, + success, }; diff --git a/src/components/TotalValueLocked.tsx b/src/components/TotalValueLocked.tsx index bc502c9..36c21a7 100644 --- a/src/components/TotalValueLocked.tsx +++ b/src/components/TotalValueLocked.tsx @@ -1,23 +1,10 @@ -import { formatDataNumber } from '~/utils'; - -export interface TokenValueLocked { - token: string; - value: number; -} - +import { TvlData } from '~/types'; +import { Box } from '@mui/material'; interface TotalValueLockedProps { - tvl: { [token: string]: number }[]; + tvl: TvlData[]; } export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { - return ( -
- {tvl.map((data, index) => ( -
- {data.token} - {formatDataNumber(data.value, 0, true)} -
- ))} -
- ); + console.log(tvl); + return {/* Token graph tvl */}; }; diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index 35f1f91..b90cdbe 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -25,9 +25,9 @@ export const ChainMetadata = () => {
{/* */} diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index fb425bc..a84cddb 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,6 +1,6 @@ import { useTranslation } from 'next-i18next'; -import { NotFound, Table, Title } from '~/components'; +import { NotFound, DataTable, Title } from '~/components'; import { useData, useStateContext } from '~/hooks'; export const Dashboard = () => { @@ -8,12 +8,12 @@ export const Dashboard = () => { const { ecosystemData } = useData(); const { searchTerm } = useStateContext(); - const filteredChains = ecosystemData?.chains.filter((chain) => { - const chainIdStr = String(chain.id); + const filteredChains = ecosystemData?.zkChains.filter((chain) => { + const chainIdStr = String(chain.chainId); const formattedSearchTerm = String(searchTerm).toLowerCase(); // Check if either chain name or chain ID matches the search term - const matchesName = chain.name.toLowerCase().includes(formattedSearchTerm); + const matchesName = chain.chainName.toLowerCase().includes(formattedSearchTerm); const matchesId = chainIdStr.includes(formattedSearchTerm); return matchesName || matchesId; @@ -27,7 +27,7 @@ export const Dashboard = () => { </header> - {availableChains && <Table chains={filteredChains} />} + {availableChains && <DataTable chains={filteredChains} />} {!availableChains && <NotFound text={t('HOME.DASHBOARD.notFound')} />} </section> ); diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 3d0212d..f86c22d 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -6,14 +6,14 @@ import { formatDataNumber } from '~/utils'; export const LockedAssets = () => { const { t } = useTranslation(); - const { ecosystemData } = useData(); + const { ecosystemData, totalL1TVL } = useData(); return ( <section> {ecosystemData && ( <> - <Title title={`${t('HOME.lockedAssets')}: ${formatDataNumber(ecosystemData.total, 0, true, true)}`} /> - <TotalValueLocked tvl={ecosystemData.tvl} /> + <Title title={`${t('HOME.lockedAssets')}: ${formatDataNumber(totalL1TVL, 0, true, true)}`} /> + <TotalValueLocked tvl={ecosystemData.l1Tvl} /> </> )} </section> diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index acb7d40..fe39716 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -1,92 +1,95 @@ { - "chains": [ + "l1Tvl": [ { - "name": "zkSync Era", - "id": 324, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "ZKRollup" - }, - { - "name": "Teva Chain", - "id": 100, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "ZKRollup" - }, - { - "name": "Cronos zkEVM", - "id": 101, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - }, - { - "name": "GRVT", - "id": 102, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - }, - { - "name": "Lens", - "id": 103, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - }, - { - "name": "ZKChain 104", - "id": 104, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "ZKRollup" + "token": "ETH", + "total": 557596566000, + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628" }, { - "name": "ZKChain 105", - "id": 105, - "nativeToken": "ETH", - "tvl": 1000000, - "type": "Validium" - } - ], - "total": 700000000, - "tvl": [ - { - "token": "ETH", - "value": 557596566 + "token": "USDT", + "total": 114493849618, + "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/tether.png" }, { "token": "USDC", - "value": 90091851 + "total": 34115209093, + "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usd-coin.png" }, { "token": "KOI", - "value": 32757850 + "total": 24115209093, + "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" }, { - "token": "USDT", - "value": 18021853 + "token": "WBTC", + "total": 12620248, + "imageUrl": "https://coin-images.coingecko.com/coins/images/5757/large/wrapped-bitcoin.png" }, { - "token": "WBTC", - "value": 12620248 + "token": "wsETH", + "total": 3552439, + "imageUrl": "https://coin-images.coingecko.com/coins/images/11320/large/staked-ether.png" + }, + { + "token": "cbETH", + "total": 2552439, + "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" }, { - "token": "wstETH", - "value": 3552439 + "token": "BAL", + "total": 1552439, + "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" + } + ], + "ethGasInfo": { + "gasPrice": 50, + "ethTransfer": 21000, + "erc20Transfer": 65000 + }, + "zkChains": [ + { + "chainId": 0, + "chainName": "ZKsyncERA", + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "chainType": "Rollup", + "nativeToken": "ETH", + "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "tvl": 1000000, + "metadata": true, + "rpc": true }, { - "token": "MUTE", - "value": 2071481 + "chainId": 1, + "chainName": "ZKsyncERA", + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "chainType": "Validium", + "nativeToken": "ETH", + "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "tvl": 500000, + "metadata": true, + "rpc": false }, { - "token": "rETH", - "value": 1404096 + "chainId": 2, + "chainName": "ZKsyncERA", + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "chainType": "Rollup", + "nativeToken": "ETH", + "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "tvl": 300000, + "metadata": false, + "rpc": true }, { - "token": "DAI", - "value": 1080375 + "chainId": 3, + "chainName": "ZKsyncERA", + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "chainType": "Rollup", + "nativeToken": "ETH", + "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "tvl": 10000, + "metadata": false, + "rpc": false } ] } diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index c5b142c..1dcbc6e 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -19,13 +19,13 @@ const Chain = ({ chain }: InferGetStaticPropsType<typeof getStaticProps>) => { const { setSelectedChainId, refetchChainData } = useData(); useEffect(() => { - setSelectedChainId(chain?.id); + setSelectedChainId(chain?.chainId); refetchChainData({ throwOnError: true, cancelRefetch: false }); - }, [chain?.id, setSelectedChainId, refetchChainData]); + }, [chain?.chainId, setSelectedChainId, refetchChainData]); return ( <> - <CustomHead title={chain?.name} /> + <CustomHead title={chain?.chainName} /> <ChainDetail /> </> ); @@ -33,11 +33,11 @@ const Chain = ({ chain }: InferGetStaticPropsType<typeof getStaticProps>) => { export const getStaticPaths: GetStaticPaths = async () => { const ecosystemData = await fetchEcosystemData(); - const chains = ecosystemData.chains; + const chains = ecosystemData.zkChains; const paths = SUPPORTED_LANGUAGES.flatMap((locale) => chains.map((chain: EcosystemChainData) => ({ - params: { chain: chain.id.toString() }, + params: { chain: chain.chainId.toString() }, locale, })), ); @@ -47,9 +47,9 @@ export const getStaticPaths: GetStaticPaths = async () => { export const getStaticProps: GetStaticProps<ChainProps> = async ({ params, locale }: GetStaticPropsContext) => { const ecosystemData = await fetchEcosystemData(); - const chains = ecosystemData.chains; + const chains = ecosystemData.zkChains; const chainId = parseInt(params?.chain as string); - const chain = chains.find((chain: EcosystemChainData) => chain.id === chainId); + const chain = chains.find((chain: EcosystemChainData) => chain.chainId === chainId); if (!chain) { return { notFound: true }; diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index 5dc964e..6fd831e 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -2,7 +2,7 @@ import { createContext, useState, useEffect, ReactNode } from 'react'; import { useQuery, UseQueryResult } from '@tanstack/react-query'; import { useRouter } from 'next/router'; -import { ChainData, EcosystemData } from '~/types'; +import { ChainData, EcosystemData, TvlData } from '~/types'; import { fetchEcosystemData, fetchChainData } from '~/utils'; type ContextType = { @@ -15,6 +15,8 @@ type ContextType = { ecosystemData: EcosystemData; chainData: ChainData; + + totalL1TVL: number; }; interface DataProps { @@ -53,6 +55,10 @@ export const DataProvider = ({ children }: DataProps) => { } }, [isEcosystemError, isChainError, router]); + const totalL1TVL = (ecosystemData?.l1Tvl || []).reduce((accumulator: number, token: TvlData) => { + return accumulator + (token.total || 0); + }, 0); + return ( <DataContext.Provider value={{ @@ -63,6 +69,7 @@ export const DataProvider = ({ children }: DataProps) => { ecosystemData, chainData, refetchChainData, + totalL1TVL, }} > {children} diff --git a/src/types/Data.ts b/src/types/Data.ts index 21121c0..30bb671 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -38,17 +38,29 @@ export interface ChainData { } export interface EcosystemChainData { - name: string; - id: number; + chainName: string; + chainId: number; + iconUrl: string; nativeToken: string; + tokenImgUrl: string; tvl: number; - type: string; + chainType: string; + metadata: boolean; + rpc: boolean; } export interface EcosystemData { - chains: EcosystemChainData[]; + l1Tvl: TvlData[]; + ethGasInfo: { + gasPrice: number; + ethTransfer: number; + erc20Transfer: number; + }; + zkChains: EcosystemChainData[]; +} + +export interface TvlData { + token: string; total: number; - tvl: { - [token: string]: number; - }[]; + imageUrl: string; } diff --git a/src/types/Theme.ts b/src/types/Theme.ts index 050dee9..dcc5dbe 100644 --- a/src/types/Theme.ts +++ b/src/types/Theme.ts @@ -12,9 +12,19 @@ export interface Theme { textFontFamily: string; borderRadius: string; secondaryBorderRadius: string; + transition: string; border: string; gap: string; + warningText: string; + warningBackground: string; + warningBorder: string; + emptyBackground: string; padding: string; + neutral: { [key: number]: string }; + primary: { [key: number]: string }; + warning: { [key: number]: string }; + error: { [key: number]: string }; + success: { [key: number]: string }; } export interface PropTheme { From 5b3343df76354fdb0811c44d3589b9f50477fc21 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 5 Aug 2024 18:53:47 -0300 Subject: [PATCH 37/82] feat: token graph design (#13) --- public/fav.svg | 21 +++++ public/favicon.ico | Bin 15406 -> 0 bytes public/locales/en/common.json | 7 +- public/locales/es/common.json | 7 +- src/components/Gas.tsx | 21 +++-- src/components/TitleBanner.tsx | 2 +- src/components/TotalValueLocked.tsx | 128 +++++++++++++++++++++++++- src/components/TvlContentBox.tsx | 85 +++++++++++++++++ src/components/index.ts | 1 + src/containers/Header/index.tsx | 1 - src/containers/Landing/index.tsx | 3 + src/containers/LockedAssets/index.tsx | 41 ++++++++- src/data/ecosystemMockData.json | 20 ++-- src/pages/_document.tsx | 2 +- src/types/Data.ts | 1 + 15 files changed, 316 insertions(+), 24 deletions(-) create mode 100644 public/fav.svg delete mode 100644 public/favicon.ico create mode 100644 src/components/TvlContentBox.tsx diff --git a/public/fav.svg b/public/fav.svg new file mode 100644 index 0000000..014481e --- /dev/null +++ b/public/fav.svg @@ -0,0 +1,21 @@ +<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_111_20860)"> +<rect width="256" height="256" rx="64" fill="#11141A"/> +<g filter="url(#filter0_f_111_20860)"> +<path fill-rule="evenodd" clip-rule="evenodd" d="M-228 -44C-228 -150.044 -142.044 -236 -36 -236C70.044 -236 156 -150.044 156 -44C156 62.044 70.044 148 -36 148C-142.044 148 -228 62.044 -228 -44Z" fill="#627EEA"/> +<path d="M-41.3545 19.6583V83.9464L38.6668 -26.763L-41.3545 19.6583Z" fill="white" fill-opacity="0.602"/> +<path d="M-41.3545 4.77812L38.6135 -41.6539L-41.3545 -77.3659V4.77812Z" fill="white" fill-opacity="0.2"/> +</g> +<path d="M45.0712 116V110.247L80.3553 57.5767H44.6877V50.5455H89.8155V56.2983L54.5314 108.969H90.199V116H45.0712ZM103.494 116V50.5455H111.421V83.017H112.188L141.591 50.5455H151.946L124.46 80.0767L151.946 116H142.358L119.602 85.5739L111.421 94.7784V116H103.494ZM211.8 71H203.874C203.405 68.7202 202.585 66.7173 201.413 64.9915C200.262 63.2656 198.856 61.8168 197.194 60.6449C195.553 59.4517 193.732 58.5568 191.729 57.9602C189.726 57.3636 187.638 57.0653 185.464 57.0653C181.501 57.0653 177.911 58.0668 174.694 60.0696C171.498 62.0724 168.952 65.0234 167.055 68.9226C165.18 72.8217 164.243 77.6051 164.243 83.2727C164.243 88.9403 165.18 93.7237 167.055 97.6229C168.952 101.522 171.498 104.473 174.694 106.476C177.911 108.479 181.501 109.48 185.464 109.48C187.638 109.48 189.726 109.182 191.729 108.585C193.732 107.989 195.553 107.104 197.194 105.933C198.856 104.739 200.262 103.28 201.413 101.554C202.585 99.8068 203.405 97.804 203.874 95.5455H211.8C211.203 98.8906 210.116 101.884 208.54 104.526C206.963 107.168 205.003 109.416 202.659 111.27C200.315 113.102 197.684 114.498 194.765 115.457C191.867 116.415 188.767 116.895 185.464 116.895C179.882 116.895 174.918 115.531 170.571 112.804C166.224 110.077 162.805 106.199 160.312 101.17C157.819 96.142 156.572 90.1761 156.572 83.2727C156.572 76.3693 157.819 70.4034 160.312 65.375C162.805 60.3466 166.224 56.4688 170.571 53.7415C174.918 51.0142 179.882 49.6506 185.464 49.6506C188.767 49.6506 191.867 50.13 194.765 51.0888C197.684 52.0476 200.315 53.4538 202.659 55.3075C205.003 57.1399 206.963 59.3771 208.54 62.0192C210.116 64.6399 211.203 67.6335 211.8 71ZM48.5189 206V140.545H56.445V169.693H91.3456V140.545H99.2718V206H91.3456V176.724H56.445V206H48.5189ZM145.055 185.929V156.909H152.597V206H145.055V197.69H144.543C143.393 200.183 141.603 202.303 139.174 204.05C136.745 205.776 133.677 206.639 129.97 206.639C126.901 206.639 124.174 205.968 121.788 204.626C119.401 203.262 117.526 201.217 116.163 198.489C114.799 195.741 114.117 192.278 114.117 188.102V156.909H121.66V187.591C121.66 191.17 122.661 194.026 124.664 196.156C126.688 198.287 129.266 199.352 132.399 199.352C134.274 199.352 136.18 198.873 138.119 197.914C140.08 196.955 141.72 195.485 143.041 193.504C144.384 191.522 145.055 188.997 145.055 185.929ZM167.435 206V140.545H174.978V164.707H175.617C176.171 163.855 176.938 162.768 177.918 161.447C178.919 160.105 180.347 158.912 182.201 157.868C184.076 156.803 186.611 156.27 189.807 156.27C193.941 156.27 197.584 157.303 200.737 159.37C203.891 161.437 206.352 164.366 208.12 168.159C209.889 171.952 210.773 176.426 210.773 181.582C210.773 186.781 209.889 191.288 208.12 195.102C206.352 198.894 203.902 201.835 200.769 203.923C197.637 205.989 194.026 207.023 189.935 207.023C186.782 207.023 184.257 206.501 182.36 205.457C180.464 204.391 179.005 203.187 177.982 201.845C176.959 200.482 176.171 199.352 175.617 198.457H174.722V206H167.435ZM174.85 181.455C174.85 185.162 175.393 188.433 176.48 191.266C177.566 194.079 179.154 196.284 181.242 197.882C183.33 199.459 185.887 200.247 188.912 200.247C192.066 200.247 194.697 199.416 196.806 197.754C198.937 196.071 200.535 193.812 201.6 190.979C202.687 188.124 203.23 184.949 203.23 181.455C203.23 178.003 202.698 174.892 201.632 172.122C200.588 169.331 199.001 167.126 196.87 165.506C194.761 163.866 192.108 163.045 188.912 163.045C185.844 163.045 183.266 163.823 181.178 165.379C179.09 166.913 177.513 169.065 176.448 171.835C175.382 174.583 174.85 177.79 174.85 181.455Z" fill="white"/> +</g> +<defs> +<filter id="filter0_f_111_20860" x="-628" y="-636" width="1184" height="1184" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"> +<feFlood flood-opacity="0" result="BackgroundImageFix"/> +<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/> +<feGaussianBlur stdDeviation="200" result="effect1_foregroundBlur_111_20860"/> +</filter> +<clipPath id="clip0_111_20860"> +<rect width="256" height="256" rx="64" fill="white"/> +</clipPath> +</defs> +</svg> diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index 207aaab6f1421a8b7a1cc14db123b87c37879391..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15406 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 Gf&T$XyL^@a diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 677ced4..808dfba 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -4,7 +4,12 @@ "subtitle": "Ecosystem", "gasPrice": "L1 Gas Price", "transfer": "ERC-20 Transfer", - "lockedAssets": "Locked assets in shared bridge", + "LOCKEDASSETS": { + "lockedAssets": "Locked assets", + "lockedAssetsDescription": "Locked assets in Elastic Chain Ecosystem", + "others": "Others", + "allTokens": "All tokens" + }, "DASHBOARD": { "title": "Chain list", "chain": "Chain", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 6537f38..e1954be 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -4,7 +4,12 @@ "subtitle": "Ecosistema", "gasPrice": "Precio del gas L1", "transfer": "Transferencia ERC-20", - "lockedAssets": "Activos bloqueados en puente compartido", + "LOCKEDASSETS": { + "lockedAssets": "Activos bloqueados", + "lockedAssetsDescription": "Activos bloqueados en el ecosistema de Elastic Chain", + "others": "Otros", + "allTokens": "Todos los tokens" + }, "DASHBOARD": { "title": "Lista de cadenas", "chain": "Cadena", diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index 7b587a1..66824d0 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -16,11 +16,11 @@ export const Gas = () => { <Image src={theme === 'dark' ? GasDark : GasLight} alt='gas' /> <Box> <SBox> - <Typography>{t('HOME.gasPrice')}:</Typography> + <GasLabel>{t('HOME.gasPrice')}:</GasLabel> <GasValueText>10 wei</GasValueText> </SBox> <SBox> - <Typography>{t('HOME.transfer')}:</Typography> + <GasLabel>{t('HOME.transfer')}:</GasLabel> <GasValueText>$10</GasValueText> </SBox> </Box> @@ -34,11 +34,7 @@ const GasContainer = styled(Box)(() => { return { display: 'flex', alignItems: 'center', - color: currentTheme.textSecondary, gap: currentTheme.gap, - fontWeight: 400, - fontSize: '0.7rem', - lineHeight: '1.25rem', padding: '0.5rem 1rem', }; }); @@ -49,6 +45,17 @@ const GasValueText = styled(Typography)(() => { return { color: currentTheme.textPrimary, fontWeight: 500, - letterSpacing: '-0.03em', + fontSize: '0.9rem', + }; +}); + +const GasLabel = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + + return { + color: currentTheme.textSecondary, + fontSize: '0.9rem', + fontWeight: 400, + lineHeight: '1rem', }; }); diff --git a/src/components/TitleBanner.tsx b/src/components/TitleBanner.tsx index c6c7aca..1e4085c 100644 --- a/src/components/TitleBanner.tsx +++ b/src/components/TitleBanner.tsx @@ -28,6 +28,7 @@ const TitleBox = styled(Box)(() => { return { display: 'flex', alignItems: 'center', + alignSelf: 'flex-start', gap: currentTheme.gap, }; }); @@ -48,5 +49,4 @@ const Subtitle = styled(Typography)(() => ({ fontWeight: 700, lineHeight: '4rem', letterSpacing: '-0.03em', - textAlign: 'left', })); diff --git a/src/components/TotalValueLocked.tsx b/src/components/TotalValueLocked.tsx index 36c21a7..c8496fb 100644 --- a/src/components/TotalValueLocked.tsx +++ b/src/components/TotalValueLocked.tsx @@ -1,10 +1,132 @@ +import { Box, Typography, Grid, styled } from '@mui/material'; +import { useTranslation } from 'next-i18next'; import { TvlData } from '~/types'; -import { Box } from '@mui/material'; +import { TvlContentBox } from '~/components'; +import { useCustomTheme } from '~/hooks'; + interface TotalValueLockedProps { tvl: TvlData[]; } export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { - console.log(tvl); - return <Box>{/* Token graph tvl */}</Box>; + const { t } = useTranslation(); + + /** + * Renders the TVL content within a grid container. + * @param data - The TVL data. + * @param index - The index of the item in the array. + * @param height - The height of the container. + * @param xs - The grid size for the container. + * @param smallCard - Whether the card is small or not. + * @param isLast - Whether the card is the last one or not. + */ + const renderTvlContent = ( + data: TvlData, + index: number, + height: string, + xs: number, + smallCard?: boolean, + isLast?: boolean, + ) => ( + <Grid item xs={xs} key={index}> + <GridContainer imageUrl={data.imageUrl} height={height} smallCard={smallCard}> + <TvlContentBox + avatar={data.imageUrl} + token={data.token} + total={data.total} + tokenName={data.tokenName} + isLast={isLast} + /> + </GridContainer> + </Grid> + ); + + return ( + <TvlContainer container spacing={0.5}> + {renderTvlContent(tvl[0], 0, '12rem', 12)} + + <Grid item container xs={12} spacing={0.5}> + {renderTvlContent(tvl[1], 1, '12rem', 6)} + + <Grid item container xs={6} spacing={0.5}> + {tvl.slice(2, 4).map((data, index) => renderTvlContent(data, index + 2, '12rem', 4, true))} + + <Grid item container xs={4} direction='column'> + {renderTvlContent(tvl[4], 4, '5.85rem', 6, true)} + + <Grid item container xs={6} spacing={0.5}> + {renderTvlContent(tvl[5], 5, '5.85rem', 9, true, true)} + <Grid item xs={3}> + <GridContainer height='5.85rem'> + <OthersBox> + <OthersText>{t('HOME.LOCKEDASSETS.others')}</OthersText> + </OthersBox> + </GridContainer> + </Grid> + </Grid> + </Grid> + </Grid> + </Grid> + </TvlContainer> + ); }; + +const TvlContainer = styled(Grid)({ + display: 'flex', + flexWrap: 'wrap', + width: '75rem', +}); + +interface GridContainerProps { + imageUrl?: string; + height?: string; + smallCard?: boolean; +} + +const GridContainer = styled(Grid)(({ imageUrl, height, smallCard }: GridContainerProps) => { + const { currentTheme } = useCustomTheme(); + return { + position: 'relative', + height: height || 'fit-content', + display: 'flex', + color: currentTheme.textPrimary, + overflow: 'hidden', + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: '1rem', + padding: currentTheme.padding, + border: currentTheme.border, + '&::before': { + content: '""', + position: 'absolute', + top: smallCard ? -20 : -25, + left: smallCard ? -50 : -95, + width: '100%', + height: '100%', + backgroundImage: `url(${imageUrl})`, + backgroundRepeat: 'no-repeat', + backgroundSize: smallCard ? '200px' : '400px', + backgroundPosition: smallCard && 'center', + filter: smallCard ? 'blur(85px)' : 'blur(120px)', + }, + }; +}); + +const OthersBox = styled(Box)({ + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', +}); + +const OthersText = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textSecondary, + writingMode: 'vertical-rl', + transform: 'rotate(180deg)', + }; +}); diff --git a/src/components/TvlContentBox.tsx b/src/components/TvlContentBox.tsx new file mode 100644 index 0000000..0350fc6 --- /dev/null +++ b/src/components/TvlContentBox.tsx @@ -0,0 +1,85 @@ +import { Box, Avatar, Typography, styled } from '@mui/material'; +import { useCustomTheme } from '~/hooks'; +import { formatDataNumber } from '~/utils'; + +interface TvlContentBoxProps { + avatar: string; + token: string; + total: number; + tokenName: string; + isLast?: boolean; +} + +export const TvlContentBox = ({ avatar, token, total, tokenName, isLast }: TvlContentBoxProps) => { + return ( + <ContentBox> + <TopBox> + <TokenLogo src={avatar} alt={token} isLast={isLast || false} /> + <TextBox> + <TokenName>{tokenName}</TokenName> + <TokenTicker>{token}</TokenTicker> + </TextBox> + </TopBox> + + <TvlAmount isLast={isLast || false}>{formatDataNumber(total, 0, true)}</TvlAmount> + </ContentBox> + ); +}; + +const ContentBox = styled(Box)({ + display: 'flex', + flexDirection: 'column', + justifyContent: 'space-between', + alignItems: 'flex-start', + zIndex: 1, + width: '100%', +}); + +const TopBox = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + gap: currentTheme.gap, + width: '100%', + }; +}); + +interface TvlProps { + isLast: boolean; +} + +const TokenLogo = styled(Avatar)<TvlProps>(({ isLast }) => ({ + width: `${isLast ? '1.25rem' : '2.5rem'}`, + height: `${isLast ? '1.25rem' : '2.5rem'}`, +})); + +const TvlAmount = styled(Typography)<TvlProps>(({ isLast }) => ({ + fontSize: `${isLast ? '0.85rem' : '1rem'}`, + fontWeight: 400, +})); + +const TextBox = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + alignItems: 'center', + flexWrap: 'wrap', + gap: currentTheme.gap, + }; +}); + +const TokenName = styled(Typography)({ + fontSize: '0.85rem', + fontWeight: 400, + whiteSpace: 'nowrap', +}); + +const TokenTicker = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '0.85rem', + fontWeight: 400, + color: currentTheme.textSecondary, + whiteSpace: 'nowrap', + }; +}); diff --git a/src/components/index.ts b/src/components/index.ts index 619f451..3e4a494 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -13,3 +13,4 @@ export * from './ChainInformation'; export * from './BasicSelect'; export * from './NotFound'; export * from './Gas'; +export * from './TvlContentBox'; diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 2d2a216..03014d4 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -85,7 +85,6 @@ const StyledLink = styled(Link)({ const SIconButton = styled(IconButton)(() => { const { currentTheme } = useCustomTheme(); return { - marginRight: '1rem', color: `${currentTheme.textPrimary}`, backgroundColor: `${currentTheme.backgroundSecondary}`, borderRadius: `${currentTheme.borderRadius}`, diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 391e76a..77b3c3e 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -20,4 +20,7 @@ const LandingContainer = styled('main')({ alignItems: 'center', justifyContent: 'center', width: '100%', + gap: '4rem', + marginTop: '4rem', + marginBottom: '4rem', }); diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index f86c22d..355c303 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -1,7 +1,8 @@ import { useTranslation } from 'next-i18next'; +import { Box, Typography, styled } from '@mui/material'; -import { TotalValueLocked, Title } from '~/components'; -import { useData } from '~/hooks'; +import { TotalValueLocked } from '~/components'; +import { useData, useCustomTheme } from '~/hooks'; import { formatDataNumber } from '~/utils'; export const LockedAssets = () => { @@ -12,10 +13,44 @@ export const LockedAssets = () => { <section> {ecosystemData && ( <> - <Title title={`${t('HOME.lockedAssets')}: ${formatDataNumber(totalL1TVL, 0, true, true)}`} /> + <LockedAssetsContainer> + <Box> + <Title>{t('HOME.lockedAssets')} + {t('HOME.lockedAssetsDescription')} + + {formatDataNumber(totalL1TVL, 0, true, true)} + )} ); }; + +const LockedAssetsContainer = styled(Box)(() => ({ + display: 'flex', + justifyContent: 'space-between', + marginBottom: '1.5rem', +})); + +const Title = styled(Typography)(() => ({ + fontWeight: 700, + fontSize: '1.5rem', + lineHeight: '2rem', +})); + +const Subtitle = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '0.9rem', + fontWeight: 400, + lineHeight: '1.25rem', + color: currentTheme.textSecondary, + }; +}); + +const TitleAmount = styled(Typography)(() => ({ + fontSize: '2.25rem', + fontWeight: 700, + lineHeight: '2.5rem', +})); diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index fe39716..db23a4c 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -2,41 +2,49 @@ "l1Tvl": [ { "token": "ETH", + "tokenName": "Ethereum", "total": 557596566000, - "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628" + "imageUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png" }, { "token": "USDT", + "tokenName": "Tether USD", "total": 114493849618, - "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/tether.png" + "imageUrl": "https://www.cryptomkt.com/static/landing/img/crypto-pages/trending/usdt.svg" }, { "token": "USDC", + "tokenName": "Bridged USD", "total": 34115209093, - "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usd-coin.png" + "imageUrl": "https://assets.coingecko.com/coins/images/6319/standard/usdc.png?1696506694" }, { "token": "KOI", + "tokenName": "Koi Finance", "total": 24115209093, "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" }, { "token": "WBTC", + "tokenName": "Wrapped BTC", "total": 12620248, - "imageUrl": "https://coin-images.coingecko.com/coins/images/5757/large/wrapped-bitcoin.png" + "imageUrl": "https://assets.coingecko.com/coins/images/7598/standard/wrapped_bitcoin_wbtc.png?1696507857" }, { - "token": "wsETH", + "token": "wstETH", + "tokenName": "Lido wstETH", "total": 3552439, - "imageUrl": "https://coin-images.coingecko.com/coins/images/11320/large/staked-ether.png" + "imageUrl": "https://assets.coingecko.com/coins/images/18834/standard/wstETH.png?1696518295" }, { "token": "cbETH", + "tokenName": "Curve cbETH", "total": 2552439, "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" }, { "token": "BAL", + "tokenName": "Balancer", "total": 1552439, "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" } diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx index 6cb77bf..276e234 100644 --- a/src/pages/_document.tsx +++ b/src/pages/_document.tsx @@ -10,7 +10,7 @@ export default function MyDocument(props: DocumentProps & DocumentHeadTagsProps) - + diff --git a/src/types/Data.ts b/src/types/Data.ts index 30bb671..0b6d75f 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -61,6 +61,7 @@ export interface EcosystemData { export interface TvlData { token: string; + tokenName: string; total: number; imageUrl: string; } From 39d1d943b9000fe5a4a6288bf7300cfcdd8b0ed0 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 8 Aug 2024 10:26:22 -0300 Subject: [PATCH 38/82] feat: chain page design (#14) closes ZKS-132 Description: - Chain page *basic* design --- public/fav.svg | 21 -- public/favicon.png | Bin 0 -> 15667 bytes public/locales/en/common.json | 11 +- public/locales/es/common.json | 11 +- src/assets/icons/add.svg | 4 + src/assets/icons/blackBlockLight.svg | 6 + src/assets/icons/blockDark.svg | 6 + src/assets/icons/blockLight.svg | 6 + src/assets/icons/clockDark.svg | 5 + src/assets/icons/clockLight.svg | 5 + src/assets/icons/linkDark.svg | 5 + src/assets/icons/linkLight.svg | 5 + src/assets/icons/settingsDark.svg | 5 + src/assets/icons/settingsLight.svg | 5 + src/assets/icons/webDark.svg | 3 + src/assets/icons/webLight.svg | 3 + src/assets/icons/whiteBlockDark.svg | 6 + src/components/ChainInformation.tsx | 105 ++++++- src/components/FeeParams.tsx | 53 +++- src/components/Icon.tsx | 24 ++ src/components/InfoBox.tsx | 69 ++++- src/components/RPC.tsx | 44 ++- src/components/TVL.tsx | 51 +++- src/components/Table.tsx | 23 +- src/components/Theme/theme.ts | 4 +- src/components/index.ts | 1 + .../ChainDetail/ChainDescription.tsx | 16 +- src/containers/ChainDetail/ChainMetadata.tsx | 275 +++++++++++++++--- src/containers/ChainDetail/InfoCard.tsx | 12 +- src/containers/ChainDetail/index.tsx | 17 +- src/containers/Layout/index.tsx | 11 +- src/containers/LockedAssets/index.tsx | 4 +- src/containers/index.ts | 2 + src/data/chainMockData.json | 63 +++- src/pages/_document.tsx | 2 +- src/types/Data.ts | 13 +- 36 files changed, 758 insertions(+), 138 deletions(-) delete mode 100644 public/fav.svg create mode 100644 public/favicon.png create mode 100644 src/assets/icons/add.svg create mode 100644 src/assets/icons/blackBlockLight.svg create mode 100644 src/assets/icons/blockDark.svg create mode 100644 src/assets/icons/blockLight.svg create mode 100644 src/assets/icons/clockDark.svg create mode 100644 src/assets/icons/clockLight.svg create mode 100644 src/assets/icons/linkDark.svg create mode 100644 src/assets/icons/linkLight.svg create mode 100644 src/assets/icons/settingsDark.svg create mode 100644 src/assets/icons/settingsLight.svg create mode 100644 src/assets/icons/webDark.svg create mode 100644 src/assets/icons/webLight.svg create mode 100644 src/assets/icons/whiteBlockDark.svg create mode 100644 src/components/Icon.tsx diff --git a/public/fav.svg b/public/fav.svg deleted file mode 100644 index 014481e..0000000 --- a/public/fav.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/public/favicon.png b/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..b4a9ec91086535e97d7c4e23cadd11097ba22607 GIT binary patch literal 15667 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 + + + diff --git a/src/assets/icons/blackBlockLight.svg b/src/assets/icons/blackBlockLight.svg new file mode 100644 index 0000000..6f6ce11 --- /dev/null +++ b/src/assets/icons/blackBlockLight.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/blockDark.svg b/src/assets/icons/blockDark.svg new file mode 100644 index 0000000..1c5fb59 --- /dev/null +++ b/src/assets/icons/blockDark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/blockLight.svg b/src/assets/icons/blockLight.svg new file mode 100644 index 0000000..3234ed2 --- /dev/null +++ b/src/assets/icons/blockLight.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/clockDark.svg b/src/assets/icons/clockDark.svg new file mode 100644 index 0000000..e6a43b8 --- /dev/null +++ b/src/assets/icons/clockDark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/clockLight.svg b/src/assets/icons/clockLight.svg new file mode 100644 index 0000000..818145d --- /dev/null +++ b/src/assets/icons/clockLight.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/linkDark.svg b/src/assets/icons/linkDark.svg new file mode 100644 index 0000000..45af777 --- /dev/null +++ b/src/assets/icons/linkDark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/linkLight.svg b/src/assets/icons/linkLight.svg new file mode 100644 index 0000000..706f20c --- /dev/null +++ b/src/assets/icons/linkLight.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/settingsDark.svg b/src/assets/icons/settingsDark.svg new file mode 100644 index 0000000..f1fff6b --- /dev/null +++ b/src/assets/icons/settingsDark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/settingsLight.svg b/src/assets/icons/settingsLight.svg new file mode 100644 index 0000000..96ec7d8 --- /dev/null +++ b/src/assets/icons/settingsLight.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/webDark.svg b/src/assets/icons/webDark.svg new file mode 100644 index 0000000..65a793b --- /dev/null +++ b/src/assets/icons/webDark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/webLight.svg b/src/assets/icons/webLight.svg new file mode 100644 index 0000000..76a3c5e --- /dev/null +++ b/src/assets/icons/webLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/whiteBlockDark.svg b/src/assets/icons/whiteBlockDark.svg new file mode 100644 index 0000000..77be8ff --- /dev/null +++ b/src/assets/icons/whiteBlockDark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index 49bc4d0..14cb799 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -1,6 +1,10 @@ +import { Grid, Typography, styled, Box } from '@mui/material'; import { useTranslation } from 'next-i18next'; -import { InfoBox, Title } from '~/components'; -import { useData } from '~/hooks'; + +import { InfoBox } from '~/components'; +import { useData, useCustomTheme } from '~/hooks'; +import BlockDark from '~/assets/icons/blockDark.svg'; +import BlockLight from '~/assets/icons/blockLight.svg'; export const ChainInformation = () => { const { t } = useTranslation(); @@ -8,29 +12,112 @@ export const ChainInformation = () => { return (
- - <div> - <InfoBox title={t('CHAIN.CHAININFORMATION.chainType')} description={chainData?.chainType} /> - <InfoBox title={t('CHAIN.CHAININFORMATION.lastBlock')} description={chainData?.l2ChainInfo.lastBlock} /> + <STitle variant='h5' gutterBottom> + {t('CHAIN.CHAININFORMATION.title')} + </STitle> + <DataContainer> + <InfoBox + title={t('CHAIN.CHAININFORMATION.chainType')} + description={chainData?.chainType} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' + /> + + <InfoBox + title={t('CHAIN.CHAININFORMATION.lastBlock')} + description={chainData?.l2ChainInfo.lastBlock} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' + /> + <InfoBox title={t('CHAIN.CHAININFORMATION.lastBlockVerified')} description={chainData?.l2ChainInfo.lastBlockVerified} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' /> - <InfoBox title={t('CHAIN.CHAININFORMATION.transactionsPerSecond')} description={chainData?.l2ChainInfo.tps} /> + + <InfoBox + title={t('CHAIN.CHAININFORMATION.transactionsPerSecond')} + description={chainData?.l2ChainInfo.tps} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' + /> + <InfoBox title={t('CHAIN.CHAININFORMATION.totalBatchesCommitted')} description={chainData?.batchesInfo.commited} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' /> - <InfoBox title={t('CHAIN.CHAININFORMATION.totalBatchesExecuted')} description={chainData?.batchesInfo.proved} /> + + <InfoBox + title={t('CHAIN.CHAININFORMATION.totalBatchesExecuted')} + description={chainData?.batchesInfo.proved} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' + /> + <InfoBox title={t('CHAIN.CHAININFORMATION.totalBatchesVerified')} description={chainData?.batchesInfo.verified} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' /> + <InfoBox title={t('CHAIN.CHAININFORMATION.averageBlockTime')} description={chainData?.l2ChainInfo.avgBlockTime} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={22} + alt='block' /> - </div> + </DataContainer> </article> ); }; + +export const DataContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + background: currentTheme.backgroundTertiary, + borderRadius: currentTheme.borderRadius, + border: currentTheme.border, + display: 'grid', + gridTemplateColumns: 'repeat(4, 1fr)', + }; +}); + +export const GridContainer = styled(Grid)(() => { + const { currentTheme } = useCustomTheme(); + return { + width: '100%', + borderRadius: 'inherit', + overflow: 'hidden', + border: currentTheme.border, + }; +}); + +export const STitle = styled(Typography)(() => { + return { + fontSize: '1.5rem', + fontWeight: 700, + lineHeight: '2rem', + marginBottom: '1.5rem', + }; +}); diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index 51f218b..eb953f5 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -1,19 +1,54 @@ import { useTranslation } from 'next-i18next'; -import { InfoBox, Title } from '~/components'; + +import { InfoBox, STitle, DataContainer } from '~/components'; import { useData } from '~/hooks'; +import BlockDark from '~/assets/icons/blockDark.svg'; +import BlockLight from '~/assets/icons/blockLight.svg'; export const FeeParams = () => { const { t } = useTranslation(); const { chainData } = useData(); return ( - <article> - <Title title={t('CHAIN.FEEPARAMS.title')} /> - <div> - <InfoBox title={t('CHAIN.FEEPARAMS.batch')} description={chainData?.feeParams.batchOverheadL1Gas} /> - <InfoBox title={t('CHAIN.FEEPARAMS.compute')} description={chainData?.feeParams.maxPubdataPerBatch} /> - <InfoBox title={t('CHAIN.FEEPARAMS.maxGasBatch')} description={chainData?.feeParams.maxL2GasPerBatch} /> - </div> - </article> + <> + <STitle>{t('CHAIN.FEEPARAMS.title')} </STitle> + <DataContainer> + <InfoBox + title={t('CHAIN.FEEPARAMS.batch')} + description={chainData?.feeParams.batchOverheadL1Gas} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={20} + alt='block' + /> + + <InfoBox + title={t('CHAIN.FEEPARAMS.compute')} + description={chainData?.feeParams.maxPubdataPerBatch} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={20} + alt='block' + /> + + <InfoBox + title={t('CHAIN.FEEPARAMS.maxGasBatch')} + description={chainData?.feeParams.maxL2GasPerBatch} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={20} + alt='block' + /> + + <InfoBox + title={t('CHAIN.FEEPARAMS.maxGasBatch')} + description={chainData?.feeParams.maxL2GasPerBatch} + darkIcon={BlockDark} + lightIcon={BlockLight} + size={20} + alt='block' + /> + </DataContainer> + </> ); }; diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx new file mode 100644 index 0000000..98bfe6c --- /dev/null +++ b/src/components/Icon.tsx @@ -0,0 +1,24 @@ +import Image from 'next/image'; + +import { useCustomTheme } from '~/hooks'; + +interface IconProps { + darkIcon: string; + lightIcon: string; + size: number; + alt: string; +} + +export const Icon = ({ darkIcon, lightIcon, size, alt }: IconProps) => { + const { theme } = useCustomTheme(); + + return ( + <> + {theme === 'dark' ? ( + <Image src={darkIcon} alt={alt} width={size} height={size} /> + ) : ( + <Image src={lightIcon} alt={alt} width={size} height={size} /> + )} + </> + ); +}; diff --git a/src/components/InfoBox.tsx b/src/components/InfoBox.tsx index 8a9ead6..eacea25 100644 --- a/src/components/InfoBox.tsx +++ b/src/components/InfoBox.tsx @@ -1,13 +1,72 @@ +import { Card, CardContent, Typography, styled, Box } from '@mui/material'; + +import { useCustomTheme } from '~/hooks'; +import { Icon } from './Icon'; + interface InfoBoxProps { title: string; description: string | number; + darkIcon: string; + lightIcon: string; + size: number; + alt: string; } -export const InfoBox = ({ title, description }: InfoBoxProps) => { +export const InfoBox = ({ title, description, darkIcon, lightIcon, size, alt }: InfoBoxProps) => { return ( - <div> - <p>{title}</p> - <p>{description}</p> - </div> + <StyledCard> + <CardContent> + <LabelContainer> + <Icon darkIcon={darkIcon} lightIcon={lightIcon} size={size} alt={alt} /> + <Label variant='subtitle1' color='textSecondary' gutterBottom> + {title} + </Label> + </LabelContainer> + + <Description>{description}</Description> + </CardContent> + </StyledCard> ); }; + +const StyledCard = styled(Card)(() => { + const { currentTheme } = useCustomTheme(); + return { + background: currentTheme.backgroundTertiary, + color: currentTheme.textPrimary, + overflow: 'hidden', + boxShadow: 'none', + borderRadius: 'inherit', + }; +}); + +const LabelContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + alignItems: 'center', + gap: currentTheme.gap, + }; +}); + +const Label = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '0.875rem', + lineHeight: '1.25rem', + fontWeight: 400, + margin: 0, + color: currentTheme.textSecondary, + }; +}); + +const Description = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1.5rem', + lineHeight: '2rem', + fontWeight: 400, + color: currentTheme.textPrimary, + marginTop: '0.5rem', + }; +}); diff --git a/src/components/RPC.tsx b/src/components/RPC.tsx index 9a74845..79283f1 100644 --- a/src/components/RPC.tsx +++ b/src/components/RPC.tsx @@ -1,22 +1,46 @@ import { useTranslation } from 'next-i18next'; -import { InfoBox, Title } from '~/components'; -import { useData } from '~/hooks'; +import { Box, Typography, Tooltip, styled } from '@mui/material'; +import { CheckCircle as CheckIcon, Cancel as CancelIcon } from '@mui/icons-material'; -export const TVL = () => { +import { useData, useCustomTheme } from '~/hooks'; +import { DataContainer, STitle } from '~/components'; + +export const RPC = () => { const { t } = useTranslation(); const { chainData } = useData(); - return ( <article> - <Title title={t('CHAIN.RPC.title')} /> - <div> + <STitle>{t('CHAIN.RPC.title')}</STitle> + <DataContainer> {chainData?.metadata?.publicRpcs && chainData.metadata.publicRpcs.map((rpc, index) => ( - <div key={index}> - <InfoBox title={t('CHAIN.RPC.status')} description={rpc.url} /> - </div> + <RPCBox key={index}> + <Tooltip title={rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}> + {rpc.status ? <CheckIcon color='success' /> : <CancelIcon color='error' />} + </Tooltip> + <RPCUrl>{rpc.url}</RPCUrl> + </RPCBox> ))} - </div> + </DataContainer> </article> ); }; + +export const RPCBox = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + gap: currentTheme.gap, + height: '4.5rem', + alignItems: 'center', + padding: currentTheme.padding, + }; +}); + +export const RPCUrl = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + textDecoration: 'underline', + textUnderlineOffset: currentTheme.gap, + }; +}); diff --git a/src/components/TVL.tsx b/src/components/TVL.tsx index c841dcc..d28692b 100644 --- a/src/components/TVL.tsx +++ b/src/components/TVL.tsx @@ -1,20 +1,51 @@ import { useTranslation } from 'next-i18next'; -import { InfoBox, Title } from '~/components'; +import { Table, Typography } from '@mui/material'; + import { useData } from '~/hooks'; +import { + STableContainer, + STableHead, + STableRow, + STableCellHead, + STableCell, + STableBody, + LogoCell, + TokenAvatar, + STitle, +} from '~/components'; -export const RPC = () => { +export const TVL = () => { const { t } = useTranslation(); const { chainData } = useData(); - + const tvl = chainData?.tvl || []; return ( <article> - <Title title={t('CHAIN.TVL.title')} /> - <div> - {chainData?.tvl && - Object.entries(chainData.tvl).map(([token, value]) => ( - <InfoBox key={token} title={token} description={value.toString()} /> - ))} - </div> + <STitle>{t('CHAIN.TVL.title')}</STitle> + <STableContainer> + <Table> + <STableHead> + <STableRow> + <STableCellHead>{t('CHAIN.TVL.chain')}</STableCellHead> + <STableCellHead>{t('CHAIN.TVL.price')}</STableCellHead> + <STableCellHead>{t('CHAIN.TVL.tvl')}</STableCellHead> + </STableRow> + </STableHead> + <STableBody> + {tvl.map((token, index) => ( + <STableRow key={index}> + <LogoCell> + <TokenAvatar alt={token.tokenName} src={token.imageUrl} /> + <Typography> + {token.tokenName} ({token.token}) + </Typography> + </LogoCell> + <STableCell>${token.price.toLocaleString()}</STableCell> + <STableCell>${((token.total * token.price) / 1e18).toLocaleString()}</STableCell> + </STableRow> + ))} + </STableBody> + </Table> + </STableContainer> </article> ); }; diff --git a/src/components/Table.tsx b/src/components/Table.tsx index 9eb7371..ac78dca 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -75,7 +75,7 @@ export const DataTable = ({ chains }: TableProps) => { ); }; -const STableContainer = styled(TableContainer)(() => { +export const STableContainer = styled(TableContainer)(() => { const { currentTheme } = useCustomTheme(); return { width: '75rem', @@ -85,18 +85,15 @@ const STableContainer = styled(TableContainer)(() => { }; }); -const STableHead = styled(TableHead)(() => { +export const STableHead = styled(TableHead)(() => { const { currentTheme } = useCustomTheme(); return { backgroundColor: currentTheme.backgroundTertiary, color: currentTheme.textSecondary, - '&:not(:last-child)': { - borderBottom: currentTheme.border, - }, }; }); -const STableBody = styled(TableBody)(() => { +export const STableBody = styled(TableBody)(() => { const { currentTheme } = useCustomTheme(); return { backgroundColor: currentTheme.backgroundSecondary, @@ -104,7 +101,7 @@ const STableBody = styled(TableBody)(() => { }; }); -const STableRow = styled(TableRow)(() => { +export const STableRow = styled(TableRow)(() => { const { currentTheme } = useCustomTheme(); return { '&:not(:last-child)': { @@ -115,23 +112,25 @@ const STableRow = styled(TableRow)(() => { }; }); -const STableCellHead = styled(TableCell)(() => { +export const STableCellHead = styled(TableCell)(() => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textSecondary, textAlign: 'left', + borderBottom: 'none', }; }); -const STableCell = styled(TableCell)(() => { +export const STableCell = styled(TableCell)(() => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textPrimary, textAlign: 'left', + border: 'none', }; }); -const LogoCell = styled(TableCell)(() => { +export const LogoCell = styled(TableCell)(() => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textPrimary, @@ -143,14 +142,14 @@ const LogoCell = styled(TableCell)(() => { }; }); -const ChainAvatar = styled(Avatar)(() => { +export const ChainAvatar = styled(Avatar)(() => { return { width: '2rem', height: '2rem', }; }); -const TokenAvatar = styled(Avatar)(() => { +export const TokenAvatar = styled(Avatar)(() => { const { currentTheme } = useCustomTheme(); return { width: '1.5rem', diff --git a/src/components/Theme/theme.ts b/src/components/Theme/theme.ts index 793565b..5e3fa11 100644 --- a/src/components/Theme/theme.ts +++ b/src/components/Theme/theme.ts @@ -77,13 +77,13 @@ export const darkTheme: Theme = { textSecondary: '#A1A7B3', backgroundPrimary: '#000000', backgroundSecondary: '#262B33', - backgroundTertiary: '#11141A', + backgroundTertiary: 'rgba(17, 20, 26, 1)', titleFontFamily: 'Inter-Variable', textFontFamily: 'Inter-Variable', borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', transition: 'all 180ms ease-in-out', - border: '0.1rem solid rgba(255, 255, 255, 0.05)', + border: '0.0625rem solid rgba(255, 255, 255, 0.05)', gap: '0.25rem', padding: '1rem', warningText: warning[400], diff --git a/src/components/index.ts b/src/components/index.ts index 3e4a494..038867b 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -14,3 +14,4 @@ export * from './BasicSelect'; export * from './NotFound'; export * from './Gas'; export * from './TvlContentBox'; +export * from './Icon'; diff --git a/src/containers/ChainDetail/ChainDescription.tsx b/src/containers/ChainDetail/ChainDescription.tsx index b1b4df5..4dfaddf 100644 --- a/src/containers/ChainDetail/ChainDescription.tsx +++ b/src/containers/ChainDetail/ChainDescription.tsx @@ -1,12 +1,22 @@ +import { Box, styled } from '@mui/material'; + import { ChainInformation, FeeParams, RPC, TVL } from '~/components'; export const ChainDescription = () => { return ( - <section> + <ChainDescriptionContainer> <ChainInformation /> - <TVL /> <RPC /> <FeeParams /> - </section> + <TVL /> + </ChainDescriptionContainer> ); }; + +const ChainDescriptionContainer = styled(Box)(() => { + return { + display: 'flex', + flexDirection: 'column', + gap: '4rem', + }; +}); diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index b90cdbe..dd2fd83 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -1,49 +1,248 @@ +import { Avatar, Box, Button, Typography, styled } from '@mui/material'; import { useTranslation } from 'next-i18next'; -import { useRouter } from 'next/router'; -import { InfoBox } from '~/components'; -import { useData } from '~/hooks'; +import Image from 'next/image'; + +import { useCustomTheme, useData } from '~/hooks'; import { formatTimestampToDate } from '~/utils'; +import { Icon } from '~/components'; + +import WebDark from '~/assets/icons/webDark.svg'; +import WebLight from '~/assets/icons/webLight.svg'; +import LinkDark from '~/assets/icons/linkDark.svg'; +import LinkLight from '~/assets/icons/linkLight.svg'; +import BlockDark from '~/assets/icons/whiteBlockDark.svg'; +import BlockLight from '~/assets/icons/blackBlockLight.svg'; +import Add from '~/assets/icons/add.svg'; +import ClockDark from '~/assets/icons/clockDark.svg'; +import ClockLight from '~/assets/icons/clockLight.svg'; +import SettingsDark from '~/assets/icons/settingsDark.svg'; +import SettingsLight from '~/assets/icons/settingsLight.svg'; export const ChainMetadata = () => { const { t } = useTranslation(); - const { chainData, ecosystemData } = useData(); - const router = useRouter(); + const { chainData } = useData(); + const { theme } = useCustomTheme(); const data = chainData?.metadata; + const dark = theme === 'dark'; - const handleChange = (event: React.ChangeEvent<HTMLSelectElement>) => { - const selectedChainId = event.target.value; - router.push(`/${selectedChainId}`); - }; + return ( + <MetadataContainer> + <FirstRow> + <ChainIdentity> + <Avatar src={data?.iconUrl} alt={data?.chainName} sx={{ width: 56, height: 56 }} /> + <Box> + <ChainName>{data?.chainName}</ChainName> + <ChainId> + {t('CHAIN.chainId')}: <ChainIdValue>{data?.chainId}</ChainIdValue> + </ChainId> + </Box> + </ChainIdentity> - const handleBack = () => { - router.back(); - }; + <ButtonsContainer> + <MetadataButton variant='contained' href={data?.websiteUrl}> + <WebIcon src={dark ? WebDark : WebLight} alt='web icon' /> + {t('CHAIN.website')} + <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> + </MetadataButton> - return ( - <div> - <div> - <div> - {/* <img></img> */} - <select onChange={handleChange} value={data?.chainName || ''}> - {ecosystemData?.zkChains.map((chain) => ( - <option key={chain.chainId} value={chain.chainId}> - {chain.chainName} - </option> - ))} - </select> - <span>{data?.chainId}</span> - </div> - - <button onClick={handleBack}>{t('CHAIN.backButton')}</button> - </div> - - <div> - <InfoBox title={t('CHAIN.website')} description={data?.websiteUrl} /> - <InfoBox title={t('CHAIN.explorer')} description={data?.explorerUrl} /> - <InfoBox title={t('CHAIN.launchDate')} description={formatTimestampToDate(data?.launchDate)} /> - <InfoBox title={t('CHAIN.environment')} description={data?.environment} /> - <InfoBox title={t('CHAIN.nativeToken')} description={data?.nativeToken} /> - </div> - </div> + <MetadataButton variant='contained' href={data?.explorerUrl}> + <SIcon src={dark ? BlockDark : BlockLight} alt='block icon' /> + {t('CHAIN.explorer')} + <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> + </MetadataButton> + + <AddNetworkBtn variant='contained'> + <SIcon src={Add} alt='add icon' /> + {t('CHAIN.addNetwork')} + </AddNetworkBtn> + </ButtonsContainer> + </FirstRow> + <SecondRow> + <MetadataItem> + <Icon darkIcon={ClockDark} lightIcon={ClockLight} alt={t('CHAIN.launchDate')} size={48} /> + <Box> + <Label variant='subtitle1' color='textSecondary' gutterBottom> + {t('CHAIN.launchDate')} + </Label> + <Value>{formatTimestampToDate(data?.launchDate)}</Value> + </Box> + </MetadataItem> + + <MetadataItem> + <Icon darkIcon={SettingsDark} lightIcon={SettingsLight} alt={t('CHAIN.environment')} size={48} /> + <Box> + <Label variant='subtitle1' color='textSecondary' gutterBottom> + {t('CHAIN.environment')} + </Label> + <Value>{data?.environment}</Value> + </Box> + </MetadataItem> + + <MetadataItem> + <NativeTokenAvatar src={data?.nativeTokenIconUrl} alt={data?.nativeToken} /> + <Box> + <Label>{t('CHAIN.nativeToken')}</Label> + <Value>{data?.nativeToken}</Value> + </Box> + </MetadataItem> + </SecondRow> + </MetadataContainer> ); }; + +const MetadataContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + background: currentTheme.backgroundTertiary, + borderRadius: currentTheme.borderRadius, + border: currentTheme.border, + }; +}); + +const FirstRow = styled(Box)(() => { + return { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + padding: '1.5rem 1rem', + }; +}); + +const SecondRow = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + width: '100%', + borderTop: currentTheme.border, + }; +}); + +const ChainIdentity = styled(Box)(() => { + return { + display: 'flex', + gap: '1rem', + }; +}); + +const MetadataButton = styled(Button)(() => { + const { currentTheme } = useCustomTheme(); + return { + background: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + color: currentTheme.textPrimary, + textTransform: 'none', + fontSize: '1rem', + gap: '0.5rem', + lineHeight: '1.5rem', + '&:hover': { + background: currentTheme.neutral[800], + }, + }; +}); + +const AddNetworkBtn = styled(Button)(() => { + const { currentTheme } = useCustomTheme(); + return { + background: currentTheme.primary[500], + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + color: '#fff', + textTransform: 'none', + fontSize: '1rem', + gap: '0.5rem', + lineHeight: '1.5rem', + '&:hover': { + background: currentTheme.primary[300], + }, + }; +}); + +const SIcon = styled(Image)({ + width: '1.5rem', + height: '1.5rem', +}); + +const WebIcon = styled(Image)({ + width: '1.25rem', + height: '1.25rem', +}); + +const ButtonsContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + alignItems: 'center', + justifyContent: 'flex-end', + gap: currentTheme.gap, + }; +}); + +export const ChainName = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1.5rem', + fontWeight: 700, + lineHeight: '2rem', + color: currentTheme.textPrimary, + }; +}); + +export const ChainId = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1rem', + fontWeight: 400, + lineHeight: '1.5rem', + color: currentTheme.textSecondary, + }; +}); + +export const ChainIdValue = styled('span')(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + }; +}); + +const MetadataItem = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + alignItems: 'center', + width: 'fit-content', + padding: currentTheme.padding, + gap: '0.5rem', + borderRight: currentTheme.border, + '&:last-child': { + borderRight: 'none', + }, + }; +}); + +const Label = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '0.875rem', + lineHeight: '1.25rem', + fontWeight: 400, + color: currentTheme.textSecondary, + }; +}); + +const Value = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1rem', + lineHeight: '1.5rem', + textTransform: 'capitalize', + color: currentTheme.textPrimary, + }; +}); + +const NativeTokenAvatar = styled(Avatar)(() => { + return { + width: '44px', + height: '44px', + }; +}); diff --git a/src/containers/ChainDetail/InfoCard.tsx b/src/containers/ChainDetail/InfoCard.tsx index 1a455cf..9069abd 100644 --- a/src/containers/ChainDetail/InfoCard.tsx +++ b/src/containers/ChainDetail/InfoCard.tsx @@ -1,5 +1,8 @@ import { InfoBox } from '~/components'; +import BlockDark from '~/assets/icons/blockDark.svg'; +import BlockLight from '~/assets/icons/blockLight.svg'; + interface InfoCardProps { title: string; } @@ -9,7 +12,14 @@ export const InfoCard = ({ title }: InfoCardProps) => { <section> <h2>{title}</h2> <div> - <InfoBox title='Website' description='https://www.example.com' /> + <InfoBox + title='Website' + description='https://www.example.com' + darkIcon={BlockDark} + lightIcon={BlockLight} + size={20} + alt='block' + /> </div> </section> ); diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx index 4ec3935..78a7c2c 100644 --- a/src/containers/ChainDetail/index.tsx +++ b/src/containers/ChainDetail/index.tsx @@ -1,11 +1,24 @@ +import { Box, styled } from '@mui/material'; + import { ChainMetadata } from './ChainMetadata'; import { ChainDescription } from './ChainDescription'; export const ChainDetail = () => { return ( - <div> + <ChainContainer> <ChainMetadata /> <ChainDescription /> - </div> + </ChainContainer> ); }; + +const ChainContainer = styled(Box)(() => { + return { + width: '85%', + display: 'flex', + flexDirection: 'column', + gap: '4rem', + marginTop: '4rem', + marginBottom: '4rem', + }; +}); diff --git a/src/containers/Layout/index.tsx b/src/containers/Layout/index.tsx index fd97ed9..70c923f 100644 --- a/src/containers/Layout/index.tsx +++ b/src/containers/Layout/index.tsx @@ -1,7 +1,7 @@ import { ReactNode, FunctionComponent } from 'react'; +import { Box, styled } from '@mui/material'; import { Header, Footer } from '~/containers'; - interface AppLayoutProps { children: ReactNode; } @@ -11,10 +11,17 @@ const AppLayout: FunctionComponent<AppLayoutProps> = (props) => { return ( <> <Header /> - {children} + <Container>{children}</Container> + <Footer /> </> ); }; +const Container = styled(Box)(() => { + return { + width: '85%', + }; +}); + export { AppLayout }; diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 355c303..35c681e 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -15,8 +15,8 @@ export const LockedAssets = () => { <> <LockedAssetsContainer> <Box> - <Title>{t('HOME.lockedAssets')} - {t('HOME.lockedAssetsDescription')} + {t('HOME.LOCKEDASSETS.lockedAssets')} + {t('HOME.LOCKEDASSETS.lockedAssetsDescription')} {formatDataNumber(totalL1TVL, 0, true, true)} diff --git a/src/containers/index.ts b/src/containers/index.ts index 0698472..2d86631 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -5,3 +5,5 @@ export * from './Landing'; export * from './Dashboard'; export * from './LockedAssets'; export * from './ChainDetail'; +export * from './ChainDetail/ChainDescription'; +export * from './ChainDetail/ChainMetadata'; diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json index 5b90d97..aa5a7e5 100644 --- a/src/data/chainMockData.json +++ b/src/data/chainMockData.json @@ -1,9 +1,63 @@ { "chainType": "Rollup", - "tvl": { - "ETH": 1000000, - "USDC": 500000 - }, + "tvl": [ + { + "token": "ETH", + "tokenName": "Ethereum", + "total": 557596566000, + "price": 3500, + "imageUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png" + }, + { + "token": "USDT", + "tokenName": "Tether USD", + "total": 114493849618, + "price": 3500, + "imageUrl": "https://www.cryptomkt.com/static/landing/img/crypto-pages/trending/usdt.svg" + }, + { + "token": "USDC", + "tokenName": "Bridged USD", + "total": 34115209093, + "price": 3500, + "imageUrl": "https://assets.coingecko.com/coins/images/6319/standard/usdc.png?1696506694" + }, + { + "token": "KOI", + "tokenName": "Koi Finance", + "total": 24115209093, + "price": 3500, + "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" + }, + { + "token": "WBTC", + "tokenName": "Wrapped BTC", + "total": 12620248, + "price": 3500, + "imageUrl": "https://assets.coingecko.com/coins/images/7598/standard/wrapped_bitcoin_wbtc.png?1696507857" + }, + { + "token": "wstETH", + "tokenName": "Lido wstETH", + "total": 3552439, + "price": 3500, + "imageUrl": "https://assets.coingecko.com/coins/images/18834/standard/wstETH.png?1696518295" + }, + { + "token": "cbETH", + "tokenName": "Curve cbETH", + "total": 2552439, + "price": 3500, + "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" + }, + { + "token": "BAL", + "tokenName": "Balancer", + "total": 1552439, + "price": 3500, + "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" + } + ], "batchesInfo": { "commited": 100, "verified": 90, @@ -38,6 +92,7 @@ "explorerUrl": "https://explorer.zksync.io/", "launchDate": 1679626800, "environment": "mainnet", + "nativeTokenIconUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png", "nativeToken": "ETH" }, "l2ChainInfo": { diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx index 276e234..ca93ce9 100644 --- a/src/pages/_document.tsx +++ b/src/pages/_document.tsx @@ -10,7 +10,7 @@ export default function MyDocument(props: DocumentProps & DocumentHeadTagsProps) - + diff --git a/src/types/Data.ts b/src/types/Data.ts index 0b6d75f..a55acca 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -1,8 +1,6 @@ export interface ChainData { chainType: string; - tvl: { - [token: string]: number; - }; + tvl: ChainTvl[]; batchesInfo: { commited: number; verified: number; @@ -27,6 +25,7 @@ export interface ChainData { explorerUrl: string; launchDate: number; environment: string; + nativeTokenIconUrl: string; nativeToken: string; }; l2ChainInfo: { @@ -65,3 +64,11 @@ export interface TvlData { total: number; imageUrl: string; } + +export interface ChainTvl { + token: string; + tokenName: string; + total: number; + imageUrl: string; + price: number; +} From e8d57a7f3411470479240184886b308c3bb1bcc8 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 8 Aug 2024 13:49:22 -0300 Subject: [PATCH 39/82] feat: dark light mode icons and colors (#16) closes ZKS-139 --- .../{arrowDown.svg => arrowDownDark.svg} | 0 src/assets/icons/arrowDownLight.svg | 3 ++ src/assets/icons/chainTypeDark.svg | 5 +++ src/assets/icons/chainTypeLight.svg | 5 +++ src/assets/icons/checkBlockDark.svg | 14 ++++++ src/assets/icons/checkBlockLight.svg | 14 ++++++ src/assets/icons/logoDark.svg | 14 ++++++ src/assets/icons/logoLight.svg | 14 ++++++ src/assets/icons/maxDark.svg | 3 ++ src/assets/icons/maxLight.svg | 3 ++ src/assets/icons/speedDark.svg | 3 ++ src/assets/icons/speedLight.svg | 3 ++ src/assets/icons/tagDark.svg | 3 ++ src/assets/icons/tagLight.svg | 3 ++ src/components/BasicSelect.tsx | 8 +++- src/components/ChainInformation.tsx | 43 +++++++++++-------- src/components/FeeParams.tsx | 27 +++++++----- src/components/InfoBox.tsx | 4 +- src/components/SearchBar.tsx | 15 +++++-- src/components/Theme/theme.ts | 15 +++---- src/containers/ChainDetail/ChainMetadata.tsx | 17 +++++--- src/containers/Header/index.tsx | 31 +++++++------ 22 files changed, 185 insertions(+), 62 deletions(-) rename src/assets/icons/{arrowDown.svg => arrowDownDark.svg} (100%) create mode 100644 src/assets/icons/arrowDownLight.svg create mode 100644 src/assets/icons/chainTypeDark.svg create mode 100644 src/assets/icons/chainTypeLight.svg create mode 100644 src/assets/icons/checkBlockDark.svg create mode 100644 src/assets/icons/checkBlockLight.svg create mode 100644 src/assets/icons/logoDark.svg create mode 100644 src/assets/icons/logoLight.svg create mode 100644 src/assets/icons/maxDark.svg create mode 100644 src/assets/icons/maxLight.svg create mode 100644 src/assets/icons/speedDark.svg create mode 100644 src/assets/icons/speedLight.svg create mode 100644 src/assets/icons/tagDark.svg create mode 100644 src/assets/icons/tagLight.svg diff --git a/src/assets/icons/arrowDown.svg b/src/assets/icons/arrowDownDark.svg similarity index 100% rename from src/assets/icons/arrowDown.svg rename to src/assets/icons/arrowDownDark.svg diff --git a/src/assets/icons/arrowDownLight.svg b/src/assets/icons/arrowDownLight.svg new file mode 100644 index 0000000..27755cd --- /dev/null +++ b/src/assets/icons/arrowDownLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/chainTypeDark.svg b/src/assets/icons/chainTypeDark.svg new file mode 100644 index 0000000..b503225 --- /dev/null +++ b/src/assets/icons/chainTypeDark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/chainTypeLight.svg b/src/assets/icons/chainTypeLight.svg new file mode 100644 index 0000000..b0a5924 --- /dev/null +++ b/src/assets/icons/chainTypeLight.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/checkBlockDark.svg b/src/assets/icons/checkBlockDark.svg new file mode 100644 index 0000000..03eae9f --- /dev/null +++ b/src/assets/icons/checkBlockDark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/icons/checkBlockLight.svg b/src/assets/icons/checkBlockLight.svg new file mode 100644 index 0000000..799e7a4 --- /dev/null +++ b/src/assets/icons/checkBlockLight.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/icons/logoDark.svg b/src/assets/icons/logoDark.svg new file mode 100644 index 0000000..6384052 --- /dev/null +++ b/src/assets/icons/logoDark.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/icons/logoLight.svg b/src/assets/icons/logoLight.svg new file mode 100644 index 0000000..b74fe24 --- /dev/null +++ b/src/assets/icons/logoLight.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/assets/icons/maxDark.svg b/src/assets/icons/maxDark.svg new file mode 100644 index 0000000..6ddcc55 --- /dev/null +++ b/src/assets/icons/maxDark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/maxLight.svg b/src/assets/icons/maxLight.svg new file mode 100644 index 0000000..6fd14f5 --- /dev/null +++ b/src/assets/icons/maxLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/speedDark.svg b/src/assets/icons/speedDark.svg new file mode 100644 index 0000000..8f8594b --- /dev/null +++ b/src/assets/icons/speedDark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/speedLight.svg b/src/assets/icons/speedLight.svg new file mode 100644 index 0000000..09a7ba7 --- /dev/null +++ b/src/assets/icons/speedLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/tagDark.svg b/src/assets/icons/tagDark.svg new file mode 100644 index 0000000..0fdaab7 --- /dev/null +++ b/src/assets/icons/tagDark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/tagLight.svg b/src/assets/icons/tagLight.svg new file mode 100644 index 0000000..b13262b --- /dev/null +++ b/src/assets/icons/tagLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index 57e1944..f5d5c7c 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -2,7 +2,8 @@ import { useState } from 'react'; import { styled, MenuProps, Menu, Box, Button, MenuItem } from '@mui/material'; import Image from 'next/image'; -import arrowDown from '~/assets/icons/arrowDown.svg'; +import arrowDownDark from '~/assets/icons/arrowDownDark.svg'; +import arrowDownLight from '~/assets/icons/arrowDownLight.svg'; import { useCustomTheme } from '~/hooks'; interface BasicSelectProps { @@ -15,6 +16,7 @@ interface BasicSelectProps { } export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: BasicSelectProps) => { + const { theme } = useCustomTheme(); const [anchorEl, setAnchorEl] = useState(null); const open = Boolean(anchorEl); @@ -29,7 +31,9 @@ export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: Basic setValue(explorer); }; - const endIcon = disabled ? null : arrow-down; + const endIcon = disabled ? null : ( + arrow-down + ); return ( diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index 14cb799..c047222 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -3,8 +3,15 @@ import { useTranslation } from 'next-i18next'; import { InfoBox } from '~/components'; import { useData, useCustomTheme } from '~/hooks'; + import BlockDark from '~/assets/icons/blockDark.svg'; import BlockLight from '~/assets/icons/blockLight.svg'; +import ChainTypeDark from '~/assets/icons/chainTypeDark.svg'; +import ChainTypeLight from '~/assets/icons/chainTypeLight.svg'; +import CheckBlockDark from '~/assets/icons/checkBlockDark.svg'; +import CheckBlockLight from '~/assets/icons/checkBlockLight.svg'; +import SpeedDark from '~/assets/icons/speedDark.svg'; +import SpeedLight from '~/assets/icons/speedLight.svg'; export const ChainInformation = () => { const { t } = useTranslation(); @@ -19,10 +26,10 @@ export const ChainInformation = () => { { darkIcon={BlockDark} lightIcon={BlockLight} size={22} - alt='block' + alt='block-icon' /> {
@@ -93,9 +100,9 @@ export const ChainInformation = () => { }; export const DataContainer = styled(Box)(() => { - const { currentTheme } = useCustomTheme(); + const { currentTheme, theme } = useCustomTheme(); return { - background: currentTheme.backgroundTertiary, + background: theme === 'dark' ? currentTheme.backgroundTertiary : currentTheme.backgroundSecondary, borderRadius: currentTheme.borderRadius, border: currentTheme.border, display: 'grid', diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index eb953f5..8ee4896 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -2,8 +2,15 @@ import { useTranslation } from 'next-i18next'; import { InfoBox, STitle, DataContainer } from '~/components'; import { useData } from '~/hooks'; + import BlockDark from '~/assets/icons/blockDark.svg'; import BlockLight from '~/assets/icons/blockLight.svg'; +import TagDark from '~/assets/icons/tagDark.svg'; +import TagLight from '~/assets/icons/tagLight.svg'; +import MaxDark from '~/assets/icons/maxDark.svg'; +import MaxLight from '~/assets/icons/maxLight.svg'; +import CheckBlockDark from '~/assets/icons/checkBlockDark.svg'; +import CheckBlockLight from '~/assets/icons/checkBlockLight.svg'; export const FeeParams = () => { const { t } = useTranslation(); @@ -16,10 +23,10 @@ export const FeeParams = () => { { darkIcon={BlockDark} lightIcon={BlockLight} size={20} - alt='block' + alt='block-icon' /> diff --git a/src/components/InfoBox.tsx b/src/components/InfoBox.tsx index eacea25..4a1c96d 100644 --- a/src/components/InfoBox.tsx +++ b/src/components/InfoBox.tsx @@ -30,9 +30,9 @@ export const InfoBox = ({ title, description, darkIcon, lightIcon, size, alt }: }; const StyledCard = styled(Card)(() => { - const { currentTheme } = useCustomTheme(); + const { currentTheme, theme } = useCustomTheme(); return { - background: currentTheme.backgroundTertiary, + background: theme === 'dark' ? currentTheme.backgroundTertiary : currentTheme.backgroundSecondary, color: currentTheme.textPrimary, overflow: 'hidden', boxShadow: 'none', diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 5a70701..99ce3e9 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -33,16 +33,23 @@ export const SearchBar = () => { }; const StyledTextField = styled(TextField)(() => { - const { currentTheme } = useCustomTheme(); + const { theme, currentTheme } = useCustomTheme(); return { width: '15rem', height: '3.5rem', - borderRadius: `${currentTheme.borderRadius}`, - border: `1px solid ${currentTheme.backgroundSecondary}`, - backgroundColor: `${currentTheme.backgroundTertiary}`, + borderRadius: currentTheme.borderRadius, + border: currentTheme.border, + backgroundColor: theme === 'dark' ? currentTheme.backgroundTertiary : currentTheme.backgroundSecondary, opacity: 1, '& .MuiOutlinedInput-root': { + '& input': { + color: currentTheme.textPrimary, + }, + '&::placeholder': { + color: currentTheme.textPrimary, + opacity: 1, + }, '& fieldset': { border: 'none', }, diff --git a/src/components/Theme/theme.ts b/src/components/Theme/theme.ts index 5e3fa11..a5aaded 100644 --- a/src/components/Theme/theme.ts +++ b/src/components/Theme/theme.ts @@ -73,7 +73,7 @@ const success: { [key: number]: string } = { export const darkTheme: Theme = { type: 'dark', titleColor: '#000000', - textPrimary: '#ffffff', + textPrimary: 'rgba(255, 255, 255, 1)', textSecondary: '#A1A7B3', backgroundPrimary: '#000000', backgroundSecondary: '#262B33', @@ -98,12 +98,11 @@ export const darkTheme: Theme = { }; export const lightTheme: Theme = { - // TBD type: 'light', titleColor: '#000000', - textPrimary: '#000000', - textSecondary: '#717171', - backgroundPrimary: '#ffffff', + textPrimary: 'rgba(17, 20, 26, 1)', + textSecondary: 'rgba(61, 66, 77, 1)', + backgroundPrimary: 'rgba(247, 249, 252, 1)', backgroundSecondary: 'rgba(232, 236, 242, 1)', backgroundTertiary: ' rgba(218, 221, 229, 1)', titleFontFamily: 'Inter-Variable', @@ -111,12 +110,12 @@ export const lightTheme: Theme = { borderRadius: '1.5rem', secondaryBorderRadius: '0.4rem', transition: 'all 180ms ease-in-out', - border: '0.1rem solid rgba(0, 0, 0, 0.05)', + border: '0.0625rem solid rgba(0, 0, 0, 0.05)', gap: '0.25rem', warningText: warning[800], padding: '1rem', - warningBackground: 'rgba(153, 117, 0, 0.051)', - warningBorder: '1px solid rgba(153, 117, 0, 0.01)', + warningBackground: 'rgba(153, 117, 0, 0.1)', + warningBorder: '1px solid rgba(153, 117, 0, 0.05)', emptyBackground: 'rgba(61, 66, 77, 1)', neutral, primary, diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index dd2fd83..432b607 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -29,7 +29,7 @@ export const ChainMetadata = () => { - + {data?.chainName} @@ -91,9 +91,9 @@ export const ChainMetadata = () => { }; const MetadataContainer = styled(Box)(() => { - const { currentTheme } = useCustomTheme(); + const { currentTheme, theme } = useCustomTheme(); return { - background: currentTheme.backgroundTertiary, + background: theme === 'dark' ? currentTheme.backgroundTertiary : currentTheme.backgroundSecondary, borderRadius: currentTheme.borderRadius, border: currentTheme.border, }; @@ -121,22 +121,25 @@ const ChainIdentity = styled(Box)(() => { return { display: 'flex', gap: '1rem', + alignItems: 'center', }; }); const MetadataButton = styled(Button)(() => { - const { currentTheme } = useCustomTheme(); + const { currentTheme, theme } = useCustomTheme(); return { - background: currentTheme.backgroundSecondary, + background: theme === 'dark' ? currentTheme.backgroundSecondary : currentTheme.backgroundTertiary, borderRadius: currentTheme.borderRadius, padding: currentTheme.padding, color: currentTheme.textPrimary, + boxShadow: 'none', textTransform: 'none', fontSize: '1rem', gap: '0.5rem', lineHeight: '1.5rem', '&:hover': { - background: currentTheme.neutral[800], + background: theme === 'dark' ? currentTheme.neutral[800] : currentTheme.neutral[300], + boxShadow: 'none', }, }; }); @@ -152,8 +155,10 @@ const AddNetworkBtn = styled(Button)(() => { fontSize: '1rem', gap: '0.5rem', lineHeight: '1.5rem', + boxShadow: 'none', '&:hover': { background: currentTheme.primary[300], + boxShadow: 'none', }, }; }); diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 03014d4..c347bc4 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -1,6 +1,5 @@ import { styled } from '@mui/material/styles'; import { IconButton, Box } from '@mui/material'; -import Link from 'next/link'; import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; @@ -8,6 +7,9 @@ import Image from 'next/image'; import { BasicSelect, SearchBar, Gas, SBox } from '~/components'; import { useCustomTheme } from '~/hooks/useContext/useTheme'; import { getConfig } from '~/config'; + +import LogoDark from '~/assets/icons/logoDark.svg'; +import LogoLight from '~/assets/icons/logoLight.svg'; import LightMode from '~/assets/icons/lightMode.svg'; import DarkMode from '~/assets/icons/darkMode.svg'; @@ -40,13 +42,15 @@ export const Header = () => { changeLanguage(locale); }; + const handleLogoClick = () => { + router.push('/'); + }; + return ( - - - ZKchainHub - - + + + @@ -72,14 +76,17 @@ const StyledHeader = styled('header')({ width: '100%', }); -const Logo = styled('h1')({ - fontSize: '1.5rem', - cursor: 'pointer', +const LogoContainer = styled(Box)({ + display: 'flex', + alignItems: 'center', + height: '100%', + flexShrink: 0, }); -const StyledLink = styled(Link)({ - textDecoration: 'none', - color: 'inherit', +const Logo = styled(Image)({ + width: '13rem', + height: 'auto', + maxHeight: '100%', }); const SIconButton = styled(IconButton)(() => { From ae0b4694339fad71f4a7abd94d4a82040f389ba6 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 8 Aug 2024 15:02:12 -0300 Subject: [PATCH 40/82] feat: breadcrumb (#15) closes ZKS-133 --- public/locales/en/common.json | 1 + public/locales/es/common.json | 1 + src/assets/icons/smallArrowDark.svg | 3 + src/assets/icons/smallArrowLight.svg | 3 + src/components/Breadcrumb.tsx | 86 ++++++++++++++++++++++++++++ src/components/index.ts | 1 + src/containers/ChainDetail/index.tsx | 2 + 7 files changed, 97 insertions(+) create mode 100644 src/assets/icons/smallArrowDark.svg create mode 100644 src/assets/icons/smallArrowLight.svg create mode 100644 src/components/Breadcrumb.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index c29abb4..2036b17 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -4,6 +4,7 @@ "subtitle": "Ecosystem", "gasPrice": "L1 Gas Price", "transfer": "ERC-20 Transfer", + "home": "Home", "LOCKEDASSETS": { "lockedAssets": "Locked assets", "lockedAssetsDescription": "Locked assets in Elastic Chain Ecosystem", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index b82bc33..43ba616 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -4,6 +4,7 @@ "subtitle": "Ecosistema", "gasPrice": "Precio del gas L1", "transfer": "Transferencia ERC-20", + "home": "Inicio", "LOCKEDASSETS": { "lockedAssets": "Activos bloqueados", "lockedAssetsDescription": "Activos bloqueados en el ecosistema de Elastic Chain", diff --git a/src/assets/icons/smallArrowDark.svg b/src/assets/icons/smallArrowDark.svg new file mode 100644 index 0000000..39e46a9 --- /dev/null +++ b/src/assets/icons/smallArrowDark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/smallArrowLight.svg b/src/assets/icons/smallArrowLight.svg new file mode 100644 index 0000000..7af41f2 --- /dev/null +++ b/src/assets/icons/smallArrowLight.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/Breadcrumb.tsx b/src/components/Breadcrumb.tsx new file mode 100644 index 0000000..bf3f456 --- /dev/null +++ b/src/components/Breadcrumb.tsx @@ -0,0 +1,86 @@ +import { usePathname } from 'next/navigation'; +import { Link, Typography, styled } from '@mui/material'; +import { useTranslation } from 'next-i18next'; +import Image from 'next/image'; + +import { useData, useCustomTheme } from '~/hooks'; +import SmallArrowDark from '~/assets/icons/smallArrowDark.svg'; +import SmallArrowLight from '~/assets/icons/smallArrowLight.svg'; + +interface BreadcrumbProps { + isChain: boolean; +} + +export const Breadcrumb = ({ isChain }: BreadcrumbProps) => { + const pathname = usePathname(); + const { chainData } = useData(); + const { theme } = useCustomTheme(); + const { t } = useTranslation(); + + const pathNames = pathname ? pathname.split('/').filter((path) => path) : []; + + const breadcrumbItems = pathNames.map((path, index) => { + const isLast = index === pathNames.length - 1; + const displayName = isChain && isLast ? chainData?.metadata?.chainName || path : path; + const href = `/${pathNames.slice(0, index + 1).join('/')}`; + + return { + key: index, + isLast, + displayName, + href, + }; + }); + + return ( + + {t('HOME.home')} + + {breadcrumbItems.map(({ key, isLast, displayName, href }) => ( + + + {isLast ? ( + {displayName} + ) : ( + {displayName} + )} + + ))} + + ); +}; + +const BreadcrumbNav = styled('nav')({ + display: 'flex', + alignItems: 'center', +}); + +const BreadcrumbLink = styled(Link)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + alignItems: 'center', + color: currentTheme.textPrimary, + textDecoration: 'none', + fontSize: '0.875rem', + lineHeight: '1.25rem', + }; +}); + +const BreadcrumbItem = styled('span')({ + display: 'flex', + alignItems: 'center', +}); + +const ArrowIcon = styled(Image)({ + width: '1.25rem', +}); + +const BreadcrumbCurrent = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '0.875rem', + color: currentTheme.textSecondary, + lineHeight: '1.25rem', + }; +}); diff --git a/src/components/index.ts b/src/components/index.ts index 038867b..febef04 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -14,4 +14,5 @@ export * from './BasicSelect'; export * from './NotFound'; export * from './Gas'; export * from './TvlContentBox'; +export * from './Breadcrumb'; export * from './Icon'; diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx index 78a7c2c..b9bc8c6 100644 --- a/src/containers/ChainDetail/index.tsx +++ b/src/containers/ChainDetail/index.tsx @@ -2,10 +2,12 @@ import { Box, styled } from '@mui/material'; import { ChainMetadata } from './ChainMetadata'; import { ChainDescription } from './ChainDescription'; +import { Breadcrumb } from '~/components'; export const ChainDetail = () => { return ( + From 3952f80ff627a1914da83d599d747132cad54820 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 12 Aug 2024 18:42:49 -0300 Subject: [PATCH 41/82] feat: responsiveness (#17) --- public/locales/en/common.json | 1 + public/locales/es/common.json | 1 + src/assets/icons/closeDark.svg | 1 + src/assets/icons/closeLight.svg | 1 + src/assets/icons/menuDark.svg | 5 + src/assets/icons/menuLight.svg | 1 + src/components/Breadcrumb.tsx | 1 + src/components/ChainInformation.tsx | 7 +- src/components/FeeParams.tsx | 4 +- src/components/Table.tsx | 2 +- src/components/TitleBanner.tsx | 28 +++- src/components/TotalValueLocked.tsx | 88 ++++++++++-- src/components/TvlContentBox.tsx | 23 ++-- src/containers/ChainDetail/ChainMetadata.tsx | 47 +++++-- src/containers/ChainDetail/index.tsx | 30 ++-- src/containers/Dashboard/index.tsx | 5 +- src/containers/Footer/index.tsx | 10 +- src/containers/Header/DesktopHeader.tsx | 45 ++++++ src/containers/Header/MobileHeader.tsx | 136 +++++++++++++++++++ src/containers/Header/index.tsx | 92 +++++++------ src/containers/Landing/index.tsx | 9 +- src/containers/Layout/index.tsx | 11 +- src/containers/LockedAssets/index.tsx | 8 +- src/pages/layout.tsx | 23 ---- 24 files changed, 442 insertions(+), 137 deletions(-) create mode 100644 src/assets/icons/closeDark.svg create mode 100644 src/assets/icons/closeLight.svg create mode 100644 src/assets/icons/menuDark.svg create mode 100644 src/assets/icons/menuLight.svg create mode 100644 src/containers/Header/DesktopHeader.tsx create mode 100644 src/containers/Header/MobileHeader.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 2036b17..dd53656 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -5,6 +5,7 @@ "gasPrice": "L1 Gas Price", "transfer": "ERC-20 Transfer", "home": "Home", + "menu": "Menu", "LOCKEDASSETS": { "lockedAssets": "Locked assets", "lockedAssetsDescription": "Locked assets in Elastic Chain Ecosystem", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 43ba616..d91f19c 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -5,6 +5,7 @@ "gasPrice": "Precio del gas L1", "transfer": "Transferencia ERC-20", "home": "Inicio", + "menu": "Menรบ", "LOCKEDASSETS": { "lockedAssets": "Activos bloqueados", "lockedAssetsDescription": "Activos bloqueados en el ecosistema de Elastic Chain", diff --git a/src/assets/icons/closeDark.svg b/src/assets/icons/closeDark.svg new file mode 100644 index 0000000..4e97a27 --- /dev/null +++ b/src/assets/icons/closeDark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/closeLight.svg b/src/assets/icons/closeLight.svg new file mode 100644 index 0000000..ce94ec5 --- /dev/null +++ b/src/assets/icons/closeLight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/menuDark.svg b/src/assets/icons/menuDark.svg new file mode 100644 index 0000000..924c523 --- /dev/null +++ b/src/assets/icons/menuDark.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/menuLight.svg b/src/assets/icons/menuLight.svg new file mode 100644 index 0000000..092832c --- /dev/null +++ b/src/assets/icons/menuLight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/Breadcrumb.tsx b/src/components/Breadcrumb.tsx index bf3f456..4a8bb3f 100644 --- a/src/components/Breadcrumb.tsx +++ b/src/components/Breadcrumb.tsx @@ -53,6 +53,7 @@ export const Breadcrumb = ({ isChain }: BreadcrumbProps) => { const BreadcrumbNav = styled('nav')({ display: 'flex', alignItems: 'center', + marginBottom: '1.5rem', }); const BreadcrumbLink = styled(Link)(() => { diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index c047222..275fe6b 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -99,14 +99,19 @@ export const ChainInformation = () => { ); }; -export const DataContainer = styled(Box)(() => { +export const DataContainer = styled(Box)(({ theme: muiTheme }) => { const { currentTheme, theme } = useCustomTheme(); + return { background: theme === 'dark' ? currentTheme.backgroundTertiary : currentTheme.backgroundSecondary, borderRadius: currentTheme.borderRadius, border: currentTheme.border, display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', + + [muiTheme.breakpoints.down('sm')]: { + gridTemplateColumns: 'repeat(1, 1fr)', + }, }; }); diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index 8ee4896..107df71 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -17,7 +17,7 @@ export const FeeParams = () => { const { chainData } = useData(); return ( - <> +
{t('CHAIN.FEEPARAMS.title')} { alt='max-icon' /> - +
); }; diff --git a/src/components/Table.tsx b/src/components/Table.tsx index ac78dca..ba59ada 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -78,7 +78,7 @@ export const DataTable = ({ chains }: TableProps) => { export const STableContainer = styled(TableContainer)(() => { const { currentTheme } = useCustomTheme(); return { - width: '75rem', + width: '100%', borderRadius: currentTheme.borderRadius, border: currentTheme.border, overflow: 'hidden', diff --git a/src/components/TitleBanner.tsx b/src/components/TitleBanner.tsx index 1e4085c..b683a75 100644 --- a/src/components/TitleBanner.tsx +++ b/src/components/TitleBanner.tsx @@ -22,7 +22,7 @@ export const TitleBanner = () => { ); }; -const TitleBox = styled(Box)(() => { +const TitleBox = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { @@ -30,6 +30,14 @@ const TitleBox = styled(Box)(() => { alignItems: 'center', alignSelf: 'flex-start', gap: currentTheme.gap, + justifyContent: 'center', + textAlign: 'center', + [theme.breakpoints.down('sm')]: { + display: 'grid', + gridTemplateColumns: 'auto 1fr', + justifyContent: 'start', + textAlign: 'left', + }, }; }); @@ -44,9 +52,15 @@ const Bold = styled('span')({ fontWeight: 700, }); -const Subtitle = styled(Typography)(() => ({ - fontSize: '3rem', - fontWeight: 700, - lineHeight: '4rem', - letterSpacing: '-0.03em', -})); +const Subtitle = styled(Typography)(({ theme }) => { + return { + fontSize: '3rem', + fontWeight: 700, + lineHeight: '4rem', + letterSpacing: '-0.03em', + gridColumn: 'auto', + [theme.breakpoints.down('sm')]: { + gridColumn: 'span 2', + }, + }; +}); diff --git a/src/components/TotalValueLocked.tsx b/src/components/TotalValueLocked.tsx index c8496fb..3af36b2 100644 --- a/src/components/TotalValueLocked.tsx +++ b/src/components/TotalValueLocked.tsx @@ -1,4 +1,4 @@ -import { Box, Typography, Grid, styled } from '@mui/material'; +import { Box, Typography, Grid, styled, useMediaQuery, useTheme } from '@mui/material'; import { useTranslation } from 'next-i18next'; import { TvlData } from '~/types'; import { TvlContentBox } from '~/components'; @@ -9,17 +9,78 @@ interface TotalValueLockedProps { } export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { + const theme = useTheme(); + const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + + return ( + <> + {isMobile && } + {!isMobile && } + + ); +}; + +const MobileTvlContainer = ({ tvl }: TotalValueLockedProps) => { + const { t } = useTranslation(); + + const renderTvlContent = ( + data: TvlData, + index: number, + height: string, + xs: number, + smallCard?: boolean, + isLast?: boolean, + ) => ( + + + + + + ); + + return ( + + {/* First item: full width */} + {renderTvlContent(tvl[0], 0, '12rem', 12)} + + {/* Second item: full width, half height */} + {renderTvlContent(tvl[1], 1, '6rem', 12)} + + {/* Third and Fourth items: half width each */} + + {renderTvlContent(tvl[2], 2, '6rem', 6)} + {renderTvlContent(tvl[3], 3, '6rem', 6)} + + + {/* Fifth item: half width */} + + {renderTvlContent(tvl[4], 4, '5rem', 6, true, true)} + + {/* Sixth item: two-thirds width + others remaining */} + + {renderTvlContent(tvl[5], 5, '5rem', 9, true, true)} + + + + {t('HOME.LOCKEDASSETS.others')} + + + + + + + ); +}; + +const DesktopTvlContainer = ({ tvl }: TotalValueLockedProps) => { const { t } = useTranslation(); - /** - * Renders the TVL content within a grid container. - * @param data - The TVL data. - * @param index - The index of the item in the array. - * @param height - The height of the container. - * @param xs - The grid size for the container. - * @param smallCard - Whether the card is small or not. - * @param isLast - Whether the card is the last one or not. - */ const renderTvlContent = ( data: TvlData, index: number, @@ -43,18 +104,23 @@ export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { return ( + {/* First item: full width */} {renderTvlContent(tvl[0], 0, '12rem', 12)} + {/* Second item: half width */} {renderTvlContent(tvl[1], 1, '12rem', 6)} + {/* Third and fourth items: one-third width each*/} {tvl.slice(2, 4).map((data, index) => renderTvlContent(data, index + 2, '12rem', 4, true))} + {/* Fifth item: one-third width and half height */} {renderTvlContent(tvl[4], 4, '5.85rem', 6, true)} + {/* Sixth item: three-fourths width and halft height + others remaining width same height*/} {renderTvlContent(tvl[5], 5, '5.85rem', 9, true, true)} @@ -74,7 +140,7 @@ export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { const TvlContainer = styled(Grid)({ display: 'flex', flexWrap: 'wrap', - width: '75rem', + alignItems: 'flex-start', }); interface GridContainerProps { diff --git a/src/components/TvlContentBox.tsx b/src/components/TvlContentBox.tsx index 0350fc6..bdb29ea 100644 --- a/src/components/TvlContentBox.tsx +++ b/src/components/TvlContentBox.tsx @@ -16,12 +16,12 @@ export const TvlContentBox = ({ avatar, token, total, tokenName, isLast }: TvlCo - {tokenName} - {token} + {tokenName} + {token} - {formatDataNumber(total, 0, true)} + {formatDataNumber(total, 0, true)} ); }; @@ -33,6 +33,7 @@ const ContentBox = styled(Box)({ alignItems: 'flex-start', zIndex: 1, width: '100%', + height: '100%', }); const TopBox = styled(Box)(() => { @@ -54,32 +55,32 @@ const TokenLogo = styled(Avatar)(({ isLast }) => ({ })); const TvlAmount = styled(Typography)(({ isLast }) => ({ - fontSize: `${isLast ? '0.85rem' : '1rem'}`, + fontSize: `${isLast ? '0.75rem' : '0.875rem'}`, fontWeight: 400, })); const TextBox = styled(Box)(() => { - const { currentTheme } = useCustomTheme(); return { display: 'flex', alignItems: 'center', flexWrap: 'wrap', - gap: currentTheme.gap, }; }); -const TokenName = styled(Typography)({ - fontSize: '0.85rem', +const TokenName = styled(Typography)(({ isLast }) => ({ + fontSize: `${isLast ? '0.75rem' : '0.875rem'}`, fontWeight: 400, whiteSpace: 'nowrap', -}); + margin: '0', +})); -const TokenTicker = styled(Typography)(() => { +const TokenTicker = styled(Typography)(({ isLast }) => { const { currentTheme } = useCustomTheme(); return { - fontSize: '0.85rem', + fontSize: `${isLast ? '0.75rem' : '0.875rem'}`, fontWeight: 400, color: currentTheme.textSecondary, whiteSpace: 'nowrap', + margin: '0', }; }); diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index 432b607..0f070a1 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -92,6 +92,7 @@ export const ChainMetadata = () => { const MetadataContainer = styled(Box)(() => { const { currentTheme, theme } = useCustomTheme(); + return { background: theme === 'dark' ? currentTheme.backgroundTertiary : currentTheme.backgroundSecondary, borderRadius: currentTheme.borderRadius, @@ -99,21 +100,31 @@ const MetadataContainer = styled(Box)(() => { }; }); -const FirstRow = styled(Box)(() => { - return { - display: 'flex', - alignItems: 'center', - justifyContent: 'space-between', - padding: '1.5rem 1rem', - }; -}); +const FirstRow = styled(Box)(({ theme }) => ({ + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + padding: '1.5rem 1rem', + [theme.breakpoints.down('sm')]: { + display: 'grid', + }, +})); -const SecondRow = styled(Box)(() => { +const SecondRow = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); + return { display: 'flex', + alignItems: 'center', + justifyContent: 'flex-start', + gap: currentTheme.gap, width: '100%', borderTop: currentTheme.border, + [theme.breakpoints.down('sm')]: { + display: 'grid', + justifyContent: 'space-between', + gridTemplateColumns: 'repeat(2, 1fr)', + }, }; }); @@ -127,6 +138,7 @@ const ChainIdentity = styled(Box)(() => { const MetadataButton = styled(Button)(() => { const { currentTheme, theme } = useCustomTheme(); + return { background: theme === 'dark' ? currentTheme.backgroundSecondary : currentTheme.backgroundTertiary, borderRadius: currentTheme.borderRadius, @@ -146,6 +158,7 @@ const MetadataButton = styled(Button)(() => { const AddNetworkBtn = styled(Button)(() => { const { currentTheme } = useCustomTheme(); + return { background: currentTheme.primary[500], borderRadius: currentTheme.borderRadius, @@ -173,18 +186,27 @@ const WebIcon = styled(Image)({ height: '1.25rem', }); -const ButtonsContainer = styled(Box)(() => { +const ButtonsContainer = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); + return { display: 'flex', alignItems: 'center', justifyContent: 'flex-end', gap: currentTheme.gap, + marginTop: 0, + [theme.breakpoints.down('sm')]: { + display: 'grid', + justifyContent: 'space-between', + gridTemplateColumns: 'repeat(2, 1fr)', + marginTop: '1rem', + }, }; }); export const ChainName = styled(Box)(() => { const { currentTheme } = useCustomTheme(); + return { fontSize: '1.5rem', fontWeight: 700, @@ -195,6 +217,7 @@ export const ChainName = styled(Box)(() => { export const ChainId = styled(Box)(() => { const { currentTheme } = useCustomTheme(); + return { fontSize: '1rem', fontWeight: 400, @@ -205,6 +228,7 @@ export const ChainId = styled(Box)(() => { export const ChainIdValue = styled('span')(() => { const { currentTheme } = useCustomTheme(); + return { color: currentTheme.textPrimary, }; @@ -212,6 +236,7 @@ export const ChainIdValue = styled('span')(() => { const MetadataItem = styled(Box)(() => { const { currentTheme } = useCustomTheme(); + return { display: 'flex', alignItems: 'center', @@ -227,6 +252,7 @@ const MetadataItem = styled(Box)(() => { const Label = styled(Typography)(() => { const { currentTheme } = useCustomTheme(); + return { fontSize: '0.875rem', lineHeight: '1.25rem', @@ -237,6 +263,7 @@ const Label = styled(Typography)(() => { const Value = styled(Typography)(() => { const { currentTheme } = useCustomTheme(); + return { fontSize: '1rem', lineHeight: '1.5rem', diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx index b9bc8c6..0ea1ca7 100644 --- a/src/containers/ChainDetail/index.tsx +++ b/src/containers/ChainDetail/index.tsx @@ -7,20 +7,26 @@ import { Breadcrumb } from '~/components'; export const ChainDetail = () => { return ( - - + + + + + ); }; -const ChainContainer = styled(Box)(() => { - return { - width: '85%', - display: 'flex', - flexDirection: 'column', - gap: '4rem', - marginTop: '4rem', - marginBottom: '4rem', - }; -}); +export const ChainContainer = styled(Box)(({ theme }) => ({ + width: '100%', + padding: '0 7rem', + display: 'flex', + flexDirection: 'column', + gap: '4rem', + marginTop: '4rem', + marginBottom: '4rem', + + [theme.breakpoints.down('sm')]: { + padding: '0 1rem', + }, +})); diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index a84cddb..e95f29f 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -2,6 +2,7 @@ import { useTranslation } from 'next-i18next'; import { NotFound, DataTable, Title } from '~/components'; import { useData, useStateContext } from '~/hooks'; +import { StyledSection } from '~/containers'; export const Dashboard = () => { const { t } = useTranslation(); @@ -22,13 +23,13 @@ export const Dashboard = () => { const availableChains = filteredChains?.length > 0; return ( -
+
</header> {availableChains && <DataTable chains={filteredChains} />} {!availableChains && <NotFound text={t('HOME.DASHBOARD.notFound')} />} - </section> + </StyledSection> ); }; diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index 3713eb7..53c2447 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -40,16 +40,22 @@ export const Footer = () => { ); }; -const FooterContainer = styled('footer')(() => { +export const FooterContainer = styled('footer')(({ theme }) => { const { currentTheme } = useCustomTheme(); return { display: 'flex', - height: '5.5rem', padding: currentTheme.padding, alignItems: 'center', justifyContent: 'space-between', width: '100%', + gap: '0', + + [theme.breakpoints.down('sm')]: { + display: 'grid', + justifyContent: 'center', + gap: '2rem', + }, }; }); diff --git a/src/containers/Header/DesktopHeader.tsx b/src/containers/Header/DesktopHeader.tsx new file mode 100644 index 0000000..baca6b5 --- /dev/null +++ b/src/containers/Header/DesktopHeader.tsx @@ -0,0 +1,45 @@ +import { useTranslation } from 'next-i18next'; +import Image from 'next/image'; + +import { StyledHeader, LogoContainer, Logo, SIconButton, HeaderProps } from '~/containers'; +import { BasicSelect, SearchBar, Gas, SBox } from '~/components'; + +import LogoDark from '~/assets/icons/logoDark.svg'; +import LogoLight from '~/assets/icons/logoLight.svg'; +import LightMode from '~/assets/icons/lightMode.svg'; +import DarkMode from '~/assets/icons/darkMode.svg'; + +interface DesktopHeaderProps extends HeaderProps {} + +export const DesktopHeader = ({ + theme, + goToHome, + handleChangeLanguage, + localesMap, + changeTheme, +}: DesktopHeaderProps) => { + const { + t, + i18n: { language }, + } = useTranslation(); + + return ( + <StyledHeader> + <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> + <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> + </LogoContainer> + <SBox> + <Gas /> + <SearchBar /> + <BasicSelect + value={t(`LOCALES.${language}`)} + setValue={handleChangeLanguage} + list={Object.values(localesMap)} + /> + <SIconButton onClick={changeTheme}> + {theme === 'dark' ? <Image src={LightMode} alt='light mode' /> : <Image src={DarkMode} alt='dark mode' />} + </SIconButton> + </SBox> + </StyledHeader> + ); +}; diff --git a/src/containers/Header/MobileHeader.tsx b/src/containers/Header/MobileHeader.tsx new file mode 100644 index 0000000..0faed2a --- /dev/null +++ b/src/containers/Header/MobileHeader.tsx @@ -0,0 +1,136 @@ +import React from 'react'; +import { styled } from '@mui/material/styles'; +import { Box, IconButton, Drawer, List, ListItem, Typography } from '@mui/material'; +import { useTranslation } from 'next-i18next'; +import Image from 'next/image'; + +import { StyledHeader, LogoContainer, Logo, HeaderProps } from '~/containers'; +import { BasicSelect, Gas } from '~/components'; +import { useCustomTheme } from '~/hooks'; + +import LogoDark from '~/assets/icons/logoDark.svg'; +import LogoLight from '~/assets/icons/logoLight.svg'; +import LightMode from '~/assets/icons/lightMode.svg'; +import DarkMode from '~/assets/icons/darkMode.svg'; +import SearchDark from '~/assets/icons/searchDark.svg'; +import SearchLight from '~/assets/icons/searchLight.svg'; +import MenuDark from '~/assets/icons/menuDark.svg'; +import MenuLight from '~/assets/icons/menuLight.svg'; +import CloseDark from '~/assets/icons/closeDark.svg'; +import CloseLight from '~/assets/icons/closeLight.svg'; + +interface MobileHeaderProps extends HeaderProps {} + +export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap, changeTheme }: MobileHeaderProps) => { + const { + t, + i18n: { language }, + } = useTranslation(); + + const [drawerOpen, setDrawerOpen] = React.useState(false); + + const toggleDrawer = (open: boolean) => () => { + setDrawerOpen(open); + }; + + return ( + <StyledHeader> + <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> + <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> + </LogoContainer> + <IconsContainer> + <SIconButton> + {theme === 'dark' ? ( + <Image src={SearchDark} alt='search-icon' /> + ) : ( + <Image src={SearchLight} alt='search-icon' /> + )} + </SIconButton> + <SIconButton onClick={toggleDrawer(true)}> + {theme === 'dark' ? <Image src={MenuDark} alt='menu-icon' /> : <Image src={MenuLight} alt='menu-icon' />} + </SIconButton> + </IconsContainer> + <Menu anchor='right' open={drawerOpen} onClose={toggleDrawer(false)}> + <DrawerContent> + <DrawerHeader> + <Typography>{t('HOME.menu')}</Typography> + <SIconButton onClick={toggleDrawer(false)} aria-label='close menu'> + <Image src={theme === 'dark' ? CloseDark : CloseLight} alt='close icon' /> + </SIconButton> + </DrawerHeader> + <List> + <ListItem> + <Gas /> + </ListItem> + <ListItem> + <BasicSelect + value={t(`LOCALES.${language}`)} + setValue={handleChangeLanguage} + list={Object.values(localesMap)} + /> + </ListItem> + <ListItem> + <SIconButton onClick={changeTheme}> + {theme === 'dark' ? ( + <Image src={LightMode} alt='light mode' /> + ) : ( + <Image src={DarkMode} alt='dark mode' /> + )} + </SIconButton> + </ListItem> + </List> + </DrawerContent> + </Menu> + </StyledHeader> + ); +}; + +export default MobileHeader; + +const IconsContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + alignItems: 'center', + gap: currentTheme.gap, + }; +}); + +const SIconButton = styled(IconButton)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + width: '3.5rem', + height: '3.5rem', + }; +}); + +const Menu = styled(Drawer)(() => { + return { + width: '100%', + }; +}); + +const DrawerContent = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + return { + width: '100%', + height: '100%', + backgroundColor: currentTheme.backgroundPrimary, + padding: currentTheme.padding, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + }; +}); + +const DrawerHeader = styled(Box)(() => ({ + width: '100%', + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + boxSizing: 'border-box', +})); diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index c347bc4..6c0d101 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -1,28 +1,33 @@ import { styled } from '@mui/material/styles'; -import { IconButton, Box } from '@mui/material'; +import { IconButton, Box, useMediaQuery } from '@mui/material'; import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; -import { BasicSelect, SearchBar, Gas, SBox } from '~/components'; -import { useCustomTheme } from '~/hooks/useContext/useTheme'; +import { useCustomTheme } from '~/hooks'; import { getConfig } from '~/config'; - -import LogoDark from '~/assets/icons/logoDark.svg'; -import LogoLight from '~/assets/icons/logoLight.svg'; -import LightMode from '~/assets/icons/lightMode.svg'; -import DarkMode from '~/assets/icons/darkMode.svg'; +import { MobileHeader } from './MobileHeader'; +import { DesktopHeader } from './DesktopHeader'; const { DEFAULT_LANG } = getConfig(); +export interface HeaderProps { + theme: 'light' | 'dark'; + goToHome: () => void; + handleChangeLanguage: (value: string) => void; + localesMap: Record<string, string>; + changeTheme: () => void; +} + export const Header = () => { const { changeTheme, theme } = useCustomTheme(); const { t, - i18n: { changeLanguage, language }, + i18n: { changeLanguage }, } = useTranslation(); const router = useRouter(); const { locales, pathname, query } = router; + const isMobile = useMediaQuery('(max-width:600px)'); const localesMap = locales ? Object.fromEntries(locales.map((locale) => [locale, t(`LOCALES.${locale}`)])) : {}; @@ -42,61 +47,66 @@ export const Header = () => { changeLanguage(locale); }; - const handleLogoClick = () => { + const goToHome = () => { router.push('/'); }; return ( - <StyledHeader> - <LogoContainer onClick={handleLogoClick} role='button' aria-label='Navigate to home'> - <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> - </LogoContainer> - <SBox> - <Gas /> - <SearchBar /> - <BasicSelect - value={t(`LOCALES.${language}`)} - setValue={handleChangeLanguage} - list={Object.values(localesMap)} + <> + {isMobile && ( + <MobileHeader + theme={theme} + goToHome={goToHome} + handleChangeLanguage={handleChangeLanguage} + localesMap={localesMap} + changeTheme={changeTheme} /> - <SIconButton onClick={changeTheme}> - {theme === 'dark' ? <Image src={LightMode} alt='light mode' /> : <Image src={DarkMode} alt='dark mode' />} - </SIconButton> - </SBox> - </StyledHeader> + )} + {!isMobile && ( + <DesktopHeader + theme={theme} + goToHome={goToHome} + handleChangeLanguage={handleChangeLanguage} + localesMap={localesMap} + changeTheme={changeTheme} + /> + )} + </> ); }; -const StyledHeader = styled('header')({ - display: 'flex', - height: '5.5rem', - padding: '1rem', - alignItems: 'center', - justifyContent: 'space-between', - width: '100%', +export const StyledHeader = styled('header')(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + padding: currentTheme.padding, + alignItems: 'center', + justifyContent: 'space-between', + width: '100%', + }; }); -const LogoContainer = styled(Box)({ +export const LogoContainer = styled(Box)({ display: 'flex', alignItems: 'center', height: '100%', flexShrink: 0, }); -const Logo = styled(Image)({ +export const Logo = styled(Image)({ width: '13rem', height: 'auto', maxHeight: '100%', }); -const SIconButton = styled(IconButton)(() => { +export const SIconButton = styled(IconButton)(() => { const { currentTheme } = useCustomTheme(); return { - color: `${currentTheme.textPrimary}`, - backgroundColor: `${currentTheme.backgroundSecondary}`, - borderRadius: `${currentTheme.borderRadius}`, - padding: '1rem', - gap: '0.5rem', + color: currentTheme.textPrimary, + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + gap: currentTheme.gap, width: '3.5rem', height: '3.5rem', }; diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 77b3c3e..9039dd4 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -13,14 +13,17 @@ export const Landing = () => { ); }; -const LandingContainer = styled('main')({ +const LandingContainer = styled('main')(({ theme }) => ({ display: 'flex', flexDirection: 'column', - padding: '0 8rem', + padding: '0 7rem', alignItems: 'center', justifyContent: 'center', width: '100%', gap: '4rem', marginTop: '4rem', marginBottom: '4rem', -}); + [theme.breakpoints.down('sm')]: { + padding: '0 1rem', + }, +})); diff --git a/src/containers/Layout/index.tsx b/src/containers/Layout/index.tsx index 70c923f..503069f 100644 --- a/src/containers/Layout/index.tsx +++ b/src/containers/Layout/index.tsx @@ -1,5 +1,5 @@ import { ReactNode, FunctionComponent } from 'react'; -import { Box, styled } from '@mui/material'; +import { Box } from '@mui/material'; import { Header, Footer } from '~/containers'; interface AppLayoutProps { @@ -11,17 +11,10 @@ const AppLayout: FunctionComponent<AppLayoutProps> = (props) => { return ( <> <Header /> - <Container>{children}</Container> - + <Box>{children}</Box> <Footer /> </> ); }; -const Container = styled(Box)(() => { - return { - width: '85%', - }; -}); - export { AppLayout }; diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 35c681e..8459a2f 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -10,7 +10,7 @@ export const LockedAssets = () => { const { ecosystemData, totalL1TVL } = useData(); return ( - <section> + <StyledSection> {ecosystemData && ( <> <LockedAssetsContainer> @@ -23,10 +23,14 @@ export const LockedAssets = () => { <TotalValueLocked tvl={ecosystemData.l1Tvl} /> </> )} - </section> + </StyledSection> ); }; +export const StyledSection = styled('section')(() => ({ + width: '100%', +})); + const LockedAssetsContainer = styled(Box)(() => ({ display: 'flex', justifyContent: 'space-between', diff --git a/src/pages/layout.tsx b/src/pages/layout.tsx index d88bf38..c3b9ce9 100644 --- a/src/pages/layout.tsx +++ b/src/pages/layout.tsx @@ -12,12 +12,6 @@ export default function Layout({ children }: { children: React.ReactNode }) { <p>This website requires JavaScript to function properly.</p> </NoScriptMessage> - {/* TODO: remove when responsive is done */} - <ResponsiveDisclaimer> - <p> - This website is not yet optimized for mobile devices. Please use a desktop browser for the best experience. - </p> - </ResponsiveDisclaimer> <Header /> {children} <Footer /> @@ -51,20 +45,3 @@ const NoScriptMessage = styled('noscript')(() => { }, }; }); - -const ResponsiveDisclaimer = styled('div')(() => { - return { - display: 'none', - margin: '0 auto', - textAlign: 'start', - fontSize: '1.6rem', - padding: '1rem 0.8rem 1rem', - '@media (max-width: 600px)': { - display: 'block', - }, - p: { - padding: '1rem 0', - margin: 0, - }, - }; -}); From 0948c7881210c1bd5b8c4b59747dcc7b32f66db3 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 13 Aug 2024 14:49:14 -0300 Subject: [PATCH 42/82] feat: search display (#18) closes ZKS-141 --- public/locales/en/common.json | 7 ++- public/locales/es/common.json | 7 ++- src/components/NotFound.tsx | 11 ----- src/components/SearchBar.tsx | 66 +++++++++++++++++++------- src/components/TitleBanner.tsx | 6 ++- src/components/index.ts | 1 - src/containers/Dashboard/index.tsx | 56 ++++++++++++++++++---- src/containers/Header/MobileHeader.tsx | 7 +-- src/containers/Header/index.tsx | 9 ++-- src/hooks/useContext/index.ts | 1 + src/hooks/useContext/useData.tsx | 2 +- src/hooks/useContext/useSearch.tsx | 12 +++++ src/hooks/useContext/useTheme.tsx | 2 +- src/pages/search/index.tsx | 42 ++++++++++++++++ src/providers/SearchProvider.tsx | 59 +++++++++++++++++++++++ src/providers/StateProvider.tsx | 6 --- src/providers/index.tsx | 9 ++-- 17 files changed, 241 insertions(+), 62 deletions(-) delete mode 100644 src/components/NotFound.tsx create mode 100644 src/hooks/useContext/useSearch.tsx create mode 100644 src/pages/search/index.tsx create mode 100644 src/providers/SearchProvider.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index dd53656..dcd2d1c 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -6,6 +6,7 @@ "transfer": "ERC-20 Transfer", "home": "Home", "menu": "Menu", + "search": "Search", "LOCKEDASSETS": { "lockedAssets": "Locked assets", "lockedAssetsDescription": "Locked assets in Elastic Chain Ecosystem", @@ -20,9 +21,11 @@ "tvl": "TVL (L1)", "type": "Type", "search": "Search (Chain)", - "notFound": "Chain not found", "noRPC": "No RPC", - "noMetadata": "No Metadata" + "noMetadata": "No Metadata", + "searchResults": "Search results", + "enterSearchTerm": "Enter the name or chain ID", + "notFound": "No results found" } }, "CHAIN": { diff --git a/public/locales/es/common.json b/public/locales/es/common.json index d91f19c..7eeb2d6 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -6,6 +6,7 @@ "transfer": "Transferencia ERC-20", "home": "Inicio", "menu": "Menรบ", + "search": "Bรบsqueda", "LOCKEDASSETS": { "lockedAssets": "Activos bloqueados", "lockedAssetsDescription": "Activos bloqueados en el ecosistema de Elastic Chain", @@ -20,9 +21,11 @@ "tvl": "TVL (L1)", "type": "Tipo", "search": "Buscar (Cadena)", - "notFound": "Cadena no encontrada", "noRPC": "Sin RPC", - "noMetadata": "Sin Metadata" + "noMetadata": "Sin Metadata", + "searchResults": "Resultados de la bรบsqueda", + "enterSearchTerm": "Ingrese el nombre o ID de la cadena", + "notFound": "No se encontraron resultados" } }, "CHAIN": { diff --git a/src/components/NotFound.tsx b/src/components/NotFound.tsx deleted file mode 100644 index 358cdd8..0000000 --- a/src/components/NotFound.tsx +++ /dev/null @@ -1,11 +0,0 @@ -interface NotFoundProps { - text: string; -} - -export const NotFound = ({ text }: NotFoundProps) => { - return ( - <div> - <p>{text}</p> - </div> - ); -}; diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 99ce3e9..d8188ff 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,42 +1,71 @@ import { useTranslation } from 'next-i18next'; -import { styled, TextField, InputAdornment } from '@mui/material'; +import { styled, TextField, InputAdornment, Box } from '@mui/material'; import Image from 'next/image'; import SearchDark from '~/assets/icons/searchDark.svg'; import SearchLight from '~/assets/icons/searchLight.svg'; -import { useCustomTheme, useStateContext } from '~/hooks'; +import { useCustomTheme, useSearchContext } from '~/hooks'; +import { SIconButton } from '~/containers'; + +import CloseDark from '~/assets/icons/closeDark.svg'; +import CloseLight from '~/assets/icons/closeLight.svg'; export const SearchBar = () => { const { t } = useTranslation(); - const { searchTerm, setSearchTerm } = useStateContext(); + const { searchTerm, setSearchTerm, closeSearch, isSearch, navigateToSearch } = useSearchContext(); const { theme } = useCustomTheme(); const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => { const value = event.target.value; setSearchTerm(value); }; + return ( - <StyledTextField - variant='outlined' - value={searchTerm} - onChange={handleChange} - placeholder={t('HOME.DASHBOARD.search')} - InputProps={{ - startAdornment: ( - <InputAdornment position='start'> - <Image src={theme === 'dark' ? SearchDark : SearchLight} alt='search' /> - </InputAdornment> - ), - }} - /> + <SearchContainer> + <StyledTextField + variant='outlined' + value={searchTerm} + onChange={handleChange} + placeholder={t('HOME.DASHBOARD.search')} + onClick={navigateToSearch} + InputProps={{ + startAdornment: ( + <InputAdornment position='start'> + <Image src={theme === 'dark' ? SearchDark : SearchLight} alt='search' /> + </InputAdornment> + ), + }} + /> + {isSearch && ( + <SIconButton onClick={closeSearch} aria-label='close-search'> + <Image src={theme === 'dark' ? CloseDark : CloseLight} alt='close icon' /> + </SIconButton> + )} + </SearchContainer> ); }; +const SearchContainer = styled(Box)(() => { + const { currentTheme } = useCustomTheme(); + const { isSearch } = useSearchContext(); + + return { + display: 'flex', + ...(isSearch && { + width: '100%', + padding: currentTheme.padding, + justifyContent: 'space-between', + gap: currentTheme.gap, + }), + }; +}); + const StyledTextField = styled(TextField)(() => { const { theme, currentTheme } = useCustomTheme(); + const { isSearch } = useSearchContext(); return { - width: '15rem', + width: isSearch ? '95%' : '15rem', height: '3.5rem', borderRadius: currentTheme.borderRadius, border: currentTheme.border, @@ -57,7 +86,8 @@ const StyledTextField = styled(TextField)(() => { border: 'none', }, '&.Mui-focused fieldset': { - border: 'none', + border: `0.0625rem solid ${currentTheme.textPrimary}`, + borderRadius: currentTheme.borderRadius, }, }, }; diff --git a/src/components/TitleBanner.tsx b/src/components/TitleBanner.tsx index b683a75..0c45b7d 100644 --- a/src/components/TitleBanner.tsx +++ b/src/components/TitleBanner.tsx @@ -1,5 +1,5 @@ import { useTranslation } from 'next-i18next'; -import { Box, Typography, styled } from '@mui/material'; +import { Box, Typography, styled, useMediaQuery } from '@mui/material'; import Image from 'next/image'; import ZkLogoDark from '~/assets/icons/zkLogoDark.svg'; @@ -24,9 +24,11 @@ export const TitleBanner = () => { const TitleBox = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); + const isMobile = useMediaQuery('(max-width:600px)'); return { - display: 'flex', + display: isMobile ? 'grid' : 'flex', + gridTemplateColumns: isMobile ? 'auto 1fr' : 'none', alignItems: 'center', alignSelf: 'flex-start', gap: currentTheme.gap, diff --git a/src/components/index.ts b/src/components/index.ts index febef04..77249e1 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -11,7 +11,6 @@ export * from './RPC'; export * from './TVL'; export * from './ChainInformation'; export * from './BasicSelect'; -export * from './NotFound'; export * from './Gas'; export * from './TvlContentBox'; export * from './Breadcrumb'; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index e95f29f..fd0415f 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,19 +1,18 @@ import { useTranslation } from 'next-i18next'; +import { Typography, styled } from '@mui/material'; -import { NotFound, DataTable, Title } from '~/components'; -import { useData, useStateContext } from '~/hooks'; -import { StyledSection } from '~/containers'; +import { DataTable } from '~/components'; +import { useData, useSearchContext, useCustomTheme } from '~/hooks'; export const Dashboard = () => { const { t } = useTranslation(); const { ecosystemData } = useData(); - const { searchTerm } = useStateContext(); + const { searchTerm, isSearch } = useSearchContext(); const filteredChains = ecosystemData?.zkChains.filter((chain) => { const chainIdStr = String(chain.chainId); const formattedSearchTerm = String(searchTerm).toLowerCase(); - // Check if either chain name or chain ID matches the search term const matchesName = chain.chainName.toLowerCase().includes(formattedSearchTerm); const matchesId = chainIdStr.includes(formattedSearchTerm); @@ -22,14 +21,53 @@ export const Dashboard = () => { const availableChains = filteredChains?.length > 0; + const showResults = isSearch && availableChains && searchTerm; + const enterSearchTerm = isSearch && !searchTerm; + return ( - <StyledSection> + <DashboardContainer> <header> - <Title title={t('HOME.DASHBOARD.title')} /> + {!isSearch && <h2>{t('HOME.DASHBOARD.title')}</h2>} + + {showResults && ( + <SearchLabel>{`${t( + 'HOME.DASHBOARD.searchResults', + )} '${searchTerm}' (${filteredChains?.length})`}</SearchLabel> + )} + + {enterSearchTerm && <SearchLabel>{t('HOME.DASHBOARD.enterSearchTerm')}</SearchLabel>} </header> {availableChains && <DataTable chains={filteredChains} />} - {!availableChains && <NotFound text={t('HOME.DASHBOARD.notFound')} />} - </StyledSection> + {!availableChains && <SearchLabel>{t('HOME.DASHBOARD.notFound')}</SearchLabel>} + </DashboardContainer> ); }; + +const DashboardContainer = styled('section')(({ theme }) => { + const { isSearch } = useSearchContext(); + + return { + width: '100%', + ...(isSearch && { + padding: '0 7rem', + minHeight: 'calc(100vh - 11rem)', + [theme.breakpoints.down('sm')]: { + padding: '0 1rem', + }, + }), + }; +}); + +const SearchLabel = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + + return { + color: currentTheme.textPrimary, + fontSize: '1rem', + fontWeight: 400, + lineHeight: '1.5rem', + textAlign: 'center', + margin: '1.5rem 0', + }; +}); diff --git a/src/containers/Header/MobileHeader.tsx b/src/containers/Header/MobileHeader.tsx index 0faed2a..fab9d19 100644 --- a/src/containers/Header/MobileHeader.tsx +++ b/src/containers/Header/MobileHeader.tsx @@ -6,7 +6,7 @@ import Image from 'next/image'; import { StyledHeader, LogoContainer, Logo, HeaderProps } from '~/containers'; import { BasicSelect, Gas } from '~/components'; -import { useCustomTheme } from '~/hooks'; +import { useCustomTheme, useSearchContext } from '~/hooks'; import LogoDark from '~/assets/icons/logoDark.svg'; import LogoLight from '~/assets/icons/logoLight.svg'; @@ -26,6 +26,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap t, i18n: { language }, } = useTranslation(); + const { navigateToSearch } = useSearchContext(); const [drawerOpen, setDrawerOpen] = React.useState(false); @@ -39,7 +40,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> </LogoContainer> <IconsContainer> - <SIconButton> + <SIconButton onClick={navigateToSearch}> {theme === 'dark' ? ( <Image src={SearchDark} alt='search-icon' /> ) : ( @@ -96,7 +97,7 @@ const IconsContainer = styled(Box)(() => { }; }); -const SIconButton = styled(IconButton)(() => { +export const SIconButton = styled(IconButton)(() => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textPrimary, diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 6c0d101..e9e11e2 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -4,8 +4,9 @@ import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; -import { useCustomTheme } from '~/hooks'; +import { useCustomTheme, useSearchContext } from '~/hooks'; import { getConfig } from '~/config'; +import { SearchBar } from '~/components'; import { MobileHeader } from './MobileHeader'; import { DesktopHeader } from './DesktopHeader'; @@ -26,6 +27,7 @@ export const Header = () => { i18n: { changeLanguage }, } = useTranslation(); const router = useRouter(); + const { isSearch } = useSearchContext(); const { locales, pathname, query } = router; const isMobile = useMediaQuery('(max-width:600px)'); @@ -53,7 +55,8 @@ export const Header = () => { return ( <> - {isMobile && ( + {isSearch && <SearchBar />} + {isMobile && !isSearch && ( <MobileHeader theme={theme} goToHome={goToHome} @@ -62,7 +65,7 @@ export const Header = () => { changeTheme={changeTheme} /> )} - {!isMobile && ( + {!isMobile && !isSearch && ( <DesktopHeader theme={theme} goToHome={goToHome} diff --git a/src/hooks/useContext/index.ts b/src/hooks/useContext/index.ts index c570b64..49cefab 100644 --- a/src/hooks/useContext/index.ts +++ b/src/hooks/useContext/index.ts @@ -1,3 +1,4 @@ export * from './useStateContext'; export * from './useData'; export * from './useTheme'; +export * from './useSearch'; diff --git a/src/hooks/useContext/useData.tsx b/src/hooks/useContext/useData.tsx index 43e0a8a..eed1908 100644 --- a/src/hooks/useContext/useData.tsx +++ b/src/hooks/useContext/useData.tsx @@ -6,7 +6,7 @@ export const useData = () => { const context = useContext(DataContext); if (context === undefined) { - throw new Error('useData must be used within a StateProvider'); + throw new Error('useData must be used within a DataProvider'); } return context; diff --git a/src/hooks/useContext/useSearch.tsx b/src/hooks/useContext/useSearch.tsx new file mode 100644 index 0000000..9c6c741 --- /dev/null +++ b/src/hooks/useContext/useSearch.tsx @@ -0,0 +1,12 @@ +import { useContext } from 'react'; +import { SearchContext } from '~/providers/SearchProvider'; + +export const useSearchContext = () => { + const context = useContext(SearchContext); + + if (context === undefined) { + throw new Error('useSearchContext must be used within a SearchProvider'); + } + + return context; +}; diff --git a/src/hooks/useContext/useTheme.tsx b/src/hooks/useContext/useTheme.tsx index 35566f9..7cd1e7f 100644 --- a/src/hooks/useContext/useTheme.tsx +++ b/src/hooks/useContext/useTheme.tsx @@ -6,7 +6,7 @@ export const useCustomTheme = () => { const context = useContext(ThemeContext); if (context === undefined) { - throw new Error('useTheme must be used within a StateProvider'); + throw new Error('useTheme must be used within a ThemeProvider'); } return context; diff --git a/src/pages/search/index.tsx b/src/pages/search/index.tsx new file mode 100644 index 0000000..2445a09 --- /dev/null +++ b/src/pages/search/index.tsx @@ -0,0 +1,42 @@ +import { useEffect } from 'react'; +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { GetStaticProps } from 'next'; +import { useTranslation } from 'next-i18next'; + +import { CustomHead } from '~/components'; +import { Dashboard } from '~/containers'; +import { getConfig } from '~/config'; +import { useSearchContext } from '~/hooks'; + +const { DEFAULT_LANG, SUPPORTED_LANGUAGES } = getConfig(); + +const Search = () => { + const { t } = useTranslation(); + const { setIsSearch } = useSearchContext(); + + useEffect(() => { + setIsSearch(true); + + // Cleanup function to reset the state when the component unmounts + return () => setIsSearch(false); + }, [setIsSearch]); + + return ( + <> + <CustomHead title={t('HOME.search')} /> + <Dashboard /> + </> + ); +}; + +export const getStaticProps: GetStaticProps = async ({ locale }) => { + const i18Config = await serverSideTranslations(locale || DEFAULT_LANG, ['common'], null, SUPPORTED_LANGUAGES); + + return { + props: { + ...i18Config, + }, + }; +}; + +export default Search; diff --git a/src/providers/SearchProvider.tsx b/src/providers/SearchProvider.tsx new file mode 100644 index 0000000..be79b41 --- /dev/null +++ b/src/providers/SearchProvider.tsx @@ -0,0 +1,59 @@ +import { createContext, useState, useEffect, useCallback } from 'react'; +import { useRouter } from 'next/router'; + +type ContextType = { + searchTerm: string; + setSearchTerm: (val: string) => void; + isSearch: boolean; + setIsSearch: (val: boolean) => void; + navigateToSearch: () => void; + closeSearch: () => void; +}; + +interface StateProps { + children: React.ReactElement; +} + +export const SearchContext = createContext({} as ContextType); + +export const SearchProvider = ({ children }: StateProps) => { + const [searchTerm, setSearchTerm] = useState<string>(''); + const [isSearch, setIsSearch] = useState<boolean>(false); + const [previousPage, setPreviousPage] = useState<string>(''); + const router = useRouter(); + + const navigateToSearch = useCallback(() => { + setPreviousPage(router.asPath); // Save the current page before navigating to search + router.push('/search'); + }, [router]); + + const closeSearch = useCallback(() => { + if (previousPage && previousPage !== '/search') { + router.push(previousPage); // Go back to the previous page if it's not the search page + } else { + router.push('/'); // Otherwise, go to the home page + } + setIsSearch(false); + }, [previousPage, router]); + + useEffect(() => { + if (!isSearch) { + setPreviousPage(''); + } + }, [isSearch]); + + return ( + <SearchContext.Provider + value={{ + searchTerm, + setSearchTerm, + isSearch, + setIsSearch, + navigateToSearch, + closeSearch, + }} + > + {children} + </SearchContext.Provider> + ); +}; diff --git a/src/providers/StateProvider.tsx b/src/providers/StateProvider.tsx index 1b8c7f0..280aa75 100644 --- a/src/providers/StateProvider.tsx +++ b/src/providers/StateProvider.tsx @@ -6,9 +6,6 @@ type ContextType = { isError: boolean; setIsError: (val: boolean) => void; - - searchTerm: string; - setSearchTerm: (val: string) => void; }; interface StateProps { @@ -20,7 +17,6 @@ export const StateContext = createContext({} as ContextType); export const StateProvider = ({ children }: StateProps) => { const [loading, setLoading] = useState<boolean>(false); const [isError, setIsError] = useState<boolean>(false); - const [searchTerm, setSearchTerm] = useState<string>(''); return ( <StateContext.Provider @@ -29,8 +25,6 @@ export const StateProvider = ({ children }: StateProps) => { setLoading, isError, setIsError, - searchTerm, - setSearchTerm, }} > {children} diff --git a/src/providers/index.tsx b/src/providers/index.tsx index 6bfc7e8..feab01c 100644 --- a/src/providers/index.tsx +++ b/src/providers/index.tsx @@ -4,6 +4,7 @@ import { StateProvider } from './StateProvider'; import { ThemeProvider } from './ThemeProvider'; import { WalletProvider } from './WalletProvider'; import { DataProvider } from './DataProvider'; +import { SearchProvider } from './SearchProvider'; type Props = { children: ReactNode; @@ -13,9 +14,11 @@ export const Providers = ({ children }: Props) => { return ( <ThemeProvider> <StateProvider> - <WalletProvider> - <DataProvider>{children}</DataProvider> - </WalletProvider> + <SearchProvider> + <WalletProvider> + <DataProvider>{children}</DataProvider> + </WalletProvider> + </SearchProvider> </StateProvider> </ThemeProvider> ); From 52117eb8a20c14516796fd50721a13bda80cd308 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 14 Aug 2024 10:45:49 -0300 Subject: [PATCH 43/82] feat: skeleton loaders (#19) closes ZKS-136 --- src/components/Gas.tsx | 32 ++++++++------ .../ChainDetail/SkeletonChainDetail.tsx | 43 +++++++++++++++++++ src/containers/ChainDetail/index.tsx | 19 +++++--- src/containers/Landing/SkeletonLanding.tsx | 34 +++++++++++++++ src/containers/Landing/index.tsx | 15 +++++-- src/utils/services.ts | 4 ++ 6 files changed, 126 insertions(+), 21 deletions(-) create mode 100644 src/containers/ChainDetail/SkeletonChainDetail.tsx create mode 100644 src/containers/Landing/SkeletonLanding.tsx diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index 66824d0..8296c7c 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -1,29 +1,35 @@ -import { Typography, Box, styled } from '@mui/material'; +import { Typography, Box, styled, Skeleton } from '@mui/material'; import Image from 'next/image'; import { useTranslation } from 'next-i18next'; import GasLight from '~/assets/icons/gasLight.svg'; import GasDark from '~/assets/icons/gasDark.svg'; -import { useCustomTheme } from '~/hooks'; +import { useCustomTheme, useData } from '~/hooks'; import { SBox } from '~/components'; export const Gas = () => { const { theme } = useCustomTheme(); const { t } = useTranslation(); + const { isEcosystemLoading } = useData(); return ( <GasContainer> - <Image src={theme === 'dark' ? GasDark : GasLight} alt='gas' /> - <Box> - <SBox> - <GasLabel>{t('HOME.gasPrice')}:</GasLabel> - <GasValueText>10 wei</GasValueText> - </SBox> - <SBox> - <GasLabel>{t('HOME.transfer')}:</GasLabel> - <GasValueText>$10</GasValueText> - </SBox> - </Box> + {isEcosystemLoading && <Skeleton variant='rectangular' width={175} height={50} sx={{ borderRadius: 4 }} />} + {!isEcosystemLoading && ( + <> + <Image src={theme === 'dark' ? GasDark : GasLight} alt='gas' /> + <Box> + <SBox> + <GasLabel>{t('HOME.gasPrice')}:</GasLabel> + <GasValueText>10 wei</GasValueText> + </SBox> + <SBox> + <GasLabel>{t('HOME.transfer')}:</GasLabel> + <GasValueText>$10</GasValueText> + </SBox> + </Box> + </> + )} </GasContainer> ); }; diff --git a/src/containers/ChainDetail/SkeletonChainDetail.tsx b/src/containers/ChainDetail/SkeletonChainDetail.tsx new file mode 100644 index 0000000..912b1c9 --- /dev/null +++ b/src/containers/ChainDetail/SkeletonChainDetail.tsx @@ -0,0 +1,43 @@ +import { Box, Skeleton } from '@mui/material'; + +export const SkeletonChainDetail = () => { + return ( + <Box sx={{ padding: 4 }} width='100%'> + {/* Breadcrumb Skeleton */} + <Skeleton variant='text' width='20%' height={40} sx={{ marginBottom: 2, borderRadius: 4 }} /> + + {/* Chain Metadata Skeleton */} + <Skeleton variant='rectangular' width='100%' height={150} sx={{ borderRadius: 4, marginBottom: 4 }} /> + + {/* Chain Information Skeleton */} + <Box sx={{ marginBottom: 4 }}> + <Skeleton variant='text' width='40%' height={60} sx={{ marginBottom: 2, borderRadius: 4 }} /> + <Skeleton variant='rectangular' width='100%' height={80} sx={{ borderRadius: 4, marginBottom: 2 }} /> + <Skeleton variant='rectangular' width='100%' height={80} sx={{ borderRadius: 4 }} /> + </Box> + + {/* RPCs Skeleton */} + <Box sx={{ marginBottom: 4 }}> + <Skeleton variant='text' width='40%' height={60} sx={{ marginBottom: 2, borderRadius: 4 }} /> + <Skeleton variant='rectangular' width='100%' height={80} sx={{ borderRadius: 4, marginBottom: 2 }} /> + </Box> + + {/* Fee Params Skeleton */} + <Box sx={{ marginBottom: 4 }}> + <Skeleton variant='text' width='40%' height={60} sx={{ marginBottom: 2, borderRadius: 4 }} /> + <Skeleton variant='rectangular' width='100%' height={80} sx={{ borderRadius: 4, marginBottom: 2 }} /> + </Box> + + {/* ZKChain TVL Skeleton */} + <Box> + <Skeleton variant='text' width='40%' height={60} sx={{ marginBottom: 2, borderRadius: 4 }} /> + <Box> + <Skeleton variant='rectangular' width='100%' height={50} sx={{ marginBottom: 2 }} /> + {[...Array(5)].map((_, index) => ( + <Skeleton key={index} variant='rectangular' width='100%' height={50} sx={{ marginBottom: 1 }} /> + ))} + </Box> + </Box> + </Box> + ); +}; diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx index 0ea1ca7..a2f97bc 100644 --- a/src/containers/ChainDetail/index.tsx +++ b/src/containers/ChainDetail/index.tsx @@ -1,18 +1,27 @@ import { Box, styled } from '@mui/material'; +import { useData } from '~/hooks'; import { ChainMetadata } from './ChainMetadata'; import { ChainDescription } from './ChainDescription'; +import { SkeletonChainDetail } from './SkeletonChainDetail'; import { Breadcrumb } from '~/components'; export const ChainDetail = () => { + const { isChainLoading } = useData(); + return ( <ChainContainer> - <Box> - <Breadcrumb isChain={true} /> - <ChainMetadata /> - </Box> + {isChainLoading && <SkeletonChainDetail />} + {!isChainLoading && ( + <> + <Box> + <Breadcrumb isChain={true} /> + <ChainMetadata /> + </Box> - <ChainDescription /> + <ChainDescription /> + </> + )} </ChainContainer> ); }; diff --git a/src/containers/Landing/SkeletonLanding.tsx b/src/containers/Landing/SkeletonLanding.tsx new file mode 100644 index 0000000..791d602 --- /dev/null +++ b/src/containers/Landing/SkeletonLanding.tsx @@ -0,0 +1,34 @@ +import { Box } from '@mui/material'; +import { Skeleton } from '@mui/material'; + +export const SkeletonLanding = () => { + return ( + <Box width='100%'> + {/* Title Skeleton */} + <Skeleton variant='text' width='40%' height={80} sx={{ marginBottom: 4, borderRadius: 4 }} /> + + {/* Sub-Title Skeleton */} + <Skeleton variant='text' width='100%' height={60} sx={{ marginBottom: 4, borderRadius: 4 }} /> + + {/* Main Container Skeleton for Locked Assets */} + <Skeleton variant='rectangular' width='100%' height={300} sx={{ borderRadius: 4, marginBottom: 12 }} /> + + {/* Secondary Title Skeleton for Chain List */} + <Skeleton variant='text' width='30%' height={60} sx={{ marginBottom: 4, borderRadius: 4 }} /> + + {/* Table Skeleton */} + <Box> + <Skeleton variant='rectangular' width='100%' height={50} sx={{ marginBottom: 2, borderRadius: 4 }} /> + {[...Array(6)].map((_, index) => ( + <Skeleton + key={index} + variant='rectangular' + width='100%' + height={50} + sx={{ marginBottom: 1, borderRadius: 4 }} + /> + ))} + </Box> + </Box> + ); +}; diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 9039dd4..7479882 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -2,13 +2,22 @@ import { styled } from '@mui/material/styles'; import { Dashboard, LockedAssets } from '~/containers'; import { TitleBanner } from '~/components'; +import { useData } from '~/hooks'; +import { SkeletonLanding } from './SkeletonLanding'; export const Landing = () => { + const { isEcosystemLoading } = useData(); + return ( <LandingContainer> - <TitleBanner /> - <LockedAssets /> - <Dashboard /> + {isEcosystemLoading && <SkeletonLanding />} + {!isEcosystemLoading && ( + <> + <TitleBanner /> + <LockedAssets /> + <Dashboard /> + </> + )} </LandingContainer> ); }; diff --git a/src/utils/services.ts b/src/utils/services.ts index 6c9490b..6715c04 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -4,9 +4,12 @@ import chainMockData from '~/data/chainMockData.json'; const { API_URL } = getConfig(); +const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); + export const fetchEcosystemData = async () => { // temporary for mock data if (!API_URL) { + await delay(2000); // Simulate 2 seconds delay return Promise.resolve(ecosystemMockData); } const res = await fetch(`${API_URL}/ecosystem`); @@ -19,6 +22,7 @@ export const fetchEcosystemData = async () => { export const fetchChainData = async (chainId: number) => { // temporary for mock data if (!API_URL) { + await delay(2000); // Simulate 2 seconds delay return Promise.resolve(chainMockData); } const res = await fetch(`${API_URL}/zkchain/${chainId}`); From 7b77477f704f331db699468116d7d0a0975c4eec Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:46:48 -0300 Subject: [PATCH 44/82] feat: mobile menu (#20) closes ZKS-142 --- public/locales/en/common.json | 12 ++-- public/locales/es/common.json | 13 +++-- src/components/BasicSelect.tsx | 52 ++++++++++++----- src/components/Gas.tsx | 11 +++- src/containers/Header/MobileHeader.tsx | 77 +++++++++++++++++++++----- src/pages/search/index.tsx | 2 +- 6 files changed, 127 insertions(+), 40 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index dcd2d1c..a6d7e0c 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -1,12 +1,16 @@ { + "HEADER": { + "lightMode": "Light mode", + "darkMode": "Dark mode", + "menu": "Menu", + "search": "Search", + "gasPrice": "L1 Gas Price", + "transfer": "ERC-20 Transfer" + }, "HOME": { "title": "ZKsync", "subtitle": "Ecosystem", - "gasPrice": "L1 Gas Price", - "transfer": "ERC-20 Transfer", "home": "Home", - "menu": "Menu", - "search": "Search", "LOCKEDASSETS": { "lockedAssets": "Locked assets", "lockedAssetsDescription": "Locked assets in Elastic Chain Ecosystem", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 7eeb2d6..7522d93 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -1,12 +1,17 @@ { + "HEADER": { + "lightMode": "Modo claro", + "darkMode": "Modo oscuro", + "menu": "Menรบ", + "search": "Bรบsqueda", + "gasPrice": "Precio del gas L1", + "transfer": "Transferencia ERC-20" + }, "HOME": { "title": "ZKsync", "subtitle": "Ecosistema", - "gasPrice": "Precio del gas L1", - "transfer": "Transferencia ERC-20", + "home": "Inicio", - "menu": "Menรบ", - "search": "Bรบsqueda", "LOCKEDASSETS": { "lockedAssets": "Activos bloqueados", "lockedAssetsDescription": "Activos bloqueados en el ecosistema de Elastic Chain", diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index f5d5c7c..001e162 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -32,7 +32,7 @@ export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: Basic }; const endIcon = disabled ? null : ( - <Image src={theme === 'dark' ? arrowDownDark : arrowDownLight} alt='arrow-down' width={16} height={16} /> + <Image src={theme === 'dark' ? arrowDownDark : arrowDownLight} alt='arrow-down' width={24} height={24} /> ); return ( @@ -61,36 +61,45 @@ export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: Basic }} > {list.map((explorer) => ( - <MenuItem key={explorer} value={explorer} onClick={() => selectItem(explorer)}> + <SMenuItem key={explorer} value={explorer} onClick={() => selectItem(explorer)}> {explorer} - </MenuItem> + </SMenuItem> ))} </StyledMenu> </SBox> ); }; -export const SBox = styled(Box)(() => { +export const SBox = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { display: 'flex', gap: currentTheme.gap, alignItems: 'center', + [theme.breakpoints.down('sm')]: { + width: '100%', + }, }; }); -const MenuButton = styled(Button)(() => { +const MenuButton = styled(Button)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { width: '7.5rem', height: '3.5rem', - backgroundColor: `${currentTheme.backgroundSecondary}`, - borderRadius: `${currentTheme.borderRadius}`, + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, textTransform: 'none', fontSize: '1rem', - color: `${currentTheme.textPrimary}`, + color: currentTheme.textPrimary, '&:hover': { - backgroundColor: `${currentTheme.backgroundSecondary}`, + backgroundColor: currentTheme.backgroundSecondary, + }, + [theme.breakpoints.down('sm')]: { + width: '100%', + justifyContent: 'space-between', + padding: currentTheme.padding, + alignItems: 'center', }, }; }); @@ -113,18 +122,22 @@ const StyledMenu = styled((props: MenuProps) => ( return { '& .MuiPaper-root': { marginTop: '0.4rem', - width: '7.5rem', + borderRadius: currentTheme.borderRadius, + backgroundColor: currentTheme.backgroundSecondary, '& .MuiMenu-list': { padding: '0.4rem 0', }, '& .MuiMenuItem-root': { - padding: '1.2rem 1.6rem', + padding: '1rem 2rem', gap: '0.8rem', + fontSize: '1rem', + borderRadius: currentTheme.borderRadius, '&:hover': { - backgroundColor: currentTheme.backgroundSecondary, + backgroundColor: currentTheme.backgroundTertiary, + borderRadius: currentTheme.borderRadius, }, '&:active': { @@ -133,15 +146,24 @@ const StyledMenu = styled((props: MenuProps) => ( }, '@media (max-width: 600px)': { - minWidth: 'calc(100% - 7.4rem)', ul: { padding: '0.2rem 0', }, - + '& .MuiMenu-list': { + width: '21rem', + }, '& .MuiMenuItem-root': { - fontSize: '1.4rem', + fontSize: '1rem', }, }, }, }; }); + +export const SMenuItem = styled(MenuItem)(() => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1rem', + borderRadius: currentTheme.borderRadius, + }; +}); diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index 8296c7c..4a3e0db 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -20,11 +20,11 @@ export const Gas = () => { <Image src={theme === 'dark' ? GasDark : GasLight} alt='gas' /> <Box> <SBox> - <GasLabel>{t('HOME.gasPrice')}:</GasLabel> + <GasLabel>{t('HEADER.gasPrice')}:</GasLabel> <GasValueText>10 wei</GasValueText> </SBox> <SBox> - <GasLabel>{t('HOME.transfer')}:</GasLabel> + <GasLabel>{t('HEADER.transfer')}:</GasLabel> <GasValueText>$10</GasValueText> </SBox> </Box> @@ -34,7 +34,7 @@ export const Gas = () => { ); }; -const GasContainer = styled(Box)(() => { +const GasContainer = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { @@ -42,6 +42,11 @@ const GasContainer = styled(Box)(() => { alignItems: 'center', gap: currentTheme.gap, padding: '0.5rem 1rem', + + [theme.breakpoints.down('sm')]: { + display: 'grid', + justifyItems: 'center', + }, }; }); diff --git a/src/containers/Header/MobileHeader.tsx b/src/containers/Header/MobileHeader.tsx index fab9d19..6e8208c 100644 --- a/src/containers/Header/MobileHeader.tsx +++ b/src/containers/Header/MobileHeader.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { styled } from '@mui/material/styles'; -import { Box, IconButton, Drawer, List, ListItem, Typography } from '@mui/material'; +import { Box, IconButton, Drawer, List, ListItem, Typography, Button } from '@mui/material'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; @@ -51,35 +51,44 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap {theme === 'dark' ? <Image src={MenuDark} alt='menu-icon' /> : <Image src={MenuLight} alt='menu-icon' />} </SIconButton> </IconsContainer> - <Menu anchor='right' open={drawerOpen} onClose={toggleDrawer(false)}> + <Menu + open={drawerOpen} + onClose={toggleDrawer(false)} + PaperProps={{ + style: { + width: '100%', + }, + }} + > <DrawerContent> <DrawerHeader> - <Typography>{t('HOME.menu')}</Typography> + <MenuLabel>{t('HEADER.menu')}</MenuLabel> <SIconButton onClick={toggleDrawer(false)} aria-label='close menu'> <Image src={theme === 'dark' ? CloseDark : CloseLight} alt='close icon' /> </SIconButton> </DrawerHeader> - <List> - <ListItem> + <MenuList> + <MenuListItem> <Gas /> - </ListItem> - <ListItem> + </MenuListItem> + <MenuListItem> <BasicSelect value={t(`LOCALES.${language}`)} setValue={handleChangeLanguage} list={Object.values(localesMap)} /> - </ListItem> - <ListItem> - <SIconButton onClick={changeTheme}> + </MenuListItem> + <MenuListItem> + <ThemeButton onClick={changeTheme}> + {theme === 'dark' ? t('HEADER.lightMode') : t('HEADER.darkMode')} {theme === 'dark' ? ( <Image src={LightMode} alt='light mode' /> ) : ( <Image src={DarkMode} alt='dark mode' /> )} - </SIconButton> - </ListItem> - </List> + </ThemeButton> + </MenuListItem> + </MenuList> </DrawerContent> </Menu> </StyledHeader> @@ -135,3 +144,45 @@ const DrawerHeader = styled(Box)(() => ({ alignItems: 'center', boxSizing: 'border-box', })); + +const MenuLabel = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + fontSize: '1.875rem', + }; +}); + +const MenuList = styled(List)(() => { + const { currentTheme } = useCustomTheme(); + return { + padding: currentTheme.padding, + width: '100%', + display: 'flex', + flexDirection: 'column', + }; +}); + +const MenuListItem = styled(ListItem)(() => { + return { + justifyContent: 'center', + }; +}); + +const ThemeButton = styled(Button)(() => { + const { currentTheme } = useCustomTheme(); + return { + width: '100%', + justifyContent: 'space-between', + padding: currentTheme.padding, + alignItems: 'center', + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + textTransform: 'none', + fontSize: '1rem', + color: currentTheme.textPrimary, + '&:hover': { + backgroundColor: `${currentTheme.backgroundSecondary}`, + }, + }; +}); diff --git a/src/pages/search/index.tsx b/src/pages/search/index.tsx index 2445a09..9ffc036 100644 --- a/src/pages/search/index.tsx +++ b/src/pages/search/index.tsx @@ -23,7 +23,7 @@ const Search = () => { return ( <> - <CustomHead title={t('HOME.search')} /> + <CustomHead title={t('HEADER.search')} /> <Dashboard /> </> ); From 710dd65dfacb7ede9a8722472967d0c0193fed9e Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:49:30 -0300 Subject: [PATCH 45/82] feat: token page (#21) ZKS-153 --- public/locales/en/common.json | 3 ++ public/locales/es/common.json | 3 ++ src/components/{Table.tsx => ChainTable.tsx} | 2 +- src/components/TVL.tsx | 2 + src/components/TotalValueLocked.tsx | 7 +-- src/components/TvlContentBox.tsx | 1 + src/components/index.ts | 2 +- src/containers/Dashboard/index.tsx | 4 +- src/containers/Header/MobileHeader.tsx | 6 +++ src/containers/LockedAssets/index.tsx | 36 ++++++++++++- src/containers/Tokens/SkeletonTokens.tsx | 17 +++++++ src/containers/Tokens/TokensTable.tsx | 53 ++++++++++++++++++++ src/containers/Tokens/index.tsx | 35 +++++++++++++ src/containers/index.ts | 1 + src/data/ecosystemMockData.json | 8 +++ src/pages/tokens/index.tsx | 32 ++++++++++++ src/types/Data.ts | 4 ++ 17 files changed, 206 insertions(+), 10 deletions(-) rename src/components/{Table.tsx => ChainTable.tsx} (98%) create mode 100644 src/containers/Tokens/SkeletonTokens.tsx create mode 100644 src/containers/Tokens/TokensTable.tsx create mode 100644 src/containers/Tokens/index.tsx create mode 100644 src/pages/tokens/index.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index a6d7e0c..f7e7e2f 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -71,6 +71,9 @@ }, "backButton": "Go back" }, + "TOKENS": { + "title": "Tokens" + }, "FOOTER": { "docs": "Documentation", "github": "GitHub", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 7522d93..9041076 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -72,6 +72,9 @@ }, "backButton": "Volver" }, + "TOKENS": { + "title": "Tokens" + }, "FOOTER": { "docs": "Documentaciรณn", "github": "GitHub", diff --git a/src/components/Table.tsx b/src/components/ChainTable.tsx similarity index 98% rename from src/components/Table.tsx rename to src/components/ChainTable.tsx index ba59ada..c99fbfa 100644 --- a/src/components/Table.tsx +++ b/src/components/ChainTable.tsx @@ -21,7 +21,7 @@ interface TableProps { chains: EcosystemChainData[]; } -export const DataTable = ({ chains }: TableProps) => { +export const ChainTable = ({ chains }: TableProps) => { const { t } = useTranslation(); const router = useRouter(); diff --git a/src/components/TVL.tsx b/src/components/TVL.tsx index d28692b..52286f7 100644 --- a/src/components/TVL.tsx +++ b/src/components/TVL.tsx @@ -30,6 +30,7 @@ export const TVL = () => { <STableCellHead>{t('CHAIN.TVL.tvl')}</STableCellHead> </STableRow> </STableHead> + <STableBody> {tvl.map((token, index) => ( <STableRow key={index}> @@ -39,6 +40,7 @@ export const TVL = () => { {token.tokenName} ({token.token}) </Typography> </LogoCell> + <STableCell>${token.price.toLocaleString()}</STableCell> <STableCell>${((token.total * token.price) / 1e18).toLocaleString()}</STableCell> </STableRow> diff --git a/src/components/TotalValueLocked.tsx b/src/components/TotalValueLocked.tsx index 3af36b2..af449ca 100644 --- a/src/components/TotalValueLocked.tsx +++ b/src/components/TotalValueLocked.tsx @@ -1,13 +1,10 @@ import { Box, Typography, Grid, styled, useMediaQuery, useTheme } from '@mui/material'; import { useTranslation } from 'next-i18next'; -import { TvlData } from '~/types'; + +import { TvlData, TotalValueLockedProps } from '~/types'; import { TvlContentBox } from '~/components'; import { useCustomTheme } from '~/hooks'; -interface TotalValueLockedProps { - tvl: TvlData[]; -} - export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('sm')); diff --git a/src/components/TvlContentBox.tsx b/src/components/TvlContentBox.tsx index bdb29ea..2876302 100644 --- a/src/components/TvlContentBox.tsx +++ b/src/components/TvlContentBox.tsx @@ -15,6 +15,7 @@ export const TvlContentBox = ({ avatar, token, total, tokenName, isLast }: TvlCo <ContentBox> <TopBox> <TokenLogo src={avatar} alt={token} isLast={isLast || false} /> + <TextBox> <TokenName isLast={isLast || false}>{tokenName}</TokenName> <TokenTicker isLast={isLast || false}>{token}</TokenTicker> diff --git a/src/components/index.ts b/src/components/index.ts index 77249e1..b995248 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -1,6 +1,6 @@ export * from './Theme'; export * from './CustomHead'; -export * from './Table'; +export * from './ChainTable'; export * from './SearchBar'; export * from './TotalValueLocked'; export * from './Title'; diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index fd0415f..9fd0f7e 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -1,7 +1,7 @@ import { useTranslation } from 'next-i18next'; import { Typography, styled } from '@mui/material'; -import { DataTable } from '~/components'; +import { ChainTable } from '~/components'; import { useData, useSearchContext, useCustomTheme } from '~/hooks'; export const Dashboard = () => { @@ -38,7 +38,7 @@ export const Dashboard = () => { {enterSearchTerm && <SearchLabel>{t('HOME.DASHBOARD.enterSearchTerm')}</SearchLabel>} </header> - {availableChains && <DataTable chains={filteredChains} />} + {availableChains && <ChainTable chains={filteredChains} />} {!availableChains && <SearchLabel>{t('HOME.DASHBOARD.notFound')}</SearchLabel>} </DashboardContainer> ); diff --git a/src/containers/Header/MobileHeader.tsx b/src/containers/Header/MobileHeader.tsx index 6e8208c..845ed6f 100644 --- a/src/containers/Header/MobileHeader.tsx +++ b/src/containers/Header/MobileHeader.tsx @@ -39,6 +39,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> </LogoContainer> + <IconsContainer> <SIconButton onClick={navigateToSearch}> {theme === 'dark' ? ( @@ -47,10 +48,12 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <Image src={SearchLight} alt='search-icon' /> )} </SIconButton> + <SIconButton onClick={toggleDrawer(true)}> {theme === 'dark' ? <Image src={MenuDark} alt='menu-icon' /> : <Image src={MenuLight} alt='menu-icon' />} </SIconButton> </IconsContainer> + <Menu open={drawerOpen} onClose={toggleDrawer(false)} @@ -67,10 +70,12 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <Image src={theme === 'dark' ? CloseDark : CloseLight} alt='close icon' /> </SIconButton> </DrawerHeader> + <MenuList> <MenuListItem> <Gas /> </MenuListItem> + <MenuListItem> <BasicSelect value={t(`LOCALES.${language}`)} @@ -78,6 +83,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap list={Object.values(localesMap)} /> </MenuListItem> + <MenuListItem> <ThemeButton onClick={changeTheme}> {theme === 'dark' ? t('HEADER.lightMode') : t('HEADER.darkMode')} diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 8459a2f..d5ad6c4 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -1,5 +1,6 @@ import { useTranslation } from 'next-i18next'; -import { Box, Typography, styled } from '@mui/material'; +import { useRouter } from 'next/router'; +import { Box, Typography, styled, Button } from '@mui/material'; import { TotalValueLocked } from '~/components'; import { useData, useCustomTheme } from '~/hooks'; @@ -8,6 +9,11 @@ import { formatDataNumber } from '~/utils'; export const LockedAssets = () => { const { t } = useTranslation(); const { ecosystemData, totalL1TVL } = useData(); + const router = useRouter(); + + const goToTokensPage = () => { + router.push('/tokens'); + }; return ( <StyledSection> @@ -18,9 +24,14 @@ export const LockedAssets = () => { <Title>{t('HOME.LOCKEDASSETS.lockedAssets')} {t('HOME.LOCKEDASSETS.lockedAssetsDescription')} + {formatDataNumber(totalL1TVL, 0, true, true)} + + + {t('HOME.LOCKEDASSETS.allTokens')} {' '} + )} @@ -58,3 +69,26 @@ const TitleAmount = styled(Typography)(() => ({ fontWeight: 700, lineHeight: '2.5rem', })); + +const AllTokensButton = styled(Button)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + padding: '0.5rem 1rem', + gap: currentTheme.gap, + width: '5.5rem', + textTransform: 'none', + fontSize: '0.75rem', + marginTop: '1.5rem', + alignItems: 'center', + }; +}); + +export const ButtonContainer = styled(Box)(() => { + return { + display: 'flex', + justifyContent: 'center', + }; +}); diff --git a/src/containers/Tokens/SkeletonTokens.tsx b/src/containers/Tokens/SkeletonTokens.tsx new file mode 100644 index 0000000..7f10428 --- /dev/null +++ b/src/containers/Tokens/SkeletonTokens.tsx @@ -0,0 +1,17 @@ +import { Box } from '@mui/material'; +import { Skeleton } from '@mui/material'; + +export const SkeletonTokens = () => { + return ( + + {/* Breadcrumb Skeleton */} + + + {/* Title Skeleton */} + + + {/* Main Container Skeleton for Locked Assets */} + + + ); +}; diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx new file mode 100644 index 0000000..d9348e5 --- /dev/null +++ b/src/containers/Tokens/TokensTable.tsx @@ -0,0 +1,53 @@ +import { useTranslation } from 'next-i18next'; +import { Table, Typography } from '@mui/material'; + +import { TotalValueLockedProps } from '~/types'; +import { + STableContainer, + STableHead, + STableRow, + STableCellHead, + STableCell, + STableBody, + LogoCell, + TokenAvatar, + STitle, +} from '~/components'; + +export const TokensTable = ({ tvl }: TotalValueLockedProps) => { + const { t } = useTranslation(); + + return ( +
+ {t('TOKENS.title')} + + + + + {t('CHAIN.TVL.chain')} + {t('CHAIN.TVL.price')} + {t('CHAIN.TVL.tvl')} + + + + + {tvl.map((token, index) => ( + + + + + {token.tokenName} ({token.token}) + + + + ${token.price.toLocaleString()} + + ${((token.total * token.price) / 1e18).toLocaleString()} + + ))} + +
+
+
+ ); +}; diff --git a/src/containers/Tokens/index.tsx b/src/containers/Tokens/index.tsx new file mode 100644 index 0000000..e3bf26e --- /dev/null +++ b/src/containers/Tokens/index.tsx @@ -0,0 +1,35 @@ +import { styled } from '@mui/material'; + +import { useData } from '~/hooks'; +import { Breadcrumb } from '~/components'; +import { TokensTable } from './TokensTable'; +import { SkeletonTokens } from './SkeletonTokens'; + +export const Tokens = () => { + const { ecosystemData, isEcosystemLoading } = useData(); + const tvl = ecosystemData?.l1Tvl || []; + return ( + + {isEcosystemLoading && } + {!isEcosystemLoading && ( + <> + + + + )} + + ); +}; + +const TokensContainer = styled('main')(({ theme }) => ({ + padding: '0 7rem', + alignItems: 'center', + justifyContent: 'center', + width: '100%', + gap: '4rem', + marginTop: '4rem', + marginBottom: '4rem', + [theme.breakpoints.down('sm')]: { + padding: '0 1rem', + }, +})); diff --git a/src/containers/index.ts b/src/containers/index.ts index 2d86631..bf93c22 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -7,3 +7,4 @@ export * from './LockedAssets'; export * from './ChainDetail'; export * from './ChainDetail/ChainDescription'; export * from './ChainDetail/ChainMetadata'; +export * from './Tokens'; diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index db23a4c..ef8d37f 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -4,48 +4,56 @@ "token": "ETH", "tokenName": "Ethereum", "total": 557596566000, + "price": 300, "imageUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png" }, { "token": "USDT", "tokenName": "Tether USD", "total": 114493849618, + "price": 300, "imageUrl": "https://www.cryptomkt.com/static/landing/img/crypto-pages/trending/usdt.svg" }, { "token": "USDC", "tokenName": "Bridged USD", "total": 34115209093, + "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/6319/standard/usdc.png?1696506694" }, { "token": "KOI", "tokenName": "Koi Finance", "total": 24115209093, + "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" }, { "token": "WBTC", "tokenName": "Wrapped BTC", "total": 12620248, + "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/7598/standard/wrapped_bitcoin_wbtc.png?1696507857" }, { "token": "wstETH", "tokenName": "Lido wstETH", "total": 3552439, + "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/18834/standard/wstETH.png?1696518295" }, { "token": "cbETH", "tokenName": "Curve cbETH", "total": 2552439, + "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" }, { "token": "BAL", "tokenName": "Balancer", "total": 1552439, + "price": 300, "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" } ], diff --git a/src/pages/tokens/index.tsx b/src/pages/tokens/index.tsx new file mode 100644 index 0000000..2f29843 --- /dev/null +++ b/src/pages/tokens/index.tsx @@ -0,0 +1,32 @@ +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { GetStaticProps } from 'next'; +import { useTranslation } from 'next-i18next'; + +import { CustomHead } from '~/components'; +import { Tokens } from '~/containers'; +import { getConfig } from '~/config'; + +const { DEFAULT_LANG, SUPPORTED_LANGUAGES } = getConfig(); + +const TokensPage = () => { + const { t } = useTranslation(); + + return ( + <> + + + + ); +}; + +export const getStaticProps: GetStaticProps = async ({ locale }) => { + const i18Config = await serverSideTranslations(locale || DEFAULT_LANG, ['common'], null, SUPPORTED_LANGUAGES); + + return { + props: { + ...i18Config, + }, + }; +}; + +export default TokensPage; diff --git a/src/types/Data.ts b/src/types/Data.ts index a55acca..e89c330 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -62,6 +62,7 @@ export interface TvlData { token: string; tokenName: string; total: number; + price: number; imageUrl: string; } @@ -72,3 +73,6 @@ export interface ChainTvl { imageUrl: string; price: number; } +export interface TotalValueLockedProps { + tvl: TvlData[]; +} From 31b80fb61543ae5d2e6edffade442a7da7b1bcb2 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 15 Aug 2024 10:11:53 -0300 Subject: [PATCH 46/82] feat: mobile table (#22) closes ZKS-140 --- src/components/ChainTable.tsx | 87 +++++++++++++++++++++++++++++++---- src/components/InfoTag.tsx | 17 +++++-- src/components/TVL.tsx | 10 ++-- 3 files changed, 98 insertions(+), 16 deletions(-) diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index c99fbfa..bba8b20 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -10,6 +10,7 @@ import { TableBody, Typography, Avatar, + Box, } from '@mui/material'; import { EcosystemChainData } from '~/types'; @@ -35,7 +36,7 @@ export const ChainTable = ({ chains }: TableProps) => { {/* Table titles */} - {t('HOME.DASHBOARD.chain')} + {t('HOME.DASHBOARD.chain')} {t('HOME.DASHBOARD.chainId')} {t('HOME.DASHBOARD.nativeToken')} {t('HOME.DASHBOARD.tvl')} @@ -49,12 +50,14 @@ export const ChainTable = ({ chains }: TableProps) => { return ( handleChainNavigation(data.chainId)}> {/* Chain Name with Logo and Tags */} - + - {data.chainName} - {!data.rpc && } - {!data.metadata && } - + {data.chainName} + + {!data.rpc && } + {!data.metadata && } + + {data.chainId} @@ -81,7 +84,16 @@ export const STableContainer = styled(TableContainer)(() => { width: '100%', borderRadius: currentTheme.borderRadius, border: currentTheme.border, - overflow: 'hidden', + overflow: 'auto', + + // Hide scrollbar for WebKit browsers + '&::-webkit-scrollbar': { + display: 'none', + }, + + // Hide scrollbar for Firefox + scrollbarWidth: 'none', + '-ms-overflow-style': 'none', // Hide scrollbar for Internet Explorer and Edge }; }); @@ -121,12 +133,46 @@ export const STableCellHead = styled(TableCell)(() => { }; }); -export const STableCell = styled(TableCell)(() => { +export const TableCellHeadFirst = styled(TableCell)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textSecondary, + textAlign: 'left', + borderBottom: 'none', + position: 'sticky', + left: 0, + zIndex: 1, + backgroundColor: currentTheme.backgroundTertiary, + }; +}); + +export const STableCell = styled(TableCell)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textPrimary, textAlign: 'left', border: 'none', + fontSize: '1rem', + [theme.breakpoints.down('sm')]: { + fontSize: '0.875rem', + }, + }; +}); + +export const FirstCellWithLogo = styled(TableCell)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + display: 'flex', + alignItems: 'center', + gap: currentTheme.gap, + border: 'none', + textAlign: 'left', + position: 'sticky', + left: 0, + backgroundColor: currentTheme.backgroundSecondary, + zIndex: 1, + minWidth: 'max-content', }; }); @@ -157,3 +203,28 @@ export const TokenAvatar = styled(Avatar)(() => { backgroundColor: currentTheme.emptyBackground, }; }); + +export const ChainName = styled(Typography)(({ theme }) => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1rem', + color: currentTheme.textPrimary, + [theme.breakpoints.down('sm')]: { + fontSize: '0.875rem', + }, + }; +}); + +export const InfoTagsContainer = styled(Box)(({ theme }) => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1rem', + color: currentTheme.textPrimary, + display: 'flex', + gap: currentTheme.gap, + [theme.breakpoints.down('sm')]: { + fontSize: '0.875rem', + display: 'grid', + }, + }; +}); diff --git a/src/components/InfoTag.tsx b/src/components/InfoTag.tsx index 1d81fd3..bad4f65 100644 --- a/src/components/InfoTag.tsx +++ b/src/components/InfoTag.tsx @@ -13,7 +13,7 @@ export const InfoTag = ({ information }: InfoTagProps) => { const { theme } = useCustomTheme(); return ( - {information} + {information} ); @@ -25,20 +25,31 @@ const InfoTagContainer = styled(Box)(() => { return { display: 'flex', alignItems: 'center', - fontSize: '0.7rem', gap: currentTheme.gap, backgroundColor: currentTheme.warningBackground, borderRadius: currentTheme.borderRadius, padding: '0.1rem 0.5rem 0.1rem 0.1rem', border: currentTheme.warningBorder, + width: 'max-content', }; }); -const InfoText = styled(Typography)(() => { +const InfoText = styled(Typography)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { fontSize: '0.7rem', color: currentTheme.warningText, + [theme.breakpoints.down('sm')]: { + fontSize: '0.5rem', + }, + }; +}); + +const InfoIcon = styled(Image)(({ theme }) => { + return { + [theme.breakpoints.down('sm')]: { + width: '1rem', + }, }; }); diff --git a/src/components/TVL.tsx b/src/components/TVL.tsx index 52286f7..a25c542 100644 --- a/src/components/TVL.tsx +++ b/src/components/TVL.tsx @@ -9,9 +9,10 @@ import { STableCellHead, STableCell, STableBody, - LogoCell, + FirstCellWithLogo, TokenAvatar, STitle, + TableCellHeadFirst, } from '~/components'; export const TVL = () => { @@ -25,7 +26,7 @@ export const TVL = () => { - {t('CHAIN.TVL.chain')} + {t('CHAIN.TVL.chain')} {t('CHAIN.TVL.price')} {t('CHAIN.TVL.tvl')} @@ -34,13 +35,12 @@ export const TVL = () => { {tvl.map((token, index) => ( - + {token.tokenName} ({token.token}) - - + ${token.price.toLocaleString()} ${((token.total * token.price) / 1e18).toLocaleString()} From 27cdd66c265131718a85ae07cf8878b7ffaaf77c Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 15 Aug 2024 10:37:52 -0300 Subject: [PATCH 47/82] feat: misc fixes (#23) closes ZKS-166 closes ZKS-167 closes ZKS-174 closes ZKS-175 closes ZKS-176 closes ZKS-177 closes ZKS-178 closes ZKS-171 closes ZKS-179 --- src/components/BasicSelect.tsx | 2 +- src/components/Breadcrumb.tsx | 3 + src/components/ChainInformation.tsx | 14 +-- src/components/ChainTable.tsx | 17 ++- src/components/DesktopTvlContainer.tsx | 64 +++++++++++ src/components/MobileTvlContainer.tsx | 63 +++++++++++ src/components/TVL.tsx | 11 +- src/components/Theme/theme.ts | 2 + src/components/TotalValueLocked.tsx | 142 +++---------------------- src/components/TvlContentBox.tsx | 8 +- src/components/index.ts | 2 + src/containers/ChainDetail/index.tsx | 3 +- src/containers/Dashboard/index.tsx | 2 + src/containers/Footer/index.tsx | 31 +++--- src/containers/Header/index.tsx | 6 +- src/containers/Landing/index.tsx | 2 + src/containers/Tokens/TokensTable.tsx | 11 +- src/containers/Tokens/index.tsx | 2 + src/data/chainMockData.json | 50 ++++----- src/data/ecosystemMockData.json | 48 ++++----- src/providers/DataProvider.tsx | 2 +- src/types/Data.ts | 14 +-- src/types/Theme.ts | 1 + src/utils/services.ts | 4 +- 24 files changed, 273 insertions(+), 231 deletions(-) create mode 100644 src/components/DesktopTvlContainer.tsx create mode 100644 src/components/MobileTvlContainer.tsx diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index 001e162..c2bd600 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -93,7 +93,7 @@ const MenuButton = styled(Button)(({ theme }) => { fontSize: '1rem', color: currentTheme.textPrimary, '&:hover': { - backgroundColor: currentTheme.backgroundSecondary, + backgroundColor: currentTheme.backgroundHover, }, [theme.breakpoints.down('sm')]: { width: '100%', diff --git a/src/components/Breadcrumb.tsx b/src/components/Breadcrumb.tsx index 4a8bb3f..1698452 100644 --- a/src/components/Breadcrumb.tsx +++ b/src/components/Breadcrumb.tsx @@ -65,6 +65,9 @@ const BreadcrumbLink = styled(Link)(() => { textDecoration: 'none', fontSize: '0.875rem', lineHeight: '1.25rem', + '&:hover': { + textDecoration: 'underline', + }, }; }); diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index 275fe6b..e8f86b0 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -1,4 +1,4 @@ -import { Grid, Typography, styled, Box } from '@mui/material'; +import { Typography, styled, Box } from '@mui/material'; import { useTranslation } from 'next-i18next'; import { InfoBox } from '~/components'; @@ -70,7 +70,7 @@ export const ChainInformation = () => { { }; }); -export const GridContainer = styled(Grid)(() => { - const { currentTheme } = useCustomTheme(); - return { - width: '100%', - borderRadius: 'inherit', - overflow: 'hidden', - border: currentTheme.border, - }; -}); - export const STitle = styled(Typography)(() => { return { fontSize: '1.5rem', diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index bba8b20..cfd5091 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -48,7 +48,7 @@ export const ChainTable = ({ chains }: TableProps) => { {chains?.map((data, index) => { return ( - handleChainNavigation(data.chainId)}> + handleChainNavigation(data.chainId)}> {/* Chain Name with Logo and Tags */} @@ -69,7 +69,7 @@ export const ChainTable = ({ chains }: TableProps) => { {formatDataNumber(data.tvl, 0, true)} {data.chainType} - + ); })} @@ -119,8 +119,21 @@ export const STableRow = styled(TableRow)(() => { '&:not(:last-child)': { border: currentTheme.border, }, + transition: currentTheme.transition, + }; +}); + +export const STableBodyRow = styled(TableRow)(() => { + const { currentTheme } = useCustomTheme(); + return { cursor: 'pointer', + '&:not(:last-child)': { + border: currentTheme.border, + }, transition: currentTheme.transition, + '&:hover': { + backgroundColor: currentTheme.backgroundHover, + }, }; }); diff --git a/src/components/DesktopTvlContainer.tsx b/src/components/DesktopTvlContainer.tsx new file mode 100644 index 0000000..32e9fe7 --- /dev/null +++ b/src/components/DesktopTvlContainer.tsx @@ -0,0 +1,64 @@ +import { Grid } from '@mui/material'; +import { useTranslation } from 'next-i18next'; + +import { TvlData, TotalValueLockedProps } from '~/types'; +import { TvlContentBox, GridContainer, TvlContainer, OthersText, OthersBox } from '~/components'; + +export const DesktopTvlContainer = ({ tvl }: TotalValueLockedProps) => { + const { t } = useTranslation(); + + const renderTvlContent = ( + data: TvlData, + index: number, + height: string, + xs: number, + smallCard?: boolean, + isLast?: boolean, + ) => ( + + + + + + ); + + return ( + + {/* First item: full width */} + {renderTvlContent(tvl[0], 0, '12rem', 12)} + + + {/* Second item: half width */} + {renderTvlContent(tvl[1], 1, '12rem', 6)} + + + {/* Third and fourth items: one-third width each*/} + {tvl.slice(2, 4).map((data, index) => renderTvlContent(data, index + 2, '12rem', 4, true))} + + + {/* Fifth item: one-third width and half height */} + {renderTvlContent(tvl[4], 4, '5.85rem', 6, true)} + + + {/* Sixth item: three-fourths width and halft height + others remaining width same height*/} + {renderTvlContent(tvl[5], 5, '5.85rem', 9, true, true)} + + + + {t('HOME.LOCKEDASSETS.others')} + + + + + + + + + ); +}; diff --git a/src/components/MobileTvlContainer.tsx b/src/components/MobileTvlContainer.tsx new file mode 100644 index 0000000..c7b299d --- /dev/null +++ b/src/components/MobileTvlContainer.tsx @@ -0,0 +1,63 @@ +import { Grid } from '@mui/material'; +import { useTranslation } from 'next-i18next'; + +import { TvlData, TotalValueLockedProps } from '~/types'; +import { TvlContentBox, GridContainer, TvlContainer, OthersText, OthersBox } from '~/components'; + +export const MobileTvlContainer = ({ tvl }: TotalValueLockedProps) => { + const { t } = useTranslation(); + + const renderTvlContent = ( + data: TvlData, + index: number, + height: string, + xs: number, + smallCard?: boolean, + isLast?: boolean, + ) => ( + + + + + + ); + + return ( + + {/* First item: full width */} + {renderTvlContent(tvl[0], 0, '12rem', 12)} + + {/* Second item: full width, half height */} + {renderTvlContent(tvl[1], 1, '6rem', 12)} + + {/* Third and Fourth items: half width each */} + + {renderTvlContent(tvl[2], 2, '6rem', 6)} + {renderTvlContent(tvl[3], 3, '6rem', 6)} + + + {/* Fifth item: half width */} + + {renderTvlContent(tvl[4], 4, '5rem', 6, true, true)} + + {/* Sixth item: two-thirds width + others remaining */} + + {renderTvlContent(tvl[5], 5, '5rem', 9, true, true)} + + + + {t('HOME.LOCKEDASSETS.others')} + + + + + + + ); +}; diff --git a/src/components/TVL.tsx b/src/components/TVL.tsx index a25c542..c178d2e 100644 --- a/src/components/TVL.tsx +++ b/src/components/TVL.tsx @@ -12,6 +12,7 @@ import { FirstCellWithLogo, TokenAvatar, STitle, + STableBodyRow, TableCellHeadFirst, } from '~/components'; @@ -34,16 +35,16 @@ export const TVL = () => { {tvl.map((token, index) => ( - + - + - {token.tokenName} ({token.token}) + {token.name} ({token.symbol}) ${token.price.toLocaleString()} - ${((token.total * token.price) / 1e18).toLocaleString()} - + ${((token.amountUsd * token.price) / 1e18).toLocaleString()} + ))}
diff --git a/src/components/Theme/theme.ts b/src/components/Theme/theme.ts index a5aaded..107e0b0 100644 --- a/src/components/Theme/theme.ts +++ b/src/components/Theme/theme.ts @@ -78,6 +78,7 @@ export const darkTheme: Theme = { backgroundPrimary: '#000000', backgroundSecondary: '#262B33', backgroundTertiary: 'rgba(17, 20, 26, 1)', + backgroundHover: 'rgba(61, 66, 77, 0.85)', titleFontFamily: 'Inter-Variable', textFontFamily: 'Inter-Variable', borderRadius: '1.5rem', @@ -105,6 +106,7 @@ export const lightTheme: Theme = { backgroundPrimary: 'rgba(247, 249, 252, 1)', backgroundSecondary: 'rgba(232, 236, 242, 1)', backgroundTertiary: ' rgba(218, 221, 229, 1)', + backgroundHover: 'rgba(218, 221, 229, 1)', titleFontFamily: 'Inter-Variable', textFontFamily: 'Inter-Variable', borderRadius: '1.5rem', diff --git a/src/components/TotalValueLocked.tsx b/src/components/TotalValueLocked.tsx index af449ca..a1cf3fd 100644 --- a/src/components/TotalValueLocked.tsx +++ b/src/components/TotalValueLocked.tsx @@ -1,13 +1,12 @@ import { Box, Typography, Grid, styled, useMediaQuery, useTheme } from '@mui/material'; -import { useTranslation } from 'next-i18next'; -import { TvlData, TotalValueLockedProps } from '~/types'; -import { TvlContentBox } from '~/components'; +import { TotalValueLockedProps } from '~/types'; import { useCustomTheme } from '~/hooks'; +import { MobileTvlContainer, DesktopTvlContainer } from '~/components'; export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { const theme = useTheme(); - const isMobile = useMediaQuery(theme.breakpoints.down('sm')); + const isMobile = useMediaQuery(theme.breakpoints.down('md')); return ( <> @@ -17,136 +16,19 @@ export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { ); }; -const MobileTvlContainer = ({ tvl }: TotalValueLockedProps) => { - const { t } = useTranslation(); - - const renderTvlContent = ( - data: TvlData, - index: number, - height: string, - xs: number, - smallCard?: boolean, - isLast?: boolean, - ) => ( - - - - - - ); - - return ( - - {/* First item: full width */} - {renderTvlContent(tvl[0], 0, '12rem', 12)} - - {/* Second item: full width, half height */} - {renderTvlContent(tvl[1], 1, '6rem', 12)} - - {/* Third and Fourth items: half width each */} - - {renderTvlContent(tvl[2], 2, '6rem', 6)} - {renderTvlContent(tvl[3], 3, '6rem', 6)} - - - {/* Fifth item: half width */} - - {renderTvlContent(tvl[4], 4, '5rem', 6, true, true)} - - {/* Sixth item: two-thirds width + others remaining */} - - {renderTvlContent(tvl[5], 5, '5rem', 9, true, true)} - - - - {t('HOME.LOCKEDASSETS.others')} - - - - - - - ); -}; - -const DesktopTvlContainer = ({ tvl }: TotalValueLockedProps) => { - const { t } = useTranslation(); - - const renderTvlContent = ( - data: TvlData, - index: number, - height: string, - xs: number, - smallCard?: boolean, - isLast?: boolean, - ) => ( - - - - - - ); - - return ( - - {/* First item: full width */} - {renderTvlContent(tvl[0], 0, '12rem', 12)} - - - {/* Second item: half width */} - {renderTvlContent(tvl[1], 1, '12rem', 6)} - - - {/* Third and fourth items: one-third width each*/} - {tvl.slice(2, 4).map((data, index) => renderTvlContent(data, index + 2, '12rem', 4, true))} - - - {/* Fifth item: one-third width and half height */} - {renderTvlContent(tvl[4], 4, '5.85rem', 6, true)} - - - {/* Sixth item: three-fourths width and halft height + others remaining width same height*/} - {renderTvlContent(tvl[5], 5, '5.85rem', 9, true, true)} - - - - {t('HOME.LOCKEDASSETS.others')} - - - - - - - - - ); -}; - -const TvlContainer = styled(Grid)({ +export const TvlContainer = styled(Grid)({ display: 'flex', flexWrap: 'wrap', alignItems: 'flex-start', }); -interface GridContainerProps { +export interface GridContainerProps { imageUrl?: string; height?: string; smallCard?: boolean; } -const GridContainer = styled(Grid)(({ imageUrl, height, smallCard }: GridContainerProps) => { +export const GridContainer = styled(Grid)(({ imageUrl, height, smallCard }: GridContainerProps) => { const { currentTheme } = useCustomTheme(); return { position: 'relative', @@ -171,10 +53,18 @@ const GridContainer = styled(Grid)(({ imageUrl, height, smallCard }: GridContain backgroundPosition: smallCard && 'center', filter: smallCard ? 'blur(85px)' : 'blur(120px)', }, + '@media (max-width: 600px)': { + '&::before': { + top: smallCard ? -10 : -15, + left: smallCard ? -25 : -45, + backgroundSize: smallCard ? '150px' : '250px', + filter: smallCard ? 'blur(60px)' : 'blur(90px)', + }, + }, }; }); -const OthersBox = styled(Box)({ +export const OthersBox = styled(Box)({ position: 'absolute', top: '50%', left: '50%', @@ -185,7 +75,7 @@ const OthersBox = styled(Box)({ justifyContent: 'center', }); -const OthersText = styled(Typography)(() => { +export const OthersText = styled(Typography)(() => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textSecondary, diff --git a/src/components/TvlContentBox.tsx b/src/components/TvlContentBox.tsx index 2876302..b6aefac 100644 --- a/src/components/TvlContentBox.tsx +++ b/src/components/TvlContentBox.tsx @@ -10,6 +10,10 @@ interface TvlContentBoxProps { isLast?: boolean; } +interface TvlProps { + isLast: boolean; +} + export const TvlContentBox = ({ avatar, token, total, tokenName, isLast }: TvlContentBoxProps) => { return ( @@ -46,10 +50,6 @@ const TopBox = styled(Box)(() => { }; }); -interface TvlProps { - isLast: boolean; -} - const TokenLogo = styled(Avatar)(({ isLast }) => ({ width: `${isLast ? '1.25rem' : '2.5rem'}`, height: `${isLast ? '1.25rem' : '2.5rem'}`, diff --git a/src/components/index.ts b/src/components/index.ts index b995248..5044900 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -15,3 +15,5 @@ export * from './Gas'; export * from './TvlContentBox'; export * from './Breadcrumb'; export * from './Icon'; +export * from './DesktopTvlContainer'; +export * from './MobileTvlContainer'; diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx index a2f97bc..ea42782 100644 --- a/src/containers/ChainDetail/index.tsx +++ b/src/containers/ChainDetail/index.tsx @@ -34,8 +34,9 @@ export const ChainContainer = styled(Box)(({ theme }) => ({ gap: '4rem', marginTop: '4rem', marginBottom: '4rem', - + minHeight: 'calc(100vh - 19rem)', [theme.breakpoints.down('sm')]: { padding: '0 1rem', + minHeight: 'calc(100vh - 23rem)', }, })); diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 9fd0f7e..70c1055 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -49,11 +49,13 @@ const DashboardContainer = styled('section')(({ theme }) => { return { width: '100%', + minHeight: 'calc(100vh - 19rem)', ...(isSearch && { padding: '0 7rem', minHeight: 'calc(100vh - 11rem)', [theme.breakpoints.down('sm')]: { padding: '0 1rem', + minHeight: 'calc(100vh - 23rem)', }, }), }; diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index 53c2447..b5ad12b 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -1,6 +1,6 @@ import { useTranslation } from 'next-i18next'; import { styled } from '@mui/material/styles'; -import { Box, Typography } from '@mui/material'; +import { Typography, Button } from '@mui/material'; import Image from 'next/image'; import Link from 'next/link'; @@ -20,11 +20,11 @@ export const Footer = () => { return ( - {t('FOOTER.docs')} - + {t('FOOTER.docs')} + github {t('FOOTER.github')} - + @@ -66,18 +66,21 @@ const Subtitle = styled('div')(() => { display: 'flex', alignItems: 'center', gap: currentTheme.gap, + '& p': { display: 'inline-block', }, '& a': { textDecoration: 'none', color: 'inherit', + cursor: 'pointer', }, }; }); -const IconText = styled(Box)(() => { +const FooterButton = styled(Button)(() => { const { currentTheme } = useCustomTheme(); + return { display: 'flex', gap: currentTheme.gap, @@ -85,15 +88,13 @@ const IconText = styled(Box)(() => { backgroundColor: currentTheme.backgroundSecondary, borderRadius: currentTheme.borderRadius, padding: currentTheme.padding, - }; -}); - -const SText = styled(Typography)(() => { - const { currentTheme } = useCustomTheme(); - - return { - backgroundColor: currentTheme.backgroundSecondary, - borderRadius: currentTheme.borderRadius, - padding: currentTheme.padding, + cursor: 'pointer', + color: currentTheme.textPrimary, + textTransform: 'none', + fontSize: '1rem', + height: '3.5rem', + '&:hover': { + backgroundColor: currentTheme.backgroundHover, + }, }; }); diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index e9e11e2..2303be1 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -29,7 +29,7 @@ export const Header = () => { const router = useRouter(); const { isSearch } = useSearchContext(); const { locales, pathname, query } = router; - const isMobile = useMediaQuery('(max-width:600px)'); + const isMobile = useMediaQuery('(max-width:900px)'); const localesMap = locales ? Object.fromEntries(locales.map((locale) => [locale, t(`LOCALES.${locale}`)])) : {}; @@ -94,6 +94,7 @@ export const LogoContainer = styled(Box)({ alignItems: 'center', height: '100%', flexShrink: 0, + cursor: 'pointer', }); export const Logo = styled(Image)({ @@ -112,5 +113,8 @@ export const SIconButton = styled(IconButton)(() => { gap: currentTheme.gap, width: '3.5rem', height: '3.5rem', + '&:hover': { + backgroundColor: currentTheme.backgroundHover, + }, }; }); diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 7479882..b230761 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -32,7 +32,9 @@ const LandingContainer = styled('main')(({ theme }) => ({ gap: '4rem', marginTop: '4rem', marginBottom: '4rem', + minHeight: 'calc(100vh - 19rem)', [theme.breakpoints.down('sm')]: { padding: '0 1rem', + minHeight: 'calc(100vh - 23rem)', }, })); diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index d9348e5..c2197b3 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -12,6 +12,7 @@ import { LogoCell, TokenAvatar, STitle, + STableBodyRow, } from '~/components'; export const TokensTable = ({ tvl }: TotalValueLockedProps) => { @@ -32,18 +33,18 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { {tvl.map((token, index) => ( - + - + - {token.tokenName} ({token.token}) + {token.name} ({token.symbol}) ${token.price.toLocaleString()} - ${((token.total * token.price) / 1e18).toLocaleString()} - + ${((token.amountUsd * token.price) / 1e18).toLocaleString()} + ))} diff --git a/src/containers/Tokens/index.tsx b/src/containers/Tokens/index.tsx index e3bf26e..a2796d5 100644 --- a/src/containers/Tokens/index.tsx +++ b/src/containers/Tokens/index.tsx @@ -29,7 +29,9 @@ const TokensContainer = styled('main')(({ theme }) => ({ gap: '4rem', marginTop: '4rem', marginBottom: '4rem', + minHeight: 'calc(100vh - 19rem)', [theme.breakpoints.down('sm')]: { padding: '0 1rem', + minHeight: 'calc(100vh - 23rem)', }, })); diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json index aa5a7e5..abc22f3 100644 --- a/src/data/chainMockData.json +++ b/src/data/chainMockData.json @@ -2,58 +2,58 @@ "chainType": "Rollup", "tvl": [ { - "token": "ETH", - "tokenName": "Ethereum", - "total": 557596566000, + "symbol": "ETH", + "name": "Ethereum", + "amountUsd": 557596566000, "price": 3500, "imageUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png" }, { - "token": "USDT", - "tokenName": "Tether USD", - "total": 114493849618, + "symbol": "USDT", + "name": "Tether USD", + "amountUsd": 114493849618, "price": 3500, "imageUrl": "https://www.cryptomkt.com/static/landing/img/crypto-pages/trending/usdt.svg" }, { - "token": "USDC", - "tokenName": "Bridged USD", - "total": 34115209093, + "symbol": "USDC", + "name": "Bridged USD", + "amountUsd": 34115209093, "price": 3500, "imageUrl": "https://assets.coingecko.com/coins/images/6319/standard/usdc.png?1696506694" }, { - "token": "KOI", - "tokenName": "Koi Finance", - "total": 24115209093, + "symbol": "KOI", + "name": "Koi Finance", + "amountUsd": 24115209093, "price": 3500, "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" }, { - "token": "WBTC", - "tokenName": "Wrapped BTC", - "total": 12620248, + "symbol": "WBTC", + "name": "Wrapped BTC", + "amountUsd": 12620248, "price": 3500, "imageUrl": "https://assets.coingecko.com/coins/images/7598/standard/wrapped_bitcoin_wbtc.png?1696507857" }, { - "token": "wstETH", - "tokenName": "Lido wstETH", - "total": 3552439, + "symbol": "wstETH", + "name": "Lido wstETH", + "amountUsd": 3552439, "price": 3500, "imageUrl": "https://assets.coingecko.com/coins/images/18834/standard/wstETH.png?1696518295" }, { - "token": "cbETH", - "tokenName": "Curve cbETH", - "total": 2552439, + "symbol": "cbETH", + "name": "Curve cbETH", + "amountUsd": 2552439, "price": 3500, "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" }, { - "token": "BAL", - "tokenName": "Balancer", - "total": 1552439, + "symbol": "BAL", + "name": "Balancer", + "amountUsd": 1552439, "price": 3500, "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" } @@ -61,7 +61,7 @@ "batchesInfo": { "commited": 100, "verified": 90, - "proved": 80 + "executed": 80 }, "feeParams": { "batchOverheadL1Gas": 50000, diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index ef8d37f..4ba4094 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -1,58 +1,58 @@ { "l1Tvl": [ { - "token": "ETH", - "tokenName": "Ethereum", - "total": 557596566000, + "symbol": "ETH", + "name": "Ethereum", + "amountUsd": 557596566000, "price": 300, "imageUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png" }, { - "token": "USDT", - "tokenName": "Tether USD", - "total": 114493849618, + "symbol": "USDT", + "name": "Tether USD", + "amountUsd": 114493849618, "price": 300, "imageUrl": "https://www.cryptomkt.com/static/landing/img/crypto-pages/trending/usdt.svg" }, { - "token": "USDC", - "tokenName": "Bridged USD", - "total": 34115209093, + "symbol": "USDC", + "name": "Bridged USD", + "amountUsd": 34115209093, "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/6319/standard/usdc.png?1696506694" }, { - "token": "KOI", - "tokenName": "Koi Finance", - "total": 24115209093, + "symbol": "KOI", + "name": "Koi Finance", + "amountUsd": 24115209093, "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" }, { - "token": "WBTC", - "tokenName": "Wrapped BTC", - "total": 12620248, + "symbol": "WBTC", + "name": "Wrapped BTC", + "amountUsd": 12620248, "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/7598/standard/wrapped_bitcoin_wbtc.png?1696507857" }, { - "token": "wstETH", - "tokenName": "Lido wstETH", - "total": 3552439, + "symbol": "wstETH", + "name": "Lido wstETH", + "amountUsd": 3552439, "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/18834/standard/wstETH.png?1696518295" }, { - "token": "cbETH", - "tokenName": "Curve cbETH", - "total": 2552439, + "symbol": "cbETH", + "name": "Curve cbETH", + "amountUsd": 2552439, "price": 300, "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" }, { - "token": "BAL", - "tokenName": "Balancer", - "total": 1552439, + "symbol": "BAL", + "name": "Balancer", + "amountUsd": 1552439, "price": 300, "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" } diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index 6fd831e..d2b2ff3 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -56,7 +56,7 @@ export const DataProvider = ({ children }: DataProps) => { }, [isEcosystemError, isChainError, router]); const totalL1TVL = (ecosystemData?.l1Tvl || []).reduce((accumulator: number, token: TvlData) => { - return accumulator + (token.total || 0); + return accumulator + (token.amountUsd || 0); }, 0); return ( diff --git a/src/types/Data.ts b/src/types/Data.ts index e89c330..22aff46 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -4,7 +4,7 @@ export interface ChainData { batchesInfo: { commited: number; verified: number; - proved: number; + executed: number; }; feeParams: { batchOverheadL1Gas: number; @@ -59,17 +59,17 @@ export interface EcosystemData { } export interface TvlData { - token: string; - tokenName: string; - total: number; + symbol: string; + name: string; + amountUsd: number; price: number; imageUrl: string; } export interface ChainTvl { - token: string; - tokenName: string; - total: number; + symbol: string; + name: string; + amountUsd: number; imageUrl: string; price: number; } diff --git a/src/types/Theme.ts b/src/types/Theme.ts index dcc5dbe..c17f7d5 100644 --- a/src/types/Theme.ts +++ b/src/types/Theme.ts @@ -7,6 +7,7 @@ export interface Theme { backgroundPrimary: string; backgroundSecondary: string; backgroundTertiary: string; + backgroundHover: string; titleColor: string; titleFontFamily: string; textFontFamily: string; diff --git a/src/utils/services.ts b/src/utils/services.ts index 6715c04..b315190 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -16,7 +16,7 @@ export const fetchEcosystemData = async () => { if (!res.ok) { throw new Error('Failed to fetch ecosystem data'); } - return res.json(); + return await res.json(); }; export const fetchChainData = async (chainId: number) => { @@ -29,5 +29,5 @@ export const fetchChainData = async (chainId: number) => { if (!res.ok) { throw new Error('Failed to fetch chain data'); } - return res.json(); + return await res.json(); }; From 0ba24fe05e4fff4de9fe4cafd46c479e91d38fab Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 15 Aug 2024 18:04:06 -0300 Subject: [PATCH 48/82] feat: error page (#24) --- public/locales/en/common.json | 4 +++ public/locales/es/common.json | 4 +++ src/containers/ErrorContainer/index.tsx | 33 +++++++++++++++++++++++++ src/containers/index.ts | 1 + src/pages/error.tsx | 29 +++++++++++++++++++++- src/utils/services.ts | 4 ++- 6 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 src/containers/ErrorContainer/index.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index f7e7e2f..5c0440a 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -80,6 +80,10 @@ "madeWith": "Made with", "by": "by" }, + "ERROR":{ + "title": "Error", + "message": "An error occurred while fetching the data. Please try again later." + }, "LOCALES": { "en": "English", "es": "Spanish" diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 9041076..f0366ca 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -81,6 +81,10 @@ "madeWithLove": "Hecho con", "by": "por" }, + "ERROR": { + "title": "Error", + "message": "Lo sentimos, algo saliรณ mal. Por favor, intรฉntelo de nuevo mรกs tarde." + }, "LOCALES": { "en": "Inglรฉs", "es": "Espaรฑol" diff --git a/src/containers/ErrorContainer/index.tsx b/src/containers/ErrorContainer/index.tsx new file mode 100644 index 0000000..3547829 --- /dev/null +++ b/src/containers/ErrorContainer/index.tsx @@ -0,0 +1,33 @@ +import { Typography } from '@mui/material'; +import { styled } from '@mui/material/styles'; +import { useTranslation } from 'next-i18next'; + +import { Title } from '~/components'; + +export const ErrorContainer = () => { + const { t } = useTranslation(); + + return ( + + + <Typography>{t('ERROR.message')}</Typography> + </ErrorPageContainer> + ); +}; + +const ErrorPageContainer = styled('main')(({ theme }) => ({ + display: 'flex', + flexDirection: 'column', + padding: '0 7rem', + alignItems: 'center', + justifyContent: 'center', + width: '100%', + gap: '4rem', + marginTop: '4rem', + marginBottom: '4rem', + minHeight: 'calc(100vh - 19rem)', + [theme.breakpoints.down('sm')]: { + padding: '0 1rem', + minHeight: 'calc(100vh - 23rem)', + }, +})); diff --git a/src/containers/index.ts b/src/containers/index.ts index bf93c22..93640e1 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -8,3 +8,4 @@ export * from './ChainDetail'; export * from './ChainDetail/ChainDescription'; export * from './ChainDetail/ChainMetadata'; export * from './Tokens'; +export * from './ErrorContainer'; diff --git a/src/pages/error.tsx b/src/pages/error.tsx index cb4879f..228cef6 100644 --- a/src/pages/error.tsx +++ b/src/pages/error.tsx @@ -1,5 +1,32 @@ +import { serverSideTranslations } from 'next-i18next/serverSideTranslations'; +import { GetStaticProps } from 'next'; +import { useTranslation } from 'next-i18next'; + +import { CustomHead } from '~/components'; +import { getConfig } from '~/config'; +import { ErrorContainer } from '~/containers'; + +const { DEFAULT_LANG, SUPPORTED_LANGUAGES } = getConfig(); + const ErrorPage = () => { - return <div>Sorry, something went wrong.</div>; + const { t } = useTranslation(); + + return ( + <> + <CustomHead title={t('ERROR.title')} /> + <ErrorContainer /> + </> + ); +}; + +export const getStaticProps: GetStaticProps = async ({ locale }) => { + const i18Config = await serverSideTranslations(locale || DEFAULT_LANG, ['common'], null, SUPPORTED_LANGUAGES); + + return { + props: { + ...i18Config, + }, + }; }; export default ErrorPage; diff --git a/src/utils/services.ts b/src/utils/services.ts index b315190..b4da13c 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -6,13 +6,15 @@ const { API_URL } = getConfig(); const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); +console.log('Fetching backend data from:', API_URL); + export const fetchEcosystemData = async () => { // temporary for mock data if (!API_URL) { await delay(2000); // Simulate 2 seconds delay return Promise.resolve(ecosystemMockData); } - const res = await fetch(`${API_URL}/ecosystem`); + const res = await fetch(`${API_URL}/metrics/ecosystem`); if (!res.ok) { throw new Error('Failed to fetch ecosystem data'); } From c289218b4a7541e6028d8edac84c4447be5e7633 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 15 Aug 2024 19:42:38 -0300 Subject: [PATCH 49/82] feat: backend integration schema (#26) --- src/components/Breadcrumb.tsx | 2 +- src/components/ChainInformation.tsx | 12 +- src/components/ChainTable.tsx | 37 +- src/components/RPC.tsx | 42 +- src/components/TvlContentBox.tsx | 2 +- src/containers/ChainDetail/ChainMetadata.tsx | 17 +- src/containers/Dashboard/index.tsx | 2 +- src/containers/LockedAssets/index.tsx | 3 + src/containers/Tokens/TokensTable.tsx | 2 +- src/data/chainMockData.json | 610 +++++++++++++++--- src/data/ecosystemMockData.json | 635 ++++++++++++++++--- src/pages/[chain]/index.tsx | 9 +- src/providers/DataProvider.tsx | 18 +- src/types/Data.ts | 60 +- src/utils/services.ts | 29 +- 15 files changed, 1254 insertions(+), 226 deletions(-) diff --git a/src/components/Breadcrumb.tsx b/src/components/Breadcrumb.tsx index 1698452..cb124f4 100644 --- a/src/components/Breadcrumb.tsx +++ b/src/components/Breadcrumb.tsx @@ -21,7 +21,7 @@ export const Breadcrumb = ({ isChain }: BreadcrumbProps) => { const breadcrumbItems = pathNames.map((path, index) => { const isLast = index === pathNames.length - 1; - const displayName = isChain && isLast ? chainData?.metadata?.chainName || path : path; + const displayName = isChain && isLast ? chainData?.metadata?.name || path : path; const href = `/${pathNames.slice(0, index + 1).join('/')}`; return { diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index e8f86b0..e1872f6 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -10,8 +10,8 @@ import ChainTypeDark from '~/assets/icons/chainTypeDark.svg'; import ChainTypeLight from '~/assets/icons/chainTypeLight.svg'; import CheckBlockDark from '~/assets/icons/checkBlockDark.svg'; import CheckBlockLight from '~/assets/icons/checkBlockLight.svg'; -import SpeedDark from '~/assets/icons/speedDark.svg'; -import SpeedLight from '~/assets/icons/speedLight.svg'; +// import SpeedDark from '~/assets/icons/speedDark.svg'; +// import SpeedLight from '~/assets/icons/speedLight.svg'; export const ChainInformation = () => { const { t } = useTranslation(); @@ -32,7 +32,7 @@ export const ChainInformation = () => { alt='chain-type-icon' /> - <InfoBox + {/* <InfoBox title={t('CHAIN.CHAININFORMATION.lastBlock')} description={chainData?.l2ChainInfo.lastBlock} darkIcon={BlockDark} @@ -57,7 +57,7 @@ export const ChainInformation = () => { lightIcon={SpeedLight} size={22} alt='speed-icon' - /> + /> */} <InfoBox title={t('CHAIN.CHAININFORMATION.totalBatchesCommitted')} @@ -86,14 +86,14 @@ export const ChainInformation = () => { alt='check-block' /> - <InfoBox + {/* <InfoBox title={t('CHAIN.CHAININFORMATION.averageBlockTime')} description={chainData?.l2ChainInfo.avgBlockTime} darkIcon={SpeedDark} lightIcon={SpeedLight} size={22} alt='speed-icon' - /> + /> */} </DataContainer> </article> ); diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index cfd5091..ccb37bd 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -26,7 +26,7 @@ export const ChainTable = ({ chains }: TableProps) => { const { t } = useTranslation(); const router = useRouter(); - const handleChainNavigation = (id: number) => { + const handleChainNavigation = (id: string) => { router.push(`/${id}`); }; @@ -51,19 +51,20 @@ export const ChainTable = ({ chains }: TableProps) => { <STableBodyRow key={index} onClick={() => handleChainNavigation(data.chainId)}> {/* Chain Name with Logo and Tags */} <FirstCellWithLogo> - <ChainAvatar alt={`${data.chainName} logo`} src={data.iconUrl} /> - <ChainName>{data.chainName}</ChainName> + <ChainAvatar alt={`${data.chainId}`} src={data.metadata?.iconUrl} /> + <ChainName>{data.metadata?.name ? data.metadata.name : `ZK Chain ${data.chainId}`}</ChainName> + <InfoTagsContainer> {!data.rpc && <InfoTag information={t('HOME.DASHBOARD.noRPC')} />} - {!data.metadata && <InfoTag information={t('HOME.DASHBOARD.noMetadata')} />} + {data.metadata === undefined && <InfoTag information={t('HOME.DASHBOARD.noMetadata')} />} </InfoTagsContainer> </FirstCellWithLogo> <STableCell sx={{ width: '10%' }}>{data.chainId}</STableCell> <LogoCell sx={{ width: '10%' }}> - <TokenAvatar alt={`${data.nativeToken} logo`} src={data.tokenImgUrl} /> - <Typography>{data.nativeToken}</Typography> + <TokenAvatar alt={`${data.baseToken.symbol} logo`} src={data.baseToken.imageUrl} /> + <Typography>{data.baseToken.symbol}</Typography> </LogoCell> <STableCell sx={{ width: '10%' }}>{formatDataNumber(data.tvl, 0, true)}</STableCell> @@ -146,16 +147,18 @@ export const STableCellHead = styled(TableCell)(() => { }; }); -export const TableCellHeadFirst = styled(TableCell)(() => { +export const TableCellHeadFirst = styled(TableCell)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textSecondary, textAlign: 'left', borderBottom: 'none', - position: 'sticky', - left: 0, - zIndex: 1, - backgroundColor: currentTheme.backgroundTertiary, + [theme.breakpoints.down('sm')]: { + position: 'sticky', + left: 0, + zIndex: 1, + backgroundColor: currentTheme.backgroundTertiary, + }, }; }); @@ -172,7 +175,7 @@ export const STableCell = styled(TableCell)(({ theme }) => { }; }); -export const FirstCellWithLogo = styled(TableCell)(() => { +export const FirstCellWithLogo = styled(TableCell)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textPrimary, @@ -181,11 +184,13 @@ export const FirstCellWithLogo = styled(TableCell)(() => { gap: currentTheme.gap, border: 'none', textAlign: 'left', - position: 'sticky', - left: 0, - backgroundColor: currentTheme.backgroundSecondary, - zIndex: 1, minWidth: 'max-content', + [theme.breakpoints.down('sm')]: { + position: 'sticky', + left: 0, + backgroundColor: currentTheme.backgroundSecondary, + zIndex: 1, + }, }; }); diff --git a/src/components/RPC.tsx b/src/components/RPC.tsx index 79283f1..bd5afd7 100644 --- a/src/components/RPC.tsx +++ b/src/components/RPC.tsx @@ -1,32 +1,52 @@ +import { useState, useEffect } from 'react'; import { useTranslation } from 'next-i18next'; import { Box, Typography, Tooltip, styled } from '@mui/material'; import { CheckCircle as CheckIcon, Cancel as CancelIcon } from '@mui/icons-material'; import { useData, useCustomTheme } from '~/hooks'; import { DataContainer, STitle } from '~/components'; +import { checkRpcStatus } from '~/utils'; export const RPC = () => { const { t } = useTranslation(); const { chainData } = useData(); + const [rpcData, setRpcData] = useState<{ url: string; status: boolean }[]>([]); + + useEffect(() => { + const updateRpcStatuses = async () => { + if (!chainData?.metadata?.publicRpcs) return; + + const updatedRpcData = await Promise.all( + chainData.metadata.publicRpcs.map(async (rpc) => { + const status = await checkRpcStatus(rpc); + return { url: rpc, status }; + }), + ); + + setRpcData(updatedRpcData); + }; + + updateRpcStatuses(); + }, [chainData]); + return ( <article> <STitle>{t('CHAIN.RPC.title')}</STitle> <DataContainer> - {chainData?.metadata?.publicRpcs && - chainData.metadata.publicRpcs.map((rpc, index) => ( - <RPCBox key={index}> - <Tooltip title={rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}> - {rpc.status ? <CheckIcon color='success' /> : <CancelIcon color='error' />} - </Tooltip> - <RPCUrl>{rpc.url}</RPCUrl> - </RPCBox> - ))} + {rpcData.map((rpc, index) => ( + <RPCBox key={index}> + <Tooltip title={rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}> + {rpc.status ? <CheckIcon color='success' /> : <CancelIcon color='error' />} + </Tooltip> + <RPCUrl>{rpc.url}</RPCUrl> + </RPCBox> + ))} </DataContainer> </article> ); }; -export const RPCBox = styled(Box)(() => { +const RPCBox = styled(Box)(() => { const { currentTheme } = useCustomTheme(); return { display: 'flex', @@ -37,7 +57,7 @@ export const RPCBox = styled(Box)(() => { }; }); -export const RPCUrl = styled(Typography)(() => { +const RPCUrl = styled(Typography)(() => { const { currentTheme } = useCustomTheme(); return { textDecoration: 'underline', diff --git a/src/components/TvlContentBox.tsx b/src/components/TvlContentBox.tsx index b6aefac..b3eccc5 100644 --- a/src/components/TvlContentBox.tsx +++ b/src/components/TvlContentBox.tsx @@ -5,7 +5,7 @@ import { formatDataNumber } from '~/utils'; interface TvlContentBoxProps { avatar: string; token: string; - total: number; + total: string; tokenName: string; isLast?: boolean; } diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index 0f070a1..7eef2a7 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -1,5 +1,6 @@ import { Avatar, Box, Button, Typography, styled } from '@mui/material'; import { useTranslation } from 'next-i18next'; +import { useRouter } from 'next/router'; import Image from 'next/image'; import { useCustomTheme, useData } from '~/hooks'; @@ -20,6 +21,8 @@ import SettingsLight from '~/assets/icons/settingsLight.svg'; export const ChainMetadata = () => { const { t } = useTranslation(); + const router = useRouter(); + const { chain } = router.query; const { chainData } = useData(); const { theme } = useCustomTheme(); const data = chainData?.metadata; @@ -29,17 +32,17 @@ export const ChainMetadata = () => { <MetadataContainer> <FirstRow> <ChainIdentity> - <Avatar src={data?.iconUrl} alt={data?.chainName} sx={{ width: 72, height: 72 }} /> + <Avatar src={data?.iconUrl} alt={data?.name} sx={{ width: 72, height: 72 }} /> <Box> - <ChainName>{data?.chainName}</ChainName> + <ChainName>{data?.name}</ChainName> <ChainId> - {t('CHAIN.chainId')}: <ChainIdValue>{data?.chainId}</ChainIdValue> + {t('CHAIN.chainId')}: <ChainIdValue>{chain}</ChainIdValue> </ChainId> </Box> </ChainIdentity> <ButtonsContainer> - <MetadataButton variant='contained' href={data?.websiteUrl}> + <MetadataButton variant='contained' href={data?.explorerUrl}> <WebIcon src={dark ? WebDark : WebLight} alt='web icon' /> {t('CHAIN.website')} <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> @@ -74,15 +77,15 @@ export const ChainMetadata = () => { <Label variant='subtitle1' color='textSecondary' gutterBottom> {t('CHAIN.environment')} </Label> - <Value>{data?.environment}</Value> + <Value>{data?.chainType}</Value> </Box> </MetadataItem> <MetadataItem> - <NativeTokenAvatar src={data?.nativeTokenIconUrl} alt={data?.nativeToken} /> + <NativeTokenAvatar src={data?.baseToken.imageUrl || ''} alt={data?.baseToken.symbol} /> <Box> <Label>{t('CHAIN.nativeToken')}</Label> - <Value>{data?.nativeToken}</Value> + <Value>{data?.baseToken.symbol}</Value> </Box> </MetadataItem> </SecondRow> diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 70c1055..bab88cc 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -13,7 +13,7 @@ export const Dashboard = () => { const chainIdStr = String(chain.chainId); const formattedSearchTerm = String(searchTerm).toLowerCase(); - const matchesName = chain.chainName.toLowerCase().includes(formattedSearchTerm); + const matchesName = chain.metadata?.name.toLowerCase().includes(formattedSearchTerm); const matchesId = chainIdStr.includes(formattedSearchTerm); return matchesName || matchesId; diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index d5ad6c4..82d267e 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -83,6 +83,9 @@ const AllTokensButton = styled(Button)(() => { fontSize: '0.75rem', marginTop: '1.5rem', alignItems: 'center', + '&:hover': { + backgroundColor: currentTheme.backgroundHover, + }, }; }); diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index c2197b3..f28a743 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -43,7 +43,7 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { <STableCell>${token.price.toLocaleString()}</STableCell> - <STableCell>${((token.amountUsd * token.price) / 1e18).toLocaleString()}</STableCell> + <STableCell>${((Number(token.amountUsd) * Number(token.price)) / 1e18).toLocaleString()}</STableCell> </STableBodyRow> ))} </STableBody> diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json index abc22f3..75f881a 100644 --- a/src/data/chainMockData.json +++ b/src/data/chainMockData.json @@ -2,103 +2,569 @@ "chainType": "Rollup", "tvl": [ { - "symbol": "ETH", + "amount": "118098.529954744427197224", + "amountUsd": "298854234.9769785102439351932", + "price": "2530.55", "name": "Ethereum", - "amountUsd": 557596566000, - "price": 3500, - "imageUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png" - }, - { - "symbol": "USDT", - "name": "Tether USD", - "amountUsd": 114493849618, - "price": 3500, - "imageUrl": "https://www.cryptomkt.com/static/landing/img/crypto-pages/trending/usdt.svg" + "symbol": "ETH", + "contractAddress": null, + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 }, { + "amount": "55480860.508207", + "amountUsd": "55369898.787190586", + "price": "0.998", + "name": "USDC", "symbol": "USDC", - "name": "Bridged USD", - "amountUsd": 34115209093, - "price": 3500, - "imageUrl": "https://assets.coingecko.com/coins/images/6319/standard/usdc.png?1696506694" + "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "type": "erc20", + "decimals": 6 }, { + "amount": "998459864.823799773445941598", + "amountUsd": "10983058.513061797507905357578", + "price": "0.011", + "name": "Koi", "symbol": "KOI", - "name": "Koi Finance", - "amountUsd": 24115209093, - "price": 3500, - "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" + "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", + "type": "erc20", + "decimals": 18 }, { - "symbol": "WBTC", + "amount": "9472627.999218", + "amountUsd": "9463155.371218782", + "price": "0.999", + "name": "Tether USD", + "symbol": "USDT", + "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "110.93700914", + "amountUsd": "6317358.57275346784", + "price": "56945.456", "name": "Wrapped BTC", - "amountUsd": 12620248, - "price": 3500, - "imageUrl": "https://assets.coingecko.com/coins/images/7598/standard/wrapped_bitcoin_wbtc.png?1696507857" + "symbol": "WBTC", + "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", + "type": "erc20", + "decimals": 8 }, { - "symbol": "wstETH", - "name": "Lido wstETH", - "amountUsd": 3552439, - "price": 3500, - "imageUrl": "https://assets.coingecko.com/coins/images/18834/standard/wstETH.png?1696518295" + "amount": "132452368.754496583511107126", + "amountUsd": "1854333.162562952169155499764", + "price": "0.014", + "name": "HYCO", + "symbol": "HYCO", + "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", + "type": "erc20", + "decimals": 18 }, { + "amount": "47964958.588748853386740337", + "amountUsd": "959299.17177497706773480674", + "price": "0.02", + "name": "Idexo Token", + "symbol": "IDO", + "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "257.706060883787096756", + "amountUsd": "729164.610025205214406586908", + "price": "2829.443", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4597086.058830655172811988", + "amountUsd": "721742.511236412862131482116", + "price": "0.157", + "name": "DEXTF Token", + "symbol": "DEXTF", + "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "709393.663223743840780868", + "amountUsd": "706556.088570848865417744528", + "price": "0.996", + "name": "Dai Stablecoin", + "symbol": "DAI", + "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "3611649.325725586386626848", + "amountUsd": "274485.348755144565383640448", + "price": "0.076", + "name": "GOVI", + "symbol": "GOVI", + "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "162910.961709234801235986", + "amountUsd": "162259.317862397862031042056", + "price": "0.996", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "769116.258069049173770643", + "amountUsd": "123827.717549116916977073523", + "price": "0.161", + "name": "Symbiosis", + "symbol": "SIS", + "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34.07328120799622273", + "amountUsd": "93108.51193584564624710708", + "price": "2732.596", + "name": "Coinbase Wrapped Staked ETH", "symbol": "cbETH", - "name": "Curve cbETH", - "amountUsd": 2552439, - "price": 3500, - "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" + "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1748294.875759738167409463", + "amountUsd": "54197.141148551883189693353", + "price": "0.031", + "name": "ZKBase", + "symbol": "ZKB", + "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "70230.481253590057712656", + "amountUsd": "42138.2887521540346275936", + "price": "0.6", + "name": "DeversiFi Token", + "symbol": "DVF", + "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", + "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "290.508016952", + "amountUsd": "40489.845370701952", + "price": "139.376", + "name": "Wrapped SOL (Wormhole)", + "symbol": "SOL", + "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", + "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "4069.036217336", + "amountUsd": "26216.800348295848", + "price": "6.443", + "name": "Wrapped TON Coin", + "symbol": "TONCOIN", + "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "23546.536039530998897252", + "amountUsd": "23522.989503491467898354748", + "price": "0.999", + "name": "Curve.Fi USD Stablecoin", + "symbol": "crvUSD", + "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "8.989236054015567327", + "amountUsd": "22819.049873813761441646922", + "price": "2538.486", + "name": "Wrapped Ether", + "symbol": "WETH", + "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", + "type": "erc20", + "decimals": 18 }, { - "symbol": "BAL", - "name": "Balancer", - "amountUsd": 1552439, - "price": 3500, - "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" + "amount": "6450474.040573841973953155", + "amountUsd": "19351.422121721525921859465", + "price": "0.003", + "name": "LSD Coin", + "symbol": "LSD", + "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5.423689884062204153", + "amountUsd": "16185.635689132864619181944", + "price": "2984.248", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34056.984148728150579544", + "amountUsd": "13043.824928962881671965352", + "price": "0.383", + "name": "Bella", + "symbol": "BEL", + "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "46220.536588230241212891", + "amountUsd": "11277.810927528178855945404", + "price": "0.244", + "name": "1INCH Token", + "symbol": "1INCH", + "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "563082.288758156473620986", + "amountUsd": "9009.316620130503577935776", + "price": "0.016", + "name": "Deri", + "symbol": "DERI", + "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "43034.765060388679856659", + "amountUsd": "7229.840530145298215918712", + "price": "0.168", + "name": "Maverick Token", + "symbol": "MAV", + "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4874.863543072452577322", + "amountUsd": "7195.298589574940004127272", + "price": "1.476", + "name": "Worldcoin", + "symbol": "WLD", + "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", + "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1267111.79536025946087647", + "amountUsd": "6335.55897680129730438235", + "price": "0.005", + "name": "ZigZag", + "symbol": "ZZ", + "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", + "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.1", + "amountUsd": "5694.4497", + "price": "56944.497", + "name": "tBTC v2", + "symbol": "tBTC", + "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1.607308526702602644", + "amountUsd": "4152.653560748531109256908", + "price": "2583.607", + "name": "rsETH", + "symbol": "rsETH", + "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "35.167061181353626164", + "amountUsd": "3744.623841651715467568884", + "price": "106.481", + "name": "Aave Token", + "symbol": "AAVE", + "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "312.082999060002117307", + "amountUsd": "3129.880397572761234471903", + "price": "10.029", + "name": "ChainLink Token", + "symbol": "LINK", + "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "154.058620754243125866", + "amountUsd": "2757.803370121706196127266", + "price": "17.901", + "name": "Metaverse Index", + "symbol": "MVI", + "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "33", + "amountUsd": "1776.258", + "price": "53.826", + "name": "Tellor Tributes", + "symbol": "TRB", + "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.639944048220845643", + "amountUsd": "1646.186950090917565288056", + "price": "2572.392", + "name": "Renzo Restaked ETH", + "symbol": "Renzo Restaked ETH", + "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4093.979328418030008295", + "amountUsd": "1629.40377271037594330141", + "price": "0.398", + "name": "Matic Token", + "symbol": "MATIC", + "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "132132.766491", + "amountUsd": "1189.194898419", + "price": "0.009", + "name": "Changer", + "symbol": "CNG", + "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", + "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1164511.592541489082720882", + "amountUsd": "1164.511592541489082720882", + "price": "0.001", + "name": "Fringe", + "symbol": "FRIN", + "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5985.542511355987510812", + "amountUsd": "861.918121635262201556928", + "price": "0.144", + "name": "WOO", + "symbol": "WOO", + "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "134908.179074505869136306", + "amountUsd": "674.54089537252934568153", + "price": "0.005", + "name": "Furucombo", + "symbol": "COMBO", + "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "51689.739780035047575291", + "amountUsd": "620.276877360420570903492", + "price": "0.012", + "name": "Beam", + "symbol": "BEAM", + "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.201", + "amountUsd": "528.814518", + "price": "2630.918", + "name": "mETH", + "symbol": "mETH", + "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "42.412842071038840242", + "amountUsd": "447.837199428099114115278", + "price": "10.559", + "name": "Rocket Pool", + "symbol": "RPL", + "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "97739", + "amountUsd": "293.217", + "price": "0.003", + "name": "Bonsai3", + "symbol": "SEED", + "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.000014110846294792", + "amountUsd": "0.000004952907049471992", + "price": "0.351", + "name": "Storj", + "symbol": "STORJ", + "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "15945307297.038027211009518403", + "amountUsd": "0", + "price": "0", + "name": "Pepe", + "symbol": "PEPE", + "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1073815923.25847686794945247", + "amountUsd": "0", + "price": "0", + "name": "SHIBA INU", + "symbol": "SHIB", + "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.048392888467075907", + "amountUsd": "0", + "price": "0", + "name": "Syncus", + "symbol": "SYNC", + "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "10000100", + "amountUsd": "0", + "price": "0", + "name": "XWG", + "symbol": "XWG", + "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", + "type": "erc20", + "decimals": 18 } ], - "batchesInfo": { - "commited": 100, - "verified": 90, - "executed": 80 - }, + "batchesInfo": { "commited": "490872", "verified": "490869", "executed": "490825" }, "feeParams": { - "batchOverheadL1Gas": 50000, + "batchOverheadL1Gas": 1000000, + "maxL2GasPerBatch": 80000000, "maxPubdataPerBatch": 120000, - "maxL2GasPerBatch": 10000000, - "priorityTxMaxPubdata": 15000, - "minimalL2GasPrice": 0.25 + "minimalL2GasPrice": "250000000", + "priorityTxMaxPubdata": 99000 }, "metadata": { + "name": "ZKsyncERA", "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", - "chainName": "ZKsyncERA", - "chainId": "324", - "publicRpcs": [ - { - "url": "https://mainnet.era.zksync.io", - "status": true - }, - { - "url": "https://1rpc.io/zksync2-era", - "status": true - }, - { - "url": "https://zksync.drpc.org", - "status": false - } - ], - "websiteUrl": "https://zksync.io/", + "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], "explorerUrl": "https://explorer.zksync.io/", "launchDate": 1679626800, - "environment": "mainnet", - "nativeTokenIconUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png", - "nativeToken": "ETH" - }, - "l2ChainInfo": { - "tps": 10000000, - "avgBlockTime": 12, - "lastBlock": 1000000, - "lastBlockVerified": 999999 + "chainType": "Rollup", + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628" } } diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index 4ba4094..d4200d3 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -1,110 +1,589 @@ { "l1Tvl": [ { - "symbol": "ETH", + "amount": "118306.55939191423985395", + "amountUsd": "300833113.49886311078510011665", + "price": "2542.827", "name": "Ethereum", - "amountUsd": 557596566000, - "price": 300, - "imageUrl": "https://dynamic-assets.coinbase.com/dbb4b4983bde81309ddab83eb598358eb44375b930b94687ebe38bc22e52c3b2125258ffb8477a5ef22e33d6bd72e32a506c391caa13af64c00e46613c3e5806/asset_icons/4113b082d21cc5fab17fc8f2d19fb996165bcce635e6900f7fc2d57c4ef33ae9.png" - }, - { - "symbol": "USDT", - "name": "Tether USD", - "amountUsd": 114493849618, - "price": 300, - "imageUrl": "https://www.cryptomkt.com/static/landing/img/crypto-pages/trending/usdt.svg" + "symbol": "ETH", + "contractAddress": null, + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 }, { + "amount": "56310048.030096", + "amountUsd": "56366358.078126096", + "price": "1.001", + "name": "USDC", "symbol": "USDC", - "name": "Bridged USD", - "amountUsd": 34115209093, - "price": 300, - "imageUrl": "https://assets.coingecko.com/coins/images/6319/standard/usdc.png?1696506694" + "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "type": "erc20", + "decimals": 6 }, { + "amount": "998459864.823799773445941598", + "amountUsd": "11981518.377885597281351299176", + "price": "0.012", + "name": "Koi", "symbol": "KOI", - "name": "Koi Finance", - "amountUsd": 24115209093, - "price": 300, - "imageUrl": "https://assets.coingecko.com/coins/images/35766/standard/Koi_logo.png?1709782399" + "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", + "type": "erc20", + "decimals": 18 }, { - "symbol": "WBTC", + "amount": "9472627.999218", + "amountUsd": "9482100.627217218", + "price": "1.001", + "name": "Tether USD", + "symbol": "USDT", + "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "113.67749192", + "amountUsd": "6457843.93470259472", + "price": "56808.466", "name": "Wrapped BTC", - "amountUsd": 12620248, - "price": 300, - "imageUrl": "https://assets.coingecko.com/coins/images/7598/standard/wrapped_bitcoin_wbtc.png?1696507857" + "symbol": "WBTC", + "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", + "type": "erc20", + "decimals": 8 }, { - "symbol": "wstETH", - "name": "Lido wstETH", - "amountUsd": 3552439, - "price": 300, - "imageUrl": "https://assets.coingecko.com/coins/images/18834/standard/wstETH.png?1696518295" + "amount": "132452368.754496583511107126", + "amountUsd": "1721880.793808455585644392638", + "price": "0.013", + "name": "HYCO", + "symbol": "HYCO", + "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "47964958.588748853386740337", + "amountUsd": "1007264.130363725921121547077", + "price": "0.021", + "name": "Idexo Token", + "symbol": "IDO", + "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "257.706060883787096756", + "amountUsd": "730177.652550539381483934744", + "price": "2833.374", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4597086.058830655172811988", + "amountUsd": "717145.425177582206958670128", + "price": "0.156", + "name": "DEXTF Token", + "symbol": "DEXTF", + "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "709393.663223743840780868", + "amountUsd": "709393.663223743840780868", + "price": "1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "3611649.325725586386626848", + "amountUsd": "274485.348755144565383640448", + "price": "0.076", + "name": "GOVI", + "symbol": "GOVI", + "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "162910.961709234801235986", + "amountUsd": "162585.139785816331633514028", + "price": "0.998", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "type": "erc20", + "decimals": 18 }, { + "amount": "769116.258069049173770643", + "amountUsd": "123827.717549116916977073523", + "price": "0.161", + "name": "Symbiosis", + "symbol": "SIS", + "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34.07328120799622273", + "amountUsd": "93326.64908213923806502454", + "price": "2738.998", + "name": "Coinbase Wrapped Staked ETH", "symbol": "cbETH", - "name": "Curve cbETH", - "amountUsd": 2552439, - "price": 300, - "imageUrl": "https://assets.coingecko.com/coins/images/27008/standard/cbeth.png?1709186989" + "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1748294.875759738167409463", + "amountUsd": "54197.141148551883189693353", + "price": "0.031", + "name": "ZKBase", + "symbol": "ZKB", + "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "70230.481253590057712656", + "amountUsd": "42138.2887521540346275936", + "price": "0.6", + "name": "DeversiFi Token", + "symbol": "DVF", + "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", + "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "290.508016952", + "amountUsd": "40900.62370667208", + "price": "140.79", + "name": "Wrapped SOL (Wormhole)", + "symbol": "SOL", + "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", + "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "4028.076528447", + "amountUsd": "26339.592419514933", + "price": "6.539", + "name": "Wrapped TON Coin", + "symbol": "TONCOIN", + "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "23546.536039530998897252", + "amountUsd": "23570.082575570529896149252", + "price": "1.001", + "name": "Curve.Fi USD Stablecoin", + "symbol": "crvUSD", + "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "8.989236054015567327", + "amountUsd": "22847.294053495478354188356", + "price": "2541.628", + "name": "Wrapped Ether", + "symbol": "WETH", + "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "6450474.040573841973953155", + "amountUsd": "19351.422121721525921859465", + "price": "0.003", + "name": "LSD Coin", + "symbol": "LSD", + "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5.423689884062204153", + "amountUsd": "16213.876842359176516206615", + "price": "2989.455", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34056.984148728150579544", + "amountUsd": "13009.767944814153521385808", + "price": "0.382", + "name": "Bella", + "symbol": "BEL", + "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "46220.536588230241212891", + "amountUsd": "11324.031464116409097158295", + "price": "0.245", + "name": "1INCH Token", + "symbol": "1INCH", + "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "563082.288758156473620986", + "amountUsd": "9009.316620130503577935776", + "price": "0.016", + "name": "Deri", + "symbol": "DERI", + "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", + "type": "erc20", + "decimals": 18 }, { - "symbol": "BAL", - "name": "Balancer", - "amountUsd": 1552439, - "price": 300, - "imageUrl": "https://coin-images.coingecko.com/coins/images/671/large/balancer.png" + "amount": "43034.765060388679856659", + "amountUsd": "7315.91006026607557563203", + "price": "0.17", + "name": "Maverick Token", + "symbol": "MAV", + "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4874.863543072452577322", + "amountUsd": "7244.047225005664529900492", + "price": "1.486", + "name": "Worldcoin", + "symbol": "WLD", + "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", + "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1267111.79536025946087647", + "amountUsd": "6335.55897680129730438235", + "price": "0.005", + "name": "ZigZag", + "symbol": "ZZ", + "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", + "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.1", + "amountUsd": "5675.4499", + "price": "56754.499", + "name": "tBTC v2", + "symbol": "tBTC", + "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1.607308526702602644", + "amountUsd": "4156.075520601880950285984", + "price": "2585.736", + "name": "rsETH", + "symbol": "rsETH", + "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "35.167061181353626164", + "amountUsd": "3755.806967107385920689036", + "price": "106.799", + "name": "Aave Token", + "symbol": "AAVE", + "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "312.082999060002117307", + "amountUsd": "3143.299966532341325516104", + "price": "10.072", + "name": "ChainLink Token", + "symbol": "LINK", + "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "154.058620754243125866", + "amountUsd": "2615.91538040704827720468", + "price": "16.98", + "name": "Metaverse Index", + "symbol": "MVI", + "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "33", + "amountUsd": "1821.369", + "price": "55.193", + "name": "Tellor Tributes", + "symbol": "TRB", + "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.639944048220845643", + "amountUsd": "1651.358977888638439774782", + "price": "2580.474", + "name": "Renzo Restaked ETH", + "symbol": "Renzo Restaked ETH", + "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4093.979328418030008295", + "amountUsd": "1633.497752038793973309705", + "price": "0.399", + "name": "Matic Token", + "symbol": "MATIC", + "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "132132.766491", + "amountUsd": "1189.194898419", + "price": "0.009", + "name": "Changer", + "symbol": "CNG", + "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", + "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1164511.592541489082720882", + "amountUsd": "1164.511592541489082720882", + "price": "0.001", + "name": "Fringe", + "symbol": "FRIN", + "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5985.542511355987510812", + "amountUsd": "867.90366414661818906774", + "price": "0.145", + "name": "WOO", + "symbol": "WOO", + "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "134908.179074505869136306", + "amountUsd": "674.54089537252934568153", + "price": "0.005", + "name": "Furucombo", + "symbol": "COMBO", + "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "51689.739780035047575291", + "amountUsd": "620.276877360420570903492", + "price": "0.012", + "name": "Beam", + "symbol": "BEAM", + "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.201", + "amountUsd": "532.432317", + "price": "2648.917", + "name": "mETH", + "symbol": "mETH", + "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "42.412842071038840242", + "amountUsd": "442.15387859057990952285", + "price": "10.425", + "name": "Rocket Pool", + "symbol": "RPL", + "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "97739", + "amountUsd": "293.217", + "price": "0.003", + "name": "Bonsai3", + "symbol": "SEED", + "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.000014104615563706", + "amountUsd": "0.000004950720062860806", + "price": "0.351", + "name": "Storj", + "symbol": "STORJ", + "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "15945307297.038027211009518403", + "amountUsd": "0", + "price": "0", + "name": "Pepe", + "symbol": "PEPE", + "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1073815923.25847686794945247", + "amountUsd": "0", + "price": "0", + "name": "SHIBA INU", + "symbol": "SHIB", + "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.048392888467075907", + "amountUsd": "0", + "price": "0", + "name": "Syncus", + "symbol": "SYNC", + "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "10000100", + "amountUsd": "0", + "price": "0", + "name": "XWG", + "symbol": "XWG", + "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", + "type": "erc20", + "decimals": 18 } ], - "ethGasInfo": { - "gasPrice": 50, - "ethTransfer": 21000, - "erc20Transfer": 65000 - }, + "ethGasInfo": { "gasPrice": "2811768091", "erc20Transfer": "34853", "ethTransfer": "21000" }, "zkChains": [ { - "chainId": 0, - "chainName": "ZKsyncERA", - "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "chainId": "324", "chainType": "Rollup", - "nativeToken": "ETH", - "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "tvl": 1000000, - "metadata": true, - "rpc": true - }, - { - "chainId": 1, - "chainName": "ZKsyncERA", - "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", - "chainType": "Validium", - "nativeToken": "ETH", - "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "tvl": 500000, - "metadata": true, + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "tvl": "389188998.253667604685659703935", + "metadata": { + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "name": "ZKsyncERA", + "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], + "explorerUrl": "https://explorer.zksync.io/", + "launchDate": 1679626800 + }, "rpc": false }, { - "chainId": 2, - "chainName": "ZKsyncERA", - "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", - "chainType": "Rollup", - "nativeToken": "ETH", - "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "tvl": 300000, - "metadata": false, - "rpc": true - }, - { - "chainId": 3, - "chainName": "ZKsyncERA", - "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "chainId": "388", "chainType": "Rollup", - "nativeToken": "ETH", - "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "tvl": 10000, - "metadata": false, + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "tvl": "1802056.74192740728", + "metadata": { + "iconUrl": "https://s3.coinmarketcap.com/static-gravity/image/84e1ec1257dd4a6da6ee5584338a2460.jpeg", + "name": "Cronos", + "publicRpcs": ["https://mainnet.zkevm.cronos.org"], + "explorerUrl": "https://explorer.zkevm.cronos.org/", + "launchDate": 1679626800 + }, "rpc": false } ] diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index 1dcbc6e..64520eb 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -19,13 +19,16 @@ const Chain = ({ chain }: InferGetStaticPropsType<typeof getStaticProps>) => { const { setSelectedChainId, refetchChainData } = useData(); useEffect(() => { - setSelectedChainId(chain?.chainId); + if (chain.chainId) { + setSelectedChainId(chain.chainId); + } + refetchChainData({ throwOnError: true, cancelRefetch: false }); }, [chain?.chainId, setSelectedChainId, refetchChainData]); return ( <> - <CustomHead title={chain?.chainName} /> + <CustomHead title={chain?.chainId} /> <ChainDetail /> </> ); @@ -48,7 +51,7 @@ export const getStaticPaths: GetStaticPaths = async () => { export const getStaticProps: GetStaticProps<ChainProps> = async ({ params, locale }: GetStaticPropsContext) => { const ecosystemData = await fetchEcosystemData(); const chains = ecosystemData.zkChains; - const chainId = parseInt(params?.chain as string); + const chainId = params?.chain; const chain = chains.find((chain: EcosystemChainData) => chain.chainId === chainId); if (!chain) { diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index d2b2ff3..2256964 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -6,8 +6,8 @@ import { ChainData, EcosystemData, TvlData } from '~/types'; import { fetchEcosystemData, fetchChainData } from '~/utils'; type ContextType = { - selectedChainId?: number; - setSelectedChainId: (val: number) => void; + selectedChainId?: string; + setSelectedChainId: (val: string) => void; isEcosystemLoading: boolean; isChainLoading: boolean; @@ -26,7 +26,7 @@ interface DataProps { export const DataContext = createContext({} as ContextType); export const DataProvider = ({ children }: DataProps) => { - const [selectedChainId, setSelectedChainId] = useState<number>(); + const [selectedChainId, setSelectedChainId] = useState<string>(); const router = useRouter(); const { @@ -45,8 +45,14 @@ export const DataProvider = ({ children }: DataProps) => { refetch: refetchChainData, } = useQuery({ queryKey: ['chainData', selectedChainId], - queryFn: () => fetchChainData(selectedChainId!), - enabled: !!selectedChainId, + queryFn: () => { + if (selectedChainId) { + return fetchChainData(selectedChainId); + } else { + return Promise.resolve(undefined); + } + }, + enabled: !!selectedChainId, // Only fetch chain data if selectedChainId is defined }); useEffect(() => { @@ -56,7 +62,7 @@ export const DataProvider = ({ children }: DataProps) => { }, [isEcosystemError, isChainError, router]); const totalL1TVL = (ecosystemData?.l1Tvl || []).reduce((accumulator: number, token: TvlData) => { - return accumulator + (token.amountUsd || 0); + return accumulator + (Number(token.amountUsd) || 0); }, 0); return ( diff --git a/src/types/Data.ts b/src/types/Data.ts index 22aff46..4accd68 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -11,22 +11,25 @@ export interface ChainData { maxPubdataPerBatch: number; maxL2GasPerBatch: number; priorityTxMaxPubdata: number; - minimalL2GasPrice: number; + minimalL2GasPrice: string; }; metadata: { + name: string; iconUrl: string; - chainName: string; - chainId: number; - publicRpcs: { - url: string; - status: boolean; - }[]; - websiteUrl: string; + publicRpcs: string[]; explorerUrl: string; launchDate: number; - environment: string; - nativeTokenIconUrl: string; - nativeToken: string; + chainType: string; + baseToken: { + name: string; + symbol: string; + contractAddress: string | null; + coingeckoId: string; + type: string; + imageUrl: string; + decimals: number; + }; + tokenImgUrl: string; }; l2ChainInfo: { tps: number; @@ -37,14 +40,25 @@ export interface ChainData { } export interface EcosystemChainData { - chainName: string; - chainId: number; - iconUrl: string; - nativeToken: string; - tokenImgUrl: string; - tvl: number; + chainId: string; chainType: string; - metadata: boolean; + baseToken: { + name: string; + symbol: string; + contractAddress: string | null; + coingeckoId: string; + type: string; + imageUrl: string; + decimals: 18; + }; + tvl: string; + metadata?: { + iconUrl: string; + name: string; + publicRpcs: string[]; + explorerUrl: string; + launchDate: number; + }; rpc: boolean; } @@ -59,11 +73,15 @@ export interface EcosystemData { } export interface TvlData { - symbol: string; + amount: string; + amountUsd: string; + price: string; name: string; - amountUsd: number; - price: number; + symbol: string; + contractAddress: string | null; + type: string; imageUrl: string; + decimals: number; } export interface ChainTvl { diff --git a/src/utils/services.ts b/src/utils/services.ts index b4da13c..0ea19aa 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -21,15 +21,40 @@ export const fetchEcosystemData = async () => { return await res.json(); }; -export const fetchChainData = async (chainId: number) => { +export const fetchChainData = async (chainId: string) => { // temporary for mock data if (!API_URL) { await delay(2000); // Simulate 2 seconds delay return Promise.resolve(chainMockData); } - const res = await fetch(`${API_URL}/zkchain/${chainId}`); + const res = await fetch(`${API_URL}/metrics/zkchain/${chainId}`); if (!res.ok) { throw new Error('Failed to fetch chain data'); } return await res.json(); }; + +export async function checkRpcStatus(rpcUrl: string): Promise<boolean> { + try { + // Ping the RPC endpoint with a basic request + const response = await fetch(rpcUrl, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + jsonrpc: '2.0', + id: 1, + method: 'web3_clientVersion', // A basic method that should be supported by most RPC endpoints + params: [], + }), + }); + + // If the response is successful and contains a valid result, return true + const data = await response.json(); + return response.ok && !!data.result; + } catch (error) { + // If there is an error or the endpoint is not responding, return false + return false; + } +} From f5a4a52ef2c16a98fc71560d67dd01717fa01375 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 16 Aug 2024 09:22:24 -0300 Subject: [PATCH 50/82] docs: readme and licence (#28) --- LICENSE | 21 +++++++++++++++++++ README.md | 62 +++++++++++++++++++++++++------------------------------ 2 files changed, 49 insertions(+), 34 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..5dbd3fd --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Wonderland + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 430bdad..3c5b3ce 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,39 @@ -# Web3 React Boilerplate +# zkChainHub UI ๐ŸŒ -## Features +## Description -- Modern React setup with the latest tools and libraries. -- Boilerplate for building web3-enabled applications. -- Example unit and integration tests included. -- Code linting and formatting for clean and maintainable code. -- GitHub workflows for continuous integration. +The **ZKchainHub** proposes a decentralized, permissionless platform that provides custom analytics dashboards for ZK ecosystems, empowering chain operators to track and visualize key metrics like TVL, transaction counts, and block details. This allows users to easily explore each chain. -## Setup +## ๐Ÿ“‹ Prerequisites -1. Clone this repository. -2. Copy the `.env.example` file to `.env` and fill in the variables. -3. Install the project dependencies by running: +- Ensure you have `pnpm >= 9.0.0` installed. - ```bash - pnpm install - ``` +## ๐Ÿ’ป WebFlow -## Available Scripts +The flow of the application is as follows: -Available scripts that can be run using `pnpm`: +Home Page: The ecosystem page, where data is fetched from `metrics/ecosystem`. From here, you can navigate to all token's TVL data or directly to the Chain Page. -| Script | Description | -| -------------- | ------------------------------------------------------------ | -| `dev` | Start the development server using Next. | -| `build` | Build the project for production. | -| `preview` | Preview the production build using Next. | -| `lint` | Run ESLint on the source code to check for coding standards. | -| `lint:fix` | Run ESLint and automatically fix code formatting issues. | -| `prettier` | Check code formatting using Prettier. | -| `prettier:fix` | Format code using Prettier and automatically fix issues. | -| `format` | Run Prettier and ESLint to format and fix code issues. | -| `format:check` | Check code formatting and linting without making changes. | -| `test` | Run tests using Cypress and Jest | +Chain Page: Accessible via search in the header or by selecting a row in the table. Information is fetched from `metrics/zkchain/:id`. -## Technologies Used +## ๐Ÿš€ Installation -This boilerplate leverages the latest technologies, including: +```bash +$ pnpm install +``` -- [NextJS](https://nextjs.org/) -- [Wagmi](https://wagmi.sh/) -- [Viem](https://viem.sh/) -- [Rainbowkit](https://www.rainbowkit.com/) +## ๐Ÿƒ Running the app + +```bash +$ pnpm run start +``` + +## Aditional comments + +The backend will typically run on `http://localhost:3000`. Make sure to update your .env file with the correct API base URL: + +`NEXT_PUBLIC_API_BASE_URL=<your_api_base_url>` + +## ๐Ÿ’ป Conventional Commits + +We follow the Conventional Commits [specification](https://www.conventionalcommits.org/en/v1.0.0/#specification). From 7fac6691abe208f980b46495541dfd1dd672340f Mon Sep 17 00:00:00 2001 From: Ardy <116569704+0xArdy@users.noreply.github.com> Date: Fri, 16 Aug 2024 08:27:50 -0400 Subject: [PATCH 51/82] chore: bump dependencies (#29) Co-authored-by: TITI <162849030+0xtiti@users.noreply.github.com> --- package.json | 6 +- pnpm-lock.yaml | 3673 +++++++++++++++++++++++++++++++++--------------- 2 files changed, 2565 insertions(+), 1114 deletions(-) diff --git a/package.json b/package.json index 6079f6d..90f92d3 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@mui/material": "5.15.14", "@mui/material-nextjs": "5.15.11", "@next/eslint-plugin-next": "14.1.3", - "@rainbow-me/rainbowkit": "2.0.2", + "@rainbow-me/rainbowkit": "2.1.4", "@tanstack/react-query": "5.28.0", "i18next": "23.7.6", "next": "14.1.3", @@ -47,8 +47,8 @@ "react-dom": "18.2.0", "react-i18next": "14.0.0", "react-router-dom": "6.15.0", - "viem": "2.8.6", - "wagmi": "2.5.7" + "viem": "2.19.6", + "wagmi": "2.12.5" }, "devDependencies": { "@defi-wonderland/crypto-husky-checks": "1.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fcd394e..30769ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ dependencies: specifier: 14.1.3 version: 14.1.3 '@rainbow-me/rainbowkit': - specifier: 2.0.2 - version: 2.0.2(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(viem@2.8.6)(wagmi@2.5.7) + specifier: 2.1.4 + version: 2.1.4(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(viem@2.19.6)(wagmi@2.12.5) '@tanstack/react-query': specifier: 5.28.0 version: 5.28.0(react@18.2.0) @@ -52,16 +52,16 @@ dependencies: version: 18.2.0(react@18.2.0) react-i18next: specifier: 14.0.0 - version: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + version: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) react-router-dom: specifier: 6.15.0 version: 6.15.0(react-dom@18.2.0)(react@18.2.0) viem: - specifier: 2.8.6 - version: 2.8.6(typescript@5.4.2) + specifier: 2.19.6 + version: 2.19.6(typescript@5.4.2) wagmi: - specifier: 2.5.7 - version: 2.5.7(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6) + specifier: 2.12.5 + version: 2.12.5(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) devDependencies: '@defi-wonderland/crypto-husky-checks': @@ -78,7 +78,7 @@ devDependencies: version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@testing-library/user-event': specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@9.3.4) + version: 14.4.3(@testing-library/dom@10.4.0) '@types/jest': specifier: 29.5.12 version: 29.5.12 @@ -207,10 +207,22 @@ packages: '@babel/highlight': 7.24.1 picocolors: 1.0.0 + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.0.1 + /@babel/compat-data@7.24.1: resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} engines: {node: '>=6.9.0'} + /@babel/compat-data@7.25.2: + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/core@7.24.1: resolution: {integrity: sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==} engines: {node: '>=6.9.0'} @@ -233,6 +245,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.25.2: + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helpers': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + convert-source-map: 2.0.0 + debug: 4.3.6 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/generator@7.24.1: resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} engines: {node: '>=6.9.0'} @@ -242,17 +277,45 @@ packages: '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 + /@babel/generator@7.25.0: + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.2 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: false + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + /@babel/helper-annotate-as-pure@7.24.7: + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.2 + dev: false + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7: + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} @@ -264,6 +327,17 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 + /@babel/helper-compilation-targets@7.25.2: + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: false + /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} engines: {node: '>=6.9.0'} @@ -280,6 +354,61 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.25.2): + resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.24.1(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: false + + /@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.1) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/traverse': 7.25.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.1): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} @@ -292,6 +421,18 @@ packages: regexpu-core: 5.3.2 semver: 6.3.1 + /@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.24.1): + resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.24.7 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: false + /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.1): resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} peerDependencies: @@ -305,6 +446,22 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color + dev: true + + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.1): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + debug: 4.3.6 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} @@ -329,12 +486,32 @@ packages: dependencies: '@babel/types': 7.24.0 + /@babel/helper-member-expression-to-functions@7.24.8: + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-module-imports@7.24.1: resolution: {integrity: sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.1): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} @@ -348,16 +525,58 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-module-transforms@7.25.2(@babel/core@7.24.1): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + /@babel/helper-optimise-call-expression@7.24.7: + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.25.2 + dev: false + /@babel/helper-plugin-utils@7.24.0: resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} engines: {node: '>=6.9.0'} + /@babel/helper-plugin-utils@7.24.8: + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.1): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} @@ -368,6 +587,21 @@ packages: '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-wrap-function': 7.25.0 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} @@ -379,6 +613,47 @@ packages: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-replace-supers@7.24.1(@babel/core@7.25.2): + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: false + + /@babel/helper-replace-supers@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2): + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-member-expression-to-functions': 7.24.8 + '@babel/helper-optimise-call-expression': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helper-simple-access@7.22.5: resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} @@ -386,12 +661,32 @@ packages: dependencies: '@babel/types': 7.24.0 + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 + /@babel/helper-skip-transparent-expression-wrappers@7.24.7: + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/helper-split-export-declaration@7.22.6: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} @@ -402,14 +697,28 @@ packages: resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser@7.24.8: + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.24.8: + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + dev: false + /@babel/helper-wrap-function@7.22.20: resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} engines: {node: '>=6.9.0'} @@ -417,6 +726,18 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.24.0 '@babel/types': 7.24.0 + dev: true + + /@babel/helper-wrap-function@7.25.0: + resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: false /@babel/helpers@7.24.1: resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} @@ -428,6 +749,14 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.25.0: + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + dev: false + /@babel/highlight@7.24.1: resolution: {integrity: sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==} engines: {node: '>=6.9.0'} @@ -437,6 +766,15 @@ packages: js-tokens: 4.0.0 picocolors: 1.0.0 + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + /@babel/parser@7.24.1: resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} engines: {node: '>=6.0.0'} @@ -444,6 +782,37 @@ packages: dependencies: '@babel/types': 7.24.0 + /@babel/parser@7.25.3: + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.25.2 + dev: false + + /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.24.1): + resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} engines: {node: '>=6.9.0'} @@ -452,6 +821,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} @@ -463,6 +843,21 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.1) + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} @@ -473,6 +868,20 @@ packages: '@babel/core': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-external-helpers@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-l3JgdWBntLRPvZkKzHmc0z+AkI91MmXOJUAeUlHbCYfgv8qLZPcYYsAIdY3iLG3TYIDDCC6Ob+e1knlniSX6fA==} @@ -484,20 +893,6 @@ packages: '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.24.1): - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.1 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) - dev: false - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.1): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -508,40 +903,41 @@ packages: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true - /@babel/plugin-proposal-export-default-from@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg==} + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.25.2 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.1) dev: false - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.24.1): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + /@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.1) dev: false - /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.24.1): - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) dev: false /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.1): @@ -557,30 +953,21 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) + dev: true - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.24.1): - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) - dev: false - - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.24.1): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color dev: false /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1): @@ -633,14 +1020,14 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-export-default-from@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA==} + /@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 dev: false /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.1): @@ -651,14 +1038,24 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-flow@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==} + /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 dev: false /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.1): @@ -669,6 +1066,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} @@ -678,6 +1086,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.1): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} @@ -703,6 +1122,27 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.1): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} @@ -720,6 +1160,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: false + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.1): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -752,6 +1201,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: false + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.1): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -778,6 +1236,27 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.1): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} @@ -797,6 +1276,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-async-generator-functions@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==} @@ -809,6 +1299,22 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} @@ -820,6 +1326,21 @@ packages: '@babel/helper-module-imports': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} @@ -829,6 +1350,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} @@ -838,6 +1370,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} @@ -848,6 +1391,20 @@ packages: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} @@ -859,6 +1416,21 @@ packages: '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} @@ -875,6 +1447,24 @@ packages: '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 + dev: true + + /@babel/plugin-transform-classes@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.1) + '@babel/traverse': 7.25.3 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} @@ -885,134 +1475,315 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 + dev: true - /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/template': 7.25.0 + dev: false - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + /@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.1): + resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + dev: false - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) + dev: true - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + dev: false - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) + dev: true - /@babel/plugin-transform-flow-strip-types@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==} + /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} engines: {node: '>=6.9.0'} peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + dev: false - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) + dev: true - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) + dev: false - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 + dev: true - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) + '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) + dev: false + + /@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.24.1): + resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.1) + dev: false + + /@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) + dev: false + + /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-function-name@7.25.1(@babel/core@7.24.1): + resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) + dev: false + + /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-literals@7.25.2(@babel/core@7.24.1): + resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) + dev: false + + /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} @@ -1023,6 +1794,20 @@ packages: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} @@ -1034,6 +1819,35 @@ packages: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.1): + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2): + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-simple-access': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} @@ -1046,6 +1860,22 @@ packages: '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.24.1): + resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.3 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} @@ -1056,6 +1886,20 @@ packages: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.1): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} @@ -1066,6 +1910,18 @@ packages: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} @@ -1075,6 +1931,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} @@ -1085,6 +1952,18 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + dev: false /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} @@ -1095,6 +1974,18 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + dev: false /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} @@ -1107,6 +1998,20 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.1) + dev: false /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} @@ -1117,6 +2022,20 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} @@ -1127,6 +2046,18 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) + dev: false /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} @@ -1138,6 +2069,21 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.1): + resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} @@ -1147,6 +2093,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} @@ -1157,6 +2114,20 @@ packages: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} @@ -1169,6 +2140,22 @@ packages: '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) + dev: true + + /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} @@ -1178,6 +2165,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} @@ -1187,6 +2185,17 @@ packages: dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.1): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} @@ -1198,152 +2207,294 @@ packages: '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) dev: true - /@babel/plugin-transform-react-jsx-self@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==} + /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.1): + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) + '@babel/types': 7.24.0 + dev: true + + /@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.1): + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.24.1) + '@babel/types': 7.25.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + regenerator-transform: 0.15.2 + dev: false + + /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.8 + dev: false + + /@babel/plugin-transform-runtime@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-plugin-utils': 7.24.8 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.1) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.24.1) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.1) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-react-jsx-source@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==} + /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: false + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.1): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + /@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) - '@babel/types': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} + /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 dev: true - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - regenerator-transform: 0.15.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: false - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true - /@babel/plugin-transform-runtime@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-yHLX14/T+tO0gjgJroDb8JYjOcQuzVC+Brt4CjHAxq/Ghw4xBVG+N02d1rMEcyUnKUQBL4Yy2gA9R72GK961jQ==} + /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-module-imports': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.1) - babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.1) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.1) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils': 7.24.8 dev: false - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + dev: true - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + /@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.1): + resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-plugin-utils': 7.24.8 + dev: false - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.1) + dev: true - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + /@babel/plugin-transform-typescript@7.25.2(@babel/core@7.24.1): + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + /@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2): + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/core': 7.25.2 + '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false - /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} + /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.1): + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.1) + dev: true - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} @@ -1354,6 +2505,18 @@ packages: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} @@ -1364,6 +2527,18 @@ packages: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} @@ -1374,6 +2549,18 @@ packages: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.1): + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) + '@babel/helper-plugin-utils': 7.24.8 + dev: false /@babel/preset-env@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==} @@ -1464,17 +2651,112 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true - /@babel/preset-flow@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==} + /@babel/preset-env@7.25.3(@babel/core@7.24.1): + resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: + '@babel/compat-data': 7.25.2 '@babel/core': 7.24.1 - '@babel/helper-plugin-utils': 7.24.0 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.1) + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.3(@babel/core@7.24.1) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-import-assertions': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.1) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-block-scoped-functions': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-class-static-block': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.1) + '@babel/plugin-transform-dotall-regex': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-duplicate-keys': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-dynamic-import': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-exponentiation-operator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-export-namespace-from': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.24.1) + '@babel/plugin-transform-json-strings': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.24.1) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-member-expression-literals': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-modules-amd': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.1) + '@babel/plugin-transform-modules-systemjs': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-modules-umd': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-new-target': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-object-super': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.1) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-property-literals': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-reserved-words': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-template-literals': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-typeof-symbol': 7.24.8(@babel/core@7.24.1) + '@babel/plugin-transform-unicode-escapes': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-unicode-property-regex': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-unicode-sets-regex': 7.24.7(@babel/core@7.24.1) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.1) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.1) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.24.1) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.1) + core-js-compat: 3.38.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-flow@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) dev: false /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.1): @@ -1514,14 +2796,31 @@ packages: '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.1) + dev: true - /@babel/register@7.23.7(@babel/core@7.24.1): - resolution: {integrity: sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==} + /@babel/preset-typescript@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/helper-validator-option': 7.24.8 + '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/register@7.24.6(@babel/core@7.25.2): + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -1544,6 +2843,12 @@ packages: dependencies: regenerator-runtime: 0.14.1 + /@babel/runtime@7.25.0: + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + /@babel/template@7.24.0: resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} engines: {node: '>=6.9.0'} @@ -1552,6 +2857,15 @@ packages: '@babel/parser': 7.24.1 '@babel/types': 7.24.0 + /@babel/template@7.25.0: + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + dev: false + /@babel/traverse@7.24.1: resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} engines: {node: '>=6.9.0'} @@ -1569,6 +2883,21 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.25.3: + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 + debug: 4.3.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: false + /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} engines: {node: '>=6.9.0'} @@ -1577,12 +2906,21 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.25.2: + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + dev: false + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@coinbase/wallet-sdk@3.9.1: - resolution: {integrity: sha512-cGUE8wm1/cMI8irRMVOqbFWYcnNugqCtuy2lnnHfgloBg+GRLs9RsrkOUDMdv/StfUeeKhCDyYudsXXvcL1xIA==} + /@coinbase/wallet-sdk@3.9.3: + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} dependencies: bn.js: 5.2.1 buffer: 6.0.3 @@ -1591,12 +2929,23 @@ packages: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.1 keccak: 3.0.4 - preact: 10.19.7 + preact: 10.23.2 sha.js: 2.4.11 transitivePeerDependencies: - supports-color dev: false + /@coinbase/wallet-sdk@4.0.4: + resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} + dependencies: + buffer: 6.0.3 + clsx: 1.2.1 + eventemitter3: 5.0.1 + keccak: 3.0.4 + preact: 10.23.2 + sha.js: 2.4.11 + dev: false + /@colors/colors@1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} @@ -1679,6 +3028,10 @@ packages: resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} dev: false + /@emotion/hash@0.9.2: + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + dev: false + /@emotion/is-prop-valid@1.2.2: resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} dependencies: @@ -1833,7 +3186,7 @@ packages: '@ethereumjs/common': 3.2.0 '@ethereumjs/rlp': 4.0.1 '@ethereumjs/util': 8.1.0 - ethereum-cryptography: 2.1.3 + ethereum-cryptography: 2.2.1 dev: false /@ethereumjs/util@8.1.0: @@ -1841,7 +3194,7 @@ packages: engines: {node: '>=14'} dependencies: '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.1.3 + ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 dev: false @@ -2203,14 +3556,14 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /@lit-labs/ssr-dom-shim@1.2.0: - resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==} + /@lit-labs/ssr-dom-shim@1.2.1: + resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} dev: false /@lit/reactive-element@1.6.3: resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit-labs/ssr-dom-shim': 1.2.1 dev: false /@metamask/eth-json-rpc-provider@1.0.1: @@ -2228,20 +3581,42 @@ packages: resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} engines: {node: '>=16.0.0'} dependencies: - '@metamask/rpc-errors': 6.2.1 + '@metamask/rpc-errors': 6.3.1 '@metamask/safe-event-emitter': 3.1.1 - '@metamask/utils': 8.4.0 + '@metamask/utils': 8.5.0 transitivePeerDependencies: - supports-color dev: false - /@metamask/object-multiplex@1.3.0: - resolution: {integrity: sha512-czcQeVYdSNtabd+NcYQnrM69MciiJyd1qvKH8WM2Id3C0ZiUUX5Xa/MK+/VUk633DBhVOwdNzAKIQ33lGyA+eQ==} - engines: {node: '>=12.0.0'} + /@metamask/json-rpc-engine@8.0.2: + resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/rpc-errors': 6.3.1 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.5.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/json-rpc-middleware-stream@7.0.2: + resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.5.0 + readable-stream: 3.6.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/object-multiplex@2.0.0: + resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} + engines: {node: ^16.20 || ^18.16 || >=20} dependencies: - end-of-stream: 1.4.4 once: 1.4.0 - readable-stream: 2.3.8 + readable-stream: 3.6.2 dev: false /@metamask/onboarding@1.0.1: @@ -2250,39 +3625,31 @@ packages: bowser: 2.11.0 dev: false - /@metamask/post-message-stream@6.2.0: - resolution: {integrity: sha512-WunZ0bruClF862mvbKQGETn5SM0XKGmocPMQR1Ew6sYix9/FDzeoZnoI8RkXk01E+70FCdxhTE/r8kk5SFOuTw==} - engines: {node: '>=14.0.0'} - dependencies: - '@metamask/utils': 5.0.2 - readable-stream: 2.3.3 - transitivePeerDependencies: - - supports-color - dev: false - - /@metamask/providers@10.2.1: - resolution: {integrity: sha512-p2TXw2a1Nb8czntDGfeIYQnk4LLVbd5vlcb3GY//lylYlKdSqp+uUTegCvxiFblRDOT68jsY8Ib1VEEzVUOolA==} - engines: {node: '>=14.0.0'} + /@metamask/providers@16.1.0: + resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} + engines: {node: ^18.18 || >=20} dependencies: - '@metamask/object-multiplex': 1.3.0 - '@metamask/safe-event-emitter': 2.0.0 - '@types/chrome': 0.0.136 + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/json-rpc-middleware-stream': 7.0.2 + '@metamask/object-multiplex': 2.0.0 + '@metamask/rpc-errors': 6.3.1 + '@metamask/safe-event-emitter': 3.1.1 + '@metamask/utils': 8.5.0 detect-browser: 5.3.0 - eth-rpc-errors: 4.0.3 - extension-port-stream: 2.1.1 - fast-deep-equal: 2.0.1 + extension-port-stream: 3.0.0 + fast-deep-equal: 3.1.3 is-stream: 2.0.1 - json-rpc-engine: 6.1.0 - json-rpc-middleware-stream: 4.2.3 - pump: 3.0.0 - webextension-polyfill-ts: 0.25.0 + readable-stream: 3.6.2 + webextension-polyfill: 0.10.0 + transitivePeerDependencies: + - supports-color dev: false - /@metamask/rpc-errors@6.2.1: - resolution: {integrity: sha512-VTgWkjWLzb0nupkFl1duQi9Mk8TGT9rsdnQg6DeRrYEFxtFOh0IF8nAwxM/4GWqDl6uIB06lqUBgUrAVWl62Bw==} + /@metamask/rpc-errors@6.3.1: + resolution: {integrity: sha512-ugDY7cKjF4/yH5LtBaOIKHw/AiGGSAmzptAUEiAEGr/78LwuzcXAxmzEQfSfMIfI+f9Djr8cttq1pRJJKfTuCg==} engines: {node: '>=16.0.0'} dependencies: - '@metamask/utils': 8.4.0 + '@metamask/utils': 9.1.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color @@ -2297,175 +3664,207 @@ packages: engines: {node: '>=12.0.0'} dev: false - /@metamask/sdk-communication-layer@0.14.3: - resolution: {integrity: sha512-yjSbj8y7fFbQXv2HBzUX6D9C8BimkCYP6BDV7hdw53W8b/GlYCtXVxUFajQ9tuO1xPTRjR/xt/dkdr2aCi6WGw==} + /@metamask/sdk-communication-layer@0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): + resolution: {integrity: sha512-G9LCaQzIqp5WmUmvHN6UUdjWrBh67MbRobmbbs5fcc2+9XFhj3vBgtyleUYjun91jSlPHoZeo+f/Pj4/WoPIJg==} + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 dependencies: bufferutil: 4.0.8 - cross-fetch: 3.1.8 + cross-fetch: 4.0.0 date-fns: 2.30.0 - eciesjs: 0.3.18 + debug: 4.3.6 + eciesjs: 0.3.19 eventemitter2: 6.4.9 - socket.io-client: 4.7.5(bufferutil@4.0.8)(utf-8-validate@6.0.3) - utf-8-validate: 6.0.3 + readable-stream: 3.6.2 + socket.io-client: 4.7.5 + utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: - - encoding - supports-color dev: false - /@metamask/sdk-install-modal-web@0.14.1(@types/react@18.2.15)(react-native@0.73.6): - resolution: {integrity: sha512-emT8HKbnfVwGhPxyUfMja6DWzvtJvDEBQxqCVx93H0HsyrrOzOC43iGCAosslw6o5h7gOfRKLqWmK8V7jQAS2Q==} + /@metamask/sdk-install-modal-web@0.26.5(i18next@23.11.5)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0): + resolution: {integrity: sha512-qVA9Nk+NorGx5hXyODy5wskptE8R7RNYTYt49VbQpJogqbbVe1dnJ98+KaA43PBN4XYMCXmcIhULNiEHGsLynA==} + peerDependencies: + i18next: 23.11.5 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true dependencies: - '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.15)(react@18.2.0) - i18next: 22.5.1 + i18next: 23.11.5 qr-code-styling: 1.6.0-rc.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - transitivePeerDependencies: - - '@types/react' - - react-native + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) dev: false - /@metamask/sdk@0.14.3(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-BYLs//nY2wioVSih78gOQI6sLIYY3vWkwVqXGYUgkBV+bi49bv+9S0m+hZ2cwiRaxfMYtKs0KvhAQ8weiYwDrg==} + /@metamask/sdk@0.27.0(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0): + resolution: {integrity: sha512-6sMjr/0qR700X1svPGEQ4rBdtccidBLeTC27fYQc7r9ROgSixB1DUUAyu/LoySVqt3Hu/Zm7NnAHXuT228ht7A==} peerDependencies: react: ^18.2.0 - react-native: '*' + react-dom: ^18.2.0 peerDependenciesMeta: react: optional: true - react-native: + react-dom: optional: true dependencies: '@metamask/onboarding': 1.0.1 - '@metamask/post-message-stream': 6.2.0 - '@metamask/providers': 10.2.1 - '@metamask/sdk-communication-layer': 0.14.3 - '@metamask/sdk-install-modal-web': 0.14.1(@types/react@18.2.15)(react-native@0.73.6) - '@react-native-async-storage/async-storage': 1.22.3(react-native@0.73.6) + '@metamask/providers': 16.1.0 + '@metamask/sdk-communication-layer': 0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) + '@metamask/sdk-install-modal-web': 0.26.5(i18next@23.11.5)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0 - eciesjs: 0.3.18 + debug: 4.3.6 + eciesjs: 0.3.19 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 - extension-port-stream: 2.1.1 - i18next: 22.5.1 - i18next-browser-languagedetector: 7.2.0 + i18next: 23.11.5 + i18next-browser-languagedetector: 7.1.0 obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 react: 18.2.0 - react-i18next: 13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) - react-native-webview: 11.26.1(react-native@0.73.6)(react@18.2.0) - readable-stream: 2.3.8 + react-dom: 18.2.0(react@18.2.0) + react-native-webview: 11.26.1(react-native@0.75.1)(react@18.2.0) + readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0 - socket.io-client: 4.7.5(bufferutil@4.0.8)(utf-8-validate@6.0.3) + socket.io-client: 4.7.5 util: 0.12.5 uuid: 8.3.2 transitivePeerDependencies: - - '@types/react' - bufferutil - encoding - - react-dom + - react-native - rollup - supports-color - utf-8-validate dev: false + /@metamask/superstruct@3.1.0: + resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} + engines: {node: '>=16.0.0'} + dev: false + /@metamask/utils@5.0.2: resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} engines: {node: '>=14.0.0'} dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) - semver: 7.6.0 - superstruct: 1.0.4 + debug: 4.3.6 + semver: 7.6.3 + superstruct: 1.0.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@metamask/utils@8.5.0: + resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + engines: {node: '>=16.0.0'} + dependencies: + '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.1.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 + '@types/debug': 4.1.12 + debug: 4.3.6 + pony-cause: 2.1.11 + semver: 7.6.3 + uuid: 9.0.1 transitivePeerDependencies: - supports-color dev: false - /@metamask/utils@8.4.0: - resolution: {integrity: sha512-dbIc3C7alOe0agCuBHM1h71UaEaEqOk2W8rAtEn8QGz4haH2Qq7MoK6i7v2guzvkJVVh79c+QCzIqphC3KvrJg==} + /@metamask/utils@9.1.0: + resolution: {integrity: sha512-g2REf+xSt0OZfMoNNdC4+/Yy8eP3KUqvIArel54XRFKPoXbHI6+YjFfrLtfykWBjffOp7DTfIc3Kvk5TLfuiyg==} engines: {node: '>=16.0.0'} dependencies: '@ethereumjs/tx': 4.2.0 + '@metamask/superstruct': 3.1.0 '@noble/hashes': 1.4.0 - '@scure/base': 1.1.5 + '@scure/base': 1.1.7 '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) - pony-cause: 2.1.10 - semver: 7.6.0 - superstruct: 1.0.4 + debug: 4.3.6 + pony-cause: 2.1.11 + semver: 7.6.3 uuid: 9.0.1 transitivePeerDependencies: - supports-color dev: false - /@motionone/animation@10.17.0: - resolution: {integrity: sha512-ANfIN9+iq1kGgsZxs+Nz96uiNcPLGTXwfNo2Xz/fcJXniPYpaz/Uyrfa+7I5BPLxCP82sh7quVDudf1GABqHbg==} + /@motionone/animation@10.18.0: + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} dependencies: - '@motionone/easing': 10.17.0 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 - tslib: 2.6.2 + '@motionone/easing': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 dev: false - /@motionone/dom@10.17.0: - resolution: {integrity: sha512-cMm33swRlCX/qOPHWGbIlCl0K9Uwi6X5RiL8Ma6OrlJ/TP7Q+Np5GE4xcZkFptysFjMTi4zcZzpnNQGQ5D6M0Q==} + /@motionone/dom@10.18.0: + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} dependencies: - '@motionone/animation': 10.17.0 - '@motionone/generators': 10.17.0 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 + '@motionone/animation': 10.18.0 + '@motionone/generators': 10.18.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.6.3 dev: false - /@motionone/easing@10.17.0: - resolution: {integrity: sha512-Bxe2wSuLu/qxqW4rBFS5m9tMLOw+QBh8v5A7Z5k4Ul4sTj5jAOfZG5R0bn5ywmk+Fs92Ij1feZ5pmC4TeXA8Tg==} + /@motionone/easing@10.18.0: + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} dependencies: - '@motionone/utils': 10.17.0 - tslib: 2.6.2 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 dev: false - /@motionone/generators@10.17.0: - resolution: {integrity: sha512-T6Uo5bDHrZWhIfxG/2Aut7qyWQyJIWehk6OB4qNvr/jwA/SRmixwbd7SOrxZi1z5rH3LIeFFBKK1xHnSbGPZSQ==} + /@motionone/generators@10.18.0: + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} dependencies: - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 - tslib: 2.6.2 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 + tslib: 2.6.3 dev: false /@motionone/svelte@10.16.4: resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} dependencies: - '@motionone/dom': 10.17.0 - tslib: 2.6.2 + '@motionone/dom': 10.18.0 + tslib: 2.6.3 dev: false - /@motionone/types@10.17.0: - resolution: {integrity: sha512-EgeeqOZVdRUTEHq95Z3t8Rsirc7chN5xFAPMYFobx8TPubkEfRSm5xihmMUkbaR2ErKJTUw3347QDPTHIW12IA==} + /@motionone/types@10.17.1: + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} dev: false - /@motionone/utils@10.17.0: - resolution: {integrity: sha512-bGwrki4896apMWIj9yp5rAS2m0xyhxblg6gTB/leWDPt+pb410W8lYWsxyurX+DH+gO1zsQsfx2su/c1/LtTpg==} + /@motionone/utils@10.18.0: + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} dependencies: - '@motionone/types': 10.17.0 + '@motionone/types': 10.17.1 hey-listen: 1.0.8 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@motionone/vue@10.16.4: resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion dependencies: - '@motionone/dom': 10.17.0 - tslib: 2.6.2 + '@motionone/dom': 10.18.0 + tslib: 2.6.3 dev: false /@mui/base@5.0.0-beta.40(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): @@ -2770,26 +4169,16 @@ packages: dev: true optional: true - /@noble/curves@1.2.0: - resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + /@noble/curves@1.4.0: + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} dependencies: - '@noble/hashes': 1.3.2 + '@noble/hashes': 1.4.0 dev: false - /@noble/curves@1.3.0: - resolution: {integrity: sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==} + /@noble/curves@1.4.2: + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} dependencies: - '@noble/hashes': 1.3.3 - dev: false - - /@noble/hashes@1.3.2: - resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} - engines: {node: '>= 16'} - dev: false - - /@noble/hashes@1.3.3: - resolution: {integrity: sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==} - engines: {node: '>= 16'} + '@noble/hashes': 1.4.0 dev: false /@noble/hashes@1.4.0: @@ -2803,12 +4192,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -2816,7 +4203,6 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - dev: true /@parcel/watcher-android-arm64@2.4.1: resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} @@ -2904,7 +4290,7 @@ packages: engines: {node: '>= 10.0.0'} dependencies: is-glob: 4.0.3 - micromatch: 4.0.5 + micromatch: 4.0.7 dev: false bundledDependencies: - napi-wasm @@ -2942,8 +4328,8 @@ packages: dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 - micromatch: 4.0.5 - node-addon-api: 7.1.0 + micromatch: 4.0.7 + node-addon-api: 7.1.1 optionalDependencies: '@parcel/watcher-android-arm64': 2.4.1 '@parcel/watcher-darwin-arm64': 2.4.1 @@ -2975,15 +4361,17 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@rainbow-me/rainbowkit@2.0.2(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(viem@2.8.6)(wagmi@2.5.7): - resolution: {integrity: sha512-xm/3iWxwL/ATVVWjtYVGviTJ4ldXwcvaic+bQnGg/pqzf8zKONkuzd5gNWLw0ft1iNG2IPHL1ABP9UoR2Trlaw==} + /@rainbow-me/rainbowkit@2.1.4(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(viem@2.19.6)(wagmi@2.12.5): + resolution: {integrity: sha512-dJ92cGERc5FcyqFRJRh4iUi2IBS26pBAM1NSL7J2LNxqtOfeOAuAvzVFtJUxDCidS0/hNbvPY47GU68QpW4g6A==} engines: {node: '>=12.4'} peerDependencies: - react: '>=17' - react-dom: '>=17' + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + react-dom: '>=18' viem: 2.x - wagmi: 2.x + wagmi: ^2.9.0 dependencies: + '@tanstack/react-query': 5.28.0(react@18.2.0) '@vanilla-extract/css': 1.14.0 '@vanilla-extract/dynamic': 2.1.0 '@vanilla-extract/sprinkles': 1.6.1(@vanilla-extract/css@1.14.0) @@ -2992,289 +4380,306 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.7(@types/react@18.2.15)(react@18.2.0) - ua-parser-js: 1.0.37 - viem: 2.8.6(typescript@5.4.2) - wagmi: 2.5.7(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6) + ua-parser-js: 1.0.38 + viem: 2.19.6(typescript@5.4.2) + wagmi: 2.12.5(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) transitivePeerDependencies: - '@types/react' dev: false - /@react-native-async-storage/async-storage@1.22.3(react-native@0.73.6): - resolution: {integrity: sha512-Ov3wjuqxHd62tLYfgTjxj77YRYWra3A4Fi8uICIPcePgNO2WkS5B0ADXt9e/JLzSCNqVlXCq4Fir/gHmZTU9ww==} - peerDependencies: - react-native: ^0.0.0-0 || >=0.60 <1.0 + /@react-native-community/cli-clean@14.0.0: + resolution: {integrity: sha512-kvHthZTNur/wLLx8WL5Oh+r04zzzFAX16r8xuaLhu9qGTE6Th1JevbsIuiQb5IJqD8G/uZDKgIZ2a0/lONcbJg==} dependencies: - merge-options: 3.0.4 - react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) + '@react-native-community/cli-tools': 14.0.0 + chalk: 4.1.2 + execa: 5.1.1 + fast-glob: 3.3.2 dev: false - /@react-native-community/cli-clean@12.3.6: - resolution: {integrity: sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig==} + /@react-native-community/cli-config@14.0.0(typescript@5.4.2): + resolution: {integrity: sha512-2Nr8KR+dgn1z+HLxT8piguQ1SoEzgKJnOPQKE1uakxWaRFcQ4LOXgzpIAscYwDW6jmQxdNqqbg2cRUoOS7IMtQ==} dependencies: - '@react-native-community/cli-tools': 12.3.6 + '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 - execa: 5.1.1 + cosmiconfig: 9.0.0(typescript@5.4.2) + deepmerge: 4.3.1 + fast-glob: 3.3.2 + joi: 17.13.3 transitivePeerDependencies: - - encoding + - typescript dev: false - /@react-native-community/cli-config@12.3.6: - resolution: {integrity: sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew==} + /@react-native-community/cli-debugger-ui@14.0.0: + resolution: {integrity: sha512-JpfzILfU7eKE9+7AMCAwNJv70H4tJGVv3ZGFqSVoK1YHg5QkVEGsHtoNW8AsqZRS6Fj4os+Fmh+r+z1L36sPmg==} dependencies: - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - cosmiconfig: 5.2.1 - deepmerge: 4.3.1 - glob: 7.2.3 - joi: 17.12.2 + serve-static: 1.15.0 transitivePeerDependencies: - - encoding + - supports-color dev: false - /@react-native-community/cli-debugger-ui@12.3.6: - resolution: {integrity: sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA==} + /@react-native-community/cli-debugger-ui@14.0.0-alpha.11: + resolution: {integrity: sha512-0wCNQxhCniyjyMXgR1qXliY180y/2QbvoiYpp2MleGQADr5M1b8lgI4GoyADh5kE+kX3VL0ssjgyxpmbpCD86A==} dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color dev: false - /@react-native-community/cli-doctor@12.3.6: - resolution: {integrity: sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ==} + /@react-native-community/cli-doctor@14.0.0(typescript@5.4.2): + resolution: {integrity: sha512-in6jylHjaPUaDzV+JtUblh8m9JYIHGjHOf6Xn57hrmE5Zwzwuueoe9rSMHF1P0mtDgRKrWPzAJVejElddfptWA==} dependencies: - '@react-native-community/cli-config': 12.3.6 - '@react-native-community/cli-platform-android': 12.3.6 - '@react-native-community/cli-platform-ios': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 + '@react-native-community/cli-config': 14.0.0(typescript@5.4.2) + '@react-native-community/cli-platform-android': 14.0.0 + '@react-native-community/cli-platform-apple': 14.0.0 + '@react-native-community/cli-platform-ios': 14.0.0 + '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 command-exists: 1.2.9 deepmerge: 4.3.1 - envinfo: 7.11.1 + envinfo: 7.13.0 execa: 5.1.1 - hermes-profile-transformer: 0.0.6 node-stream-zip: 1.15.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.3 strip-ansi: 5.2.0 wcwidth: 1.0.1 - yaml: 2.4.1 - transitivePeerDependencies: - - encoding - dev: false - - /@react-native-community/cli-hermes@12.3.6: - resolution: {integrity: sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ==} - dependencies: - '@react-native-community/cli-platform-android': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - chalk: 4.1.2 - hermes-profile-transformer: 0.0.6 + yaml: 2.5.0 transitivePeerDependencies: - - encoding + - typescript dev: false - /@react-native-community/cli-platform-android@12.3.6: - resolution: {integrity: sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g==} + /@react-native-community/cli-platform-android@14.0.0: + resolution: {integrity: sha512-nt7yVz3pGKQXnVa5MAk7zR+1n41kNKD3Hi2OgybH5tVShMBo7JQoL2ZVVH6/y/9wAwI/s7hXJgzf1OIP3sMq+Q==} dependencies: - '@react-native-community/cli-tools': 12.3.6 + '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.6 - glob: 7.2.3 + fast-glob: 3.3.2 + fast-xml-parser: 4.4.1 logkitty: 0.7.1 - transitivePeerDependencies: - - encoding dev: false - /@react-native-community/cli-platform-ios@12.3.6: - resolution: {integrity: sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg==} + /@react-native-community/cli-platform-apple@14.0.0: + resolution: {integrity: sha512-WniJL8vR4MeIsjqio2hiWWuUYUJEL3/9TDL5aXNwG68hH3tYgK3742+X9C+vRzdjTmf5IKc/a6PwLsdplFeiwQ==} dependencies: - '@react-native-community/cli-tools': 12.3.6 + '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 execa: 5.1.1 - fast-xml-parser: 4.3.6 - glob: 7.2.3 + fast-glob: 3.3.2 + fast-xml-parser: 4.4.1 ora: 5.4.1 - transitivePeerDependencies: - - encoding dev: false - /@react-native-community/cli-plugin-metro@12.3.6: - resolution: {integrity: sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg==} + /@react-native-community/cli-platform-ios@14.0.0: + resolution: {integrity: sha512-8kxGv7mZ5nGMtueQDq+ndu08f0ikf3Zsqm3Ix8FY5KCXpSgP14uZloO2GlOImq/zFESij+oMhCkZJGggpWpfAw==} + dependencies: + '@react-native-community/cli-platform-apple': 14.0.0 dev: false - /@react-native-community/cli-server-api@12.3.6: - resolution: {integrity: sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ==} + /@react-native-community/cli-server-api@14.0.0: + resolution: {integrity: sha512-A0FIsj0QCcDl1rswaVlChICoNbfN+mkrKB5e1ab5tOYeZMMyCHqvU+eFvAvXjHUlIvVI+LbqCkf4IEdQ6H/2AQ==} dependencies: - '@react-native-community/cli-debugger-ui': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 + '@react-native-community/cli-debugger-ui': 14.0.0 + '@react-native-community/cli-tools': 14.0.0 compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 7.5.9 + ws: 6.2.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /@react-native-community/cli-server-api@14.0.0-alpha.11: + resolution: {integrity: sha512-I7YeYI7S5wSxnQAqeG8LNqhT99FojiGIk87DU0vTp6U8hIMLcA90fUuBAyJY38AuQZ12ZJpGa8ObkhIhWzGkvg==} + dependencies: + '@react-native-community/cli-debugger-ui': 14.0.0-alpha.11 + '@react-native-community/cli-tools': 14.0.0-alpha.11 + compression: 1.7.4 + connect: 3.7.0 + errorhandler: 1.5.1 + nocache: 3.0.4 + pretty-format: 26.6.2 + serve-static: 1.15.0 + ws: 6.2.3 transitivePeerDependencies: - bufferutil - - encoding - supports-color - utf-8-validate dev: false - /@react-native-community/cli-tools@12.3.6: - resolution: {integrity: sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ==} + /@react-native-community/cli-tools@14.0.0: + resolution: {integrity: sha512-L7GX5hyYYv0ZWbAyIQKzhHuShnwDqlKYB0tqn57wa5riGCaxYuRPTK+u4qy+WRCye7+i8M4Xj6oQtSd4z0T9cA==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 + execa: 5.1.1 find-up: 5.0.0 mime: 2.6.0 - node-fetch: 2.7.0 open: 6.4.0 ora: 5.4.1 - semver: 7.6.0 + semver: 7.6.3 + shell-quote: 1.8.1 + sudo-prompt: 9.2.1 + dev: false + + /@react-native-community/cli-tools@14.0.0-alpha.11: + resolution: {integrity: sha512-HQCfVnX9aqRdKdLxmQy4fUAUo+YhNGlBV7ZjOayPbuEGWJ4RN+vSy0Cawk7epo7hXd6vKzc7P7y3HlU6Kxs7+w==} + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + execa: 5.1.1 + find-up: 5.0.0 + mime: 2.6.0 + open: 6.4.0 + ora: 5.4.1 + semver: 7.6.3 shell-quote: 1.8.1 sudo-prompt: 9.2.1 - transitivePeerDependencies: - - encoding dev: false - /@react-native-community/cli-types@12.3.6: - resolution: {integrity: sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q==} + /@react-native-community/cli-types@14.0.0: + resolution: {integrity: sha512-CMUevd1pOWqvmvutkUiyQT2lNmMHUzSW7NKc1xvHgg39NjbS58Eh2pMzIUP85IwbYNeocfYc3PH19vA/8LnQtg==} dependencies: - joi: 17.12.2 + joi: 17.13.3 dev: false - /@react-native-community/cli@12.3.6: - resolution: {integrity: sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw==} + /@react-native-community/cli@14.0.0(typescript@5.4.2): + resolution: {integrity: sha512-KwMKJB5jsDxqOhT8CGJ55BADDAYxlYDHv5R/ASQlEcdBEZxT0zZmnL0iiq2VqzETUy+Y/Nop+XDFgqyoQm0C2w==} engines: {node: '>=18'} hasBin: true dependencies: - '@react-native-community/cli-clean': 12.3.6 - '@react-native-community/cli-config': 12.3.6 - '@react-native-community/cli-debugger-ui': 12.3.6 - '@react-native-community/cli-doctor': 12.3.6 - '@react-native-community/cli-hermes': 12.3.6 - '@react-native-community/cli-plugin-metro': 12.3.6 - '@react-native-community/cli-server-api': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - '@react-native-community/cli-types': 12.3.6 + '@react-native-community/cli-clean': 14.0.0 + '@react-native-community/cli-config': 14.0.0(typescript@5.4.2) + '@react-native-community/cli-debugger-ui': 14.0.0 + '@react-native-community/cli-doctor': 14.0.0(typescript@5.4.2) + '@react-native-community/cli-server-api': 14.0.0 + '@react-native-community/cli-tools': 14.0.0 + '@react-native-community/cli-types': 14.0.0 chalk: 4.1.2 commander: 9.5.0 deepmerge: 4.3.1 execa: 5.1.1 - find-up: 4.1.0 + find-up: 5.0.0 fs-extra: 8.1.0 graceful-fs: 4.2.11 prompts: 2.4.2 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - bufferutil - - encoding - supports-color + - typescript - utf-8-validate dev: false - /@react-native/assets-registry@0.73.1: - resolution: {integrity: sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg==} + /@react-native/assets-registry@0.75.1: + resolution: {integrity: sha512-mrW6dvueJgP5v5mR/dxvW9v+t9AmzR5OMDMq94reT04QarREGGDHEOW5sLzj4uT6Xhqtda2+ZQOaEZ6PPcv+QA==} engines: {node: '>=18'} dev: false - /@react-native/babel-plugin-codegen@0.73.4(@babel/preset-env@7.24.1): - resolution: {integrity: sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ==} + /@react-native/babel-plugin-codegen@0.75.1(@babel/preset-env@7.25.3): + resolution: {integrity: sha512-M7CxPAYZVDeBCCyC4BToEf6vPFtZ5EAA5F2fcm0RuErWMNiB2ycD7nCSVpZtQXOxgNItNi+7mRFTLKTNb7AFrQ==} engines: {node: '>=18'} dependencies: - '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.1) + '@react-native/codegen': 0.75.1(@babel/preset-env@7.25.3) transitivePeerDependencies: - '@babel/preset-env' - supports-color dev: false - /@react-native/babel-preset@0.73.21(@babel/core@7.24.1)(@babel/preset-env@7.24.1): - resolution: {integrity: sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA==} + /@react-native/babel-preset@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3): + resolution: {integrity: sha512-u5+7PCkz9J5XKhUwDSJCxLyt49L9qirlBvOR8IwztWVhrf+gd/iIgQLZm9vf/j9tfLhEsgvMup6FMha2/u1cQw==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' dependencies: '@babel/core': 7.24.1 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.24.1) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-proposal-export-default-from': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.24.1) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.1) + '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.24.1) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-syntax-export-default-from': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.1) '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-classes': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-destructuring': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-flow-strip-types': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.1) - '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-private-property-in-object': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-react-display-name': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) - '@babel/plugin-transform-react-jsx-self': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-react-jsx-source': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-runtime': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.1) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.1) - '@babel/template': 7.24.0 - '@react-native/babel-plugin-codegen': 0.73.4(@babel/preset-env@7.24.1) + '@babel/plugin-transform-arrow-functions': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-block-scoping': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-class-properties': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-classes': 7.25.0(@babel/core@7.24.1) + '@babel/plugin-transform-computed-properties': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-destructuring': 7.24.8(@babel/core@7.24.1) + '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.24.1) + '@babel/plugin-transform-for-of': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-function-name': 7.25.1(@babel/core@7.24.1) + '@babel/plugin-transform-literals': 7.25.2(@babel/core@7.24.1) + '@babel/plugin-transform-logical-assignment-operators': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.24.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-numeric-separator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-object-rest-spread': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-optional-catch-binding': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.1) + '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-private-methods': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-private-property-in-object': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-react-display-name': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.24.1) + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-regenerator': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-shorthand-properties': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-spread': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-sticky-regex': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.24.1) + '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.1) + '@babel/template': 7.25.0 + '@react-native/babel-plugin-codegen': 0.75.1(@babel/preset-env@7.25.3) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.1) - react-refresh: 0.14.0 + react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color dev: false - /@react-native/codegen@0.73.3(@babel/preset-env@7.24.1): - resolution: {integrity: sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg==} + /@react-native/codegen@0.75.1(@babel/preset-env@7.25.3): + resolution: {integrity: sha512-nO5CQuXTPL8iou9EzkUjOrGsiano3hGC80AwFlFt8h7q8Bked293YaB3qRQRwN4gmedR8ZKVZGI/pyuvuOWLfQ==} engines: {node: '>=18'} peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/parser': 7.24.1 - '@babel/preset-env': 7.24.1(@babel/core@7.24.1) - flow-parser: 0.206.0 + '@babel/parser': 7.25.3 + '@babel/preset-env': 7.25.3(@babel/core@7.24.1) glob: 7.2.3 + hermes-parser: 0.22.0 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.24.1) + jscodeshift: 0.14.0(@babel/preset-env@7.25.3) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color dev: false - /@react-native/community-cli-plugin@0.73.17(@babel/core@7.24.1)(@babel/preset-env@7.24.1): - resolution: {integrity: sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ==} + /@react-native/community-cli-plugin@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3): + resolution: {integrity: sha512-G0GPvFAVrC9k0MfwnKXimaYKqOlEzXFMZ6DmZi2zxSGPFt/MV3sSRjbv3yb8q0mLcK78/J7w1DyImcSQopOCLg==} engines: {node: '>=18'} dependencies: - '@react-native-community/cli-server-api': 12.3.6 - '@react-native-community/cli-tools': 12.3.6 - '@react-native/dev-middleware': 0.73.8 - '@react-native/metro-babel-transformer': 0.73.15(@babel/core@7.24.1)(@babel/preset-env@7.24.1) + '@react-native-community/cli-server-api': 14.0.0-alpha.11 + '@react-native-community/cli-tools': 14.0.0-alpha.11 + '@react-native/dev-middleware': 0.75.1 + '@react-native/metro-babel-transformer': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.6 - metro-config: 0.80.6 - metro-core: 0.80.6 + metro: 0.80.10 + metro-config: 0.80.10 + metro-core: 0.80.10 node-fetch: 2.7.0 + querystring: 0.2.1 readline: 1.3.0 transitivePeerDependencies: - '@babel/core' @@ -3285,26 +4690,27 @@ packages: - utf-8-validate dev: false - /@react-native/debugger-frontend@0.73.3: - resolution: {integrity: sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw==} + /@react-native/debugger-frontend@0.75.1: + resolution: {integrity: sha512-N+awwEYZHj9lR4hieBK2oFB6C0qa4/6NPpzeqvtLnZddr38H6Wv9CHxSFA8pqIBu4qmn4JcRjOjVD6pXCcLohA==} engines: {node: '>=18'} dev: false - /@react-native/dev-middleware@0.73.8: - resolution: {integrity: sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg==} + /@react-native/dev-middleware@0.75.1: + resolution: {integrity: sha512-2vBIqNe5p/j3ZfDtV3R74OlwoGTgJVDhx9bMIK1U8ODqic+8OVjqvQKGNB+KUb/+HiPkKAhpAIsgcEmL/Nq1sg==} engines: {node: '>=18'} dependencies: '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.73.3 + '@react-native/debugger-frontend': 0.75.1 chrome-launcher: 0.15.2 - chromium-edge-launcher: 1.0.0 + chromium-edge-launcher: 0.2.0 connect: 3.7.0 debug: 2.6.9 node-fetch: 2.7.0 + nullthrows: 1.1.1 open: 7.4.2 + selfsigned: 2.4.1 serve-static: 1.15.0 - temp-dir: 2.0.0 - ws: 6.2.2 + ws: 6.2.3 transitivePeerDependencies: - bufferutil - encoding @@ -3312,44 +4718,51 @@ packages: - utf-8-validate dev: false - /@react-native/gradle-plugin@0.73.4: - resolution: {integrity: sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg==} + /@react-native/gradle-plugin@0.75.1: + resolution: {integrity: sha512-a2gVjX3MB9TF9QZSKje79n1GDAnseTU94VIcFH/4DS3KjbK3yrNXsu1maxGZxDUAKmTUH7Rz4An/Rb5nkZG7dw==} engines: {node: '>=18'} dev: false - /@react-native/js-polyfills@0.73.1: - resolution: {integrity: sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g==} + /@react-native/js-polyfills@0.75.1: + resolution: {integrity: sha512-7yUCDtsNaIoOefI3M1XiqUaxNQIzNYL0P38IE6JuroVZspPaGmwB34RkgBTuDzNQ+p/4EIgBmqRzqF5Jjlf92A==} engines: {node: '>=18'} dev: false - /@react-native/metro-babel-transformer@0.73.15(@babel/core@7.24.1)(@babel/preset-env@7.24.1): - resolution: {integrity: sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw==} + /@react-native/metro-babel-transformer@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3): + resolution: {integrity: sha512-X4NZNWox2E97fJG97XNuTd9wU3FK2c+S/Neg7KsBETPOHUkdoORC3nH1VQRrIqID85yYgdxLxvDwXa9hkmzjuA==} engines: {node: '>=18'} peerDependencies: '@babel/core': '*' dependencies: '@babel/core': 7.24.1 - '@react-native/babel-preset': 0.73.21(@babel/core@7.24.1)(@babel/preset-env@7.24.1) - hermes-parser: 0.15.0 + '@react-native/babel-preset': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3) + hermes-parser: 0.22.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color dev: false - /@react-native/normalize-colors@0.73.2: - resolution: {integrity: sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w==} + /@react-native/normalize-colors@0.75.1: + resolution: {integrity: sha512-TnUII4YFtPBzxA0Eu1RvXrauw+fZlixK6QgbuOZSfhEfgM1ri6O1wse3VaR+h1CJw2NlNjgi902x9uUX8HbH8w==} dev: false - /@react-native/virtualized-lists@0.73.4(react-native@0.73.6): - resolution: {integrity: sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog==} + /@react-native/virtualized-lists@0.75.1(@types/react@18.2.15)(react-native@0.75.1)(react@18.2.0): + resolution: {integrity: sha512-e7XL9XtU2Z9NUFJFwL9StHa9l2La0/fU7wZ05s8YEMxB+7Fgyn7/X4JsIk7G4xTSPXxPKV2Yz9STHGzKT5OcKQ==} engines: {node: '>=18'} peerDependencies: + '@types/react': ^18.2.6 + react: '*' react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true dependencies: + '@types/react': 18.2.15 invariant: 2.2.4 nullthrows: 1.1.1 - react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) + react: 18.2.0 + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) dev: false /@remix-run/router@1.8.0: @@ -3357,10 +4770,10 @@ packages: engines: {node: '>=14.0.0'} dev: false - /@safe-global/safe-apps-provider@0.18.1(typescript@5.4.2): - resolution: {integrity: sha512-V4a05A3EgJcriqtDoJklDz1BOinWhC6P0hjUSxshA4KOZM7rGPCTto/usXs09zr1vvL28evl/NldSTv97j2bmg==} + /@safe-global/safe-apps-provider@0.18.3(typescript@5.4.2): + resolution: {integrity: sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ==} dependencies: - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.2) + '@safe-global/safe-apps-sdk': 9.1.0(typescript@5.4.2) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -3369,11 +4782,11 @@ packages: - zod dev: false - /@safe-global/safe-apps-sdk@8.1.0(typescript@5.4.2): - resolution: {integrity: sha512-XJbEPuaVc7b9n23MqlF6c+ToYIS3f7P2Sel8f3cSBQ9WORE4xrSuvhMpK9fDSFqJ7by/brc+rmJR/5HViRr0/w==} + /@safe-global/safe-apps-sdk@9.1.0(typescript@5.4.2): + resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} dependencies: - '@safe-global/safe-gateway-typescript-sdk': 3.19.0 - viem: 1.21.4(typescript@5.4.2) + '@safe-global/safe-gateway-typescript-sdk': 3.22.2 + viem: 2.19.6(typescript@5.4.2) transitivePeerDependencies: - bufferutil - typescript @@ -3381,43 +4794,28 @@ packages: - zod dev: false - /@safe-global/safe-gateway-typescript-sdk@3.19.0: - resolution: {integrity: sha512-TRlP05KY6t3wjLJ74FiirWlEt3xTclnUQM2YdYto1jx5G1o0meMnugIUZXhzm7Bs3rDEDNhz/aDf2KMSZtoCFg==} + /@safe-global/safe-gateway-typescript-sdk@3.22.2: + resolution: {integrity: sha512-Y0yAxRaB98LFp2Dm+ACZqBSdAmI3FlpH/LjxOZ94g/ouuDJecSq0iR26XZ5QDuEL8Rf+L4jBJaoDC08CD0KkJw==} engines: {node: '>=16'} dev: false - /@scure/base@1.1.5: - resolution: {integrity: sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==} - dev: false - - /@scure/bip32@1.3.2: - resolution: {integrity: sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==} - dependencies: - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.5 - dev: false - - /@scure/bip32@1.3.3: - resolution: {integrity: sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==} - dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + /@scure/base@1.1.7: + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} dev: false - /@scure/bip39@1.2.1: - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + /@scure/bip32@1.4.0: + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} dependencies: - '@noble/hashes': 1.3.2 - '@scure/base': 1.1.5 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 dev: false - /@scure/bip39@1.2.2: - resolution: {integrity: sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==} + /@scure/bip39@1.3.0: + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} dependencies: - '@noble/hashes': 1.3.3 - '@scure/base': 1.1.5 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.7 dev: false /@sideway/address@4.1.5: @@ -3447,8 +4845,8 @@ packages: dependencies: '@sinonjs/commons': 3.0.1 - /@socket.io/component-emitter@3.1.0: - resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + /@socket.io/component-emitter@3.1.2: + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} dev: false /@stablelib/aead@1.0.1: @@ -3586,6 +4984,20 @@ packages: react: 18.2.0 dev: false + /@testing-library/dom@10.4.0: + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/runtime': 7.25.0 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + /@testing-library/dom@9.3.4: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} @@ -3645,13 +5057,13 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.4): + /@testing-library/user-event@14.4.3(@testing-library/dom@10.4.0): resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} engines: {node: '>=12', npm: '>=6'} peerDependencies: '@testing-library/dom': '>=7.21.4' dependencies: - '@testing-library/dom': 9.3.4 + '@testing-library/dom': 10.4.0 dev: true /@tootallnate/once@2.0.0: @@ -3708,13 +5120,6 @@ packages: '@babel/types': 7.24.0 dev: true - /@types/chrome@0.0.136: - resolution: {integrity: sha512-XDEiRhLkMd+SB7Iw3ZUIj/fov3wLd4HyTdLltVszkgl1dBfc3Rb7oPMVZ2Mz2TLqnF7Ow+StbR8E7r9lqpb4DA==} - dependencies: - '@types/filesystem': 0.0.35 - '@types/har-format': 1.2.15 - dev: false - /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: @@ -3725,26 +5130,12 @@ packages: resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} dev: false - /@types/filesystem@0.0.35: - resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} - dependencies: - '@types/filewriter': 0.0.33 - dev: false - - /@types/filewriter@0.0.33: - resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - dev: false - /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: '@types/node': 20.12.13 dev: true - /@types/har-format@1.2.15: - resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} - dev: false - /@types/hoist-non-react-statics@3.3.5: resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} dependencies: @@ -3802,6 +5193,12 @@ packages: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} dev: false + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 20.12.13 + dev: false + /@types/node@20.12.13: resolution: {integrity: sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==} dependencies: @@ -4028,8 +5425,8 @@ packages: /@vanilla-extract/css@1.14.0: resolution: {integrity: sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA==} dependencies: - '@emotion/hash': 0.9.1 - '@vanilla-extract/private': 1.0.3 + '@emotion/hash': 0.9.2 + '@vanilla-extract/private': 1.0.5 chalk: 4.1.2 css-what: 6.1.0 cssesc: 3.0.0 @@ -4044,11 +5441,11 @@ packages: /@vanilla-extract/dynamic@2.1.0: resolution: {integrity: sha512-8zl0IgBYRtgD1h+56Zu13wHTiMTJSVEa4F7RWX9vTB/5Xe2KtjoiqApy/szHPVFA56c+ex6A4GpCQjT1bKXbYw==} dependencies: - '@vanilla-extract/private': 1.0.3 + '@vanilla-extract/private': 1.0.5 dev: false - /@vanilla-extract/private@1.0.3: - resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==} + /@vanilla-extract/private@1.0.5: + resolution: {integrity: sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==} dev: false /@vanilla-extract/sprinkles@1.6.1(@vanilla-extract/css@1.14.0): @@ -4059,25 +5456,26 @@ packages: '@vanilla-extract/css': 1.14.0 dev: false - /@wagmi/connectors@4.1.14(@types/react@18.2.15)(@wagmi/core@2.6.5)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6): - resolution: {integrity: sha512-e8I89FsNBtzhIilU3nqmgMR9xvSgCfmkWLz9iCKBTqyitbK5EJU7WTEtjjYFm1v2J//JeAwaA2XEKtG9BLR9jQ==} + /@wagmi/connectors@5.1.5(@types/react@18.2.15)(@wagmi/core@2.13.4)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6): + resolution: {integrity: sha512-z+UAfwfTqVldoNxUFffHPcc/ets3UP1ehXE6b9k9ZDaih8VdZJRGz84qLjx+GVnI/+FrHfFwPPD9C2YYd2azww==} peerDependencies: - '@wagmi/core': 2.6.5 + '@wagmi/core': 2.13.4 typescript: '>=5.0.4' viem: 2.x peerDependenciesMeta: typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.9.1 - '@metamask/sdk': 0.14.3(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) - '@safe-global/safe-apps-provider': 0.18.1(typescript@5.4.2) - '@safe-global/safe-apps-sdk': 8.1.0(typescript@5.4.2) - '@wagmi/core': 2.6.5(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6) - '@walletconnect/ethereum-provider': 2.11.1(@types/react@18.2.15)(react@18.2.0) + '@coinbase/wallet-sdk': 4.0.4 + '@metamask/sdk': 0.27.0(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) + '@safe-global/safe-apps-provider': 0.18.3(typescript@5.4.2) + '@safe-global/safe-apps-sdk': 9.1.0(typescript@5.4.2) + '@wagmi/core': 2.13.4(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) + '@walletconnect/ethereum-provider': 2.14.0(@types/react@18.2.15)(react@18.2.0) '@walletconnect/modal': 2.6.2(@types/react@18.2.15)(react@18.2.0) + cbw-sdk: /@coinbase/wallet-sdk@3.9.3 typescript: 5.4.2 - viem: 2.8.6(typescript@5.4.2) + viem: 2.19.6(typescript@5.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4105,8 +5503,8 @@ packages: - zod dev: false - /@wagmi/core@2.6.5(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6): - resolution: {integrity: sha512-DLyrc0o+dx05oIhBJuxnS7ekS5e6rB5mytlqPme+Km7aLdeBdcfYB4yJyYCyWoi93OLa7M5sbflTttz3o56bKw==} + /@wagmi/core@2.13.4(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6): + resolution: {integrity: sha512-J6gfxHYr8SCc/BzEa712LnI+qLFs5K2nBLupwQqQl4WiAlCu8SdcpbZokqiwfCMYhIRMj0+YFEP9qe4ypcexmw==} peerDependencies: '@tanstack/query-core': '>=5.0.0' typescript: '>=5.0.4' @@ -4118,39 +5516,36 @@ packages: optional: true dependencies: eventemitter3: 5.0.1 - mipd: 0.0.5(typescript@5.4.2) + mipd: 0.0.7(typescript@5.4.2) typescript: 5.4.2 - viem: 2.8.6(typescript@5.4.2) + viem: 2.19.6(typescript@5.4.2) zustand: 4.4.1(@types/react@18.2.15)(react@18.2.0) transitivePeerDependencies: - '@types/react' - - bufferutil - immer - react - - utf-8-validate - - zod dev: false - /@walletconnect/core@2.11.1: - resolution: {integrity: sha512-T57Vd7YdbHPsy3tthBuwrhaZNafN0+PqjISFRNeJy/bsKdXxpJg2hGSARuOTpCO7V6VcaatqlaSMuG3DrnG5rA==} + /@walletconnect/core@2.14.0: + resolution: {integrity: sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g==} dependencies: - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-provider': 1.0.14 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.14 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.0.1 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/logger': 2.1.2 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.1 - '@walletconnect/utils': 2.11.1 + '@walletconnect/types': 2.14.0 + '@walletconnect/utils': 2.14.0 events: 3.3.0 isomorphic-unfetch: 3.1.0 lodash.isequal: 4.5.0 - uint8arrays: 3.1.1 + uint8arrays: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4177,18 +5572,18 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/ethereum-provider@2.11.1(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-UfQH0ho24aa2M1xYmanbJv2ggQPebKmQytp2j20QEvURJ2R0v7YKWZ+0PfwOs6o6cuGw6gGxy/0WQXQRZSAsfg==} + /@walletconnect/ethereum-provider@2.14.0(@types/react@18.2.15)(react@18.2.0): + resolution: {integrity: sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 + '@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/modal': 2.6.2(@types/react@18.2.15)(react@18.2.0) - '@walletconnect/sign-client': 2.11.1 - '@walletconnect/types': 2.11.1 - '@walletconnect/universal-provider': 2.11.1 - '@walletconnect/utils': 2.11.1 + '@walletconnect/sign-client': 2.14.0 + '@walletconnect/types': 2.14.0 + '@walletconnect/universal-provider': 2.14.0 + '@walletconnect/utils': 2.14.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -4219,45 +5614,45 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/heartbeat@1.2.1: - resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + /@walletconnect/heartbeat@1.2.2: + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 - tslib: 1.14.1 + events: 3.3.0 dev: false - /@walletconnect/jsonrpc-http-connection@1.0.7: - resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} + /@walletconnect/jsonrpc-http-connection@1.0.8: + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 cross-fetch: 3.1.8 - tslib: 1.14.1 + events: 3.3.0 transitivePeerDependencies: - encoding dev: false - /@walletconnect/jsonrpc-provider@1.0.13: - resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + /@walletconnect/jsonrpc-provider@1.0.14: + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 - tslib: 1.14.1 + events: 3.3.0 dev: false - /@walletconnect/jsonrpc-types@1.0.3: - resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + /@walletconnect/jsonrpc-types@1.0.4: + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} dependencies: + events: 3.3.0 keyvaluestorage-interface: 1.0.0 - tslib: 1.14.1 dev: false /@walletconnect/jsonrpc-utils@1.0.8: resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} dependencies: '@walletconnect/environment': 1.0.1 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 dev: false @@ -4267,7 +5662,7 @@ packages: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -4300,11 +5695,11 @@ packages: - uWebSockets.js dev: false - /@walletconnect/logger@2.0.1: - resolution: {integrity: sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==} + /@walletconnect/logger@2.1.2: + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} dependencies: + '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - tslib: 1.14.1 dev: false /@walletconnect/modal-core@2.6.2(@types/react@18.2.15)(react@18.2.0): @@ -4338,11 +5733,10 @@ packages: - react dev: false - /@walletconnect/relay-api@1.0.9: - resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} + /@walletconnect/relay-api@1.0.10: + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} dependencies: - '@walletconnect/jsonrpc-types': 1.0.3 - tslib: 1.14.1 + '@walletconnect/jsonrpc-types': 1.0.4 dev: false /@walletconnect/relay-auth@1.0.4: @@ -4353,7 +5747,7 @@ packages: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 tslib: 1.14.1 - uint8arrays: 3.1.1 + uint8arrays: 3.1.0 dev: false /@walletconnect/safe-json@1.0.2: @@ -4362,17 +5756,17 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/sign-client@2.11.1: - resolution: {integrity: sha512-s3oKSx6/F5X2WmkV1jfJImBFACf9Km5HpTb+n5q+mobJVpUQw/clvoVyIrNNppLhm1V1S/ylHXh0qCrDppDpCA==} + /@walletconnect/sign-client@2.14.0: + resolution: {integrity: sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg==} dependencies: - '@walletconnect/core': 2.11.1 + '@walletconnect/core': 2.14.0 '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/logger': 2.0.1 + '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.1 - '@walletconnect/utils': 2.11.1 + '@walletconnect/types': 2.14.0 + '@walletconnect/utils': 2.14.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -4400,14 +5794,14 @@ packages: tslib: 1.14.1 dev: false - /@walletconnect/types@2.11.1: - resolution: {integrity: sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw==} + /@walletconnect/types@2.14.0: + resolution: {integrity: sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g==} dependencies: '@walletconnect/events': 1.0.1 - '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/logger': 2.0.1 + '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -4426,17 +5820,17 @@ packages: - uWebSockets.js dev: false - /@walletconnect/universal-provider@2.11.1: - resolution: {integrity: sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw==} + /@walletconnect/universal-provider@2.14.0: + resolution: {integrity: sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.7 - '@walletconnect/jsonrpc-provider': 1.0.13 - '@walletconnect/jsonrpc-types': 1.0.3 + '@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/logger': 2.0.1 - '@walletconnect/sign-client': 2.11.1 - '@walletconnect/types': 2.11.1 - '@walletconnect/utils': 2.11.1 + '@walletconnect/logger': 2.1.2 + '@walletconnect/sign-client': 2.14.0 + '@walletconnect/types': 2.14.0 + '@walletconnect/utils': 2.14.0 events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -4458,23 +5852,23 @@ packages: - utf-8-validate dev: false - /@walletconnect/utils@2.11.1: - resolution: {integrity: sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA==} + /@walletconnect/utils@2.14.0: + resolution: {integrity: sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/relay-api': 1.0.9 + '@walletconnect/relay-api': 1.0.10 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.11.1 + '@walletconnect/types': 2.14.0 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 query-string: 7.1.3 - uint8arrays: 3.1.1 + uint8arrays: 3.1.0 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -4510,22 +5904,8 @@ packages: deprecated: Use your platform's native atob() and btoa() methods instead dev: true - /abitype@0.9.8(typescript@5.4.2): - resolution: {integrity: sha512-puLifILdm+8sjyss4S+fsUN09obiT1g2YW6CtcQF+QDzxR0euzgEB29MZujC6zMk2a6SVmtttq1fc6+YFA7WYQ==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.19.1 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true - dependencies: - typescript: 5.4.2 - dev: false - - /abitype@1.0.0(typescript@5.4.2): - resolution: {integrity: sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==} + /abitype@1.0.5(typescript@5.4.2): + resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} peerDependencies: typescript: '>=5.0.4' zod: ^3 >=3.22.0 @@ -4577,6 +5957,13 @@ packages: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true + dev: true + + /acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false /agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} @@ -4698,7 +6085,6 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -4814,7 +6200,7 @@ packages: resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} engines: {node: '>=4'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /astral-regex@1.0.0: @@ -4834,7 +6220,7 @@ packages: /async-mutex@0.2.6: resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /async@3.2.5: @@ -4880,12 +6266,12 @@ packages: dequal: 2.0.3 dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.24.1): + /babel-core@7.0.0-bridge.0(@babel/core@7.25.2): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.25.2 dev: false /babel-jest@29.7.0(@babel/core@7.24.1): @@ -4949,6 +6335,20 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true + + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.1): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.25.2 + '@babel/core': 7.24.1 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.1) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: false /babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.1): resolution: {integrity: sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==} @@ -4960,6 +6360,19 @@ packages: core-js-compat: 3.36.1 transitivePeerDependencies: - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.24.1): + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.1) + core-js-compat: 3.38.0 + transitivePeerDependencies: + - supports-color + dev: false /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.1): resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} @@ -4970,11 +6383,23 @@ packages: '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) transitivePeerDependencies: - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.1): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.24.1 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.1) + transitivePeerDependencies: + - supports-color + dev: false /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.1): resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} dependencies: - '@babel/plugin-syntax-flow': 7.24.1(@babel/core@7.24.1) + '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.1) transitivePeerDependencies: - '@babel/core' dev: false @@ -5073,6 +6498,13 @@ packages: dependencies: fill-range: 7.0.1 + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: false + /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} dev: false @@ -5087,6 +6519,17 @@ packages: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) + /browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001651 + electron-to-chromium: 1.5.9 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + dev: false + /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} engines: {node: '>= 6'} @@ -5128,7 +6571,7 @@ packages: engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 dev: false /busboy@1.6.0: @@ -5196,6 +6639,10 @@ packages: /caniuse-lite@1.0.30001599: resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} + /caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + dev: false + /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true @@ -5260,8 +6707,8 @@ packages: - supports-color dev: false - /chromium-edge-launcher@1.0.0: - resolution: {integrity: sha512-pgtgjNKZ7i5U++1g1PWv75umkHvhVTDOQIZ+sjeUX9483S7Y6MUvO0lrd7ShGlQlFHMN4SwKTCq/X8hWrbv2KA==} + /chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} dependencies: '@types/node': 20.12.13 escape-string-regexp: 4.0.0 @@ -5454,7 +6901,7 @@ packages: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} dependencies: - mime-db: 1.52.0 + mime-db: 1.53.0 dev: false /compression@1.7.4: @@ -5475,6 +6922,10 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: false + /connect@3.7.0: resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} engines: {node: '>= 0.10.0'} @@ -5499,14 +6950,21 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - /cookie-es@1.0.0: - resolution: {integrity: sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==} + /cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} dev: false /core-js-compat@3.36.1: resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} dependencies: browserslist: 4.23.0 + dev: true + + /core-js-compat@3.38.0: + resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} + dependencies: + browserslist: 4.23.3 + dev: false /core-js@3.37.1: resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} @@ -5535,11 +6993,27 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} dependencies: - '@types/parse-json': 4.0.2 + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /cosmiconfig@9.0.0(typescript@5.4.2): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 import-fresh: 3.3.0 + js-yaml: 4.1.0 parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 + typescript: 5.4.2 dev: false /crc-32@1.2.2: @@ -5766,11 +7240,16 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 dev: false /dayjs@1.11.10: resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: true + + /dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + dev: false /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -5807,6 +7286,18 @@ packages: ms: 2.1.2 supports-color: 8.1.1 + /debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -5912,15 +7403,6 @@ packages: engines: {node: '>= 0.8'} dev: false - /deprecated-react-native-prop-types@5.0.0: - resolution: {integrity: sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ==} - engines: {node: '>=18'} - dependencies: - '@react-native/normalize-colors': 0.73.2 - invariant: 2.2.4 - prop-types: 15.8.1 - dev: false - /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -6034,8 +7516,8 @@ packages: safer-buffer: 2.1.2 dev: true - /eciesjs@0.3.18: - resolution: {integrity: sha512-RQhegEtLSyIiGJmFTZfvCTHER/fymipXFVx6OwSRYD6hOuy+6Kjpk0dGvIfP9kxn/smBpxQy71uxpGO406ITCw==} + /eciesjs@0.3.19: + resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} dependencies: '@types/secp256k1': 4.0.6 futoin-hkdf: 1.5.3 @@ -6049,8 +7531,12 @@ packages: /electron-to-chromium@1.4.710: resolution: {integrity: sha512-w+9yAVHoHhysCa+gln7AzbO9CdjFcL/wN/5dd+XW/Msl2d/4+WisEaCF1nty0xbAKaxdaJfgLB2296U7zZB7BA==} - /elliptic@6.5.5: - resolution: {integrity: sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==} + /electron-to-chromium@1.5.9: + resolution: {integrity: sha512-HfkT8ndXR0SEkU8gBQQM3rz035bpE/hxkZ1YIt4KJPEFES68HfIU6LzKukH0H794Lm83WJtkSAMfEToxCs15VA==} + dev: false + + /elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -6086,13 +7572,13 @@ packages: dependencies: once: 1.4.0 - /engine.io-client@6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} + /engine.io-client@6.5.4: + resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) - engine.io-parser: 5.2.2 - ws: 8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3) + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6 + engine.io-parser: 5.2.3 + ws: 8.17.1 xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: - bufferutil @@ -6100,8 +7586,8 @@ packages: - utf-8-validate dev: false - /engine.io-parser@5.2.2: - resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} + /engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} engines: {node: '>=10.0.0'} dev: false @@ -6118,8 +7604,13 @@ packages: engines: {node: '>=0.12'} dev: true - /envinfo@7.11.1: - resolution: {integrity: sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==} + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: false + + /envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} engines: {node: '>=4'} hasBin: true dev: false @@ -6671,13 +8162,13 @@ packages: fast-safe-stringify: 2.1.1 dev: false - /ethereum-cryptography@2.1.3: - resolution: {integrity: sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==} + /ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} dependencies: - '@noble/curves': 1.3.0 - '@noble/hashes': 1.3.3 - '@scure/bip32': 1.3.3 - '@scure/bip39': 1.2.2 + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 dev: false /event-target-shim@5.0.1: @@ -6769,14 +8260,19 @@ packages: jest-util: 29.7.0 dev: true + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: false + /extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true - /extension-port-stream@2.1.1: - resolution: {integrity: sha512-qknp5o5rj2J9CRKfVB8KJr+uXQlrojNZzdESUPhKYLXf97TPcGf6qWWKmpsNNtUyOdzFhab1ON0jzouNxHHvow==} + /extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} engines: {node: '>=12.0.0'} dependencies: + readable-stream: 3.6.2 webextension-polyfill: 0.10.0 dev: false @@ -6799,13 +8295,8 @@ packages: engines: {'0': node >=0.6.0} dev: true - /fast-deep-equal@2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - dev: false - /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} @@ -6820,7 +8311,6 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -6830,8 +8320,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fast-redact@3.4.1: - resolution: {integrity: sha512-G7mumVmRGBTa4UKRnYoiWRqqOqK2Ot80XIYjeFpTaPctGLZfK0g5HoSifgUsx1+uZMXGoz6L/28lYNIMvZY8vA==} + /fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} engines: {node: '>=6'} dev: false @@ -6839,8 +8329,8 @@ packages: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} dev: false - /fast-xml-parser@4.3.6: - resolution: {integrity: sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==} + /fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} hasBin: true dependencies: strnum: 1.0.5 @@ -6850,7 +8340,6 @@ packages: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - dev: true /fb-watchman@2.0.2: resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} @@ -6884,6 +8373,13 @@ packages: dependencies: to-regex-range: 5.0.1 + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: false + /filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} engines: {node: '>=0.10.0'} @@ -6955,8 +8451,8 @@ packages: resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} dev: false - /flow-parser@0.206.0: - resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} + /flow-parser@0.243.0: + resolution: {integrity: sha512-HCDBfH+kZcY5etWYeAqatjW78gkIryzb9XixRsA8lGI1uyYc7aCpElkkO4H+KIpoyQMiY0VAZPI4cyac3wQe8w==} engines: {node: '>=0.4.0'} dev: false @@ -7212,19 +8708,19 @@ packages: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true - /h3@1.11.1: - resolution: {integrity: sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==} + /h3@1.12.0: + resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} dependencies: - cookie-es: 1.0.0 + cookie-es: 1.2.2 crossws: 0.2.4 defu: 6.1.4 destr: 2.0.3 - iron-webcrypto: 1.1.0 + iron-webcrypto: 1.2.1 ohash: 1.1.3 - radix3: 1.1.1 - ufo: 1.5.2 + radix3: 1.1.2 + ufo: 1.5.4 uncrypto: 0.1.3 - unenv: 1.9.0 + unenv: 1.10.0 transitivePeerDependencies: - uWebSockets.js dev: false @@ -7278,31 +8774,24 @@ packages: dependencies: function-bind: 1.1.2 - /hermes-estree@0.15.0: - resolution: {integrity: sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ==} - dev: false - - /hermes-estree@0.19.1: - resolution: {integrity: sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g==} + /hermes-estree@0.22.0: + resolution: {integrity: sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==} dev: false - /hermes-parser@0.15.0: - resolution: {integrity: sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q==} - dependencies: - hermes-estree: 0.15.0 + /hermes-estree@0.23.0: + resolution: {integrity: sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==} dev: false - /hermes-parser@0.19.1: - resolution: {integrity: sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A==} + /hermes-parser@0.22.0: + resolution: {integrity: sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==} dependencies: - hermes-estree: 0.19.1 + hermes-estree: 0.22.0 dev: false - /hermes-profile-transformer@0.0.6: - resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} - engines: {node: '>=8'} + /hermes-parser@0.23.0: + resolution: {integrity: sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==} dependencies: - source-map: 0.7.4 + hermes-estree: 0.23.0 dev: false /hey-listen@1.0.8: @@ -7444,20 +8933,20 @@ packages: hasBin: true dev: true - /i18next-browser-languagedetector@7.2.0: - resolution: {integrity: sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==} + /i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 dev: false /i18next-fs-backend@2.3.1: resolution: {integrity: sha512-tvfXskmG/9o+TJ5Fxu54sSO5OkY6d+uMn+K6JiUGLJrwxAVfer+8V3nU8jq3ts9Pe5lXJv4b1N7foIjJ8Iy2Gg==} dev: false - /i18next@22.5.1: - resolution: {integrity: sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==} + /i18next@23.11.5: + resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 dev: false /i18next@23.7.6: @@ -7555,8 +9044,8 @@ packages: loose-envify: 1.4.0 dev: false - /iron-webcrypto@1.1.0: - resolution: {integrity: sha512-5vgYsCakNlaQub1orZK5QmNYhwYtcllTkZBp5sfIaCqY93Cf6l+v2rtE+E4TMbcfjxDMCdrO8wmp7+ZvhDECLA==} + /iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} dev: false /is-arguments@1.1.1: @@ -7736,11 +9225,6 @@ packages: engines: {node: '>=8'} dev: true - /is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - /is-plain-object@2.0.4: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} @@ -7883,12 +9367,12 @@ packages: - encoding dev: false - /isows@1.0.3(ws@8.13.0): - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + /isows@1.0.4(ws@8.17.1): + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} peerDependencies: ws: '*' dependencies: - ws: 8.13.0 + ws: 8.17.1 dev: false /isstream@0.1.2: @@ -8400,13 +9884,13 @@ packages: - ts-node dev: true - /jiti@1.21.0: - resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + /jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true dev: false - /joi@17.12.2: - resolution: {integrity: sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==} + /joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -8430,7 +9914,6 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsbn@0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} @@ -8444,27 +9927,27 @@ packages: resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} dev: false - /jscodeshift@0.14.0(@babel/preset-env@7.24.1): + /jscodeshift@0.14.0(@babel/preset-env@7.25.3): resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} hasBin: true peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.24.1 - '@babel/parser': 7.24.1 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.24.1) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.24.1) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) - '@babel/preset-env': 7.24.1(@babel/core@7.24.1) - '@babel/preset-flow': 7.24.1(@babel/core@7.24.1) - '@babel/preset-typescript': 7.24.1(@babel/core@7.24.1) - '@babel/register': 7.23.7(@babel/core@7.24.1) - babel-core: 7.0.0-bridge.0(@babel/core@7.24.1) + '@babel/core': 7.25.2 + '@babel/parser': 7.25.3 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.25.2) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.25.2) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) + '@babel/preset-env': 7.25.3(@babel/core@7.24.1) + '@babel/preset-flow': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/register': 7.24.6(@babel/core@7.25.2) + babel-core: 7.0.0-bridge.0(@babel/core@7.25.2) chalk: 4.1.2 - flow-parser: 0.206.0 + flow-parser: 0.243.0 graceful-fs: 4.2.11 - micromatch: 4.0.5 + micromatch: 4.0.7 neo-async: 2.6.2 node-dir: 0.1.17 recast: 0.21.5 @@ -8507,7 +9990,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.16.0 + ws: 8.18.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -8579,15 +10062,6 @@ packages: eth-rpc-errors: 4.0.3 dev: false - /json-rpc-middleware-stream@4.2.3: - resolution: {integrity: sha512-4iFb0yffm5vo3eFKDbQgke9o17XBcLQ2c3sONrXSbcOLzP8LTojqo8hRGVgtJShhm5q4ZDSNq039fAx9o65E1w==} - engines: {node: '>=14.0.0'} - dependencies: - '@metamask/safe-event-emitter': 3.1.1 - json-rpc-engine: 6.1.0 - readable-stream: 2.3.8 - dev: false - /json-rpc-random-id@1.0.1: resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} dev: false @@ -8620,10 +10094,6 @@ packages: engines: {node: '>=6'} hasBin: true - /jsonc-parser@3.2.1: - resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} - dev: false - /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -8664,7 +10134,7 @@ packages: requiresBuild: true dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 readable-stream: 3.6.2 dev: false @@ -8738,14 +10208,14 @@ packages: crossws: 0.2.4 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.11.1 + h3: 1.12.0 http-shutdown: 1.2.2 - jiti: 1.21.0 - mlly: 1.6.1 + jiti: 1.21.6 + mlly: 1.7.1 node-forge: 1.3.1 pathe: 1.1.2 std-env: 3.7.0 - ufo: 1.5.2 + ufo: 1.5.4 untun: 0.1.3 uqr: 0.1.2 transitivePeerDependencies: @@ -8775,7 +10245,7 @@ packages: /lit-element@3.3.3: resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} dependencies: - '@lit-labs/ssr-dom-shim': 1.2.0 + '@lit-labs/ssr-dom-shim': 1.2.1 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 dev: false @@ -8863,7 +10333,7 @@ packages: hasBin: true dependencies: ansi-fragments: 0.2.1 - dayjs: 1.11.10 + dayjs: 1.11.12 yargs: 15.4.1 dev: false @@ -8878,6 +10348,10 @@ packages: engines: {node: 14 || >=16.14} dev: false + /lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + dev: false + /lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -8888,6 +10362,7 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: true /lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} @@ -8924,63 +10399,60 @@ packages: /media-query-parser@2.0.2: resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 dev: false /memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} dev: false - /merge-options@3.0.4: - resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} - engines: {node: '>=10'} - dependencies: - is-plain-obj: 2.1.0 - dev: false - /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true - /metro-babel-transformer@0.80.6: - resolution: {integrity: sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA==} + /metro-babel-transformer@0.80.10: + resolution: {integrity: sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.24.1 - hermes-parser: 0.19.1 + '@babel/core': 7.25.2 + flow-enums-runtime: 0.0.6 + hermes-parser: 0.23.0 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color dev: false - /metro-cache-key@0.80.6: - resolution: {integrity: sha512-DFmjQacC8m/S3HpELklLMWkPGP/fZPX3BSgjd0xQvwIvWyFwk8Nn/lfp/uWdEVDtDSIr64/anXU5uWohGwlWXw==} + /metro-cache-key@0.80.10: + resolution: {integrity: sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==} engines: {node: '>=18'} + dependencies: + flow-enums-runtime: 0.0.6 dev: false - /metro-cache@0.80.6: - resolution: {integrity: sha512-NP81pHSPkzs+iNlpVkJqijrpcd6lfuDAunYH9/Rn8oLNz0yLfkl8lt+xOdUU4IkFt3oVcTBEFCnzAzv4B8YhyA==} + /metro-cache@0.80.10: + resolution: {integrity: sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==} engines: {node: '>=18'} dependencies: - metro-core: 0.80.6 - rimraf: 3.0.2 + exponential-backoff: 3.1.1 + flow-enums-runtime: 0.0.6 + metro-core: 0.80.10 dev: false - /metro-config@0.80.6: - resolution: {integrity: sha512-vHYYvJpRTWYbmvqlR7i04xQpZCHJ6yfZ/xIcPdz2ssbdJGGJbiT1Aar9wr8RAhsccSxdJgfE5B1DB8Mo+DnhIg==} + /metro-config@0.80.10: + resolution: {integrity: sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==} engines: {node: '>=18'} dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 + flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.80.6 - metro-cache: 0.80.6 - metro-core: 0.80.6 - metro-runtime: 0.80.6 + metro: 0.80.10 + metro-cache: 0.80.10 + metro-core: 0.80.10 + metro-runtime: 0.80.10 transitivePeerDependencies: - bufferutil - encoding @@ -8988,25 +10460,27 @@ packages: - utf-8-validate dev: false - /metro-core@0.80.6: - resolution: {integrity: sha512-fn4rryTUAwzFJWj7VIPDH4CcW/q7MV4oGobqR6NsuxZoIGYrVpK7pBasumu5YbCqifuErMs5s23BhmrDNeZURw==} + /metro-core@0.80.10: + resolution: {integrity: sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==} engines: {node: '>=18'} dependencies: + flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 - metro-resolver: 0.80.6 + metro-resolver: 0.80.10 dev: false - /metro-file-map@0.80.6: - resolution: {integrity: sha512-S3CUqvpXpc+q3q+hCEWvFKhVqgq0VmXdZQDF6u7ue86E2elq1XLnfLOt9JSpwyhpMQRyysjSCnd/Yh6GZMNHoQ==} + /metro-file-map@0.80.10: + resolution: {integrity: sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==} engines: {node: '>=18'} dependencies: anymatch: 3.1.3 debug: 2.6.9 fb-watchman: 2.0.2 + flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 invariant: 2.2.4 jest-worker: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.7 node-abort-controller: 3.1.1 nullthrows: 1.1.1 walker: 1.0.8 @@ -9016,48 +10490,54 @@ packages: - supports-color dev: false - /metro-minify-terser@0.80.6: - resolution: {integrity: sha512-83eZaH2+B+jP92KuodPqXknzwmiboKAuZY4doRfTEEXAG57pNVNN6cqSRJlwDnmaTBKRffxoncBXbYqHQgulgg==} + /metro-minify-terser@0.80.10: + resolution: {integrity: sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==} engines: {node: '>=18'} dependencies: - terser: 5.29.2 + flow-enums-runtime: 0.0.6 + terser: 5.31.6 dev: false - /metro-resolver@0.80.6: - resolution: {integrity: sha512-R7trfglG4zY4X9XyM9cvuffAhQ9W1reWoahr1jdEWa6rOI8PyM0qXjcsb8l+fsOQhdSiVlkKcYAmkyrs1S/zrA==} + /metro-resolver@0.80.10: + resolution: {integrity: sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==} engines: {node: '>=18'} + dependencies: + flow-enums-runtime: 0.0.6 dev: false - /metro-runtime@0.80.6: - resolution: {integrity: sha512-21GQVd0pp2nACoK0C2PL8mBsEhIFUFFntYrWRlYNHtPQoqDzddrPEIgkyaABGXGued+dZoBlFQl+LASlmmfkvw==} + /metro-runtime@0.80.10: + resolution: {integrity: sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==} engines: {node: '>=18'} dependencies: - '@babel/runtime': 7.24.8 + '@babel/runtime': 7.25.0 + flow-enums-runtime: 0.0.6 dev: false - /metro-source-map@0.80.6: - resolution: {integrity: sha512-lqDuSLctWy9Qccu4Zl0YB1PzItpsqcKGb1nK0aDY+lzJ26X65OCib2VzHlj+xj7e4PiIKOfsvDCczCBz4cnxdg==} + /metro-source-map@0.80.10: + resolution: {integrity: sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==} engines: {node: '>=18'} dependencies: - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 + flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.80.6 + metro-symbolicate: 0.80.10 nullthrows: 1.1.1 - ob1: 0.80.6 + ob1: 0.80.10 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color dev: false - /metro-symbolicate@0.80.6: - resolution: {integrity: sha512-SGwKeBi+lK7NmM5+EcW6DyRRa9HmGSvH0LJtlT4XoRMbpxzsLYs0qUEA+olD96pOIP+ta7I8S30nQr2ttqgO8A==} + /metro-symbolicate@0.80.10: + resolution: {integrity: sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==} engines: {node: '>=18'} hasBin: true dependencies: + flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-source-map: 0.80.6 + metro-source-map: 0.80.10 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -9066,34 +10546,36 @@ packages: - supports-color dev: false - /metro-transform-plugins@0.80.6: - resolution: {integrity: sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg==} + /metro-transform-plugins@0.80.10: + resolution: {integrity: sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.24.1 - '@babel/generator': 7.24.1 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color dev: false - /metro-transform-worker@0.80.6: - resolution: {integrity: sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA==} + /metro-transform-worker@0.80.10: + resolution: {integrity: sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.24.1 - '@babel/generator': 7.24.1 - '@babel/parser': 7.24.1 - '@babel/types': 7.24.0 - metro: 0.80.6 - metro-babel-transformer: 0.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-minify-terser: 0.80.6 - metro-source-map: 0.80.6 - metro-transform-plugins: 0.80.6 + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + flow-enums-runtime: 0.0.6 + metro: 0.80.10 + metro-babel-transformer: 0.80.10 + metro-cache: 0.80.10 + metro-cache-key: 0.80.10 + metro-minify-terser: 0.80.10 + metro-source-map: 0.80.10 + metro-transform-plugins: 0.80.10 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -9102,18 +10584,18 @@ packages: - utf-8-validate dev: false - /metro@0.80.6: - resolution: {integrity: sha512-f6Nhnht9TxVRP6zdBq9J2jNdeDBxRmJFnjxhQS1GeCpokBvI6fTXq+wHTLz5jZA+75fwbkPSzBxBJzQa6xi0AQ==} + /metro@0.80.10: + resolution: {integrity: sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==} engines: {node: '>=18'} hasBin: true dependencies: - '@babel/code-frame': 7.24.1 - '@babel/core': 7.24.1 - '@babel/generator': 7.24.1 - '@babel/parser': 7.24.1 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.1 - '@babel/types': 7.24.0 + '@babel/code-frame': 7.24.7 + '@babel/core': 7.25.2 + '@babel/generator': 7.25.0 + '@babel/parser': 7.25.3 + '@babel/template': 7.25.0 + '@babel/traverse': 7.25.3 + '@babel/types': 7.25.2 accepts: 1.3.8 chalk: 4.1.2 ci-info: 2.0.0 @@ -9121,34 +10603,34 @@ packages: debug: 2.6.9 denodeify: 1.2.1 error-stack-parser: 2.1.4 + flow-enums-runtime: 0.0.6 graceful-fs: 4.2.11 - hermes-parser: 0.19.1 + hermes-parser: 0.23.0 image-size: 1.1.1 invariant: 2.2.4 jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.80.6 - metro-cache: 0.80.6 - metro-cache-key: 0.80.6 - metro-config: 0.80.6 - metro-core: 0.80.6 - metro-file-map: 0.80.6 - metro-resolver: 0.80.6 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 - metro-symbolicate: 0.80.6 - metro-transform-plugins: 0.80.6 - metro-transform-worker: 0.80.6 + metro-babel-transformer: 0.80.10 + metro-cache: 0.80.10 + metro-cache-key: 0.80.10 + metro-config: 0.80.10 + metro-core: 0.80.10 + metro-file-map: 0.80.10 + metro-resolver: 0.80.10 + metro-runtime: 0.80.10 + metro-source-map: 0.80.10 + metro-symbolicate: 0.80.10 + metro-transform-plugins: 0.80.10 + metro-transform-worker: 0.80.10 mime-types: 2.1.35 node-fetch: 2.7.0 nullthrows: 1.1.1 - rimraf: 3.0.2 serialize-error: 2.1.0 source-map: 0.5.7 strip-ansi: 6.0.1 throat: 5.0.0 - ws: 7.5.9 + ws: 7.5.10 yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -9168,10 +10650,23 @@ packages: braces: 3.0.2 picomatch: 2.3.1 + /micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + dev: false + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + /mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + dev: false + /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -9238,8 +10733,8 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dev: false - /mipd@0.0.5(typescript@5.4.2): - resolution: {integrity: sha512-gbKA784D2WKb5H/GtqEv+Ofd1S9Zj+Z/PGDIl1u1QAbswkxD28BQ5bSXQxkeBzPBABg1iDSbiwGG1XqlOxRspA==} + /mipd@0.0.7(typescript@5.4.2): + resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -9247,11 +10742,6 @@ packages: optional: true dependencies: typescript: 5.4.2 - viem: 1.21.4(typescript@5.4.2) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod dev: false /mkdirp@0.5.6: @@ -9267,13 +10757,13 @@ packages: hasBin: true dev: false - /mlly@1.6.1: - resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + /mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} dependencies: - acorn: 8.11.3 + acorn: 8.12.1 pathe: 1.1.2 - pkg-types: 1.0.3 - ufo: 1.5.2 + pkg-types: 1.1.3 + ufo: 1.5.4 dev: false /modern-ahocorasick@1.0.1: @@ -9283,11 +10773,11 @@ packages: /motion@10.16.2: resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} dependencies: - '@motionone/animation': 10.17.0 - '@motionone/dom': 10.17.0 + '@motionone/animation': 10.18.0 + '@motionone/dom': 10.18.0 '@motionone/svelte': 10.16.4 - '@motionone/types': 10.17.0 - '@motionone/utils': 10.17.0 + '@motionone/types': 10.17.1 + '@motionone/utils': 10.18.0 '@motionone/vue': 10.16.4 dev: false @@ -9356,7 +10846,7 @@ packages: i18next-fs-backend: 2.3.1 next: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 - react-i18next: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0) + react-i18next: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) dev: false /next@14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0): @@ -9415,9 +10905,8 @@ packages: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} dev: false - /node-addon-api@7.1.0: - resolution: {integrity: sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==} - engines: {node: ^16 || ^18 || >= 20} + /node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} dev: false /node-dir@0.1.17: @@ -9427,8 +10916,8 @@ packages: minimatch: 3.1.2 dev: false - /node-fetch-native@1.6.2: - resolution: {integrity: sha512-69mtXOFZ6hSkYiXAVB5SqaRvrbITC/NPyqv7yuu/qw0nmgPyYbIMYYNIDhNtwPrzk0ptrimrLz/hhjvm4w5Z+w==} + /node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} dev: false /node-fetch@2.7.0: @@ -9448,8 +10937,8 @@ packages: engines: {node: '>= 6.13.0'} dev: false - /node-gyp-build@4.8.0: - resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + /node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} hasBin: true dev: false @@ -9459,6 +10948,10 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + /node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + dev: false + /node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} engines: {node: '>=0.12.0'} @@ -9490,9 +10983,11 @@ packages: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true - /ob1@0.80.6: - resolution: {integrity: sha512-nlLGZPMQ/kbmkdIb5yvVzep1jKUII2x6ehNsHpgy71jpnJMW7V+KsB3AjYI2Ajb7UqMAMNjlssg6FUodrEMYzg==} + /ob1@0.80.10: + resolution: {integrity: sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==} engines: {node: '>=18'} + dependencies: + flow-enums-runtime: 0.0.6 dev: false /obj-multiplex@1.0.0: @@ -9582,12 +11077,12 @@ packages: es-object-atoms: 1.0.0 dev: true - /ofetch@1.3.3: - resolution: {integrity: sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==} + /ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} dependencies: destr: 2.0.3 - node-fetch-native: 1.6.2 - ufo: 1.5.2 + node-fetch-native: 1.6.4 + ufo: 1.5.4 dev: false /ohash@1.1.3: @@ -9822,6 +11317,9 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} @@ -9861,7 +11359,7 @@ packages: hasBin: true dependencies: atomic-sleep: 1.0.0 - fast-redact: 3.4.1 + fast-redact: 3.5.0 on-exit-leak-free: 0.2.0 pino-abstract-transport: 0.5.0 pino-std-serializers: 4.0.0 @@ -9891,11 +11389,11 @@ packages: find-up: 4.1.0 dev: true - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + /pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} dependencies: - jsonc-parser: 3.2.1 - mlly: 1.6.1 + confbox: 0.1.7 + mlly: 1.7.1 pathe: 1.1.2 dev: false @@ -9904,8 +11402,8 @@ packages: engines: {node: '>=10.13.0'} dev: false - /pony-cause@2.1.10: - resolution: {integrity: sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==} + /pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} engines: {node: '>=12.0.0'} dev: false @@ -9935,8 +11433,8 @@ packages: source-map-js: 1.1.0 dev: true - /preact@10.19.7: - resolution: {integrity: sha512-IJOW6cQN1fwfC17HfNOqUtAGyB8wAYshuC+jG1JiL/1+sC4yVyuA3IcF0N9vdodMJjW/lbuEF5qFsJqGNcbHbw==} + /preact@10.23.2: + resolution: {integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==} dev: false /prelude-ls@1.2.1: @@ -9989,10 +11487,6 @@ packages: ansi-styles: 5.2.0 react-is: 18.2.0 - /process-nextick-args@1.0.7: - resolution: {integrity: sha512-yN0WQmuCX63LP/TMvAg31nvT6m4vDqJEiiv2CAZqWOGNWutc9DfDk1NPYYmKUFmaVM2UwDowH4u5AHWYP/jxKw==} - dev: false - /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: false @@ -10096,13 +11590,18 @@ packages: strict-uri-encode: 2.0.0 dev: false + /querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: false + /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} @@ -10114,8 +11613,8 @@ packages: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} dev: false - /radix3@1.1.1: - resolution: {integrity: sha512-yUUd5VTiFtcMEx0qFUxGAv5gbMc1un4RvEO1JZdP7ZUl/RHygZK6PknIKntmQRZxnMY3ZXD2ISaw1ij8GYW1yg==} + /radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} dev: false /range-parser@1.2.1: @@ -10123,11 +11622,11 @@ packages: engines: {node: '>= 0.6'} dev: false - /react-devtools-core@4.28.5: - resolution: {integrity: sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==} + /react-devtools-core@5.3.1: + resolution: {integrity: sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==} dependencies: shell-quote: 1.8.1 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -10142,28 +11641,7 @@ packages: react: 18.2.0 scheduler: 0.23.0 - /react-i18next@13.5.0(i18next@22.5.1)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): - resolution: {integrity: sha512-CFJ5NDGJ2MUyBohEHxljOq/39NQ972rh1ajnadG9BjTk+UXbHLq4z5DKEbEQBDoIhUmmbuS/fIMJKo6VOax1HA==} - peerDependencies: - i18next: '>= 23.2.3' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - dependencies: - '@babel/runtime': 7.24.8 - html-parse-stringify: 3.0.1 - i18next: 22.5.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) - dev: false - - /react-i18next@14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0): + /react-i18next@14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0): resolution: {integrity: sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==} peerDependencies: i18next: '>= 23.2.3' @@ -10181,7 +11659,7 @@ packages: i18next: 23.7.6 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) dev: false /react-is@16.13.1: @@ -10193,7 +11671,7 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} - /react-native-webview@11.26.1(react-native@0.73.6)(react@18.2.0): + /react-native-webview@11.26.1(react-native@0.75.1)(react@18.2.0): resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} peerDependencies: react: '*' @@ -10202,54 +11680,59 @@ packages: escape-string-regexp: 2.0.0 invariant: 2.2.4 react: 18.2.0 - react-native: 0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0) + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) dev: false - /react-native@0.73.6(@babel/core@7.24.1)(@babel/preset-env@7.24.1)(react@18.2.0): - resolution: {integrity: sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA==} + /react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2): + resolution: {integrity: sha512-6WGjZdqXLEuBWAP+h2WH5a2Nd9jn7KmQ1GYy0Krzkcfvz9vPtKKIUSEjwvi3q+M0UTu3V/ESBaMDfT/GGr3fkg==} engines: {node: '>=18'} hasBin: true peerDependencies: - react: 18.2.0 + '@types/react': ^18.2.6 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 12.3.6 - '@react-native-community/cli-platform-android': 12.3.6 - '@react-native-community/cli-platform-ios': 12.3.6 - '@react-native/assets-registry': 0.73.1 - '@react-native/codegen': 0.73.3(@babel/preset-env@7.24.1) - '@react-native/community-cli-plugin': 0.73.17(@babel/core@7.24.1)(@babel/preset-env@7.24.1) - '@react-native/gradle-plugin': 0.73.4 - '@react-native/js-polyfills': 0.73.1 - '@react-native/normalize-colors': 0.73.2 - '@react-native/virtualized-lists': 0.73.4(react-native@0.73.6) + '@react-native-community/cli': 14.0.0(typescript@5.4.2) + '@react-native-community/cli-platform-android': 14.0.0 + '@react-native-community/cli-platform-ios': 14.0.0 + '@react-native/assets-registry': 0.75.1 + '@react-native/codegen': 0.75.1(@babel/preset-env@7.25.3) + '@react-native/community-cli-plugin': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3) + '@react-native/gradle-plugin': 0.75.1 + '@react-native/js-polyfills': 0.75.1 + '@react-native/normalize-colors': 0.75.1 + '@react-native/virtualized-lists': 0.75.1(@types/react@18.2.15)(react-native@0.75.1)(react@18.2.0) + '@types/react': 18.2.15 abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 base64-js: 1.5.1 chalk: 4.1.2 - deprecated-react-native-prop-types: 5.0.0 event-target-shim: 5.0.1 flow-enums-runtime: 0.0.6 + glob: 7.2.3 invariant: 2.2.4 jest-environment-node: 29.7.0 jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-runtime: 0.80.6 - metro-source-map: 0.80.6 + metro-runtime: 0.80.10 + metro-source-map: 0.80.10 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 react: 18.2.0 - react-devtools-core: 4.28.5 - react-refresh: 0.14.0 - react-shallow-renderer: 16.15.0(react@18.2.0) + react-devtools-core: 5.3.1 + react-refresh: 0.14.2 regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 + semver: 7.6.3 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 - ws: 6.2.2 + ws: 6.2.3 yargs: 17.7.2 transitivePeerDependencies: - '@babel/core' @@ -10257,11 +11740,12 @@ packages: - bufferutil - encoding - supports-color + - typescript - utf-8-validate dev: false - /react-refresh@0.14.0: - resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + /react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} dev: false @@ -10278,7 +11762,7 @@ packages: '@types/react': 18.2.15 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.2.15)(react@18.2.0) - tslib: 2.6.2 + tslib: 2.6.3 dev: false /react-remove-scroll@2.5.7(@types/react@18.2.15)(react@18.2.0): @@ -10295,8 +11779,8 @@ packages: react: 18.2.0 react-remove-scroll-bar: 2.3.6(@types/react@18.2.15)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.15)(react@18.2.0) - tslib: 2.6.2 - use-callback-ref: 1.3.1(@types/react@18.2.15)(react@18.2.0) + tslib: 2.6.3 + use-callback-ref: 1.3.2(@types/react@18.2.15)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.15)(react@18.2.0) dev: false @@ -10323,16 +11807,6 @@ packages: react: 18.2.0 dev: false - /react-shallow-renderer@16.15.0(react@18.2.0): - resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - dependencies: - object-assign: 4.1.1 - react: 18.2.0 - react-is: 18.2.0 - dev: false - /react-style-singleton@2.2.1(@types/react@18.2.15)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -10347,7 +11821,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): @@ -10379,18 +11853,6 @@ packages: string_decoder: 0.10.31 dev: false - /readable-stream@2.3.3: - resolution: {integrity: sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 1.0.7 - safe-buffer: 5.1.2 - string_decoder: 1.0.3 - util-deprecate: 1.0.2 - dev: false - /readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -10435,7 +11897,7 @@ packages: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /redent@3.0.0: @@ -10578,7 +12040,6 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /rfdc@1.3.1: resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} @@ -10622,7 +12083,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} @@ -10688,9 +12148,17 @@ packages: engines: {node: '>=14.0.0'} requiresBuild: true dependencies: - elliptic: 6.5.5 + elliptic: 6.5.7 node-addon-api: 5.1.0 - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 + dev: false + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 dev: false /semver@5.7.2: @@ -10707,6 +12175,13 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 + dev: true + + /semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + dev: false /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} @@ -10865,13 +12340,13 @@ packages: is-fullwidth-code-point: 3.0.0 dev: true - /socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@6.0.3): + /socket.io-client@4.7.5: resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} engines: {node: '>=10.0.0'} dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) - engine.io-client: 6.5.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6 + engine.io-client: 6.5.4 socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil @@ -10883,8 +12358,8 @@ packages: resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} engines: {node: '>=10.0.0'} dependencies: - '@socket.io/component-emitter': 3.1.0 - debug: 4.3.4(supports-color@8.1.1) + '@socket.io/component-emitter': 3.1.2 + debug: 4.3.6 transitivePeerDependencies: - supports-color dev: false @@ -11077,12 +12552,6 @@ packages: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} dev: false - /string_decoder@1.0.3: - resolution: {integrity: sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==} - dependencies: - safe-buffer: 5.1.2 - dev: false - /string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: @@ -11260,11 +12729,6 @@ packages: engines: {node: '>=18'} dev: false - /temp-dir@2.0.0: - resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} - engines: {node: '>=8'} - dev: false - /temp@0.8.4: resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} engines: {node: '>=6.0.0'} @@ -11272,13 +12736,13 @@ packages: rimraf: 2.6.3 dev: false - /terser@5.29.2: - resolution: {integrity: sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==} + /terser@5.31.6: + resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 + acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 dev: false @@ -11472,6 +12936,10 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + dev: false + /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -11557,16 +13025,16 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ua-parser-js@1.0.37: - resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + /ua-parser-js@1.0.38: + resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} dev: false - /ufo@1.5.2: - resolution: {integrity: sha512-eiutMaL0J2MKdhcOM1tUy13pIrYnyR87fEd8STJQFrrAwImwvlXkxlZEjaKah8r2viPohld08lt73QfLG1NxMg==} + /ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} dev: false - /uint8arrays@3.1.1: - resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + /uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} dependencies: multiformats: 9.9.0 dev: false @@ -11588,13 +13056,13 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} requiresBuild: true - /unenv@1.9.0: - resolution: {integrity: sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==} + /unenv@1.10.0: + resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} dependencies: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.6.2 + node-fetch-native: 1.6.4 pathe: 1.1.2 dev: false @@ -11688,14 +13156,14 @@ packages: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.11.1 + h3: 1.12.0 idb-keyval: 6.2.1 listhen: 1.7.2 - lru-cache: 10.2.0 + lru-cache: 10.4.3 mri: 1.2.0 - node-fetch-native: 1.6.2 - ofetch: 1.3.3 - ufo: 1.5.2 + node-fetch-native: 1.6.4 + ofetch: 1.3.4 + ufo: 1.5.4 transitivePeerDependencies: - uWebSockets.js dev: false @@ -11724,6 +13192,17 @@ packages: escalade: 3.1.2 picocolors: 1.0.0 + /update-browserslist-db@1.1.0(browserslist@4.23.3): + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.3 + escalade: 3.1.2 + picocolors: 1.0.1 + dev: false + /uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} dev: false @@ -11741,8 +13220,8 @@ packages: requires-port: 1.0.0 dev: true - /use-callback-ref@1.3.1(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==} + /use-callback-ref@1.3.2(@types/react@18.2.15)(react@18.2.0): + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} engines: {node: '>=10'} peerDependencies: '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -11753,7 +13232,7 @@ packages: dependencies: '@types/react': 18.2.15 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /use-sidecar@1.1.2(@types/react@18.2.15)(react@18.2.0): @@ -11769,7 +13248,7 @@ packages: '@types/react': 18.2.15 detect-node-es: 1.1.0 react: 18.2.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /use-sync-external-store@1.2.0(react@18.2.0): @@ -11780,12 +13259,12 @@ packages: react: 18.2.0 dev: false - /utf-8-validate@6.0.3: - resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} engines: {node: '>=6.14.2'} requiresBuild: true dependencies: - node-gyp-build: 4.8.0 + node-gyp-build: 4.8.1 dev: false /util-deprecate@1.0.2: @@ -11861,31 +13340,8 @@ packages: extsprintf: 1.3.0 dev: true - /viem@1.21.4(typescript@5.4.2): - resolution: {integrity: sha512-BNVYdSaUjeS2zKQgPs+49e5JKocfo60Ib2yiXOWBT6LuVxY1I/6fFX3waEtpXvL1Xn4qu+BVitVtMh9lyThyhQ==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 0.9.8(typescript@5.4.2) - isows: 1.0.3(ws@8.13.0) - typescript: 5.4.2 - ws: 8.13.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - zod - dev: false - - /viem@2.8.6(typescript@5.4.2): - resolution: {integrity: sha512-LqxLOSFtXfbC3tsiZ8Km8jKR4ktTOLfigL2dR9IN28He2+QrNhYvvwGPz3P4hbfU12Wvuxo6mWGZ2L1lpNtvrA==} + /viem@2.19.6(typescript@5.4.2): + resolution: {integrity: sha512-7jiuX+ZncPZE8iEzgW/iO7EaAMRJEW8hYeJy9YFTMK34Wa9aWzqOm4lrORgemlsqJ/kpQG4InzhG0jc2HY67FA==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -11893,14 +13349,15 @@ packages: optional: true dependencies: '@adraffy/ens-normalize': 1.10.0 - '@noble/curves': 1.2.0 - '@noble/hashes': 1.3.2 - '@scure/bip32': 1.3.2 - '@scure/bip39': 1.2.1 - abitype: 1.0.0(typescript@5.4.2) - isows: 1.0.3(ws@8.13.0) + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + abitype: 1.0.5(typescript@5.4.2) + isows: 1.0.4(ws@8.17.1) typescript: 5.4.2 - ws: 8.13.0 + webauthn-p256: 0.0.5 + ws: 8.17.1 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -11930,8 +13387,8 @@ packages: xml-name-validator: 5.0.0 dev: true - /wagmi@2.5.7(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6): - resolution: {integrity: sha512-xSuteMXFKvra4xDddqZbZv/gQlcg3X+To5AoZW7WoAm0iVlF8/vEGpQzCWy6KZs2z1szxPrr0YnH3Zr1Qj4E/A==} + /wagmi@2.12.5(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6): + resolution: {integrity: sha512-+fpSUsVKyGOumguQirtpyMb7dmDP4/ZdwrTqrBc+WZVTwR9S8WdFPParw/BKXVZjF9euJxu1zKsWQSLBeCROfQ==} peerDependencies: '@tanstack/react-query': '>=5.0.0' react: '>=18' @@ -11942,12 +13399,12 @@ packages: optional: true dependencies: '@tanstack/react-query': 5.28.0(react@18.2.0) - '@wagmi/connectors': 4.1.14(@types/react@18.2.15)(@wagmi/core@2.6.5)(react-dom@18.2.0)(react-native@0.73.6)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6) - '@wagmi/core': 2.6.5(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.8.6) + '@wagmi/connectors': 5.1.5(@types/react@18.2.15)(@wagmi/core@2.13.4)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) + '@wagmi/core': 2.13.4(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) react: 18.2.0 typescript: 5.4.2 use-sync-external-store: 1.2.0(react@18.2.0) - viem: 2.8.6(typescript@5.4.2) + viem: 2.19.6(typescript@5.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -11987,21 +13444,17 @@ packages: defaults: 1.0.4 dev: false - /webextension-polyfill-ts@0.25.0: - resolution: {integrity: sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw==} - deprecated: This project has moved to @types/webextension-polyfill + /webauthn-p256@0.0.5: + resolution: {integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==} dependencies: - webextension-polyfill: 0.7.0 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 dev: false /webextension-polyfill@0.10.0: resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} dev: false - /webextension-polyfill@0.7.0: - resolution: {integrity: sha512-su48BkMLxqzTTvPSE1eWxKToPS2Tv5DLGxKexLEVpwFd6Po6N8hhSLIvG6acPAg7qERoEaDL+Y5HQJeJeml5Aw==} - dev: false - /webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false @@ -12165,8 +13618,8 @@ packages: signal-exit: 3.0.7 dev: true - /ws@6.2.2: - resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + /ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ^5.0.2 @@ -12179,8 +13632,8 @@ packages: async-limiter: 1.0.1 dev: false - /ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + /ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12192,24 +13645,21 @@ packages: optional: true dev: false - /ws@8.11.0(bufferutil@4.0.8)(utf-8-validate@6.0.3): - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true utf-8-validate: optional: true - dependencies: - bufferutil: 4.0.8 - utf-8-validate: 6.0.3 - dev: false + dev: true - /ws@8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12221,8 +13671,8 @@ packages: optional: true dev: false - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + /ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -12278,14 +13728,15 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true /yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} dev: false - /yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + /yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} engines: {node: '>= 14'} hasBin: true dev: false From 20f0f1d42433bca82f0f4fc6fb612d4a4e27472e Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 16 Aug 2024 09:33:10 -0300 Subject: [PATCH 52/82] feat: add network | complete offchain integration (#25) closes ZKS-115 --------- Co-authored-by: 0xkenj1 <kenji@defi.sucks> --- .env.example | 2 +- package.json | 3 +- public/locales/en/common.json | 7 +- public/locales/es/common.json | 5 + src/components/AddNetworkButton.tsx | 91 ++++++++ src/components/BasicSelect.tsx | 4 +- src/components/ChainInformation.tsx | 2 +- src/components/ChainTable.tsx | 10 +- src/components/Gas.tsx | 2 +- src/components/InfoTag.tsx | 4 +- src/components/TVL.tsx | 29 +-- src/components/TitleBanner.tsx | 4 +- src/components/index.ts | 1 + src/containers/ChainDetail/ChainMetadata.tsx | 53 ++--- src/containers/ChainDetail/index.tsx | 2 +- src/containers/Dashboard/index.tsx | 2 +- src/containers/ErrorContainer/index.tsx | 2 +- src/containers/Footer/index.tsx | 2 +- src/containers/Landing/index.tsx | 2 +- src/containers/Tokens/TokensTable.tsx | 33 +-- src/containers/Tokens/index.tsx | 2 +- src/data/chainMockData.json | 216 +++++++++---------- src/pages/[chain]/index.tsx | 2 - src/providers/DataProvider.tsx | 12 +- src/types/Data.ts | 20 +- src/utils/addNetwork.ts | 33 +++ src/utils/config.ts | 9 +- src/utils/index.ts | 1 + src/utils/services.ts | 11 +- 29 files changed, 334 insertions(+), 232 deletions(-) create mode 100644 src/components/AddNetworkButton.tsx create mode 100644 src/utils/addNetwork.ts diff --git a/.env.example b/.env.example index 9607267..d02c4e3 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ -NEXT_PUBLIC_API_URL= # Example: https://api.example.com +NEXT_PUBLIC_API_BASE_URL= # Example: https://api.example.com NEXT_PUBLIC_RPC_URL= # Example: https://localhost:8545 NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect NEXT_PUBLIC_ALCHEMY_KEY= # API key from Alchemy \ No newline at end of file diff --git a/package.json b/package.json index 90f92d3..c34948b 100644 --- a/package.json +++ b/package.json @@ -82,5 +82,6 @@ "ts-jest": "29.1.4", "ts-node": "10.9.2", "typescript": "5.4.2" - } + }, + "packageManager": "pnpm@9.5.0" } diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 5c0440a..ef0f787 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -39,6 +39,7 @@ "environment": "Environment", "nativeToken": "Native token", "addNetwork": "Add network", + "networkAdded": "Network added", "chainId": "Chain ID", "CHAININFORMATION": { "title": "Chain information", @@ -54,6 +55,7 @@ "TVL": { "title": "ZKchain TVL", "chain": "Chain", + "token": "Token", "price": "Price", "tvl": "TVL" }, @@ -74,13 +76,16 @@ "TOKENS": { "title": "Tokens" }, + "WALLET": { + "connection": "Connect Wallet" + }, "FOOTER": { "docs": "Documentation", "github": "GitHub", "madeWith": "Made with", "by": "by" }, - "ERROR":{ + "ERROR": { "title": "Error", "message": "An error occurred while fetching the data. Please try again later." }, diff --git a/public/locales/es/common.json b/public/locales/es/common.json index f0366ca..d96ad74 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -40,6 +40,7 @@ "environment": "Entorno", "nativeToken": "Token nativo", "addNetwork": "Agregar red", + "networkAdded": "Red agregada", "chainId": "ID de cadena", "CHAININFORMATION": { "title": "Informaciรณn de la cadena", @@ -56,6 +57,7 @@ "title": "TVL de ZKchain", "chain": "Cadena", "price": "Precio", + "token": "Token", "tvl": "TVL" }, "RPC": { @@ -81,6 +83,9 @@ "madeWithLove": "Hecho con", "by": "por" }, + "WALLET": { + "connection": "Conectar Wallet" + }, "ERROR": { "title": "Error", "message": "Lo sentimos, algo saliรณ mal. Por favor, intรฉntelo de nuevo mรกs tarde." diff --git a/src/components/AddNetworkButton.tsx b/src/components/AddNetworkButton.tsx new file mode 100644 index 0000000..fb5b107 --- /dev/null +++ b/src/components/AddNetworkButton.tsx @@ -0,0 +1,91 @@ +import { useState } from 'react'; +import { styled, Button } from '@mui/material'; +import { useTranslation } from 'next-i18next'; +import { useConnectModal } from '@rainbow-me/rainbowkit'; +import { useAccount } from 'wagmi'; +import { useRouter } from 'next/router'; +import Image from 'next/image'; + +import { useCustomTheme, useData } from '~/hooks'; +import { addNetwork } from '~/utils'; +import Add from '~/assets/icons/add.svg'; + +export const AddNetworkButton = () => { + const router = useRouter(); + const { chain } = router.query; // Ensure this is a valid chain ID + const { t } = useTranslation(); + const { isConnected } = useAccount(); + const { openConnectModal } = useConnectModal(); + const { chainData } = useData(); + + const [isNetworkAdded, setIsNetworkAdded] = useState<boolean>(false); + + const handleAddNetwork = async () => { + if (!chainData) { + alert(t('CHAIN.networkDataMissing')); + return; + } + + try { + await addNetwork({ + chainId: chain as string, + chainName: chainData?.metadata.name, + rpcUrls: chainData?.metadata.publicRpcs, + token: chainData?.baseToken.name, + symbol: chainData?.baseToken.symbol, + decimals: chainData?.baseToken.decimals, + explorerUrl: chainData?.metadata.explorerUrl, + }); + setIsNetworkAdded(true); + } catch (error) { + console.error('Failed to add network:', error); + alert(t('CHAIN.addNetworkFailed')); + } + }; + + return ( + <> + {!isConnected && <BlueButton onClick={openConnectModal}>{t('WALLET.connection')}</BlueButton>} + {isConnected && !isNetworkAdded && ( + <BlueButton variant='contained' onClick={handleAddNetwork}> + <StyledIcon src={Add} alt='Add' /> + {t('CHAIN.addNetwork')} + </BlueButton> + )} + {isConnected && isNetworkAdded && ( + <BlueButton variant='contained' disabled> + {t('CHAIN.networkAdded')} + </BlueButton> + )} + </> + ); +}; + +const BlueButton = styled(Button)(() => { + const { currentTheme } = useCustomTheme(); + + return { + background: currentTheme.primary[500], + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + color: '#fff', + textTransform: 'none', + fontSize: '1rem', + gap: '0.5rem', + lineHeight: '1.5rem', + boxShadow: 'none', + '&:hover': { + background: currentTheme.primary[300], + boxShadow: 'none', + }, + '&:disabled': { + background: currentTheme.primary[900], + color: currentTheme.textSecondary, + }, + }; +}); + +const StyledIcon = styled(Image)({ + width: '1.5rem', + height: '1.5rem', +}); diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index c2bd600..b767daf 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -76,7 +76,7 @@ export const SBox = styled(Box)(({ theme }) => { display: 'flex', gap: currentTheme.gap, alignItems: 'center', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { width: '100%', }, }; @@ -95,7 +95,7 @@ const MenuButton = styled(Button)(({ theme }) => { '&:hover': { backgroundColor: currentTheme.backgroundHover, }, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { width: '100%', justifyContent: 'space-between', padding: currentTheme.padding, diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index e1872f6..cb1cbff 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -109,7 +109,7 @@ export const DataContainer = styled(Box)(({ theme: muiTheme }) => { display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', - [muiTheme.breakpoints.down('sm')]: { + [muiTheme.breakpoints.down('md')]: { gridTemplateColumns: 'repeat(1, 1fr)', }, }; diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index ccb37bd..ae4cbfb 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -153,7 +153,7 @@ export const TableCellHeadFirst = styled(TableCell)(({ theme }) => { color: currentTheme.textSecondary, textAlign: 'left', borderBottom: 'none', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { position: 'sticky', left: 0, zIndex: 1, @@ -169,7 +169,7 @@ export const STableCell = styled(TableCell)(({ theme }) => { textAlign: 'left', border: 'none', fontSize: '1rem', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { fontSize: '0.875rem', }, }; @@ -185,7 +185,7 @@ export const FirstCellWithLogo = styled(TableCell)(({ theme }) => { border: 'none', textAlign: 'left', minWidth: 'max-content', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { position: 'sticky', left: 0, backgroundColor: currentTheme.backgroundSecondary, @@ -227,7 +227,7 @@ export const ChainName = styled(Typography)(({ theme }) => { return { fontSize: '1rem', color: currentTheme.textPrimary, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { fontSize: '0.875rem', }, }; @@ -240,7 +240,7 @@ export const InfoTagsContainer = styled(Box)(({ theme }) => { color: currentTheme.textPrimary, display: 'flex', gap: currentTheme.gap, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { fontSize: '0.875rem', display: 'grid', }, diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index 4a3e0db..11cb911 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -43,7 +43,7 @@ const GasContainer = styled(Box)(({ theme }) => { gap: currentTheme.gap, padding: '0.5rem 1rem', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { display: 'grid', justifyItems: 'center', }, diff --git a/src/components/InfoTag.tsx b/src/components/InfoTag.tsx index bad4f65..6b1090c 100644 --- a/src/components/InfoTag.tsx +++ b/src/components/InfoTag.tsx @@ -40,7 +40,7 @@ const InfoText = styled(Typography)(({ theme }) => { return { fontSize: '0.7rem', color: currentTheme.warningText, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { fontSize: '0.5rem', }, }; @@ -48,7 +48,7 @@ const InfoText = styled(Typography)(({ theme }) => { const InfoIcon = styled(Image)(({ theme }) => { return { - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { width: '1rem', }, }; diff --git a/src/components/TVL.tsx b/src/components/TVL.tsx index c178d2e..c7148ed 100644 --- a/src/components/TVL.tsx +++ b/src/components/TVL.tsx @@ -15,6 +15,7 @@ import { STableBodyRow, TableCellHeadFirst, } from '~/components'; +import { formatDataNumber } from '~/utils'; export const TVL = () => { const { t } = useTranslation(); @@ -27,25 +28,27 @@ export const TVL = () => { <Table> <STableHead> <STableRow> - <TableCellHeadFirst>{t('CHAIN.TVL.chain')}</TableCellHeadFirst> + <TableCellHeadFirst>{t('CHAIN.TVL.token')}</TableCellHeadFirst> <STableCellHead>{t('CHAIN.TVL.price')}</STableCellHead> <STableCellHead>{t('CHAIN.TVL.tvl')}</STableCellHead> </STableRow> </STableHead> <STableBody> - {tvl.map((token, index) => ( - <STableBodyRow key={index}> - <FirstCellWithLogo> - <TokenAvatar alt={token.name} src={token.imageUrl} /> - <Typography> - {token.name} ({token.symbol}) - </Typography> - </FirstCellWithLogo> - <STableCell>${token.price.toLocaleString()}</STableCell> - <STableCell>${((token.amountUsd * token.price) / 1e18).toLocaleString()}</STableCell> - </STableBodyRow> - ))} + {tvl + .sort((a, b) => parseFloat(b.amountUsd) - parseFloat(a.amountUsd)) + .map((token, index) => ( + <STableBodyRow key={index}> + <FirstCellWithLogo> + <TokenAvatar alt={token.name} src={token.imageUrl} /> + <Typography> + {token.name} ({token.symbol}) + </Typography> + </FirstCellWithLogo> + <STableCell>{formatDataNumber(token.price, 0, true)}</STableCell> + <STableCell>{formatDataNumber(token.amountUsd, 0, true)}</STableCell> + </STableBodyRow> + ))} </STableBody> </Table> </STableContainer> diff --git a/src/components/TitleBanner.tsx b/src/components/TitleBanner.tsx index 0c45b7d..fc5982b 100644 --- a/src/components/TitleBanner.tsx +++ b/src/components/TitleBanner.tsx @@ -34,7 +34,7 @@ const TitleBox = styled(Box)(({ theme }) => { gap: currentTheme.gap, justifyContent: 'center', textAlign: 'center', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { display: 'grid', gridTemplateColumns: 'auto 1fr', justifyContent: 'start', @@ -61,7 +61,7 @@ const Subtitle = styled(Typography)(({ theme }) => { lineHeight: '4rem', letterSpacing: '-0.03em', gridColumn: 'auto', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { gridColumn: 'span 2', }, }; diff --git a/src/components/index.ts b/src/components/index.ts index 5044900..f5b1b92 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -17,3 +17,4 @@ export * from './Breadcrumb'; export * from './Icon'; export * from './DesktopTvlContainer'; export * from './MobileTvlContainer'; +export * from './AddNetworkButton'; diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index 7eef2a7..87a9909 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -5,7 +5,7 @@ import Image from 'next/image'; import { useCustomTheme, useData } from '~/hooks'; import { formatTimestampToDate } from '~/utils'; -import { Icon } from '~/components'; +import { Icon, AddNetworkButton } from '~/components'; import WebDark from '~/assets/icons/webDark.svg'; import WebLight from '~/assets/icons/webLight.svg'; @@ -13,7 +13,6 @@ import LinkDark from '~/assets/icons/linkDark.svg'; import LinkLight from '~/assets/icons/linkLight.svg'; import BlockDark from '~/assets/icons/whiteBlockDark.svg'; import BlockLight from '~/assets/icons/blackBlockLight.svg'; -import Add from '~/assets/icons/add.svg'; import ClockDark from '~/assets/icons/clockDark.svg'; import ClockLight from '~/assets/icons/clockLight.svg'; import SettingsDark from '~/assets/icons/settingsDark.svg'; @@ -25,16 +24,16 @@ export const ChainMetadata = () => { const { chain } = router.query; const { chainData } = useData(); const { theme } = useCustomTheme(); - const data = chainData?.metadata; + const chainMetadata = chainData?.metadata; const dark = theme === 'dark'; return ( <MetadataContainer> <FirstRow> <ChainIdentity> - <Avatar src={data?.iconUrl} alt={data?.name} sx={{ width: 72, height: 72 }} /> + <Avatar src={chainMetadata?.iconUrl} alt={chainMetadata?.name} sx={{ width: 72, height: 72 }} /> <Box> - <ChainName>{data?.name}</ChainName> + <ChainName>{chainMetadata?.name}</ChainName> <ChainId> {t('CHAIN.chainId')}: <ChainIdValue>{chain}</ChainIdValue> </ChainId> @@ -42,24 +41,22 @@ export const ChainMetadata = () => { </ChainIdentity> <ButtonsContainer> - <MetadataButton variant='contained' href={data?.explorerUrl}> + <MetadataButton variant='contained' href={chainMetadata?.explorerUrl}> <WebIcon src={dark ? WebDark : WebLight} alt='web icon' /> {t('CHAIN.website')} <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> </MetadataButton> - <MetadataButton variant='contained' href={data?.explorerUrl}> + <MetadataButton variant='contained' href={chainMetadata?.explorerUrl}> <SIcon src={dark ? BlockDark : BlockLight} alt='block icon' /> {t('CHAIN.explorer')} <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> </MetadataButton> - <AddNetworkBtn variant='contained'> - <SIcon src={Add} alt='add icon' /> - {t('CHAIN.addNetwork')} - </AddNetworkBtn> + <AddNetworkButton /> </ButtonsContainer> </FirstRow> + <SecondRow> <MetadataItem> <Icon darkIcon={ClockDark} lightIcon={ClockLight} alt={t('CHAIN.launchDate')} size={48} /> @@ -67,7 +64,7 @@ export const ChainMetadata = () => { <Label variant='subtitle1' color='textSecondary' gutterBottom> {t('CHAIN.launchDate')} </Label> - <Value>{formatTimestampToDate(data?.launchDate)}</Value> + <Value>{formatTimestampToDate(chainMetadata?.launchDate)}</Value> </Box> </MetadataItem> @@ -77,15 +74,15 @@ export const ChainMetadata = () => { <Label variant='subtitle1' color='textSecondary' gutterBottom> {t('CHAIN.environment')} </Label> - <Value>{data?.chainType}</Value> + <Value>{chainData?.chainType}</Value> </Box> </MetadataItem> <MetadataItem> - <NativeTokenAvatar src={data?.baseToken.imageUrl || ''} alt={data?.baseToken.symbol} /> + <NativeTokenAvatar src={chainData?.baseToken.imageUrl || ''} alt={chainData?.baseToken.symbol} /> <Box> <Label>{t('CHAIN.nativeToken')}</Label> - <Value>{data?.baseToken.symbol}</Value> + <Value>{chainData?.baseToken.symbol}</Value> </Box> </MetadataItem> </SecondRow> @@ -108,7 +105,7 @@ const FirstRow = styled(Box)(({ theme }) => ({ alignItems: 'center', justifyContent: 'space-between', padding: '1.5rem 1rem', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { display: 'grid', }, })); @@ -123,7 +120,7 @@ const SecondRow = styled(Box)(({ theme }) => { gap: currentTheme.gap, width: '100%', borderTop: currentTheme.border, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { display: 'grid', justifyContent: 'space-between', gridTemplateColumns: 'repeat(2, 1fr)', @@ -159,26 +156,6 @@ const MetadataButton = styled(Button)(() => { }; }); -const AddNetworkBtn = styled(Button)(() => { - const { currentTheme } = useCustomTheme(); - - return { - background: currentTheme.primary[500], - borderRadius: currentTheme.borderRadius, - padding: currentTheme.padding, - color: '#fff', - textTransform: 'none', - fontSize: '1rem', - gap: '0.5rem', - lineHeight: '1.5rem', - boxShadow: 'none', - '&:hover': { - background: currentTheme.primary[300], - boxShadow: 'none', - }, - }; -}); - const SIcon = styled(Image)({ width: '1.5rem', height: '1.5rem', @@ -198,7 +175,7 @@ const ButtonsContainer = styled(Box)(({ theme }) => { justifyContent: 'flex-end', gap: currentTheme.gap, marginTop: 0, - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { display: 'grid', justifyContent: 'space-between', gridTemplateColumns: 'repeat(2, 1fr)', diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx index ea42782..05a7ad6 100644 --- a/src/containers/ChainDetail/index.tsx +++ b/src/containers/ChainDetail/index.tsx @@ -35,7 +35,7 @@ export const ChainContainer = styled(Box)(({ theme }) => ({ marginTop: '4rem', marginBottom: '4rem', minHeight: 'calc(100vh - 19rem)', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { padding: '0 1rem', minHeight: 'calc(100vh - 23rem)', }, diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index bab88cc..6856951 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -53,7 +53,7 @@ const DashboardContainer = styled('section')(({ theme }) => { ...(isSearch && { padding: '0 7rem', minHeight: 'calc(100vh - 11rem)', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { padding: '0 1rem', minHeight: 'calc(100vh - 23rem)', }, diff --git a/src/containers/ErrorContainer/index.tsx b/src/containers/ErrorContainer/index.tsx index 3547829..158c7d2 100644 --- a/src/containers/ErrorContainer/index.tsx +++ b/src/containers/ErrorContainer/index.tsx @@ -26,7 +26,7 @@ const ErrorPageContainer = styled('main')(({ theme }) => ({ marginTop: '4rem', marginBottom: '4rem', minHeight: 'calc(100vh - 19rem)', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { padding: '0 1rem', minHeight: 'calc(100vh - 23rem)', }, diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index b5ad12b..adfb7ce 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -51,7 +51,7 @@ export const FooterContainer = styled('footer')(({ theme }) => { width: '100%', gap: '0', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { display: 'grid', justifyContent: 'center', gap: '2rem', diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index b230761..2c397f2 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -33,7 +33,7 @@ const LandingContainer = styled('main')(({ theme }) => ({ marginTop: '4rem', marginBottom: '4rem', minHeight: 'calc(100vh - 19rem)', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { padding: '0 1rem', minHeight: 'calc(100vh - 23rem)', }, diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index f28a743..1a7eb8e 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -1,7 +1,7 @@ import { useTranslation } from 'next-i18next'; import { Table, Typography } from '@mui/material'; -import { TotalValueLockedProps } from '~/types'; +import { TotalValueLockedProps, TvlData } from '~/types'; import { STableContainer, STableHead, @@ -14,6 +14,7 @@ import { STitle, STableBodyRow, } from '~/components'; +import { formatDataNumber } from '~/utils'; export const TokensTable = ({ tvl }: TotalValueLockedProps) => { const { t } = useTranslation(); @@ -25,27 +26,27 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { <Table> <STableHead> <STableRow> - <STableCellHead>{t('CHAIN.TVL.chain')}</STableCellHead> + <STableCellHead>{t('CHAIN.TVL.token')}</STableCellHead> <STableCellHead>{t('CHAIN.TVL.price')}</STableCellHead> <STableCellHead>{t('CHAIN.TVL.tvl')}</STableCellHead> </STableRow> </STableHead> <STableBody> - {tvl.map((token, index) => ( - <STableBodyRow key={index}> - <LogoCell> - <TokenAvatar alt={token.name} src={token.imageUrl} /> - <Typography> - {token.name} ({token.symbol}) - </Typography> - </LogoCell> - - <STableCell>${token.price.toLocaleString()}</STableCell> - - <STableCell>${((Number(token.amountUsd) * Number(token.price)) / 1e18).toLocaleString()}</STableCell> - </STableBodyRow> - ))} + {tvl + .sort((a, b) => parseFloat(b.amountUsd) - parseFloat(a.amountUsd)) + .map((token: TvlData, index) => ( + <STableBodyRow key={index}> + <LogoCell> + <TokenAvatar alt={token.name} src={token.imageUrl} /> + <Typography> + {token.name} ({token.symbol}) + </Typography> + </LogoCell> + <STableCell>{formatDataNumber(token.price, 0, true)}</STableCell> + <STableCell>{formatDataNumber(token.amountUsd, 0, true)}</STableCell> + </STableBodyRow> + ))} </STableBody> </Table> </STableContainer> diff --git a/src/containers/Tokens/index.tsx b/src/containers/Tokens/index.tsx index a2796d5..9aa1969 100644 --- a/src/containers/Tokens/index.tsx +++ b/src/containers/Tokens/index.tsx @@ -30,7 +30,7 @@ const TokensContainer = styled('main')(({ theme }) => ({ marginTop: '4rem', marginBottom: '4rem', minHeight: 'calc(100vh - 19rem)', - [theme.breakpoints.down('sm')]: { + [theme.breakpoints.down('md')]: { padding: '0 1rem', minHeight: 'calc(100vh - 23rem)', }, diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json index 75f881a..02284f4 100644 --- a/src/data/chainMockData.json +++ b/src/data/chainMockData.json @@ -2,9 +2,9 @@ "chainType": "Rollup", "tvl": [ { - "amount": "118098.529954744427197224", - "amountUsd": "298854234.9769785102439351932", - "price": "2530.55", + "amount": "117911.456355407359400867", + "amountUsd": "305202013.6303364090732041428", + "price": "2588.4", "name": "Ethereum", "symbol": "ETH", "contractAddress": null, @@ -13,9 +13,9 @@ "decimals": 18 }, { - "amount": "55480860.508207", - "amountUsd": "55369898.787190586", - "price": "0.998", + "amount": "55480856.378207", + "amountUsd": "55536337.234585207", + "price": "1.001", "name": "USDC", "symbol": "USDC", "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", @@ -36,8 +36,8 @@ }, { "amount": "9472627.999218", - "amountUsd": "9463155.371218782", - "price": "0.999", + "amountUsd": "9482100.627217218", + "price": "1.001", "name": "Tether USD", "symbol": "USDT", "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", @@ -46,9 +46,9 @@ "decimals": 6 }, { - "amount": "110.93700914", - "amountUsd": "6317358.57275346784", - "price": "56945.456", + "amount": "109.13401208", + "amountUsd": "6320997.7803987076", + "price": "57919.595", "name": "Wrapped BTC", "symbol": "WBTC", "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", @@ -69,8 +69,8 @@ }, { "amount": "47964958.588748853386740337", - "amountUsd": "959299.17177497706773480674", - "price": "0.02", + "amountUsd": "1007264.130363725921121547077", + "price": "0.021", "name": "Idexo Token", "symbol": "IDO", "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", @@ -80,8 +80,8 @@ }, { "amount": "257.706060883787096756", - "amountUsd": "729164.610025205214406586908", - "price": "2829.443", + "amountUsd": "743295.406461645912283008656", + "price": "2884.276", "name": "Rocket Pool ETH", "symbol": "rETH", "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", @@ -91,8 +91,8 @@ }, { "amount": "4597086.058830655172811988", - "amountUsd": "721742.511236412862131482116", - "price": "0.157", + "amountUsd": "717145.425177582206958670128", + "price": "0.156", "name": "DEXTF Token", "symbol": "DEXTF", "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", @@ -102,8 +102,8 @@ }, { "amount": "709393.663223743840780868", - "amountUsd": "706556.088570848865417744528", - "price": "0.996", + "amountUsd": "709393.663223743840780868", + "price": "1", "name": "Dai Stablecoin", "symbol": "DAI", "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", @@ -113,8 +113,8 @@ }, { "amount": "3611649.325725586386626848", - "amountUsd": "274485.348755144565383640448", - "price": "0.076", + "amountUsd": "278096.998080870151770267296", + "price": "0.077", "name": "GOVI", "symbol": "GOVI", "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", @@ -124,8 +124,8 @@ }, { "amount": "162910.961709234801235986", - "amountUsd": "162259.317862397862031042056", - "price": "0.996", + "amountUsd": "162748.050747525566434750014", + "price": "0.999", "name": "LUSD Stablecoin", "symbol": "LUSD", "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", @@ -135,8 +135,8 @@ }, { "amount": "769116.258069049173770643", - "amountUsd": "123827.717549116916977073523", - "price": "0.161", + "amountUsd": "123058.60129104786780330288", + "price": "0.16", "name": "Symbiosis", "symbol": "SIS", "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", @@ -146,8 +146,8 @@ }, { "amount": "34.07328120799622273", - "amountUsd": "93108.51193584564624710708", - "price": "2732.596", + "amountUsd": "94955.28377731904151907308", + "price": "2786.796", "name": "Coinbase Wrapped Staked ETH", "symbol": "cbETH", "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", @@ -157,8 +157,8 @@ }, { "amount": "1748294.875759738167409463", - "amountUsd": "54197.141148551883189693353", - "price": "0.031", + "amountUsd": "52448.84627279214502228389", + "price": "0.03", "name": "ZKBase", "symbol": "ZKB", "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", @@ -179,8 +179,8 @@ }, { "amount": "290.508016952", - "amountUsd": "40489.845370701952", - "price": "139.376", + "amountUsd": "41502.265809779672", + "price": "142.861", "name": "Wrapped SOL (Wormhole)", "symbol": "SOL", "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", @@ -189,9 +189,9 @@ "decimals": 9 }, { - "amount": "4069.036217336", - "amountUsd": "26216.800348295848", - "price": "6.443", + "amount": "4028.076528447", + "amountUsd": "26899.495056969066", + "price": "6.678", "name": "Wrapped TON Coin", "symbol": "TONCOIN", "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", @@ -201,8 +201,8 @@ }, { "amount": "23546.536039530998897252", - "amountUsd": "23522.989503491467898354748", - "price": "0.999", + "amountUsd": "23570.082575570529896149252", + "price": "1.001", "name": "Curve.Fi USD Stablecoin", "symbol": "crvUSD", "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", @@ -212,8 +212,8 @@ }, { "amount": "8.989236054015567327", - "amountUsd": "22819.049873813761441646922", - "price": "2538.486", + "amountUsd": "23241.957473210977822112964", + "price": "2585.532", "name": "Wrapped Ether", "symbol": "WETH", "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", @@ -234,8 +234,8 @@ }, { "amount": "5.423689884062204153", - "amountUsd": "16185.635689132864619181944", - "price": "2984.248", + "amountUsd": "16492.19348875982852231781", + "price": "3040.77", "name": "Wrapped liquid staked Ether 2.0", "symbol": "wstETH", "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", @@ -245,8 +245,8 @@ }, { "amount": "34056.984148728150579544", - "amountUsd": "13043.824928962881671965352", - "price": "0.383", + "amountUsd": "13248.166833855250575442616", + "price": "0.389", "name": "Bella", "symbol": "BEL", "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", @@ -256,8 +256,8 @@ }, { "amount": "46220.536588230241212891", - "amountUsd": "11277.810927528178855945404", - "price": "0.244", + "amountUsd": "11416.472537292869579584077", + "price": "0.247", "name": "1INCH Token", "symbol": "1INCH", "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", @@ -267,8 +267,8 @@ }, { "amount": "563082.288758156473620986", - "amountUsd": "9009.316620130503577935776", - "price": "0.016", + "amountUsd": "9572.398908888660051556762", + "price": "0.017", "name": "Deri", "symbol": "DERI", "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", @@ -276,10 +276,21 @@ "type": "erc20", "decimals": 18 }, + { + "amount": "4974.854892108430805034", + "amountUsd": "7477.206902838971499966102", + "price": "1.503", + "name": "Worldcoin", + "symbol": "WLD", + "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", + "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", + "type": "erc20", + "decimals": 18 + }, { "amount": "43034.765060388679856659", - "amountUsd": "7229.840530145298215918712", - "price": "0.168", + "amountUsd": "7401.979590386852935345348", + "price": "0.172", "name": "Maverick Token", "symbol": "MAV", "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", @@ -287,17 +298,6 @@ "type": "erc20", "decimals": 18 }, - { - "amount": "4874.863543072452577322", - "amountUsd": "7195.298589574940004127272", - "price": "1.476", - "name": "Worldcoin", - "symbol": "WLD", - "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", - "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", - "type": "erc20", - "decimals": 18 - }, { "amount": "1267111.79536025946087647", "amountUsd": "6335.55897680129730438235", @@ -311,8 +311,8 @@ }, { "amount": "0.1", - "amountUsd": "5694.4497", - "price": "56944.497", + "amountUsd": "5807.2618", + "price": "58072.618", "name": "tBTC v2", "symbol": "tBTC", "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", @@ -322,8 +322,8 @@ }, { "amount": "1.607308526702602644", - "amountUsd": "4152.653560748531109256908", - "price": "2583.607", + "amountUsd": "4229.765794625615173705452", + "price": "2631.583", "name": "rsETH", "symbol": "rsETH", "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", @@ -333,8 +333,8 @@ }, { "amount": "35.167061181353626164", - "amountUsd": "3744.623841651715467568884", - "price": "106.481", + "amountUsd": "3811.335756712743296401992", + "price": "108.378", "name": "Aave Token", "symbol": "AAVE", "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", @@ -344,8 +344,8 @@ }, { "amount": "312.082999060002117307", - "amountUsd": "3129.880397572761234471903", - "price": "10.029", + "amountUsd": "3186.679503401681619821777", + "price": "10.211", "name": "ChainLink Token", "symbol": "LINK", "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", @@ -355,8 +355,8 @@ }, { "amount": "154.058620754243125866", - "amountUsd": "2757.803370121706196127266", - "price": "17.901", + "amountUsd": "2913.402577083491753251926", + "price": "18.911", "name": "Metaverse Index", "symbol": "MVI", "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", @@ -366,8 +366,8 @@ }, { "amount": "33", - "amountUsd": "1776.258", - "price": "53.826", + "amountUsd": "1845.129", + "price": "55.913", "name": "Tellor Tributes", "symbol": "TRB", "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", @@ -377,8 +377,8 @@ }, { "amount": "0.639944048220845643", - "amountUsd": "1646.186950090917565288056", - "price": "2572.392", + "amountUsd": "1680.494350516037100209286", + "price": "2626.002", "name": "Renzo Restaked ETH", "symbol": "Renzo Restaked ETH", "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", @@ -388,8 +388,8 @@ }, { "amount": "4093.979328418030008295", - "amountUsd": "1629.40377271037594330141", - "price": "0.398", + "amountUsd": "1637.591731367212003318", + "price": "0.4", "name": "Matic Token", "symbol": "MATIC", "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", @@ -397,17 +397,6 @@ "type": "erc20", "decimals": 18 }, - { - "amount": "132132.766491", - "amountUsd": "1189.194898419", - "price": "0.009", - "name": "Changer", - "symbol": "CNG", - "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", - "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", - "type": "erc20", - "decimals": 18 - }, { "amount": "1164511.592541489082720882", "amountUsd": "1164.511592541489082720882", @@ -419,10 +408,21 @@ "type": "erc20", "decimals": 18 }, + { + "amount": "132132.766491", + "amountUsd": "1057.062131928", + "price": "0.008", + "name": "Changer", + "symbol": "CNG", + "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", + "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", + "type": "erc20", + "decimals": 18 + }, { "amount": "5985.542511355987510812", - "amountUsd": "861.918121635262201556928", - "price": "0.144", + "amountUsd": "885.860291680686151600176", + "price": "0.148", "name": "WOO", "symbol": "WOO", "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", @@ -454,8 +454,8 @@ }, { "amount": "0.201", - "amountUsd": "528.814518", - "price": "2630.918", + "amountUsd": "540.892809", + "price": "2691.009", "name": "mETH", "symbol": "mETH", "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", @@ -465,8 +465,8 @@ }, { "amount": "42.412842071038840242", - "amountUsd": "447.837199428099114115278", - "price": "10.559", + "amountUsd": "441.263208907088093877768", + "price": "10.404", "name": "Rocket Pool", "symbol": "RPL", "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", @@ -486,9 +486,9 @@ "decimals": 18 }, { - "amount": "0.000014110846294792", - "amountUsd": "0.000004952907049471992", - "price": "0.351", + "amount": "0.000014104615563706", + "amountUsd": "0.000004922510831733394", + "price": "0.349", "name": "Storj", "symbol": "STORJ", "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", @@ -541,7 +541,16 @@ "decimals": 18 } ], - "batchesInfo": { "commited": "490872", "verified": "490869", "executed": "490825" }, + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "batchesInfo": { "commited": "490885", "verified": "490883", "executed": "490839" }, "feeParams": { "batchOverheadL1Gas": 1000000, "maxL2GasPerBatch": 80000000, @@ -550,21 +559,10 @@ "priorityTxMaxPubdata": 99000 }, "metadata": { - "name": "ZKsyncERA", "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "name": "ZKsyncERA", "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], "explorerUrl": "https://explorer.zksync.io/", - "launchDate": 1679626800, - "chainType": "Rollup", - "baseToken": { - "name": "Ethereum", - "symbol": "ETH", - "contractAddress": null, - "coingeckoId": "ethereum", - "type": "native", - "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "decimals": 18 - }, - "tokenImgUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628" + "launchDate": 1679626800 } } diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index 64520eb..b46c96f 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -22,8 +22,6 @@ const Chain = ({ chain }: InferGetStaticPropsType<typeof getStaticProps>) => { if (chain.chainId) { setSelectedChainId(chain.chainId); } - - refetchChainData({ throwOnError: true, cancelRefetch: false }); }, [chain?.chainId, setSelectedChainId, refetchChainData]); return ( diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index 2256964..26fd8b8 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -6,7 +6,7 @@ import { ChainData, EcosystemData, TvlData } from '~/types'; import { fetchEcosystemData, fetchChainData } from '~/utils'; type ContextType = { - selectedChainId?: string; + selectedChainId: string; setSelectedChainId: (val: string) => void; isEcosystemLoading: boolean; @@ -26,7 +26,7 @@ interface DataProps { export const DataContext = createContext({} as ContextType); export const DataProvider = ({ children }: DataProps) => { - const [selectedChainId, setSelectedChainId] = useState<string>(); + const [selectedChainId, setSelectedChainId] = useState<string>(''); const router = useRouter(); const { @@ -45,13 +45,7 @@ export const DataProvider = ({ children }: DataProps) => { refetch: refetchChainData, } = useQuery({ queryKey: ['chainData', selectedChainId], - queryFn: () => { - if (selectedChainId) { - return fetchChainData(selectedChainId); - } else { - return Promise.resolve(undefined); - } - }, + queryFn: () => fetchChainData(selectedChainId!), enabled: !!selectedChainId, // Only fetch chain data if selectedChainId is defined }); diff --git a/src/types/Data.ts b/src/types/Data.ts index 4accd68..2f26a13 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -1,5 +1,14 @@ export interface ChainData { chainType: string; + baseToken: { + name: string; + symbol: string; + contractAddress: string | null; + coingeckoId: string; + type: string; + imageUrl: string; + decimals: number; + }; tvl: ChainTvl[]; batchesInfo: { commited: number; @@ -20,15 +29,6 @@ export interface ChainData { explorerUrl: string; launchDate: number; chainType: string; - baseToken: { - name: string; - symbol: string; - contractAddress: string | null; - coingeckoId: string; - type: string; - imageUrl: string; - decimals: number; - }; tokenImgUrl: string; }; l2ChainInfo: { @@ -87,7 +87,7 @@ export interface TvlData { export interface ChainTvl { symbol: string; name: string; - amountUsd: number; + amountUsd: string; imageUrl: string; price: number; } diff --git a/src/utils/addNetwork.ts b/src/utils/addNetwork.ts new file mode 100644 index 0000000..da2b556 --- /dev/null +++ b/src/utils/addNetwork.ts @@ -0,0 +1,33 @@ +interface AddNetwork { + chainId: string; + chainName: string; + rpcUrls: string[]; + token: string; + symbol: string; + decimals: number; + explorerUrl: string; +} + +export const addNetwork = async ({ chainId, chainName, rpcUrls, token, symbol, decimals, explorerUrl }: AddNetwork) => { + const networkData = { + chainId: chainId, + chainName: chainName, + rpcUrls: [rpcUrls], + nativeCurrency: { + name: token, + symbol: symbol, + decimals: decimals, + }, + blockExplorerUrls: [explorerUrl], + }; + + try { + await window.ethereum.request({ + method: 'wallet_addEthereumChain', + params: [networkData], + }); + } catch (error) { + console.error('Failed to add network:', error); + alert('Failed to add network. Please try again.'); + } +}; diff --git a/src/utils/config.ts b/src/utils/config.ts index 5caddce..c913ed4 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -1,5 +1,5 @@ import { createConfig, http, cookieStorage, createStorage } from 'wagmi'; -import { localhost, sepolia } from 'wagmi/chains'; +import { zkSync } from 'wagmi/chains'; import { rainbowWallet, walletConnectWallet, injectedWallet } from '@rainbow-me/rainbowkit/wallets'; import { connectorsForWallets } from '@rainbow-me/rainbowkit'; @@ -23,20 +23,19 @@ const connectors = connectorsForWallets( }, ], { - appName: 'Web3 React boilerplate', + appName: 'ZKchainHub', projectId: PROJECT_ID, }, ); export const config = createConfig({ - chains: [localhost, sepolia], + chains: [zkSync], ssr: true, storage: createStorage({ storage: cookieStorage, }), transports: { - [localhost.id]: http(), - [sepolia.id]: http(), + [zkSync.id]: http(), }, batch: { multicall: true }, connectors, diff --git a/src/utils/index.ts b/src/utils/index.ts index 9828cc6..17a902e 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -2,3 +2,4 @@ export * from './getTheme'; export * from './config'; export * from './format'; export * from './services'; +export * from './addNetwork'; diff --git a/src/utils/services.ts b/src/utils/services.ts index 0ea19aa..a11686b 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -1,30 +1,25 @@ import { getConfig } from '~/config'; import ecosystemMockData from '~/data/ecosystemMockData.json'; import chainMockData from '~/data/chainMockData.json'; - const { API_URL } = getConfig(); -const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms)); - console.log('Fetching backend data from:', API_URL); export const fetchEcosystemData = async () => { - // temporary for mock data if (!API_URL) { - await delay(2000); // Simulate 2 seconds delay + console.log('API_URL not set'); return Promise.resolve(ecosystemMockData); } const res = await fetch(`${API_URL}/metrics/ecosystem`); if (!res.ok) { - throw new Error('Failed to fetch ecosystem data'); + throw new Error('Failed to fetch ecosystem data. App is being rendered with Mock data'); } return await res.json(); }; export const fetchChainData = async (chainId: string) => { - // temporary for mock data if (!API_URL) { - await delay(2000); // Simulate 2 seconds delay + console.log('API_URL not set. App is being rendered with Mock data'); return Promise.resolve(chainMockData); } const res = await fetch(`${API_URL}/metrics/zkchain/${chainId}`); From 0063e16af6a4f6f68c8cf32308f89fc85230f462 Mon Sep 17 00:00:00 2001 From: Ardy <116569704+0xArdy@users.noreply.github.com> Date: Sun, 18 Aug 2024 16:34:09 -0400 Subject: [PATCH 53/82] chore: update dev and start scripts to use port 5173 (#32) --- .github/workflows/test.yml | 2 +- cypress.config.ts | 2 +- package.json | 10 +- pnpm-lock.yaml | 466 ++++++++++++++++++++++++------------- 4 files changed, 308 insertions(+), 172 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2d3da82..f598ece 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,5 +29,5 @@ jobs: with: build: pnpm build start: pnpm start - wait-on: 'http://localhost:3000' + wait-on: 'http://localhost:5173' command: pnpm test diff --git a/cypress.config.ts b/cypress.config.ts index 5bed49b..df1aba2 100644 --- a/cypress.config.ts +++ b/cypress.config.ts @@ -2,6 +2,6 @@ import { defineConfig } from 'cypress'; export default defineConfig({ e2e: { - baseUrl: 'http://localhost:3000', + baseUrl: 'http://localhost:5173', }, }); diff --git a/package.json b/package.json index c34948b..5954fa2 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,10 @@ "node": ">=18.17.0" }, "scripts": { - "dev": "next dev", + "dev": "next dev -p 5173", "build": "next build", - "start": "next start -p 3000", - "preview": "next start", + "start": "next start -p 5173", + "preview": "next start -p 5173", "lint": "eslint 'src/**/*.{js,jsx,ts,tsx}'", "lint:fix": "pnpm run lint -- --fix", "prettier": "prettier src --check", @@ -41,7 +41,7 @@ "@rainbow-me/rainbowkit": "2.1.4", "@tanstack/react-query": "5.28.0", "i18next": "23.7.6", - "next": "14.1.3", + "next": "14.2.5", "next-i18next": "15.2.0", "react": "18.2.0", "react-dom": "18.2.0", @@ -63,7 +63,7 @@ "@types/react-dom": "18.2.7", "@typescript-eslint/eslint-plugin": "6.0.0", "@typescript-eslint/parser": "6.0.0", - "cypress": "13.7.0", + "cypress": "13.13.3", "eslint": "8.45.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-import": "2.28.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30769ed..bdfbd91 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,7 +25,7 @@ dependencies: version: 5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) '@mui/material-nextjs': specifier: 5.15.11 - version: 5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.15)(next@14.1.3)(react@18.2.0) + version: 5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.15)(next@14.2.5)(react@18.2.0) '@next/eslint-plugin-next': specifier: 14.1.3 version: 14.1.3 @@ -39,11 +39,11 @@ dependencies: specifier: 23.7.6 version: 23.7.6 next: - specifier: 14.1.3 - version: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 14.2.5 + version: 14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) next-i18next: specifier: 15.2.0 - version: 15.2.0(i18next@23.7.6)(next@14.1.3)(react-i18next@14.0.0)(react@18.2.0) + version: 15.2.0(i18next@23.7.6)(next@14.2.5)(react-i18next@14.0.0)(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 @@ -101,8 +101,8 @@ devDependencies: specifier: 6.0.0 version: 6.0.0(eslint@8.45.0)(typescript@5.4.2) cypress: - specifier: 13.7.0 - version: 13.7.0 + specifier: 13.13.3 + version: 13.13.3 eslint: specifier: 8.45.0 version: 8.45.0 @@ -221,7 +221,6 @@ packages: /@babel/compat-data@7.25.2: resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} - dev: false /@babel/core@7.24.1: resolution: {integrity: sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==} @@ -238,7 +237,7 @@ packages: '@babel/traverse': 7.24.1 '@babel/types': 7.24.0 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -260,13 +259,12 @@ packages: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 convert-source-map: 2.0.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false /@babel/generator@7.24.1: resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} @@ -285,7 +283,6 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - dev: false /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -336,7 +333,6 @@ packages: browserslist: 4.23.3 lru-cache: 5.1.1 semver: 6.3.1 - dev: false /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} @@ -441,7 +437,7 @@ packages: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -456,7 +452,7 @@ packages: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) lodash.debounce: 4.0.8 resolve: 1.22.8 transitivePeerDependencies: @@ -510,7 +506,6 @@ packages: '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.1): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -553,7 +548,6 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -575,7 +569,6 @@ packages: /@babel/helper-plugin-utils@7.24.8: resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.1): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} @@ -669,7 +662,6 @@ packages: '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} @@ -700,7 +692,6 @@ packages: /@babel/helper-string-parser@7.24.8: resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} @@ -717,7 +708,6 @@ packages: /@babel/helper-validator-option@7.24.8: resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} - dev: false /@babel/helper-wrap-function@7.22.20: resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} @@ -755,7 +745,6 @@ packages: dependencies: '@babel/template': 7.25.0 '@babel/types': 7.25.2 - dev: false /@babel/highlight@7.24.1: resolution: {integrity: sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==} @@ -788,7 +777,6 @@ packages: hasBin: true dependencies: '@babel/types': 7.25.2 - dev: false /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.24.1): resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} @@ -986,6 +974,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.1): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: @@ -995,6 +992,15 @@ packages: '@babel/helper-plugin-utils': 7.24.0 dev: true + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.1): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -1003,6 +1009,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.1): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} @@ -1012,6 +1027,16 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.1): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: @@ -1098,6 +1123,16 @@ packages: '@babel/helper-plugin-utils': 7.24.8 dev: false + /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2): + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + dev: true + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.1): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -1106,6 +1141,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.1): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -1114,6 +1158,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} @@ -1152,6 +1205,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.1): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -1167,7 +1229,6 @@ packages: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: false /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.1): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} @@ -1177,6 +1238,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.1): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: @@ -1185,6 +1255,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.1): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -1193,6 +1272,15 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.1): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -1208,7 +1296,6 @@ packages: dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: false /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.1): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} @@ -1219,6 +1306,16 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.1): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -1228,6 +1325,16 @@ packages: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.1): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} @@ -2864,7 +2971,6 @@ packages: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - dev: false /@babel/traverse@7.24.1: resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} @@ -2878,7 +2984,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -2892,11 +2998,10 @@ packages: '@babel/parser': 7.25.3 '@babel/template': 7.25.0 '@babel/types': 7.25.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false /@babel/types@7.24.0: resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} @@ -2913,7 +3018,6 @@ packages: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - dev: false /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -2965,7 +3069,7 @@ packages: engines: {node: '>= 6'} dependencies: aws-sign2: 0.7.0 - aws4: 1.12.0 + aws4: 1.13.1 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -2979,7 +3083,7 @@ packages: performance-now: 2.1.0 qs: 6.10.4 safe-buffer: 5.2.1 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 tunnel-agent: 0.6.0 uuid: 8.3.2 dev: true @@ -3149,7 +3253,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -3241,7 +3345,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -3334,7 +3438,7 @@ packages: jest-util: 29.7.0 jest-validate: 29.7.0 jest-watcher: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.7 pretty-format: 29.7.0 slash: 3.0.0 strip-ansi: 6.0.1 @@ -3422,7 +3526,7 @@ packages: glob: 7.2.3 graceful-fs: 4.2.11 istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.2 + istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.7 @@ -3432,7 +3536,7 @@ packages: slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.2.0 + v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color dev: true @@ -3676,7 +3780,7 @@ packages: bufferutil: 4.0.8 cross-fetch: 4.0.0 date-fns: 2.30.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) eciesjs: 0.3.19 eventemitter2: 6.4.9 readable-stream: 3.6.2 @@ -3727,7 +3831,7 @@ packages: '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) eciesjs: 0.3.19 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 @@ -3764,7 +3868,7 @@ packages: dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) semver: 7.6.3 superstruct: 1.0.4 transitivePeerDependencies: @@ -3780,7 +3884,7 @@ packages: '@noble/hashes': 1.4.0 '@scure/base': 1.1.7 '@types/debug': 4.1.12 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) pony-cause: 2.1.11 semver: 7.6.3 uuid: 9.0.1 @@ -3797,7 +3901,7 @@ packages: '@noble/hashes': 1.4.0 '@scure/base': 1.1.7 '@types/debug': 4.1.12 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) pony-cause: 2.1.11 semver: 7.6.3 uuid: 9.0.1 @@ -3911,7 +4015,7 @@ packages: react: 18.2.0 dev: false - /@mui/material-nextjs@5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.15)(next@14.1.3)(react@18.2.0): + /@mui/material-nextjs@5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.15)(next@14.2.5)(react@18.2.0): resolution: {integrity: sha512-cp5RWYbBngyi7NKP91R9QITllfxumCVPFjqe4AKzNROVuCot0VpgkafxXqfbv0uFsyUU0ROs0O2M3r17q604Aw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -3934,7 +4038,7 @@ packages: '@emotion/server': 11.11.0 '@mui/material': 5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.15 - next: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 dev: false @@ -4072,8 +4176,8 @@ packages: react-is: 18.2.0 dev: false - /@next/env@14.1.3: - resolution: {integrity: sha512-VhgXTvrgeBRxNPjyfBsDIMvgsKDxjlpw4IAUsHCX8Gjl1vtHUYRT3+xfQ/wwvLPDd/6kqfLqk9Pt4+7gysuCKQ==} + /@next/env@14.2.5: + resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} dev: false /@next/eslint-plugin-next@14.1.3: @@ -4082,8 +4186,8 @@ packages: glob: 10.3.10 dev: false - /@next/swc-darwin-arm64@14.1.3: - resolution: {integrity: sha512-LALu0yIBPRiG9ANrD5ncB3pjpO0Gli9ZLhxdOu6ZUNf3x1r3ea1rd9Q+4xxUkGrUXLqKVK9/lDkpYIJaCJ6AHQ==} + /@next/swc-darwin-arm64@14.2.5: + resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -4091,8 +4195,8 @@ packages: dev: false optional: true - /@next/swc-darwin-x64@14.1.3: - resolution: {integrity: sha512-E/9WQeXxkqw2dfcn5UcjApFgUq73jqNKaE5bysDm58hEUdUGedVrnRhblhJM7HbCZNhtVl0j+6TXsK0PuzXTCg==} + /@next/swc-darwin-x64@14.2.5: + resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -4100,8 +4204,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.3: - resolution: {integrity: sha512-USArX9B+3rZSXYLFvgy0NVWQgqh6LHWDmMt38O4lmiJNQcwazeI6xRvSsliDLKt+78KChVacNiwvOMbl6g6BBw==} + /@next/swc-linux-arm64-gnu@14.2.5: + resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -4109,8 +4213,8 @@ packages: dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.3: - resolution: {integrity: sha512-esk1RkRBLSIEp1qaQXv1+s6ZdYzuVCnDAZySpa62iFTMGTisCyNQmqyCTL9P+cLJ4N9FKCI3ojtSfsyPHJDQNw==} + /@next/swc-linux-arm64-musl@14.2.5: + resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -4118,8 +4222,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.3: - resolution: {integrity: sha512-8uOgRlYEYiKo0L8YGeS+3TudHVDWDjPVDUcST+z+dUzgBbTEwSSIaSgF/vkcC1T/iwl4QX9iuUyUdQEl0Kxalg==} + /@next/swc-linux-x64-gnu@14.2.5: + resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4127,8 +4231,8 @@ packages: dev: false optional: true - /@next/swc-linux-x64-musl@14.1.3: - resolution: {integrity: sha512-DX2zqz05ziElLoxskgHasaJBREC5Y9TJcbR2LYqu4r7naff25B4iXkfXWfcp69uD75/0URmmoSgT8JclJtrBoQ==} + /@next/swc-linux-x64-musl@14.2.5: + resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -4136,8 +4240,8 @@ packages: dev: false optional: true - /@next/swc-win32-arm64-msvc@14.1.3: - resolution: {integrity: sha512-HjssFsCdsD4GHstXSQxsi2l70F/5FsRTRQp8xNgmQs15SxUfUJRvSI9qKny/jLkY3gLgiCR3+6A7wzzK0DBlfA==} + /@next/swc-win32-arm64-msvc@14.2.5: + resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -4145,8 +4249,8 @@ packages: dev: false optional: true - /@next/swc-win32-ia32-msvc@14.1.3: - resolution: {integrity: sha512-DRuxD5axfDM1/Ue4VahwSxl1O5rn61hX8/sF0HY8y0iCbpqdxw3rB3QasdHn/LJ6Wb2y5DoWzXcz3L1Cr+Thrw==} + /@next/swc-win32-ia32-msvc@14.2.5: + resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -4154,8 +4258,8 @@ packages: dev: false optional: true - /@next/swc-win32-x64-msvc@14.1.3: - resolution: {integrity: sha512-uC2DaDoWH7h1P/aJ4Fok3Xiw6P0Lo4ez7NbowW2VGNXw/Xv6tOuLUcxhBYZxsSUJtpeknCi8/fvnSpyCFp4Rcg==} + /@next/swc-win32-x64-msvc@14.2.5: + resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -4965,10 +5069,15 @@ packages: '@stablelib/wipe': 1.0.1 dev: false - /@swc/helpers@0.5.2: - resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: false + + /@swc/helpers@0.5.5: + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: - tslib: 2.6.2 + '@swc/counter': 0.1.3 + tslib: 2.6.3 dev: false /@tanstack/query-core@5.28.0: @@ -5094,8 +5203,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.24.1 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 @@ -5104,20 +5213,20 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.2 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.24.1 - '@babel/types': 7.24.0 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 dev: true /@types/babel__traverse@7.20.6: resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.25.2 dev: true /@types/debug@4.1.12: @@ -5305,7 +5414,7 @@ packages: '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.4.2) '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.4.2) '@typescript-eslint/visitor-keys': 6.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.45.0 grapheme-splitter: 1.0.4 graphemer: 1.4.0 @@ -5333,7 +5442,7 @@ packages: '@typescript-eslint/types': 6.0.0 '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.4.2) '@typescript-eslint/visitor-keys': 6.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.45.0 typescript: 5.4.2 transitivePeerDependencies: @@ -5360,7 +5469,7 @@ packages: dependencies: '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.4.2) '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.4.2) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 eslint: 8.45.0 ts-api-utils: 1.3.0(typescript@5.4.2) typescript: 5.4.2 @@ -5384,7 +5493,7 @@ packages: dependencies: '@typescript-eslint/types': 6.0.0 '@typescript-eslint/visitor-keys': 6.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.0 @@ -5969,7 +6078,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -5978,7 +6087,7 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -6251,8 +6360,8 @@ packages: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true - /aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + /aws4@1.13.1: + resolution: {integrity: sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==} dev: true /axe-core@4.8.4: @@ -6274,17 +6383,17 @@ packages: '@babel/core': 7.25.2 dev: false - /babel-jest@29.7.0(@babel/core@7.24.1): + /babel-jest@29.7.0(@babel/core@7.25.2): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.25.2 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.24.1) + babel-preset-jest: 29.6.3(@babel/core@7.25.2) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -6309,8 +6418,8 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.0 + '@babel/template': 7.25.0 + '@babel/types': 7.25.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 dev: true @@ -6424,15 +6533,38 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) dev: true - /babel-preset-jest@29.6.3(@babel/core@7.24.1): + /babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.25.2): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.25.2 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.1) + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) dev: true /balanced-match@1.0.2: @@ -6503,7 +6635,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.1.1 - dev: false /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} @@ -6525,10 +6656,9 @@ packages: hasBin: true dependencies: caniuse-lite: 1.0.30001651 - electron-to-chromium: 1.5.9 + electron-to-chromium: 1.5.10 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - dev: false /bs-logger@0.2.6: resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} @@ -6641,7 +6771,6 @@ packages: /caniuse-lite@1.0.30001651: resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} - dev: false /caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -6754,8 +6883,8 @@ packages: engines: {node: '>=6'} dev: false - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + /cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -7131,8 +7260,8 @@ packages: /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - /cypress@13.7.0: - resolution: {integrity: sha512-UimjRSJJYdTlvkChcdcfywKJ6tUYuwYuk/n1uMMglrvi+ZthNhoRYcxnWgTqUtkl17fXrPAsD5XT2rcQYN1xKA==} + /cypress@13.13.3: + resolution: {integrity: sha512-hUxPrdbJXhUOTzuML+y9Av7CKoYznbD83pt8g3klgpioEha0emfx4WNIuVRx0C76r0xV2MIwAW9WYiXfVJYFQw==} engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} hasBin: true requiresBuild: true @@ -7149,11 +7278,11 @@ packages: chalk: 4.1.2 check-more-types: 2.24.0 cli-cursor: 3.1.0 - cli-table3: 0.6.3 + cli-table3: 0.6.5 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) + dayjs: 1.11.12 + debug: 4.3.6(supports-color@8.1.1) enquirer: 2.4.1 eventemitter2: 6.4.7 execa: 4.1.0 @@ -7174,7 +7303,7 @@ packages: process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.6.0 + semver: 7.6.3 supports-color: 8.1.1 tmp: 0.2.3 untildify: 4.0.0 @@ -7243,13 +7372,8 @@ packages: '@babel/runtime': 7.25.0 dev: false - /dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} - dev: true - /dayjs@1.11.12: resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} - dev: false /debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -7274,7 +7398,7 @@ packages: supports-color: 8.1.1 dev: true - /debug@4.3.4(supports-color@8.1.1): + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -7284,9 +7408,8 @@ packages: optional: true dependencies: ms: 2.1.2 - supports-color: 8.1.1 - /debug@4.3.6: + /debug@4.3.6(supports-color@8.1.1): resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: @@ -7296,7 +7419,7 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: false + supports-color: 8.1.1 /decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} @@ -7531,9 +7654,8 @@ packages: /electron-to-chromium@1.4.710: resolution: {integrity: sha512-w+9yAVHoHhysCa+gln7AzbO9CdjFcL/wN/5dd+XW/Msl2d/4+WisEaCF1nty0xbAKaxdaJfgLB2296U7zZB7BA==} - /electron-to-chromium@1.5.9: - resolution: {integrity: sha512-HfkT8ndXR0SEkU8gBQQM3rz035bpE/hxkZ1YIt4KJPEFES68HfIU6LzKukH0H794Lm83WJtkSAMfEToxCs15VA==} - dev: false + /electron-to-chromium@1.5.10: + resolution: {integrity: sha512-C3RDERDjrNW262GCRvpoer3a0Ksd66CtgDLxMHhzShQ8fhL4kwnpVXsJPAKg9xJjIROXUbLBrvtOzVAjALMIWA==} /elliptic@6.5.7: resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} @@ -7576,7 +7698,7 @@ packages: resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) engine.io-parser: 5.2.3 ws: 8.17.1 xmlhttprequest-ssl: 2.0.0 @@ -8047,7 +8169,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -8281,7 +8403,7 @@ packages: engines: {node: '>= 10.17.0'} hasBin: true dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -8378,7 +8500,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: false /filter-obj@1.1.0: resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} @@ -8864,7 +8985,7 @@ packages: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -8874,7 +8995,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -8898,7 +9019,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -8908,7 +9029,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: true @@ -8997,8 +9118,8 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-local@3.1.0: - resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + /import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} hasBin: true dependencies: @@ -9397,15 +9518,15 @@ packages: - supports-color dev: true - /istanbul-lib-instrument@6.0.2: - resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} + /istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.24.1 - '@babel/parser': 7.24.1 + '@babel/core': 7.25.2 + '@babel/parser': 7.25.3 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.6.0 + semver: 7.6.3 transitivePeerDependencies: - supports-color dev: true @@ -9423,7 +9544,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.6(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -9511,7 +9632,7 @@ packages: chalk: 4.1.2 create-jest: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) exit: 0.1.2 - import-local: 3.1.0 + import-local: 3.2.0 jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 @@ -9535,11 +9656,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.24.1 + '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.12.13 - babel-jest: 29.7.0(@babel/core@7.24.1) + babel-jest: 29.7.0(@babel/core@7.25.2) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -9553,7 +9674,7 @@ packages: jest-runner: 29.7.0 jest-util: 29.7.0 jest-validate: 29.7.0 - micromatch: 4.0.5 + micromatch: 4.0.7 parse-json: 5.2.0 pretty-format: 29.7.0 slash: 3.0.0 @@ -9875,7 +9996,7 @@ packages: dependencies: '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 - import-local: 3.1.0 + import-local: 3.2.0 jest-cli: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' @@ -10236,7 +10357,7 @@ packages: enquirer: 2.4.1 log-update: 4.0.0 p-map: 4.0.0 - rfdc: 1.3.1 + rfdc: 1.4.1 rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 @@ -10380,7 +10501,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.6.0 + semver: 7.6.3 dev: true /make-error@1.3.6: @@ -10656,7 +10777,6 @@ packages: dependencies: braces: 3.0.3 picomatch: 2.3.1 - dev: false /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -10829,7 +10949,7 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} dev: false - /next-i18next@15.2.0(i18next@23.7.6)(next@14.1.3)(react-i18next@14.0.0)(react@18.2.0): + /next-i18next@15.2.0(i18next@23.7.6)(next@14.2.5)(react-i18next@14.0.0)(react@18.2.0): resolution: {integrity: sha512-Rl5yZ4oGffsB0AjRykZ5PzNQ2M6am54MaMayldGmH/UKZisrIxk2SKEPJvaHhKlWe1qgdNi2FkodwK8sEjfEmg==} engines: {node: '>=14'} peerDependencies: @@ -10844,45 +10964,48 @@ packages: hoist-non-react-statics: 3.3.2 i18next: 23.7.6 i18next-fs-backend: 2.3.1 - next: 14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-i18next: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) dev: false - /next@14.1.3(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-oexgMV2MapI0UIWiXKkixF8J8ORxpy64OuJ/J9oVUmIthXOUCcuVEZX+dtpgq7wIfIqtBwQsKEDXejcjTsan9g==} + /next@14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 react: ^18.2.0 react-dom: ^18.2.0 sass: ^1.3.0 peerDependenciesMeta: '@opentelemetry/api': optional: true + '@playwright/test': + optional: true sass: optional: true dependencies: - '@next/env': 14.1.3 - '@swc/helpers': 0.5.2 + '@next/env': 14.2.5 + '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001599 + caniuse-lite: 1.0.30001651 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(@babel/core@7.24.1)(react@18.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 14.1.3 - '@next/swc-darwin-x64': 14.1.3 - '@next/swc-linux-arm64-gnu': 14.1.3 - '@next/swc-linux-arm64-musl': 14.1.3 - '@next/swc-linux-x64-gnu': 14.1.3 - '@next/swc-linux-x64-musl': 14.1.3 - '@next/swc-win32-arm64-msvc': 14.1.3 - '@next/swc-win32-ia32-msvc': 14.1.3 - '@next/swc-win32-x64-msvc': 14.1.3 + '@next/swc-darwin-arm64': 14.2.5 + '@next/swc-darwin-x64': 14.2.5 + '@next/swc-linux-arm64-gnu': 14.2.5 + '@next/swc-linux-arm64-musl': 14.2.5 + '@next/swc-linux-x64-gnu': 14.2.5 + '@next/swc-linux-x64-musl': 14.2.5 + '@next/swc-win32-arm64-msvc': 14.2.5 + '@next/swc-win32-ia32-msvc': 14.2.5 + '@next/swc-win32-x64-msvc': 14.2.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -10950,7 +11073,6 @@ packages: /node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} - dev: false /node-stream-zip@1.15.0: resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} @@ -11420,8 +11542,8 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.1.0 + picocolors: 1.0.1 + source-map-js: 1.2.0 dev: false /postcss@8.4.36: @@ -12041,8 +12163,8 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - /rfdc@1.3.1: - resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + /rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} dev: true /rimraf@2.6.3: @@ -12087,7 +12209,7 @@ packages: /rxjs@7.8.1: resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /safe-array-concat@1.1.2: @@ -12181,7 +12303,6 @@ packages: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - dev: false /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} @@ -12345,7 +12466,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) engine.io-client: 6.5.4 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -12359,7 +12480,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.6 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color dev: false @@ -12373,6 +12494,12 @@ packages: /source-map-js@1.1.0: resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==} engines: {node: '>=0.10.0'} + dev: true + + /source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + dev: false /source-map-support@0.5.13: resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} @@ -12825,6 +12952,16 @@ packages: url-parse: 1.5.10 dev: true + /tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false @@ -12935,10 +13072,10 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true /tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - dev: false /tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -13201,7 +13338,6 @@ packages: browserslist: 4.23.3 escalade: 3.1.2 picocolors: 1.0.1 - dev: false /uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} @@ -13299,8 +13435,8 @@ packages: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} dev: true - /v8-to-istanbul@9.2.0: - resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + /v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.25 From 0f5a9fbfa2c7bee15d3015402faf8df23afcec62 Mon Sep 17 00:00:00 2001 From: nigiri <168690269+0xnigir1@users.noreply.github.com> Date: Sun, 18 Aug 2024 17:36:09 -0300 Subject: [PATCH 54/82] docs: update readme & env.example (#31) ## Describe your changes Update README --- .env.example | 4 +--- README.md | 26 ++++++++++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/.env.example b/.env.example index d02c4e3..a0d01d8 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,2 @@ NEXT_PUBLIC_API_BASE_URL= # Example: https://api.example.com -NEXT_PUBLIC_RPC_URL= # Example: https://localhost:8545 -NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect -NEXT_PUBLIC_ALCHEMY_KEY= # API key from Alchemy \ No newline at end of file +NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect \ No newline at end of file diff --git a/README.md b/README.md index 3c5b3ce..c95b251 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# zkChainHub UI ๐ŸŒ +# ZKchainHub UI ๐ŸŒ ## Description @@ -22,18 +22,32 @@ Chain Page: Accessible via search in the header or by selecting a row in the tab $ pnpm install ``` +## โš™๏ธ Setting up env variables + +- Create `.env` file in the `root` folder and copy paste `.env.example` content in there. +``` +$ cp .env.example .env +``` +- Set up `NEXT_PUBLIC_API_BASE_URL` with ZKchainHub Backend API url. It will typically run on `http://localhost:3000` +- (Optionally) Set `NEXT_PUBLIC_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID + ## ๐Ÿƒ Running the app ```bash $ pnpm run start ``` -## Aditional comments +To verify ZKchainHub UI is running open http://localhost:5173 in your browser -The backend will typically run on `http://localhost:3000`. Make sure to update your .env file with the correct API base URL: +## Development -`NEXT_PUBLIC_API_BASE_URL=<your_api_base_url>` +### ๐Ÿ’ป Conventional Commits +We follow the Conventional Commits [specification](https://www.conventionalcommits.org/en/v1.0.0/#specification). -## ๐Ÿ’ป Conventional Commits +## Contributing -We follow the Conventional Commits [specification](https://www.conventionalcommits.org/en/v1.0.0/#specification). +ZKchainHub was built with โค๏ธ by [Wonderland](https://defi.sucks). + +Wonderland is a team of top Web3 researchers, developers, and operators who believe that the future needs to be open-source, permissionless, and decentralized. + +[DeFi sucks](https://defi.sucks), but Wonderland is here to make it better. \ No newline at end of file From 8707095e5d42feb1f58491b67f6f4a47ad7d3b6c Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 19 Aug 2024 16:50:25 -0300 Subject: [PATCH 55/82] fix: misc fixes (#30) closes ZKS-186 closes ZKS-183 closes ZKS-190 closes ZKS-191 closes ZKS-192 --- .github/workflows/test.yml | 2 - public/locales/en/common.json | 6 +-- public/locales/es/common.json | 6 +-- src/components/AddNetworkButton.tsx | 21 ++++++-- src/components/ChainTable.tsx | 28 ++++++----- src/components/Gas.tsx | 6 +-- src/components/TvlContentBox.tsx | 2 +- src/config/env.ts | 4 -- src/config/index.ts | 9 ---- src/containers/ChainDetail/ChainMetadata.tsx | 12 +++-- .../ChainDetail/SkeletonChainDetail.tsx | 2 +- src/containers/Footer/index.tsx | 2 +- src/containers/LockedAssets/index.tsx | 11 ----- src/providers/DataProvider.tsx | 18 +++++-- src/types/Config.ts | 2 - src/types/Data.ts | 22 ++++----- src/utils/services.ts | 49 +++++++++---------- 17 files changed, 101 insertions(+), 101 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f598ece..5f3f4fe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,9 +19,7 @@ jobs: - name: Create env file run: | touch .env - echo "NEXT_PUBLIC_RPC_URL=${{ secrets.NEXT_PUBLIC_RPC_URL }}" >> .env echo "NEXT_PUBLIC_PROJECT_ID=${{ secrets.NEXT_PUBLIC_PROJECT_ID }}" >> .env - echo "NEXT_PUBLIC_ALCHEMY_KEY=${{ secrets.NEXT_PUBLIC_ALCHEMY_KEY }}" >> .env echo "NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}" >> .env - name: run Cypress and Jest diff --git a/public/locales/en/common.json b/public/locales/en/common.json index ef0f787..44baf2c 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -13,7 +13,6 @@ "home": "Home", "LOCKEDASSETS": { "lockedAssets": "Locked assets", - "lockedAssetsDescription": "Locked assets in Elastic Chain Ecosystem", "others": "Others", "allTokens": "All tokens" }, @@ -53,7 +52,7 @@ "averageBlockTime": "Average block time" }, "TVL": { - "title": "ZKchain TVL", + "title": "TVL", "chain": "Chain", "token": "Token", "price": "Price", @@ -77,7 +76,8 @@ "title": "Tokens" }, "WALLET": { - "connection": "Connect Wallet" + "connection": "Connect Wallet", + "connectTooltip": "Connect your wallet to add this network" }, "FOOTER": { "docs": "Documentation", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index d96ad74..039848c 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -14,7 +14,6 @@ "home": "Inicio", "LOCKEDASSETS": { "lockedAssets": "Activos bloqueados", - "lockedAssetsDescription": "Activos bloqueados en el ecosistema de Elastic Chain", "others": "Otros", "allTokens": "Todos los tokens" }, @@ -54,7 +53,7 @@ "averageBlockTime": "Tiempo promedio de bloque" }, "TVL": { - "title": "TVL de ZKchain", + "title": "TVL", "chain": "Cadena", "price": "Precio", "token": "Token", @@ -84,7 +83,8 @@ "by": "por" }, "WALLET": { - "connection": "Conectar Wallet" + "connection": "Conectar Wallet", + "connectTooltip": "Conecta tu wallet para agregar esta red" }, "ERROR": { "title": "Error", diff --git a/src/components/AddNetworkButton.tsx b/src/components/AddNetworkButton.tsx index fb5b107..263eca9 100644 --- a/src/components/AddNetworkButton.tsx +++ b/src/components/AddNetworkButton.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { styled, Button } from '@mui/material'; +import { styled, Button, Tooltip } from '@mui/material'; import { useTranslation } from 'next-i18next'; import { useConnectModal } from '@rainbow-me/rainbowkit'; import { useAccount } from 'wagmi'; @@ -12,7 +12,7 @@ import Add from '~/assets/icons/add.svg'; export const AddNetworkButton = () => { const router = useRouter(); - const { chain } = router.query; // Ensure this is a valid chain ID + const { chain } = router.query; const { t } = useTranslation(); const { isConnected } = useAccount(); const { openConnectModal } = useConnectModal(); @@ -45,7 +45,13 @@ export const AddNetworkButton = () => { return ( <> - {!isConnected && <BlueButton onClick={openConnectModal}>{t('WALLET.connection')}</BlueButton>} + {!isConnected && ( + <> + <STooltip title={t('WALLET.connectTooltip')}> + <BlueButton onClick={openConnectModal}>{t('WALLET.connection')} </BlueButton> + </STooltip> + </> + )} {isConnected && !isNetworkAdded && ( <BlueButton variant='contained' onClick={handleAddNetwork}> <StyledIcon src={Add} alt='Add' /> @@ -85,6 +91,15 @@ const BlueButton = styled(Button)(() => { }; }); +const STooltip = styled(Tooltip)(() => { + const { currentTheme } = useCustomTheme(); + + return { + borderRadius: currentTheme.borderRadius, + padding: currentTheme.padding, + }; +}); + const StyledIcon = styled(Image)({ width: '1.5rem', height: '1.5rem', diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index ae4cbfb..8c3d4b3 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -62,10 +62,12 @@ export const ChainTable = ({ chains }: TableProps) => { <STableCell sx={{ width: '10%' }}>{data.chainId}</STableCell> - <LogoCell sx={{ width: '10%' }}> - <TokenAvatar alt={`${data.baseToken.symbol} logo`} src={data.baseToken.imageUrl} /> - <Typography>{data.baseToken.symbol}</Typography> - </LogoCell> + <STableCell sx={{ width: '10%' }}> + <LogoCell> + <TokenAvatar alt={`${data.baseToken.symbol} logo`} src={data.baseToken.imageUrl} /> + <Typography>{data.baseToken.symbol}</Typography> + </LogoCell> + </STableCell> <STableCell sx={{ width: '10%' }}>{formatDataNumber(data.tvl, 0, true)}</STableCell> @@ -94,7 +96,7 @@ export const STableContainer = styled(TableContainer)(() => { // Hide scrollbar for Firefox scrollbarWidth: 'none', - '-ms-overflow-style': 'none', // Hide scrollbar for Internet Explorer and Edge + msOverflowStyle: 'none', // Hide scrollbar for Internet Explorer and Edge }; }); @@ -124,7 +126,7 @@ export const STableRow = styled(TableRow)(() => { }; }); -export const STableBodyRow = styled(TableRow)(() => { +export const STableBodyRow = styled(TableRow)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { cursor: 'pointer', @@ -132,8 +134,10 @@ export const STableBodyRow = styled(TableRow)(() => { border: currentTheme.border, }, transition: currentTheme.transition, - '&:hover': { - backgroundColor: currentTheme.backgroundHover, + [theme.breakpoints.up('md')]: { + '&:hover': { + backgroundColor: currentTheme.backgroundHover, + }, }, }; }); @@ -194,15 +198,12 @@ export const FirstCellWithLogo = styled(TableCell)(({ theme }) => { }; }); -export const LogoCell = styled(TableCell)(() => { +export const LogoCell = styled(Box)(() => { const { currentTheme } = useCustomTheme(); return { - color: currentTheme.textPrimary, display: 'flex', alignItems: 'center', gap: currentTheme.gap, - border: 'none', - textAlign: 'left', }; }); @@ -217,7 +218,8 @@ export const TokenAvatar = styled(Avatar)(() => { const { currentTheme } = useCustomTheme(); return { width: '1.5rem', - height: '1.5rem', + height: 'auto', + verticalAlign: 'middle', backgroundColor: currentTheme.emptyBackground, }; }); diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index 11cb911..302404b 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -10,7 +10,7 @@ import { SBox } from '~/components'; export const Gas = () => { const { theme } = useCustomTheme(); const { t } = useTranslation(); - const { isEcosystemLoading } = useData(); + const { isEcosystemLoading, ecosystemData } = useData(); return ( <GasContainer> @@ -21,11 +21,11 @@ export const Gas = () => { <Box> <SBox> <GasLabel>{t('HEADER.gasPrice')}:</GasLabel> - <GasValueText>10 wei</GasValueText> + <GasValueText>{ecosystemData.ethGasInfo.gasPrice} wei</GasValueText> </SBox> <SBox> <GasLabel>{t('HEADER.transfer')}:</GasLabel> - <GasValueText>$10</GasValueText> + <GasValueText>$ {ecosystemData.ethGasInfo.erc20Transfer}</GasValueText> </SBox> </Box> </> diff --git a/src/components/TvlContentBox.tsx b/src/components/TvlContentBox.tsx index b3eccc5..a81cc0d 100644 --- a/src/components/TvlContentBox.tsx +++ b/src/components/TvlContentBox.tsx @@ -72,7 +72,7 @@ const TokenName = styled(Typography)<TvlProps>(({ isLast }) => ({ fontSize: `${isLast ? '0.75rem' : '0.875rem'}`, fontWeight: 400, whiteSpace: 'nowrap', - margin: '0', + margin: '0 0.25rem 0 0', })); const TokenTicker = styled(Typography)<TvlProps>(({ isLast }) => { diff --git a/src/config/env.ts b/src/config/env.ts index dd425c6..a9ee227 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -1,15 +1,11 @@ import { Env } from '~/types'; export const getEnv = (): Env => { - const NEXT_PUBLIC_RPC_URL = process.env.NEXT_PUBLIC_RPC_URL; const NEXT_PUBLIC_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; - const NEXT_PUBLIC_ALCHEMY_KEY = process.env.NEXT_PUBLIC_ALCHEMY_KEY; const NEXT_PUBLIC_API_URL = process.env.NEXT_PUBLIC_API_BASE_URL; return { - RPC_URL: NEXT_PUBLIC_RPC_URL as string, PROJECT_ID: NEXT_PUBLIC_PROJECT_ID as string, - ALCHEMY_KEY: NEXT_PUBLIC_ALCHEMY_KEY as string, API_URL: NEXT_PUBLIC_API_URL as string, }; }; diff --git a/src/config/index.ts b/src/config/index.ts index 5c3e9fc..395bab9 100644 --- a/src/config/index.ts +++ b/src/config/index.ts @@ -3,15 +3,6 @@ import { Config } from '~/types'; import { getEnv } from './env'; import { getConstants } from './constants'; -import { createPublicClient, http } from 'viem'; -import { mainnet } from 'viem/chains'; - -// this provider if for load data when the user is disconnected -export const publicClient = createPublicClient({ - chain: mainnet, - transport: http(getEnv().RPC_URL, { batch: true }), -}); - export const getConfig = (): Config => ({ ...getEnv(), ...getConstants(), diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index 87a9909..a520113 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -1,4 +1,4 @@ -import { Avatar, Box, Button, Typography, styled } from '@mui/material'; +import { Avatar, Box, Typography, styled } from '@mui/material'; import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; import Image from 'next/image'; @@ -41,13 +41,13 @@ export const ChainMetadata = () => { </ChainIdentity> <ButtonsContainer> - <MetadataButton variant='contained' href={chainMetadata?.explorerUrl}> + <MetadataButton href={chainMetadata?.explorerUrl} target='_blank'> <WebIcon src={dark ? WebDark : WebLight} alt='web icon' /> {t('CHAIN.website')} <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> </MetadataButton> - <MetadataButton variant='contained' href={chainMetadata?.explorerUrl}> + <MetadataButton href={chainMetadata?.explorerUrl} target='_blank'> <SIcon src={dark ? BlockDark : BlockLight} alt='block icon' /> {t('CHAIN.explorer')} <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> @@ -136,10 +136,13 @@ const ChainIdentity = styled(Box)(() => { }; }); -const MetadataButton = styled(Button)(() => { +const MetadataButton = styled('a')(() => { const { currentTheme, theme } = useCustomTheme(); return { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', background: theme === 'dark' ? currentTheme.backgroundSecondary : currentTheme.backgroundTertiary, borderRadius: currentTheme.borderRadius, padding: currentTheme.padding, @@ -149,6 +152,7 @@ const MetadataButton = styled(Button)(() => { fontSize: '1rem', gap: '0.5rem', lineHeight: '1.5rem', + textDecoration: 'none', '&:hover': { background: theme === 'dark' ? currentTheme.neutral[800] : currentTheme.neutral[300], boxShadow: 'none', diff --git a/src/containers/ChainDetail/SkeletonChainDetail.tsx b/src/containers/ChainDetail/SkeletonChainDetail.tsx index 912b1c9..4ac991b 100644 --- a/src/containers/ChainDetail/SkeletonChainDetail.tsx +++ b/src/containers/ChainDetail/SkeletonChainDetail.tsx @@ -28,7 +28,7 @@ export const SkeletonChainDetail = () => { <Skeleton variant='rectangular' width='100%' height={80} sx={{ borderRadius: 4, marginBottom: 2 }} /> </Box> - {/* ZKChain TVL Skeleton */} + {/* TVL Skeleton */} <Box> <Skeleton variant='text' width='40%' height={60} sx={{ marginBottom: 2, borderRadius: 4 }} /> <Box> diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index adfb7ce..6f5421d 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -32,7 +32,7 @@ export const Footer = () => { <Image src={theme === 'dark' ? HeartDark : HeartLight} alt='Wonderland' /> <Typography>{t('FOOTER.by')}</Typography> </SBox> - <Link href='https://defi.sucks'> + <Link href='https://defi.sucks' target='_blank'> <Image src={theme === 'dark' ? WonderlandDark : WonderlandLight} alt='Wonderland' /> </Link> </Subtitle> diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 82d267e..6dd1370 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -22,7 +22,6 @@ export const LockedAssets = () => { <LockedAssetsContainer> <Box> <Title>{t('HOME.LOCKEDASSETS.lockedAssets')} - {t('HOME.LOCKEDASSETS.lockedAssetsDescription')} {formatDataNumber(totalL1TVL, 0, true, true)} @@ -54,16 +53,6 @@ const Title = styled(Typography)(() => ({ lineHeight: '2rem', })); -const Subtitle = styled(Typography)(() => { - const { currentTheme } = useCustomTheme(); - return { - fontSize: '0.9rem', - fontWeight: 400, - lineHeight: '1.25rem', - color: currentTheme.textSecondary, - }; -}); - const TitleAmount = styled(Typography)(() => ({ fontSize: '2.25rem', fontWeight: 700, diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index 26fd8b8..0b62db1 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -1,4 +1,4 @@ -import { createContext, useState, useEffect, ReactNode } from 'react'; +import { createContext, useState, useEffect, ReactNode, useMemo, useCallback } from 'react'; import { useQuery, UseQueryResult } from '@tanstack/react-query'; import { useRouter } from 'next/router'; @@ -27,6 +27,7 @@ export const DataContext = createContext({} as ContextType); export const DataProvider = ({ children }: DataProps) => { const [selectedChainId, setSelectedChainId] = useState(''); + const [hasNavigatedToError, setHasNavigatedToError] = useState(false); const router = useRouter(); const { @@ -36,6 +37,7 @@ export const DataProvider = ({ children }: DataProps) => { } = useQuery({ queryKey: ['ecosystem'], queryFn: fetchEcosystemData, + retry: false, }); const { @@ -47,13 +49,21 @@ export const DataProvider = ({ children }: DataProps) => { queryKey: ['chainData', selectedChainId], queryFn: () => fetchChainData(selectedChainId!), enabled: !!selectedChainId, // Only fetch chain data if selectedChainId is defined + retry: false, }); - useEffect(() => { - if (isEcosystemError || isChainError) { + const hasError = useMemo(() => isEcosystemError || isChainError, [isEcosystemError, isChainError]); + + const handleNavigationToError = useCallback(() => { + if (hasError && !hasNavigatedToError) { + setHasNavigatedToError(true); router.push('/error'); } - }, [isEcosystemError, isChainError, router]); + }, [hasError, hasNavigatedToError, router]); + + useEffect(() => { + handleNavigationToError(); + }, [handleNavigationToError]); const totalL1TVL = (ecosystemData?.l1Tvl || []).reduce((accumulator: number, token: TvlData) => { return accumulator + (Number(token.amountUsd) || 0); diff --git a/src/types/Config.ts b/src/types/Config.ts index 6ee42a9..dcf6398 100644 --- a/src/types/Config.ts +++ b/src/types/Config.ts @@ -1,7 +1,5 @@ export interface Env { - RPC_URL: string; PROJECT_ID: string; - ALCHEMY_KEY: string; API_URL: string; } diff --git a/src/types/Data.ts b/src/types/Data.ts index 2f26a13..4e3bf39 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -11,9 +11,9 @@ export interface ChainData { }; tvl: ChainTvl[]; batchesInfo: { - commited: number; - verified: number; - executed: number; + commited: string; + verified: string; + executed: string; }; feeParams: { batchOverheadL1Gas: number; @@ -28,10 +28,10 @@ export interface ChainData { publicRpcs: string[]; explorerUrl: string; launchDate: number; - chainType: string; - tokenImgUrl: string; + chainType?: string; + tokenImgUrl?: string; }; - l2ChainInfo: { + l2ChainInfo?: { tps: number; avgBlockTime: number; lastBlock: number; @@ -49,7 +49,7 @@ export interface EcosystemChainData { coingeckoId: string; type: string; imageUrl: string; - decimals: 18; + decimals: number; }; tvl: string; metadata?: { @@ -65,9 +65,9 @@ export interface EcosystemChainData { export interface EcosystemData { l1Tvl: TvlData[]; ethGasInfo: { - gasPrice: number; - ethTransfer: number; - erc20Transfer: number; + gasPrice: string; + ethTransfer: string; + erc20Transfer: string; }; zkChains: EcosystemChainData[]; } @@ -89,7 +89,7 @@ export interface ChainTvl { name: string; amountUsd: string; imageUrl: string; - price: number; + price: string; } export interface TotalValueLockedProps { tvl: TvlData[]; diff --git a/src/utils/services.ts b/src/utils/services.ts index a11686b..8c78347 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -1,42 +1,38 @@ import { getConfig } from '~/config'; import ecosystemMockData from '~/data/ecosystemMockData.json'; import chainMockData from '~/data/chainMockData.json'; +import { ChainData, EcosystemData } from '~/types'; + const { API_URL } = getConfig(); -console.log('Fetching backend data from:', API_URL); +const fetchData = async (url: string, mockData: EcosystemData | ChainData) => { + if (!API_URL) return mockData; -export const fetchEcosystemData = async () => { - if (!API_URL) { - console.log('API_URL not set'); - return Promise.resolve(ecosystemMockData); - } - const res = await fetch(`${API_URL}/metrics/ecosystem`); - if (!res.ok) { - throw new Error('Failed to fetch ecosystem data. App is being rendered with Mock data'); + try { + const response = await fetch(url); + if (!response.ok) throw new Error('Network response was not ok'); + return await response.json(); + } catch (error) { + console.error(`Error fetching data from ${url}:`, error); + throw error; } - return await res.json(); +}; + +export const fetchEcosystemData = async () => { + const url = `${API_URL}/metrics/ecosystem`; + return fetchData(url, ecosystemMockData); }; export const fetchChainData = async (chainId: string) => { - if (!API_URL) { - console.log('API_URL not set. App is being rendered with Mock data'); - return Promise.resolve(chainMockData); - } - const res = await fetch(`${API_URL}/metrics/zkchain/${chainId}`); - if (!res.ok) { - throw new Error('Failed to fetch chain data'); - } - return await res.json(); + const url = `${API_URL}/metrics/zkchain/${chainId}`; + return fetchData(url, chainMockData); }; -export async function checkRpcStatus(rpcUrl: string): Promise { +export const checkRpcStatus = async (rpcUrl: string): Promise => { try { - // Ping the RPC endpoint with a basic request const response = await fetch(rpcUrl, { method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, + headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, @@ -45,11 +41,12 @@ export async function checkRpcStatus(rpcUrl: string): Promise { }), }); - // If the response is successful and contains a valid result, return true const data = await response.json(); + // If the response is successful and contains a valid result, return true return response.ok && !!data.result; } catch (error) { + console.error('Error checking RPC status:', error); // If there is an error or the endpoint is not responding, return false return false; } -} +}; From 8fb775c736c05c8e7cb2c0c8a3b979b8d4411efe Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:01:23 -0300 Subject: [PATCH 56/82] feat: gas calculations (#33) closes ZKS-193 --- src/components/Gas.tsx | 6 +++--- src/data/ecosystemMockData.json | 2 +- src/providers/DataProvider.tsx | 21 ++++++++++++++++++++- src/types/Data.ts | 1 + src/utils/format.ts | 6 ++++++ 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index 302404b..d19bace 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -10,7 +10,7 @@ import { SBox } from '~/components'; export const Gas = () => { const { theme } = useCustomTheme(); const { t } = useTranslation(); - const { isEcosystemLoading, ecosystemData } = useData(); + const { isEcosystemLoading, erc20USD, gasPriceInGwei } = useData(); return ( @@ -21,11 +21,11 @@ export const Gas = () => { {t('HEADER.gasPrice')}: - {ecosystemData.ethGasInfo.gasPrice} wei + {gasPriceInGwei} gwei {t('HEADER.transfer')}: - $ {ecosystemData.ethGasInfo.erc20Transfer} + $ {erc20USD} diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json index d4200d3..d2c7826 100644 --- a/src/data/ecosystemMockData.json +++ b/src/data/ecosystemMockData.json @@ -540,7 +540,7 @@ "decimals": 18 } ], - "ethGasInfo": { "gasPrice": "2811768091", "erc20Transfer": "34853", "ethTransfer": "21000" }, + "ethGasInfo": { "gasPrice": "2811768091", "erc20Transfer": "34853", "ethTransfer": "21000", "ethPrice": "2609.988" }, "zkChains": [ { "chainId": "324", diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index 0b62db1..6abbd68 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -1,9 +1,10 @@ import { createContext, useState, useEffect, ReactNode, useMemo, useCallback } from 'react'; import { useQuery, UseQueryResult } from '@tanstack/react-query'; import { useRouter } from 'next/router'; +import { formatGwei } from 'viem'; import { ChainData, EcosystemData, TvlData } from '~/types'; -import { fetchEcosystemData, fetchChainData } from '~/utils'; +import { fetchEcosystemData, fetchChainData, calculateUSDGas } from '~/utils'; type ContextType = { selectedChainId: string; @@ -17,6 +18,8 @@ type ContextType = { chainData: ChainData; totalL1TVL: number; + erc20USD: number; + gasPriceInGwei: string; }; interface DataProps { @@ -69,6 +72,20 @@ export const DataProvider = ({ children }: DataProps) => { return accumulator + (Number(token.amountUsd) || 0); }, 0); + const formatGas = useCallback(() => { + if (ecosystemData) { + const { erc20Transfer, gasPrice, ethPrice } = ecosystemData.ethGasInfo; + + const erc20USD = calculateUSDGas(BigInt(erc20Transfer), BigInt(gasPrice), Number(ethPrice)); + const gasPriceInGwei = Number(formatGwei(BigInt(gasPrice))).toFixed(2); + + return { erc20USD, gasPriceInGwei }; + } + return { erc20USD: 0, gasPriceInGwei: '0' }; + }, [ecosystemData]); + + const { erc20USD, gasPriceInGwei } = useMemo(() => formatGas(), [formatGas]); + return ( { chainData, refetchChainData, totalL1TVL, + erc20USD, + gasPriceInGwei, }} > {children} diff --git a/src/types/Data.ts b/src/types/Data.ts index 4e3bf39..086adea 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -68,6 +68,7 @@ export interface EcosystemData { gasPrice: string; ethTransfer: string; erc20Transfer: string; + ethPrice: string; }; zkChains: EcosystemChainData[]; } diff --git a/src/utils/format.ts b/src/utils/format.ts index 542020c..44c013e 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -48,3 +48,9 @@ export const formatSmallNumber = (value: number) => { // Trim any trailing zeros from the result return result.replace(/\.?0+$/, ''); }; + +export const calculateUSDGas = (txGas: bigint, gasPriceInWei: bigint, etherPrice: number): number => { + const txGasInWei = BigInt(txGas) * BigInt(gasPriceInWei); + const txCostInEther = Number(txGasInWei) / 1e18; + return Math.round(txCostInEther * etherPrice * 100) / 100; +}; From 1f4d19a0f03e739513fa9b3e636c646b803523a5 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:17:52 -0300 Subject: [PATCH 57/82] refactor: rename components (#34) --- .../{InfoBox.tsx => ChainInfoCard.tsx} | 4 ++-- src/components/ChainInformation.tsx | 18 +++++++++--------- .../{TitleBanner.tsx => EcosystemTitle.tsx} | 2 +- src/components/FeeParams.tsx | 10 +++++----- .../DesktopTVLGraph.tsx} | 6 +++--- .../MobileTVLGraph.tsx} | 4 ++-- .../TokenInfo.tsx} | 4 ++-- .../index.tsx} | 6 +++--- src/components/{TVL.tsx => TVLTable.tsx} | 2 +- src/components/Title.tsx | 11 ----------- src/components/index.ts | 16 ++++++++-------- .../ChainDetail/ChainDescription.tsx | 4 ++-- src/containers/ChainDetail/InfoCard.tsx | 4 ++-- src/containers/ErrorContainer/index.tsx | 4 ++-- src/containers/Landing/index.tsx | 4 ++-- src/containers/LockedAssets/index.tsx | 4 ++-- 16 files changed, 46 insertions(+), 57 deletions(-) rename src/components/{InfoBox.tsx => ChainInfoCard.tsx} (92%) rename src/components/{TitleBanner.tsx => EcosystemTitle.tsx} (97%) rename src/components/{DesktopTvlContainer.tsx => TVLGraph/DesktopTVLGraph.tsx} (90%) rename src/components/{MobileTvlContainer.tsx => TVLGraph/MobileTVLGraph.tsx} (93%) rename src/components/{TvlContentBox.tsx => TVLGraph/TokenInfo.tsx} (93%) rename src/components/{TotalValueLocked.tsx => TVLGraph/index.tsx} (91%) rename src/components/{TVL.tsx => TVLTable.tsx} (98%) delete mode 100644 src/components/Title.tsx diff --git a/src/components/InfoBox.tsx b/src/components/ChainInfoCard.tsx similarity index 92% rename from src/components/InfoBox.tsx rename to src/components/ChainInfoCard.tsx index 4a1c96d..4443cad 100644 --- a/src/components/InfoBox.tsx +++ b/src/components/ChainInfoCard.tsx @@ -3,7 +3,7 @@ import { Card, CardContent, Typography, styled, Box } from '@mui/material'; import { useCustomTheme } from '~/hooks'; import { Icon } from './Icon'; -interface InfoBoxProps { +interface ChainInfoCardProps { title: string; description: string | number; darkIcon: string; @@ -12,7 +12,7 @@ interface InfoBoxProps { alt: string; } -export const InfoBox = ({ title, description, darkIcon, lightIcon, size, alt }: InfoBoxProps) => { +export const ChainInfoCard = ({ title, description, darkIcon, lightIcon, size, alt }: ChainInfoCardProps) => { return ( diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index cb1cbff..4554b05 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -1,7 +1,7 @@ import { Typography, styled, Box } from '@mui/material'; import { useTranslation } from 'next-i18next'; -import { InfoBox } from '~/components'; +import { ChainInfoCard } from '~/components'; import { useData, useCustomTheme } from '~/hooks'; import BlockDark from '~/assets/icons/blockDark.svg'; @@ -23,7 +23,7 @@ export const ChainInformation = () => { {t('CHAIN.CHAININFORMATION.title')} - { alt='chain-type-icon' /> - {/* { alt='block-icon' /> - { alt='check-block-icon' /> - { alt='speed-icon' /> */} - { alt='block' /> - { alt='block' /> - { alt='check-block' /> - {/* { +export const EcosystemTitle = () => { const { t } = useTranslation(); const { theme } = useCustomTheme(); diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index 107df71..585e177 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -1,6 +1,6 @@ import { useTranslation } from 'next-i18next'; -import { InfoBox, STitle, DataContainer } from '~/components'; +import { ChainInfoCard, STitle, DataContainer } from '~/components'; import { useData } from '~/hooks'; import BlockDark from '~/assets/icons/blockDark.svg'; @@ -20,7 +20,7 @@ export const FeeParams = () => {
{t('CHAIN.FEEPARAMS.title')} - { alt='tag-icon' /> - { alt='block-icon' /> - { alt='check-block-icon' /> - { +export const DesktopTVLGraph = ({ tvl }: TotalValueLockedProps) => { const { t } = useTranslation(); const renderTvlContent = ( @@ -17,7 +17,7 @@ export const DesktopTvlContainer = ({ tvl }: TotalValueLockedProps) => { ) => ( - { const { t } = useTranslation(); @@ -17,7 +17,7 @@ export const MobileTvlContainer = ({ tvl }: TotalValueLockedProps) => { ) => ( - { +export const TokenInfo = ({ avatar, token, total, tokenName, isLast }: TokenInfoProps) => { return ( diff --git a/src/components/TotalValueLocked.tsx b/src/components/TVLGraph/index.tsx similarity index 91% rename from src/components/TotalValueLocked.tsx rename to src/components/TVLGraph/index.tsx index a1cf3fd..46054c9 100644 --- a/src/components/TotalValueLocked.tsx +++ b/src/components/TVLGraph/index.tsx @@ -2,16 +2,16 @@ import { Box, Typography, Grid, styled, useMediaQuery, useTheme } from '@mui/mat import { TotalValueLockedProps } from '~/types'; import { useCustomTheme } from '~/hooks'; -import { MobileTvlContainer, DesktopTvlContainer } from '~/components'; +import { MobileTvlContainer, DesktopTVLGraph } from '~/components'; -export const TotalValueLocked = ({ tvl }: TotalValueLockedProps) => { +export const TVLGraph = ({ tvl }: TotalValueLockedProps) => { const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('md')); return ( <> {isMobile && } - {!isMobile && } + {!isMobile && } ); }; diff --git a/src/components/TVL.tsx b/src/components/TVLTable.tsx similarity index 98% rename from src/components/TVL.tsx rename to src/components/TVLTable.tsx index c7148ed..33b449a 100644 --- a/src/components/TVL.tsx +++ b/src/components/TVLTable.tsx @@ -17,7 +17,7 @@ import { } from '~/components'; import { formatDataNumber } from '~/utils'; -export const TVL = () => { +export const TVLTable = () => { const { t } = useTranslation(); const { chainData } = useData(); const tvl = chainData?.tvl || []; diff --git a/src/components/Title.tsx b/src/components/Title.tsx deleted file mode 100644 index fb11d57..0000000 --- a/src/components/Title.tsx +++ /dev/null @@ -1,11 +0,0 @@ -interface TitleProps { - title: string; -} - -export const Title = ({ title }: TitleProps) => { - return ( - <> -

{title}

- - ); -}; diff --git a/src/components/index.ts b/src/components/index.ts index f5b1b92..b549214 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -2,19 +2,19 @@ export * from './Theme'; export * from './CustomHead'; export * from './ChainTable'; export * from './SearchBar'; -export * from './TotalValueLocked'; -export * from './Title'; -export * from './TitleBanner'; -export * from './InfoBox'; +export * from './TVLGraph'; +export * from './EcosystemTitle'; +export * from './ChainInfoCard'; export * from './FeeParams'; export * from './RPC'; -export * from './TVL'; +export * from './TVLTable'; export * from './ChainInformation'; export * from './BasicSelect'; export * from './Gas'; -export * from './TvlContentBox'; +export * from './TVLGraph/TokenInfo'; export * from './Breadcrumb'; export * from './Icon'; -export * from './DesktopTvlContainer'; -export * from './MobileTvlContainer'; +export * from './TVLGraph/DesktopTVLGraph'; +export * from './TVLGraph/MobileTVLGraph'; export * from './AddNetworkButton'; +export * from './TVLGraph'; diff --git a/src/containers/ChainDetail/ChainDescription.tsx b/src/containers/ChainDetail/ChainDescription.tsx index 4dfaddf..e570c24 100644 --- a/src/containers/ChainDetail/ChainDescription.tsx +++ b/src/containers/ChainDetail/ChainDescription.tsx @@ -1,6 +1,6 @@ import { Box, styled } from '@mui/material'; -import { ChainInformation, FeeParams, RPC, TVL } from '~/components'; +import { ChainInformation, FeeParams, RPC, TVLTable } from '~/components'; export const ChainDescription = () => { return ( @@ -8,7 +8,7 @@ export const ChainDescription = () => { - + ); }; diff --git a/src/containers/ChainDetail/InfoCard.tsx b/src/containers/ChainDetail/InfoCard.tsx index 9069abd..073c8ce 100644 --- a/src/containers/ChainDetail/InfoCard.tsx +++ b/src/containers/ChainDetail/InfoCard.tsx @@ -1,4 +1,4 @@ -import { InfoBox } from '~/components'; +import { ChainInfoCard } from '~/components'; import BlockDark from '~/assets/icons/blockDark.svg'; import BlockLight from '~/assets/icons/blockLight.svg'; @@ -12,7 +12,7 @@ export const InfoCard = ({ title }: InfoCardProps) => {

{title}

- { const { t } = useTranslation(); return ( - + <STitle>{t('ERROR.title')}</STitle> <Typography>{t('ERROR.message')}</Typography> </ErrorPageContainer> ); diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 2c397f2..564e8d6 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -1,7 +1,7 @@ import { styled } from '@mui/material/styles'; import { Dashboard, LockedAssets } from '~/containers'; -import { TitleBanner } from '~/components'; +import { EcosystemTitle } from '~/components'; import { useData } from '~/hooks'; import { SkeletonLanding } from './SkeletonLanding'; @@ -13,7 +13,7 @@ export const Landing = () => { {isEcosystemLoading && <SkeletonLanding />} {!isEcosystemLoading && ( <> - <TitleBanner /> + <EcosystemTitle /> <LockedAssets /> <Dashboard /> </> diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index 6dd1370..b2cf87f 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -2,7 +2,7 @@ import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; import { Box, Typography, styled, Button } from '@mui/material'; -import { TotalValueLocked } from '~/components'; +import { TVLGraph } from '~/components'; import { useData, useCustomTheme } from '~/hooks'; import { formatDataNumber } from '~/utils'; @@ -27,7 +27,7 @@ export const LockedAssets = () => { <TitleAmount>{formatDataNumber(totalL1TVL, 0, true, true)}</TitleAmount> </LockedAssetsContainer> - <TotalValueLocked tvl={ecosystemData.l1Tvl} /> + <TVLGraph tvl={ecosystemData.l1Tvl} /> <ButtonContainer> <AllTokensButton onClick={goToTokensPage}> {t('HOME.LOCKEDASSETS.allTokens')} </AllTokensButton>{' '} </ButtonContainer> From 6bf8c9c4707df1728ecbc73c4d94614ef8d55b19 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:30:37 -0300 Subject: [PATCH 58/82] fix: token table first cell (#35) --- src/components/ChainTable.tsx | 1 + src/containers/Tokens/TokensTable.tsx | 23 ++++++++++++----------- src/pages/tokens/index.tsx | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index 8c3d4b3..cbe9866 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -194,6 +194,7 @@ export const FirstCellWithLogo = styled(TableCell)(({ theme }) => { left: 0, backgroundColor: currentTheme.backgroundSecondary, zIndex: 1, + minWidth: '17rem', }, }; }); diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index 1a7eb8e..fc8c74e 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -1,5 +1,5 @@ import { useTranslation } from 'next-i18next'; -import { Table, Typography } from '@mui/material'; +import { Table, Typography, Box } from '@mui/material'; import { TotalValueLockedProps, TvlData } from '~/types'; import { @@ -9,10 +9,11 @@ import { STableCellHead, STableCell, STableBody, - LogoCell, TokenAvatar, STitle, STableBodyRow, + FirstCellWithLogo, + TableCellHeadFirst, } from '~/components'; import { formatDataNumber } from '~/utils'; @@ -20,15 +21,15 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { const { t } = useTranslation(); return ( - <article> + <Box> <STitle>{t('TOKENS.title')}</STitle> <STableContainer> <Table> <STableHead> <STableRow> - <STableCellHead>{t('CHAIN.TVL.token')}</STableCellHead> - <STableCellHead>{t('CHAIN.TVL.price')}</STableCellHead> - <STableCellHead>{t('CHAIN.TVL.tvl')}</STableCellHead> + <TableCellHeadFirst sx={{ width: '40%' }}>{t('CHAIN.TVL.token')}</TableCellHeadFirst> + <STableCellHead sx={{ width: '30%' }}>{t('CHAIN.TVL.price')}</STableCellHead> + <STableCellHead sx={{ width: '30%' }}>{t('CHAIN.TVL.tvl')}</STableCellHead> </STableRow> </STableHead> @@ -37,19 +38,19 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { .sort((a, b) => parseFloat(b.amountUsd) - parseFloat(a.amountUsd)) .map((token: TvlData, index) => ( <STableBodyRow key={index}> - <LogoCell> + <FirstCellWithLogo> <TokenAvatar alt={token.name} src={token.imageUrl} /> <Typography> {token.name} ({token.symbol}) </Typography> - </LogoCell> - <STableCell>{formatDataNumber(token.price, 0, true)}</STableCell> - <STableCell>{formatDataNumber(token.amountUsd, 0, true)}</STableCell> + </FirstCellWithLogo> + <STableCell sx={{ width: '30%' }}>{formatDataNumber(token.price, 0, true)}</STableCell> + <STableCell sx={{ width: '30%' }}>{formatDataNumber(token.amountUsd, 0, true)}</STableCell> </STableBodyRow> ))} </STableBody> </Table> </STableContainer> - </article> + </Box> ); }; diff --git a/src/pages/tokens/index.tsx b/src/pages/tokens/index.tsx index 2f29843..a0c38f5 100644 --- a/src/pages/tokens/index.tsx +++ b/src/pages/tokens/index.tsx @@ -13,7 +13,7 @@ const TokensPage = () => { return ( <> - <CustomHead title={t('HOME.search')} /> + <CustomHead title={t('TOKENS.title')} /> <Tokens /> </> ); From 04e0e1a58251203361ea824cef6f138e58cb6d75 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 20 Aug 2024 16:20:33 -0300 Subject: [PATCH 59/82] feat: not available data (#36) --- public/locales/en/common.json | 6 ++-- public/locales/es/common.json | 6 ++-- src/components/ChainInfoCard.tsx | 20 +++++++++---- src/components/ChainInformation.tsx | 38 ++++++++++++++++--------- src/components/FeeParams.tsx | 16 +++++++---- src/containers/ChainDetail/InfoCard.tsx | 26 ----------------- 6 files changed, 58 insertions(+), 54 deletions(-) delete mode 100644 src/containers/ChainDetail/InfoCard.tsx diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 44baf2c..ef7e18c 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -49,7 +49,8 @@ "totalBatchesCommitted": "Total batches committed", "totalBatchesExecuted": "Total batches executed", "totalBatchesVerified": "Total batches verified", - "averageBlockTime": "Average block time" + "averageBlockTime": "Average block time", + "notAvailable": "Not available" }, "TVL": { "title": "TVL", @@ -68,7 +69,8 @@ "title": "Fee params", "batch": "Batch Overhead L1 Gas", "compute": "Compute Overhead Part", - "maxGasBatch": "Max Gas per Batch" + "maxGasBatch": "Max Gas per Batch", + "lastBlockVerified": "Last block verified" }, "backButton": "Go back" }, diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 039848c..91c16c2 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -50,7 +50,8 @@ "totalBatchesCommitted": "Total de lotes comprometidos", "totalBatchesExecuted": "Total de lotes ejecutados", "totalBatchesVerified": "Total de lotes verificados", - "averageBlockTime": "Tiempo promedio de bloque" + "averageBlockTime": "Tiempo promedio de bloque", + "notAvailable": "No disponible" }, "TVL": { "title": "TVL", @@ -69,7 +70,8 @@ "title": "Parรกmetros de gas", "batch": "Sobrecarga de lote L1 Gas", "compute": "Parte de sobrecarga de cรณmputo", - "maxGasBatch": "Mรกximo gas por lote" + "maxGasBatch": "Mรกximo gas por lote", + "lastBlockVerified": "รšltimo bloque verificado" }, "backButton": "Volver" }, diff --git a/src/components/ChainInfoCard.tsx b/src/components/ChainInfoCard.tsx index 4443cad..eaa0451 100644 --- a/src/components/ChainInfoCard.tsx +++ b/src/components/ChainInfoCard.tsx @@ -10,9 +10,18 @@ interface ChainInfoCardProps { lightIcon: string; size: number; alt: string; + isDataAvailable: boolean; } -export const ChainInfoCard = ({ title, description, darkIcon, lightIcon, size, alt }: ChainInfoCardProps) => { +export const ChainInfoCard = ({ + title, + description, + darkIcon, + lightIcon, + size, + alt, + isDataAvailable, +}: ChainInfoCardProps) => { return ( <StyledCard> <CardContent> @@ -23,7 +32,7 @@ export const ChainInfoCard = ({ title, description, darkIcon, lightIcon, size, a </Label> </LabelContainer> - <Description>{description}</Description> + <Description isDataAvailable={isDataAvailable}>{description}</Description> </CardContent> </StyledCard> ); @@ -60,13 +69,14 @@ const Label = styled(Typography)(() => { }; }); -const Description = styled(Typography)(() => { +const Description = styled(Typography)<{ isDataAvailable: boolean }>((props) => { const { currentTheme } = useCustomTheme(); + return { - fontSize: '1.5rem', + fontSize: props.isDataAvailable ? '1.5rem' : '1rem', lineHeight: '2rem', fontWeight: 400, - color: currentTheme.textPrimary, + color: props.isDataAvailable ? currentTheme.textPrimary : currentTheme.textSecondary, marginTop: '0.5rem', }; }); diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index 4554b05..d83f007 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -10,13 +10,15 @@ import ChainTypeDark from '~/assets/icons/chainTypeDark.svg'; import ChainTypeLight from '~/assets/icons/chainTypeLight.svg'; import CheckBlockDark from '~/assets/icons/checkBlockDark.svg'; import CheckBlockLight from '~/assets/icons/checkBlockLight.svg'; -// import SpeedDark from '~/assets/icons/speedDark.svg'; -// import SpeedLight from '~/assets/icons/speedLight.svg'; +import SpeedDark from '~/assets/icons/speedDark.svg'; +import SpeedLight from '~/assets/icons/speedLight.svg'; export const ChainInformation = () => { const { t } = useTranslation(); const { chainData } = useData(); + const getDescription = (data: string | number | undefined) => data ?? t('CHAIN.CHAININFORMATION.notAvailable'); + return ( <article> <STitle variant='h5' gutterBottom> @@ -25,16 +27,18 @@ export const ChainInformation = () => { <DataContainer> <ChainInfoCard title={t('CHAIN.CHAININFORMATION.chainType')} - description={chainData?.chainType} + description={getDescription(chainData?.chainType)} + isDataAvailable={!!chainData?.chainType} darkIcon={ChainTypeDark} lightIcon={ChainTypeLight} size={22} alt='chain-type-icon' /> - {/* <ChainInfoCard + <ChainInfoCard title={t('CHAIN.CHAININFORMATION.lastBlock')} - description={chainData?.l2ChainInfo.lastBlock} + description={getDescription(chainData?.l2ChainInfo?.lastBlock)} + isDataAvailable={!!chainData?.l2ChainInfo?.lastBlock} darkIcon={BlockDark} lightIcon={BlockLight} size={22} @@ -43,7 +47,8 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.lastBlockVerified')} - description={chainData?.l2ChainInfo.lastBlockVerified} + description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified)} + isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} darkIcon={CheckBlockDark} lightIcon={CheckBlockLight} size={22} @@ -52,16 +57,18 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.transactionsPerSecond')} - description={chainData?.l2ChainInfo.tps} + description={getDescription(chainData?.l2ChainInfo?.tps)} + isDataAvailable={!!chainData?.l2ChainInfo?.tps} darkIcon={SpeedDark} lightIcon={SpeedLight} size={22} alt='speed-icon' - /> */} + /> <ChainInfoCard title={t('CHAIN.CHAININFORMATION.totalBatchesCommitted')} - description={chainData?.batchesInfo.commited} + description={getDescription(chainData?.batchesInfo?.commited)} + isDataAvailable={!!chainData?.batchesInfo?.commited} darkIcon={BlockDark} lightIcon={BlockLight} size={22} @@ -70,7 +77,8 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.totalBatchesExecuted')} - description={chainData?.batchesInfo.executed} + description={getDescription(chainData?.batchesInfo?.executed)} + isDataAvailable={!!chainData?.batchesInfo?.executed} darkIcon={BlockDark} lightIcon={BlockLight} size={22} @@ -79,21 +87,23 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.totalBatchesVerified')} - description={chainData?.batchesInfo.verified} + description={getDescription(chainData?.batchesInfo?.verified)} + isDataAvailable={!!chainData?.batchesInfo?.verified} darkIcon={CheckBlockDark} lightIcon={CheckBlockLight} size={22} alt='check-block' /> - {/* <ChainInfoCard + <ChainInfoCard title={t('CHAIN.CHAININFORMATION.averageBlockTime')} - description={chainData?.l2ChainInfo.avgBlockTime} + description={getDescription(chainData?.l2ChainInfo?.avgBlockTime)} + isDataAvailable={!!chainData?.l2ChainInfo?.avgBlockTime} darkIcon={SpeedDark} lightIcon={SpeedLight} size={22} alt='speed-icon' - /> */} + /> </DataContainer> </article> ); diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index 585e177..4c941b7 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -16,13 +16,16 @@ export const FeeParams = () => { const { t } = useTranslation(); const { chainData } = useData(); + const getDescription = (data: string | number | undefined) => data ?? t('CHAIN.CHAININFORMATION.notAvailable'); + return ( <article> <STitle>{t('CHAIN.FEEPARAMS.title')} </STitle> <DataContainer> <ChainInfoCard title={t('CHAIN.FEEPARAMS.batch')} - description={chainData?.feeParams.batchOverheadL1Gas} + description={getDescription(chainData?.feeParams.batchOverheadL1Gas)} + isDataAvailable={!!chainData?.feeParams.batchOverheadL1Gas} darkIcon={TagDark} lightIcon={TagLight} size={20} @@ -31,7 +34,8 @@ export const FeeParams = () => { <ChainInfoCard title={t('CHAIN.FEEPARAMS.compute')} - description={chainData?.feeParams.maxPubdataPerBatch} + description={getDescription(chainData?.feeParams.maxPubdataPerBatch)} + isDataAvailable={!!chainData?.feeParams.maxPubdataPerBatch} darkIcon={BlockDark} lightIcon={BlockLight} size={20} @@ -39,8 +43,9 @@ export const FeeParams = () => { /> <ChainInfoCard - title={t('CHAIN.FEEPARAMS.maxGasBatch')} - description={chainData?.feeParams.maxL2GasPerBatch} + title={t('CHAIN.FEEPARAMS.lastBlockVerified')} + description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified)} + isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} darkIcon={CheckBlockDark} lightIcon={CheckBlockLight} size={20} @@ -49,7 +54,8 @@ export const FeeParams = () => { <ChainInfoCard title={t('CHAIN.FEEPARAMS.maxGasBatch')} - description={chainData?.feeParams.maxL2GasPerBatch} + description={getDescription(chainData?.feeParams.maxL2GasPerBatch)} + isDataAvailable={!!chainData?.feeParams.maxL2GasPerBatch} darkIcon={MaxDark} lightIcon={MaxLight} size={20} diff --git a/src/containers/ChainDetail/InfoCard.tsx b/src/containers/ChainDetail/InfoCard.tsx deleted file mode 100644 index 073c8ce..0000000 --- a/src/containers/ChainDetail/InfoCard.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { ChainInfoCard } from '~/components'; - -import BlockDark from '~/assets/icons/blockDark.svg'; -import BlockLight from '~/assets/icons/blockLight.svg'; - -interface InfoCardProps { - title: string; -} - -export const InfoCard = ({ title }: InfoCardProps) => { - return ( - <section> - <h2>{title}</h2> - <div> - <ChainInfoCard - title='Website' - description='https://www.example.com' - darkIcon={BlockDark} - lightIcon={BlockLight} - size={20} - alt='block' - /> - </div> - </section> - ); -}; From 786a8311169635ea8e073a7debb536f529e376fe Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 20 Aug 2024 16:28:13 -0300 Subject: [PATCH 60/82] fix: remove rpc tags (#37) --- src/components/ChainTable.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index cbe9866..3a56987 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -55,7 +55,10 @@ export const ChainTable = ({ chains }: TableProps) => { <ChainName>{data.metadata?.name ? data.metadata.name : `ZK Chain ${data.chainId}`}</ChainName> <InfoTagsContainer> - {!data.rpc && <InfoTag information={t('HOME.DASHBOARD.noRPC')} />} + {/* + TEMPORARY REMOVE RPC TAGS + {!data.rpc && <InfoTag information={t('HOME.DASHBOARD.noRPC')} />} + */} {data.metadata === undefined && <InfoTag information={t('HOME.DASHBOARD.noMetadata')} />} </InfoTagsContainer> </FirstCellWithLogo> From 9ebb38e0740e43428066563b0236ea0d39390d15 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 21 Aug 2024 10:45:23 -0300 Subject: [PATCH 61/82] refactor: icons (#38) closes ZKS-172 --- src/components/AddNetworkButton.tsx | 12 +- src/components/BasicSelect.tsx | 9 +- src/components/ChainInfoCard.tsx | 15 +-- src/components/ChainInformation.tsx | 33 ++--- src/components/FeeParams.tsx | 21 +-- src/components/Gas.tsx | 8 +- src/components/Icon.tsx | 17 +-- src/components/SearchBar.tsx | 12 +- src/containers/ChainDetail/ChainMetadata.tsx | 36 +---- src/containers/Footer/index.tsx | 10 +- src/containers/Header/DesktopHeader.tsx | 7 +- src/containers/Header/MobileHeader.tsx | 27 +--- src/data/IconPaths.ts | 130 +++++++++++++++++++ src/data/index.ts | 1 + src/providers/SearchProvider.tsx | 1 + src/types/Data.ts | 14 ++ src/utils/addNetwork.ts | 14 +- 17 files changed, 199 insertions(+), 168 deletions(-) create mode 100644 src/data/IconPaths.ts create mode 100644 src/data/index.ts diff --git a/src/components/AddNetworkButton.tsx b/src/components/AddNetworkButton.tsx index 263eca9..deb64c3 100644 --- a/src/components/AddNetworkButton.tsx +++ b/src/components/AddNetworkButton.tsx @@ -4,11 +4,10 @@ import { useTranslation } from 'next-i18next'; import { useConnectModal } from '@rainbow-me/rainbowkit'; import { useAccount } from 'wagmi'; import { useRouter } from 'next/router'; -import Image from 'next/image'; import { useCustomTheme, useData } from '~/hooks'; import { addNetwork } from '~/utils'; -import Add from '~/assets/icons/add.svg'; +import { Icon } from '~/components'; export const AddNetworkButton = () => { const router = useRouter(); @@ -31,7 +30,7 @@ export const AddNetworkButton = () => { chainId: chain as string, chainName: chainData?.metadata.name, rpcUrls: chainData?.metadata.publicRpcs, - token: chainData?.baseToken.name, + name: chainData?.baseToken.name, symbol: chainData?.baseToken.symbol, decimals: chainData?.baseToken.decimals, explorerUrl: chainData?.metadata.explorerUrl, @@ -54,7 +53,7 @@ export const AddNetworkButton = () => { )} {isConnected && !isNetworkAdded && ( <BlueButton variant='contained' onClick={handleAddNetwork}> - <StyledIcon src={Add} alt='Add' /> + <Icon icon='add' alt='Add' size={24} /> {t('CHAIN.addNetwork')} </BlueButton> )} @@ -99,8 +98,3 @@ const STooltip = styled(Tooltip)(() => { padding: currentTheme.padding, }; }); - -const StyledIcon = styled(Image)({ - width: '1.5rem', - height: '1.5rem', -}); diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index b767daf..d470a1a 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -1,10 +1,8 @@ import { useState } from 'react'; import { styled, MenuProps, Menu, Box, Button, MenuItem } from '@mui/material'; -import Image from 'next/image'; -import arrowDownDark from '~/assets/icons/arrowDownDark.svg'; -import arrowDownLight from '~/assets/icons/arrowDownLight.svg'; import { useCustomTheme } from '~/hooks'; +import { Icon } from '~/components'; interface BasicSelectProps { label?: string; @@ -16,7 +14,6 @@ interface BasicSelectProps { } export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: BasicSelectProps) => { - const { theme } = useCustomTheme(); const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null); const open = Boolean(anchorEl); @@ -31,9 +28,7 @@ export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: Basic setValue(explorer); }; - const endIcon = disabled ? null : ( - <Image src={theme === 'dark' ? arrowDownDark : arrowDownLight} alt='arrow-down' width={24} height={24} /> - ); + const endIcon = disabled ? null : <Icon icon='arrowDown' alt='arrow-down' size={24} />; return ( <SBox> diff --git a/src/components/ChainInfoCard.tsx b/src/components/ChainInfoCard.tsx index eaa0451..fb1eb4f 100644 --- a/src/components/ChainInfoCard.tsx +++ b/src/components/ChainInfoCard.tsx @@ -6,27 +6,18 @@ import { Icon } from './Icon'; interface ChainInfoCardProps { title: string; description: string | number; - darkIcon: string; - lightIcon: string; + icon: string; size: number; alt: string; isDataAvailable: boolean; } -export const ChainInfoCard = ({ - title, - description, - darkIcon, - lightIcon, - size, - alt, - isDataAvailable, -}: ChainInfoCardProps) => { +export const ChainInfoCard = ({ title, description, icon, size, alt, isDataAvailable }: ChainInfoCardProps) => { return ( <StyledCard> <CardContent> <LabelContainer> - <Icon darkIcon={darkIcon} lightIcon={lightIcon} size={size} alt={alt} /> + <Icon icon={icon} size={size} alt={alt} /> <Label variant='subtitle1' color='textSecondary' gutterBottom> {title} </Label> diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index d83f007..704377b 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -4,15 +4,6 @@ import { useTranslation } from 'next-i18next'; import { ChainInfoCard } from '~/components'; import { useData, useCustomTheme } from '~/hooks'; -import BlockDark from '~/assets/icons/blockDark.svg'; -import BlockLight from '~/assets/icons/blockLight.svg'; -import ChainTypeDark from '~/assets/icons/chainTypeDark.svg'; -import ChainTypeLight from '~/assets/icons/chainTypeLight.svg'; -import CheckBlockDark from '~/assets/icons/checkBlockDark.svg'; -import CheckBlockLight from '~/assets/icons/checkBlockLight.svg'; -import SpeedDark from '~/assets/icons/speedDark.svg'; -import SpeedLight from '~/assets/icons/speedLight.svg'; - export const ChainInformation = () => { const { t } = useTranslation(); const { chainData } = useData(); @@ -29,8 +20,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.chainType')} description={getDescription(chainData?.chainType)} isDataAvailable={!!chainData?.chainType} - darkIcon={ChainTypeDark} - lightIcon={ChainTypeLight} + icon='chainType' size={22} alt='chain-type-icon' /> @@ -39,8 +29,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.lastBlock')} description={getDescription(chainData?.l2ChainInfo?.lastBlock)} isDataAvailable={!!chainData?.l2ChainInfo?.lastBlock} - darkIcon={BlockDark} - lightIcon={BlockLight} + icon='block' size={22} alt='block-icon' /> @@ -49,8 +38,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.lastBlockVerified')} description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified)} isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} - darkIcon={CheckBlockDark} - lightIcon={CheckBlockLight} + icon='checkBlock' size={22} alt='check-block-icon' /> @@ -59,8 +47,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.transactionsPerSecond')} description={getDescription(chainData?.l2ChainInfo?.tps)} isDataAvailable={!!chainData?.l2ChainInfo?.tps} - darkIcon={SpeedDark} - lightIcon={SpeedLight} + icon='speed' size={22} alt='speed-icon' /> @@ -69,8 +56,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.totalBatchesCommitted')} description={getDescription(chainData?.batchesInfo?.commited)} isDataAvailable={!!chainData?.batchesInfo?.commited} - darkIcon={BlockDark} - lightIcon={BlockLight} + icon='block' size={22} alt='block' /> @@ -79,8 +65,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.totalBatchesExecuted')} description={getDescription(chainData?.batchesInfo?.executed)} isDataAvailable={!!chainData?.batchesInfo?.executed} - darkIcon={BlockDark} - lightIcon={BlockLight} + icon='block' size={22} alt='block' /> @@ -89,8 +74,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.totalBatchesVerified')} description={getDescription(chainData?.batchesInfo?.verified)} isDataAvailable={!!chainData?.batchesInfo?.verified} - darkIcon={CheckBlockDark} - lightIcon={CheckBlockLight} + icon='checkBlock' size={22} alt='check-block' /> @@ -99,8 +83,7 @@ export const ChainInformation = () => { title={t('CHAIN.CHAININFORMATION.averageBlockTime')} description={getDescription(chainData?.l2ChainInfo?.avgBlockTime)} isDataAvailable={!!chainData?.l2ChainInfo?.avgBlockTime} - darkIcon={SpeedDark} - lightIcon={SpeedLight} + icon='speed' size={22} alt='speed-icon' /> diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index 4c941b7..b658bd3 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -3,15 +3,6 @@ import { useTranslation } from 'next-i18next'; import { ChainInfoCard, STitle, DataContainer } from '~/components'; import { useData } from '~/hooks'; -import BlockDark from '~/assets/icons/blockDark.svg'; -import BlockLight from '~/assets/icons/blockLight.svg'; -import TagDark from '~/assets/icons/tagDark.svg'; -import TagLight from '~/assets/icons/tagLight.svg'; -import MaxDark from '~/assets/icons/maxDark.svg'; -import MaxLight from '~/assets/icons/maxLight.svg'; -import CheckBlockDark from '~/assets/icons/checkBlockDark.svg'; -import CheckBlockLight from '~/assets/icons/checkBlockLight.svg'; - export const FeeParams = () => { const { t } = useTranslation(); const { chainData } = useData(); @@ -26,8 +17,7 @@ export const FeeParams = () => { title={t('CHAIN.FEEPARAMS.batch')} description={getDescription(chainData?.feeParams.batchOverheadL1Gas)} isDataAvailable={!!chainData?.feeParams.batchOverheadL1Gas} - darkIcon={TagDark} - lightIcon={TagLight} + icon='tag' size={20} alt='tag-icon' /> @@ -36,8 +26,7 @@ export const FeeParams = () => { title={t('CHAIN.FEEPARAMS.compute')} description={getDescription(chainData?.feeParams.maxPubdataPerBatch)} isDataAvailable={!!chainData?.feeParams.maxPubdataPerBatch} - darkIcon={BlockDark} - lightIcon={BlockLight} + icon='block' size={20} alt='block-icon' /> @@ -46,8 +35,7 @@ export const FeeParams = () => { title={t('CHAIN.FEEPARAMS.lastBlockVerified')} description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified)} isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} - darkIcon={CheckBlockDark} - lightIcon={CheckBlockLight} + icon='checkBlock' size={20} alt='check-block-icon' /> @@ -56,8 +44,7 @@ export const FeeParams = () => { title={t('CHAIN.FEEPARAMS.maxGasBatch')} description={getDescription(chainData?.feeParams.maxL2GasPerBatch)} isDataAvailable={!!chainData?.feeParams.maxL2GasPerBatch} - darkIcon={MaxDark} - lightIcon={MaxLight} + icon='max' size={20} alt='max-icon' /> diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index d19bace..96fab2d 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -1,14 +1,10 @@ import { Typography, Box, styled, Skeleton } from '@mui/material'; -import Image from 'next/image'; import { useTranslation } from 'next-i18next'; -import GasLight from '~/assets/icons/gasLight.svg'; -import GasDark from '~/assets/icons/gasDark.svg'; import { useCustomTheme, useData } from '~/hooks'; -import { SBox } from '~/components'; +import { SBox, Icon } from '~/components'; export const Gas = () => { - const { theme } = useCustomTheme(); const { t } = useTranslation(); const { isEcosystemLoading, erc20USD, gasPriceInGwei } = useData(); @@ -17,7 +13,7 @@ export const Gas = () => { {isEcosystemLoading && <Skeleton variant='rectangular' width={175} height={50} sx={{ borderRadius: 4 }} />} {!isEcosystemLoading && ( <> - <Image src={theme === 'dark' ? GasDark : GasLight} alt='gas' /> + <Icon icon='gas' alt='gas-icon' size={24} /> <Box> <SBox> <GasLabel>{t('HEADER.gasPrice')}:</GasLabel> diff --git a/src/components/Icon.tsx b/src/components/Icon.tsx index 98bfe6c..552ed07 100644 --- a/src/components/Icon.tsx +++ b/src/components/Icon.tsx @@ -1,24 +1,17 @@ import Image from 'next/image'; import { useCustomTheme } from '~/hooks'; +import { iconPaths } from '~/data'; interface IconProps { - darkIcon: string; - lightIcon: string; + icon: keyof typeof iconPaths; size: number; alt: string; } -export const Icon = ({ darkIcon, lightIcon, size, alt }: IconProps) => { +export const Icon = ({ icon, size, alt }: IconProps) => { const { theme } = useCustomTheme(); + const iconSrc = theme === 'dark' ? iconPaths[icon]?.dark.src : iconPaths[icon]?.light.src; - return ( - <> - {theme === 'dark' ? ( - <Image src={darkIcon} alt={alt} width={size} height={size} /> - ) : ( - <Image src={lightIcon} alt={alt} width={size} height={size} /> - )} - </> - ); + return <Image src={iconSrc} alt={alt} width={size} height={size} />; }; diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index d8188ff..54927cf 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,19 +1,13 @@ import { useTranslation } from 'next-i18next'; import { styled, TextField, InputAdornment, Box } from '@mui/material'; -import Image from 'next/image'; -import SearchDark from '~/assets/icons/searchDark.svg'; -import SearchLight from '~/assets/icons/searchLight.svg'; import { useCustomTheme, useSearchContext } from '~/hooks'; import { SIconButton } from '~/containers'; - -import CloseDark from '~/assets/icons/closeDark.svg'; -import CloseLight from '~/assets/icons/closeLight.svg'; +import { Icon } from '~/components'; export const SearchBar = () => { const { t } = useTranslation(); const { searchTerm, setSearchTerm, closeSearch, isSearch, navigateToSearch } = useSearchContext(); - const { theme } = useCustomTheme(); const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => { const value = event.target.value; @@ -31,14 +25,14 @@ export const SearchBar = () => { InputProps={{ startAdornment: ( <InputAdornment position='start'> - <Image src={theme === 'dark' ? SearchDark : SearchLight} alt='search' /> + <Icon icon='search' alt='search-icon' size={24} /> </InputAdornment> ), }} /> {isSearch && ( <SIconButton onClick={closeSearch} aria-label='close-search'> - <Image src={theme === 'dark' ? CloseDark : CloseLight} alt='close icon' /> + <Icon icon='close' alt='close-icon' size={24} /> </SIconButton> )} </SearchContainer> diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index a520113..2e841f0 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -1,31 +1,17 @@ import { Avatar, Box, Typography, styled } from '@mui/material'; import { useTranslation } from 'next-i18next'; import { useRouter } from 'next/router'; -import Image from 'next/image'; import { useCustomTheme, useData } from '~/hooks'; import { formatTimestampToDate } from '~/utils'; import { Icon, AddNetworkButton } from '~/components'; -import WebDark from '~/assets/icons/webDark.svg'; -import WebLight from '~/assets/icons/webLight.svg'; -import LinkDark from '~/assets/icons/linkDark.svg'; -import LinkLight from '~/assets/icons/linkLight.svg'; -import BlockDark from '~/assets/icons/whiteBlockDark.svg'; -import BlockLight from '~/assets/icons/blackBlockLight.svg'; -import ClockDark from '~/assets/icons/clockDark.svg'; -import ClockLight from '~/assets/icons/clockLight.svg'; -import SettingsDark from '~/assets/icons/settingsDark.svg'; -import SettingsLight from '~/assets/icons/settingsLight.svg'; - export const ChainMetadata = () => { const { t } = useTranslation(); const router = useRouter(); const { chain } = router.query; const { chainData } = useData(); - const { theme } = useCustomTheme(); const chainMetadata = chainData?.metadata; - const dark = theme === 'dark'; return ( <MetadataContainer> @@ -42,15 +28,15 @@ export const ChainMetadata = () => { <ButtonsContainer> <MetadataButton href={chainMetadata?.explorerUrl} target='_blank'> - <WebIcon src={dark ? WebDark : WebLight} alt='web icon' /> + <Icon icon='web' alt='web-icon' size={20} /> {t('CHAIN.website')} - <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> + <Icon icon='link' alt='link-icon' size={24} /> </MetadataButton> <MetadataButton href={chainMetadata?.explorerUrl} target='_blank'> - <SIcon src={dark ? BlockDark : BlockLight} alt='block icon' /> + <Icon icon='block' alt='block-icon' size={24} /> {t('CHAIN.explorer')} - <SIcon src={dark ? LinkDark : LinkLight} alt='link icon' /> + <Icon icon='link' alt='link-icon' size={24} /> </MetadataButton> <AddNetworkButton /> @@ -59,7 +45,7 @@ export const ChainMetadata = () => { <SecondRow> <MetadataItem> - <Icon darkIcon={ClockDark} lightIcon={ClockLight} alt={t('CHAIN.launchDate')} size={48} /> + <Icon icon='clock' alt={t('CHAIN.launchDate')} size={48} /> <Box> <Label variant='subtitle1' color='textSecondary' gutterBottom> {t('CHAIN.launchDate')} @@ -69,7 +55,7 @@ export const ChainMetadata = () => { </MetadataItem> <MetadataItem> - <Icon darkIcon={SettingsDark} lightIcon={SettingsLight} alt={t('CHAIN.environment')} size={48} /> + <Icon icon='settings' alt={t('CHAIN.environment')} size={48} /> <Box> <Label variant='subtitle1' color='textSecondary' gutterBottom> {t('CHAIN.environment')} @@ -160,16 +146,6 @@ const MetadataButton = styled('a')(() => { }; }); -const SIcon = styled(Image)({ - width: '1.5rem', - height: '1.5rem', -}); - -const WebIcon = styled(Image)({ - width: '1.25rem', - height: '1.25rem', -}); - const ButtonsContainer = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index 6f5421d..a42e21b 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -6,12 +6,8 @@ import Link from 'next/link'; import WonderlandDark from '~/assets/icons/wonderlandDark.svg'; import WonderlandLight from '~/assets/icons/wonderlandLight.svg'; -import HeartDark from '~/assets/icons/heartDark.svg'; -import HeartLight from '~/assets/icons/heartLight.svg'; -import GithubDark from '~/assets/icons/githubDark.svg'; -import GithubLight from '~/assets/icons/githubLight.svg'; import { useCustomTheme } from '~/hooks'; -import { SBox } from '~/components'; +import { SBox, Icon } from '~/components'; export const Footer = () => { const { t } = useTranslation(); @@ -22,14 +18,14 @@ export const Footer = () => { <SBox> <FooterButton>{t('FOOTER.docs')}</FooterButton> <FooterButton> - <Image src={theme === 'dark' ? GithubDark : GithubLight} alt='github' /> + <Icon icon='github' alt='github' size={24} /> <Typography>{t('FOOTER.github')}</Typography> </FooterButton> </SBox> <Subtitle> <SBox> <Typography>{t('FOOTER.madeWith')}</Typography> - <Image src={theme === 'dark' ? HeartDark : HeartLight} alt='Wonderland' /> + <Icon icon='heart' alt='heart' size={24} /> <Typography>{t('FOOTER.by')}</Typography> </SBox> <Link href='https://defi.sucks' target='_blank'> diff --git a/src/containers/Header/DesktopHeader.tsx b/src/containers/Header/DesktopHeader.tsx index baca6b5..25fcbec 100644 --- a/src/containers/Header/DesktopHeader.tsx +++ b/src/containers/Header/DesktopHeader.tsx @@ -1,13 +1,10 @@ import { useTranslation } from 'next-i18next'; -import Image from 'next/image'; import { StyledHeader, LogoContainer, Logo, SIconButton, HeaderProps } from '~/containers'; -import { BasicSelect, SearchBar, Gas, SBox } from '~/components'; +import { BasicSelect, SearchBar, Gas, SBox, Icon } from '~/components'; import LogoDark from '~/assets/icons/logoDark.svg'; import LogoLight from '~/assets/icons/logoLight.svg'; -import LightMode from '~/assets/icons/lightMode.svg'; -import DarkMode from '~/assets/icons/darkMode.svg'; interface DesktopHeaderProps extends HeaderProps {} @@ -37,7 +34,7 @@ export const DesktopHeader = ({ list={Object.values(localesMap)} /> <SIconButton onClick={changeTheme}> - {theme === 'dark' ? <Image src={LightMode} alt='light mode' /> : <Image src={DarkMode} alt='dark mode' />} + <Icon icon='mode' alt='mode-icon' size={24} /> </SIconButton> </SBox> </StyledHeader> diff --git a/src/containers/Header/MobileHeader.tsx b/src/containers/Header/MobileHeader.tsx index 845ed6f..40557aa 100644 --- a/src/containers/Header/MobileHeader.tsx +++ b/src/containers/Header/MobileHeader.tsx @@ -2,22 +2,13 @@ import React from 'react'; import { styled } from '@mui/material/styles'; import { Box, IconButton, Drawer, List, ListItem, Typography, Button } from '@mui/material'; import { useTranslation } from 'next-i18next'; -import Image from 'next/image'; import { StyledHeader, LogoContainer, Logo, HeaderProps } from '~/containers'; -import { BasicSelect, Gas } from '~/components'; +import { BasicSelect, Gas, Icon } from '~/components'; import { useCustomTheme, useSearchContext } from '~/hooks'; import LogoDark from '~/assets/icons/logoDark.svg'; import LogoLight from '~/assets/icons/logoLight.svg'; -import LightMode from '~/assets/icons/lightMode.svg'; -import DarkMode from '~/assets/icons/darkMode.svg'; -import SearchDark from '~/assets/icons/searchDark.svg'; -import SearchLight from '~/assets/icons/searchLight.svg'; -import MenuDark from '~/assets/icons/menuDark.svg'; -import MenuLight from '~/assets/icons/menuLight.svg'; -import CloseDark from '~/assets/icons/closeDark.svg'; -import CloseLight from '~/assets/icons/closeLight.svg'; interface MobileHeaderProps extends HeaderProps {} @@ -42,15 +33,11 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <IconsContainer> <SIconButton onClick={navigateToSearch}> - {theme === 'dark' ? ( - <Image src={SearchDark} alt='search-icon' /> - ) : ( - <Image src={SearchLight} alt='search-icon' /> - )} + <Icon icon='search' alt='search-icon' size={24} /> </SIconButton> <SIconButton onClick={toggleDrawer(true)}> - {theme === 'dark' ? <Image src={MenuDark} alt='menu-icon' /> : <Image src={MenuLight} alt='menu-icon' />} + <Icon icon='menu' alt='menu-icon' size={24} /> </SIconButton> </IconsContainer> @@ -67,7 +54,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <DrawerHeader> <MenuLabel>{t('HEADER.menu')}</MenuLabel> <SIconButton onClick={toggleDrawer(false)} aria-label='close menu'> - <Image src={theme === 'dark' ? CloseDark : CloseLight} alt='close icon' /> + <Icon icon='close' alt='close-icon' size={24} /> </SIconButton> </DrawerHeader> @@ -87,11 +74,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <MenuListItem> <ThemeButton onClick={changeTheme}> {theme === 'dark' ? t('HEADER.lightMode') : t('HEADER.darkMode')} - {theme === 'dark' ? ( - <Image src={LightMode} alt='light mode' /> - ) : ( - <Image src={DarkMode} alt='dark mode' /> - )} + <Icon icon='mode' alt='mode-icon' size={24} /> </ThemeButton> </MenuListItem> </MenuList> diff --git a/src/data/IconPaths.ts b/src/data/IconPaths.ts new file mode 100644 index 0000000..5a3fe05 --- /dev/null +++ b/src/data/IconPaths.ts @@ -0,0 +1,130 @@ +import { IconPaths } from '~/types'; + +import BlockDark from '~/assets/icons/blockDark.svg'; +import BlockLight from '~/assets/icons/blockLight.svg'; +import ChainTypeDark from '~/assets/icons/chainTypeDark.svg'; +import ChainTypeLight from '~/assets/icons/chainTypeLight.svg'; +import CheckBlockDark from '~/assets/icons/checkBlockDark.svg'; +import CheckBlockLight from '~/assets/icons/checkBlockLight.svg'; +import SpeedDark from '~/assets/icons/speedDark.svg'; +import SpeedLight from '~/assets/icons/speedLight.svg'; +import TagDark from '~/assets/icons/tagDark.svg'; +import TagLight from '~/assets/icons/tagLight.svg'; +import MaxDark from '~/assets/icons/maxDark.svg'; +import MaxLight from '~/assets/icons/maxLight.svg'; +import ClockDark from '~/assets/icons/clockDark.svg'; +import ClockLight from '~/assets/icons/clockLight.svg'; +import SettingsDark from '~/assets/icons/settingsDark.svg'; +import SettingsLight from '~/assets/icons/settingsLight.svg'; +import WebDark from '~/assets/icons/webDark.svg'; +import WebLight from '~/assets/icons/webLight.svg'; +import LinkDark from '~/assets/icons/linkDark.svg'; +import LinkLight from '~/assets/icons/linkLight.svg'; +import LightMode from '~/assets/icons/lightMode.svg'; +import DarkMode from '~/assets/icons/darkMode.svg'; +import SearchDark from '~/assets/icons/searchDark.svg'; +import SearchLight from '~/assets/icons/searchLight.svg'; +import MenuDark from '~/assets/icons/menuDark.svg'; +import MenuLight from '~/assets/icons/menuLight.svg'; +import CloseDark from '~/assets/icons/closeDark.svg'; +import CloseLight from '~/assets/icons/closeLight.svg'; +import WonderlandDark from '~/assets/icons/wonderlandDark.svg'; +import WonderlandLight from '~/assets/icons/wonderlandLight.svg'; +import HeartDark from '~/assets/icons/heartDark.svg'; +import HeartLight from '~/assets/icons/heartLight.svg'; +import GithubDark from '~/assets/icons/githubDark.svg'; +import GithubLight from '~/assets/icons/githubLight.svg'; +import GasLight from '~/assets/icons/gasLight.svg'; +import GasDark from '~/assets/icons/gasDark.svg'; +import SmallArrowDark from '~/assets/icons/smallArrowDark.svg'; +import SmallArrowLight from '~/assets/icons/smallArrowLight.svg'; +import ArrowDownDark from '~/assets/icons/arrowDownDark.svg'; +import ArrowDownLight from '~/assets/icons/arrowDownLight.svg'; +import Add from '~/assets/icons/add.svg'; + +export const iconPaths: IconPaths = { + block: { + dark: BlockDark, + light: BlockLight, + }, + chainType: { + dark: ChainTypeDark, + light: ChainTypeLight, + }, + checkBlock: { + dark: CheckBlockDark, + light: CheckBlockLight, + }, + speed: { + dark: SpeedDark, + light: SpeedLight, + }, + tag: { + dark: TagDark, + light: TagLight, + }, + max: { + dark: MaxDark, + light: MaxLight, + }, + clock: { + dark: ClockDark, + light: ClockLight, + }, + settings: { + dark: SettingsDark, + light: SettingsLight, + }, + web: { + dark: WebDark, + light: WebLight, + }, + link: { + dark: LinkDark, + light: LinkLight, + }, + mode: { + dark: LightMode, // Intended to show the light mode icon when the theme is dark + light: DarkMode, // Intended to show the dark mode icon when the theme is light + }, + search: { + dark: SearchDark, + light: SearchLight, + }, + menu: { + dark: MenuDark, + light: MenuLight, + }, + close: { + dark: CloseDark, + light: CloseLight, + }, + wonderland: { + dark: WonderlandDark, + light: WonderlandLight, + }, + heart: { + dark: HeartDark, + light: HeartLight, + }, + github: { + dark: GithubDark, + light: GithubLight, + }, + gas: { + dark: GasDark, + light: GasLight, + }, + smallArrow: { + dark: SmallArrowDark, + light: SmallArrowLight, + }, + arrowDown: { + dark: ArrowDownDark, + light: ArrowDownLight, + }, + add: { + dark: Add, + light: Add, + }, +} as const; diff --git a/src/data/index.ts b/src/data/index.ts new file mode 100644 index 0000000..e85ae15 --- /dev/null +++ b/src/data/index.ts @@ -0,0 +1 @@ +export * from './IconPaths'; diff --git a/src/providers/SearchProvider.tsx b/src/providers/SearchProvider.tsx index be79b41..db6ffe7 100644 --- a/src/providers/SearchProvider.tsx +++ b/src/providers/SearchProvider.tsx @@ -25,6 +25,7 @@ export const SearchProvider = ({ children }: StateProps) => { const navigateToSearch = useCallback(() => { setPreviousPage(router.asPath); // Save the current page before navigating to search router.push('/search'); + setSearchTerm(''); }, [router]); const closeSearch = useCallback(() => { diff --git a/src/types/Data.ts b/src/types/Data.ts index 086adea..5fb18e5 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -95,3 +95,17 @@ export interface ChainTvl { export interface TotalValueLockedProps { tvl: TvlData[]; } +export interface IconPaths { + [key: string]: { + light: IconImage; + dark: IconImage; + }; +} + +export interface IconImage { + src: string; + height: number; + width: number; + blurWidth?: number; + blurHeight?: number; +} diff --git a/src/utils/addNetwork.ts b/src/utils/addNetwork.ts index da2b556..82f4d23 100644 --- a/src/utils/addNetwork.ts +++ b/src/utils/addNetwork.ts @@ -2,21 +2,21 @@ interface AddNetwork { chainId: string; chainName: string; rpcUrls: string[]; - token: string; + name: string; symbol: string; decimals: number; explorerUrl: string; } -export const addNetwork = async ({ chainId, chainName, rpcUrls, token, symbol, decimals, explorerUrl }: AddNetwork) => { +export const addNetwork = async ({ chainId, chainName, rpcUrls, name, symbol, decimals, explorerUrl }: AddNetwork) => { const networkData = { - chainId: chainId, - chainName: chainName, + chainId, + chainName, rpcUrls: [rpcUrls], nativeCurrency: { - name: token, - symbol: symbol, - decimals: decimals, + name, + symbol, + decimals, }, blockExplorerUrls: [explorerUrl], }; From eb2681116d6e5cebc0522cecb691769991716c9b Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 21 Aug 2024 14:53:20 -0300 Subject: [PATCH 62/82] feat: chain number format (#39) closes ZKS-187 --- src/components/ChainInformation.tsx | 20 +++++++++---------- src/components/FeeParams.tsx | 12 ++++++------ src/components/RPC.tsx | 30 ++++++++++++++++++++--------- src/utils/index.ts | 1 + src/utils/misc.ts | 18 +++++++++++++++++ 5 files changed, 56 insertions(+), 25 deletions(-) create mode 100644 src/utils/misc.ts diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index 704377b..8cf7b47 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -3,12 +3,12 @@ import { useTranslation } from 'next-i18next'; import { ChainInfoCard } from '~/components'; import { useData, useCustomTheme } from '~/hooks'; +import { getDescription } from '~/utils'; export const ChainInformation = () => { const { t } = useTranslation(); const { chainData } = useData(); - - const getDescription = (data: string | number | undefined) => data ?? t('CHAIN.CHAININFORMATION.notAvailable'); + const notAvailable = t('CHAIN.CHAININFORMATION.notAvailable'); return ( <article> @@ -18,7 +18,7 @@ export const ChainInformation = () => { <DataContainer> <ChainInfoCard title={t('CHAIN.CHAININFORMATION.chainType')} - description={getDescription(chainData?.chainType)} + description={getDescription(chainData?.chainType, notAvailable)} isDataAvailable={!!chainData?.chainType} icon='chainType' size={22} @@ -27,7 +27,7 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.lastBlock')} - description={getDescription(chainData?.l2ChainInfo?.lastBlock)} + description={getDescription(chainData?.l2ChainInfo?.lastBlock, notAvailable)} isDataAvailable={!!chainData?.l2ChainInfo?.lastBlock} icon='block' size={22} @@ -36,7 +36,7 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.lastBlockVerified')} - description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified)} + description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified, notAvailable)} isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} icon='checkBlock' size={22} @@ -45,7 +45,7 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.transactionsPerSecond')} - description={getDescription(chainData?.l2ChainInfo?.tps)} + description={getDescription(chainData?.l2ChainInfo?.tps, notAvailable)} isDataAvailable={!!chainData?.l2ChainInfo?.tps} icon='speed' size={22} @@ -54,7 +54,7 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.totalBatchesCommitted')} - description={getDescription(chainData?.batchesInfo?.commited)} + description={getDescription(Number(chainData?.batchesInfo?.commited), notAvailable)} isDataAvailable={!!chainData?.batchesInfo?.commited} icon='block' size={22} @@ -63,7 +63,7 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.totalBatchesExecuted')} - description={getDescription(chainData?.batchesInfo?.executed)} + description={getDescription(Number(chainData?.batchesInfo?.executed), notAvailable)} isDataAvailable={!!chainData?.batchesInfo?.executed} icon='block' size={22} @@ -72,7 +72,7 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.totalBatchesVerified')} - description={getDescription(chainData?.batchesInfo?.verified)} + description={getDescription(Number(chainData?.batchesInfo?.verified), notAvailable)} isDataAvailable={!!chainData?.batchesInfo?.verified} icon='checkBlock' size={22} @@ -81,7 +81,7 @@ export const ChainInformation = () => { <ChainInfoCard title={t('CHAIN.CHAININFORMATION.averageBlockTime')} - description={getDescription(chainData?.l2ChainInfo?.avgBlockTime)} + description={getDescription(chainData?.l2ChainInfo?.avgBlockTime, notAvailable)} isDataAvailable={!!chainData?.l2ChainInfo?.avgBlockTime} icon='speed' size={22} diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index b658bd3..0999b8b 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -2,12 +2,12 @@ import { useTranslation } from 'next-i18next'; import { ChainInfoCard, STitle, DataContainer } from '~/components'; import { useData } from '~/hooks'; +import { getDescription } from '~/utils'; export const FeeParams = () => { const { t } = useTranslation(); const { chainData } = useData(); - - const getDescription = (data: string | number | undefined) => data ?? t('CHAIN.CHAININFORMATION.notAvailable'); + const notAvailable = t('CHAIN.CHAININFORMATION.notAvailable'); return ( <article> @@ -15,7 +15,7 @@ export const FeeParams = () => { <DataContainer> <ChainInfoCard title={t('CHAIN.FEEPARAMS.batch')} - description={getDescription(chainData?.feeParams.batchOverheadL1Gas)} + description={getDescription(chainData?.feeParams.batchOverheadL1Gas, notAvailable)} isDataAvailable={!!chainData?.feeParams.batchOverheadL1Gas} icon='tag' size={20} @@ -24,7 +24,7 @@ export const FeeParams = () => { <ChainInfoCard title={t('CHAIN.FEEPARAMS.compute')} - description={getDescription(chainData?.feeParams.maxPubdataPerBatch)} + description={getDescription(chainData?.feeParams.maxPubdataPerBatch, notAvailable)} isDataAvailable={!!chainData?.feeParams.maxPubdataPerBatch} icon='block' size={20} @@ -33,7 +33,7 @@ export const FeeParams = () => { <ChainInfoCard title={t('CHAIN.FEEPARAMS.lastBlockVerified')} - description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified)} + description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified, notAvailable)} isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} icon='checkBlock' size={20} @@ -42,7 +42,7 @@ export const FeeParams = () => { <ChainInfoCard title={t('CHAIN.FEEPARAMS.maxGasBatch')} - description={getDescription(chainData?.feeParams.maxL2GasPerBatch)} + description={getDescription(chainData?.feeParams.maxL2GasPerBatch, notAvailable)} isDataAvailable={!!chainData?.feeParams.maxL2GasPerBatch} icon='max' size={20} diff --git a/src/components/RPC.tsx b/src/components/RPC.tsx index bd5afd7..a61825d 100644 --- a/src/components/RPC.tsx +++ b/src/components/RPC.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; import { useTranslation } from 'next-i18next'; -import { Box, Typography, Tooltip, styled } from '@mui/material'; +import { Box, Typography, Tooltip, styled, Skeleton } from '@mui/material'; import { CheckCircle as CheckIcon, Cancel as CancelIcon } from '@mui/icons-material'; import { useData, useCustomTheme } from '~/hooks'; @@ -11,9 +11,11 @@ export const RPC = () => { const { t } = useTranslation(); const { chainData } = useData(); const [rpcData, setRpcData] = useState<{ url: string; status: boolean }[]>([]); + const [rpcIsLoading, setRpcIsLoading] = useState(true); useEffect(() => { const updateRpcStatuses = async () => { + setRpcIsLoading(true); if (!chainData?.metadata?.publicRpcs) return; const updatedRpcData = await Promise.all( @@ -24,6 +26,7 @@ export const RPC = () => { ); setRpcData(updatedRpcData); + setRpcIsLoading(false); }; updateRpcStatuses(); @@ -33,14 +36,23 @@ export const RPC = () => { <article> <STitle>{t('CHAIN.RPC.title')}</STitle> <DataContainer> - {rpcData.map((rpc, index) => ( - <RPCBox key={index}> - <Tooltip title={rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}> - {rpc.status ? <CheckIcon color='success' /> : <CancelIcon color='error' />} - </Tooltip> - <RPCUrl>{rpc.url}</RPCUrl> - </RPCBox> - ))} + {rpcIsLoading && + Array.from({ length: 4 }).map((_, index) => ( + <RPCBox key={index}> + <Skeleton variant='circular' width={20} height={20} /> + <Skeleton variant='text' width='100%' /> + </RPCBox> + ))} + + {!rpcIsLoading && + rpcData.map((rpc, index) => ( + <RPCBox key={index}> + <Tooltip title={rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}> + {rpc.status ? <CheckIcon color='success' /> : <CancelIcon color='error' />} + </Tooltip> + <RPCUrl>{rpc.url}</RPCUrl> + </RPCBox> + ))} </DataContainer> </article> ); diff --git a/src/utils/index.ts b/src/utils/index.ts index 17a902e..780019f 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -3,3 +3,4 @@ export * from './config'; export * from './format'; export * from './services'; export * from './addNetwork'; +export * from './misc'; diff --git a/src/utils/misc.ts b/src/utils/misc.ts new file mode 100644 index 0000000..e375d50 --- /dev/null +++ b/src/utils/misc.ts @@ -0,0 +1,18 @@ +import { formatDataNumber } from './format'; + +export const getDescription = (data: string | number | undefined, notAvailable: string) => { + if (data === undefined || data === null) { + return notAvailable; + } + + if (typeof data === 'number') { + return formatDataNumber(data); + } + + if (typeof data === 'string') { + return data; + } + + // Fallback: return notAvailable message + return notAvailable; +}; From 22cd2ac7b786db8be0a5fb5772c768bcb90559f0 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 22 Aug 2024 11:45:00 -0300 Subject: [PATCH 63/82] feat: improve web accessibility (#40) closes ZKS-143 --- src/assets/icons/checkDark.svg | 5 ++++ src/assets/icons/checkLight.svg | 5 ++++ src/assets/icons/errorDark.svg | 5 ++++ src/assets/icons/errorLight.svg | 5 ++++ src/components/Breadcrumb.tsx | 5 +++- src/components/ChainInfoCard.tsx | 14 +++++----- src/components/ChainInformation.tsx | 18 ++++++------- src/components/ChainTable.tsx | 41 +++++++++++++++++++++-------- src/components/EcosystemTitle.tsx | 2 +- src/components/FeeParams.tsx | 8 +++--- src/components/Gas.tsx | 4 +-- src/components/RPC.tsx | 16 +++++++---- src/components/SearchBar.tsx | 24 +++++++++++++++-- src/components/TVLTable.tsx | 11 +++++--- src/data/IconPaths.ts | 12 +++++++++ 15 files changed, 130 insertions(+), 45 deletions(-) create mode 100644 src/assets/icons/checkDark.svg create mode 100644 src/assets/icons/checkLight.svg create mode 100644 src/assets/icons/errorDark.svg create mode 100644 src/assets/icons/errorLight.svg diff --git a/src/assets/icons/checkDark.svg b/src/assets/icons/checkDark.svg new file mode 100644 index 0000000..eacbd90 --- /dev/null +++ b/src/assets/icons/checkDark.svg @@ -0,0 +1,5 @@ +<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<rect x="0.333252" width="20" height="20" rx="10" fill="#33FF99"/> +<rect x="0.833252" y="0.5" width="19" height="19" rx="9.5" stroke="#00CC66" stroke-opacity="0.05"/> +<path d="M6.16663 10.8334L7.95952 12.6262C8.35004 13.0168 8.98321 13.0168 9.37373 12.6262L15.3333 6.66669" stroke="#11141A" stroke-width="2"/> +</svg> diff --git a/src/assets/icons/checkLight.svg b/src/assets/icons/checkLight.svg new file mode 100644 index 0000000..f435e00 --- /dev/null +++ b/src/assets/icons/checkLight.svg @@ -0,0 +1,5 @@ +<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<rect x="0.333252" width="20" height="20" rx="10" fill="#00CC66"/> +<rect x="0.833252" y="0.5" width="19" height="19" rx="9.5" stroke="#00CC66" stroke-opacity="0.05"/> +<path d="M6.16663 10.8334L7.95952 12.6263C8.35004 13.0168 8.98321 13.0168 9.37373 12.6263L15.3333 6.66675" stroke="white" stroke-width="2"/> +</svg> diff --git a/src/assets/icons/errorDark.svg b/src/assets/icons/errorDark.svg new file mode 100644 index 0000000..a2dc158 --- /dev/null +++ b/src/assets/icons/errorDark.svg @@ -0,0 +1,5 @@ +<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<rect x="0.5" width="20" height="20" rx="10" fill="#FF6666"/> +<path d="M6.33337 5.83331L14.6667 14.1666" stroke="#11141A" stroke-width="2"/> +<path d="M14.6667 5.83331L6.33337 14.1666" stroke="#11141A" stroke-width="2"/> +</svg> diff --git a/src/assets/icons/errorLight.svg b/src/assets/icons/errorLight.svg new file mode 100644 index 0000000..e14a576 --- /dev/null +++ b/src/assets/icons/errorLight.svg @@ -0,0 +1,5 @@ +<svg width="21" height="20" viewBox="0 0 21 20" fill="none" xmlns="http://www.w3.org/2000/svg"> +<rect x="0.5" width="20" height="20" rx="10" fill="#CC0000"/> +<path d="M6.33337 5.83325L14.6667 14.1666" stroke="white" stroke-width="2"/> +<path d="M14.6667 5.83325L6.33337 14.1666" stroke="white" stroke-width="2"/> +</svg> diff --git a/src/components/Breadcrumb.tsx b/src/components/Breadcrumb.tsx index cb124f4..549c543 100644 --- a/src/components/Breadcrumb.tsx +++ b/src/components/Breadcrumb.tsx @@ -38,7 +38,10 @@ export const Breadcrumb = ({ isChain }: BreadcrumbProps) => { {breadcrumbItems.map(({ key, isLast, displayName, href }) => ( <BreadcrumbItem key={key}> - <ArrowIcon src={theme === 'dark' ? SmallArrowDark : SmallArrowLight} alt='arrow' /> + <ArrowIcon + src={theme === 'dark' ? SmallArrowDark : SmallArrowLight} + alt='Arrow icon indicating next breadcrumb' + /> {isLast ? ( <BreadcrumbCurrent aria-current='page'>{displayName}</BreadcrumbCurrent> ) : ( diff --git a/src/components/ChainInfoCard.tsx b/src/components/ChainInfoCard.tsx index fb1eb4f..eacd7db 100644 --- a/src/components/ChainInfoCard.tsx +++ b/src/components/ChainInfoCard.tsx @@ -14,16 +14,18 @@ interface ChainInfoCardProps { export const ChainInfoCard = ({ title, description, icon, size, alt, isDataAvailable }: ChainInfoCardProps) => { return ( - <StyledCard> + <StyledCard aria-labelledby={`title-${title}`} aria-describedby={`description-${title}`}> <CardContent> <LabelContainer> <Icon icon={icon} size={size} alt={alt} /> - <Label variant='subtitle1' color='textSecondary' gutterBottom> + <Label id={`title-${title}`} variant='subtitle1' color='textSecondary' gutterBottom> {title} </Label> </LabelContainer> - <Description isDataAvailable={isDataAvailable}>{description}</Description> + <Description id={`description-${title}`} available={isDataAvailable ? 'true' : 'false'}> + {description} + </Description> </CardContent> </StyledCard> ); @@ -60,14 +62,14 @@ const Label = styled(Typography)(() => { }; }); -const Description = styled(Typography)<{ isDataAvailable: boolean }>((props) => { +const Description = styled(Typography)(({ available }: { available: string }) => { const { currentTheme } = useCustomTheme(); return { - fontSize: props.isDataAvailable ? '1.5rem' : '1rem', + fontSize: available === 'true' ? '1.5rem' : '1rem', lineHeight: '2rem', fontWeight: 400, - color: props.isDataAvailable ? currentTheme.textPrimary : currentTheme.textSecondary, + color: available === 'true' ? currentTheme.textPrimary : currentTheme.textSecondary, marginTop: '0.5rem', }; }); diff --git a/src/components/ChainInformation.tsx b/src/components/ChainInformation.tsx index 8cf7b47..305d8d2 100644 --- a/src/components/ChainInformation.tsx +++ b/src/components/ChainInformation.tsx @@ -15,14 +15,14 @@ export const ChainInformation = () => { <STitle variant='h5' gutterBottom> {t('CHAIN.CHAININFORMATION.title')} </STitle> - <DataContainer> + <DataContainer role='region' aria-labelledby='chain-info'> <ChainInfoCard title={t('CHAIN.CHAININFORMATION.chainType')} description={getDescription(chainData?.chainType, notAvailable)} isDataAvailable={!!chainData?.chainType} icon='chainType' size={22} - alt='chain-type-icon' + alt='Icon representing a type of chain' /> <ChainInfoCard @@ -31,7 +31,7 @@ export const ChainInformation = () => { isDataAvailable={!!chainData?.l2ChainInfo?.lastBlock} icon='block' size={22} - alt='block-icon' + alt='Block icon representing the last block' /> <ChainInfoCard @@ -40,7 +40,7 @@ export const ChainInformation = () => { isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} icon='checkBlock' size={22} - alt='check-block-icon' + alt='Checked block icon indicating the last verified block' /> <ChainInfoCard @@ -49,7 +49,7 @@ export const ChainInformation = () => { isDataAvailable={!!chainData?.l2ChainInfo?.tps} icon='speed' size={22} - alt='speed-icon' + alt='Speed icon representing transactions per second' /> <ChainInfoCard @@ -58,7 +58,7 @@ export const ChainInformation = () => { isDataAvailable={!!chainData?.batchesInfo?.commited} icon='block' size={22} - alt='block' + alt='Block icon representing total batches committed' /> <ChainInfoCard @@ -67,7 +67,7 @@ export const ChainInformation = () => { isDataAvailable={!!chainData?.batchesInfo?.executed} icon='block' size={22} - alt='block' + alt='Block icon representing total batches executed' /> <ChainInfoCard @@ -76,7 +76,7 @@ export const ChainInformation = () => { isDataAvailable={!!chainData?.batchesInfo?.verified} icon='checkBlock' size={22} - alt='check-block' + alt='Checked block icon representing total batches verified' /> <ChainInfoCard @@ -85,7 +85,7 @@ export const ChainInformation = () => { isDataAvailable={!!chainData?.l2ChainInfo?.avgBlockTime} icon='speed' size={22} - alt='speed-icon' + alt='Speed icon representing average block time' /> </DataContainer> </article> diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index 3a56987..462b96d 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -36,11 +36,21 @@ export const ChainTable = ({ chains }: TableProps) => { {/* Table titles */} <STableHead> <STableRow> - <TableCellHeadFirst sx={{ width: '60%' }}>{t('HOME.DASHBOARD.chain')}</TableCellHeadFirst> - <STableCellHead sx={{ width: '10%' }}>{t('HOME.DASHBOARD.chainId')}</STableCellHead> - <STableCellHead sx={{ width: '10%' }}>{t('HOME.DASHBOARD.nativeToken')}</STableCellHead> - <STableCellHead sx={{ width: '10%' }}>{t('HOME.DASHBOARD.tvl')}</STableCellHead> - <STableCellHead sx={{ width: '10%' }}>{t('HOME.DASHBOARD.type')}</STableCellHead> + <TableCellHeadFirst sx={{ width: '60%' }} scope='col'> + {t('HOME.DASHBOARD.chain')} + </TableCellHeadFirst> + <STableCellHead sx={{ width: '10%' }} scope='col'> + {t('HOME.DASHBOARD.chainId')} + </STableCellHead> + <STableCellHead sx={{ width: '10%' }} scope='col'> + {t('HOME.DASHBOARD.nativeToken')} + </STableCellHead> + <STableCellHead sx={{ width: '10%' }} scope='col'> + {t('HOME.DASHBOARD.tvl')} + </STableCellHead> + <STableCellHead sx={{ width: '10%' }} scope='col'> + {t('HOME.DASHBOARD.type')} + </STableCellHead> </STableRow> </STableHead> @@ -48,17 +58,26 @@ export const ChainTable = ({ chains }: TableProps) => { <STableBody> {chains?.map((data, index) => { return ( - <STableBodyRow key={index} onClick={() => handleChainNavigation(data.chainId)}> + <STableBodyRow + key={index} + onClick={() => handleChainNavigation(data.chainId)} + onKeyDown={(event) => { + if (event.key === 'Enter' || event.key === ' ') { + handleChainNavigation(data.chainId); + } + }} + tabIndex={0} + role='button' // Indicate that the row is interactive + aria-label={`Navigate to ${data.metadata?.name || `ZK Chain ${data.chainId}`}`} + > {/* Chain Name with Logo and Tags */} <FirstCellWithLogo> - <ChainAvatar alt={`${data.chainId}`} src={data.metadata?.iconUrl} /> + <ChainAvatar alt={`${data.chainId} logo`} src={data.metadata?.iconUrl} /> <ChainName>{data.metadata?.name ? data.metadata.name : `ZK Chain ${data.chainId}`}</ChainName> <InfoTagsContainer> - {/* - TEMPORARY REMOVE RPC TAGS - {!data.rpc && <InfoTag information={t('HOME.DASHBOARD.noRPC')} />} - */} + {!data.rpc && <InfoTag information={t('HOME.DASHBOARD.noRPC')} />} + {data.metadata === undefined && <InfoTag information={t('HOME.DASHBOARD.noMetadata')} />} </InfoTagsContainer> </FirstCellWithLogo> diff --git a/src/components/EcosystemTitle.tsx b/src/components/EcosystemTitle.tsx index b6797b0..d196e11 100644 --- a/src/components/EcosystemTitle.tsx +++ b/src/components/EcosystemTitle.tsx @@ -12,7 +12,7 @@ export const EcosystemTitle = () => { return ( <TitleBox> - <Image src={theme === 'dark' ? ZkLogoDark : ZkLogoLight} alt='zkLogo' /> + <Image src={theme === 'dark' ? ZkLogoDark : ZkLogoLight} alt='ZKsync logo' /> <Title> <Bold>{t('HOME.title').slice(0, 2)}</Bold> {t('HOME.title').slice(2)} diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index 0999b8b..07c46b8 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -19,7 +19,7 @@ export const FeeParams = () => { isDataAvailable={!!chainData?.feeParams.batchOverheadL1Gas} icon='tag' size={20} - alt='tag-icon' + alt='Batch overhead gas tag icon' /> <ChainInfoCard @@ -28,7 +28,7 @@ export const FeeParams = () => { isDataAvailable={!!chainData?.feeParams.maxPubdataPerBatch} icon='block' size={20} - alt='block-icon' + alt='Maximum pubdata per batch block icon' /> <ChainInfoCard @@ -37,7 +37,7 @@ export const FeeParams = () => { isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} icon='checkBlock' size={20} - alt='check-block-icon' + alt='Last verified block check icon' /> <ChainInfoCard @@ -46,7 +46,7 @@ export const FeeParams = () => { isDataAvailable={!!chainData?.feeParams.maxL2GasPerBatch} icon='max' size={20} - alt='max-icon' + alt='Maximum gas per batch icon' /> </DataContainer> </article> diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index 96fab2d..a2844ed 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -9,11 +9,11 @@ export const Gas = () => { const { isEcosystemLoading, erc20USD, gasPriceInGwei } = useData(); return ( - <GasContainer> + <GasContainer aria-live='polite' aria-busy={isEcosystemLoading}> {isEcosystemLoading && <Skeleton variant='rectangular' width={175} height={50} sx={{ borderRadius: 4 }} />} {!isEcosystemLoading && ( <> - <Icon icon='gas' alt='gas-icon' size={24} /> + <Icon icon='gas' alt='Gas price icon' size={24} /> <Box> <SBox> <GasLabel>{t('HEADER.gasPrice')}:</GasLabel> diff --git a/src/components/RPC.tsx b/src/components/RPC.tsx index a61825d..2b76ccd 100644 --- a/src/components/RPC.tsx +++ b/src/components/RPC.tsx @@ -1,10 +1,9 @@ import { useState, useEffect } from 'react'; import { useTranslation } from 'next-i18next'; import { Box, Typography, Tooltip, styled, Skeleton } from '@mui/material'; -import { CheckCircle as CheckIcon, Cancel as CancelIcon } from '@mui/icons-material'; import { useData, useCustomTheme } from '~/hooks'; -import { DataContainer, STitle } from '~/components'; +import { DataContainer, STitle, Icon } from '~/components'; import { checkRpcStatus } from '~/utils'; export const RPC = () => { @@ -35,7 +34,7 @@ export const RPC = () => { return ( <article> <STitle>{t('CHAIN.RPC.title')}</STitle> - <DataContainer> + <DataContainer aria-live='polite' aria-busy={rpcIsLoading}> {rpcIsLoading && Array.from({ length: 4 }).map((_, index) => ( <RPCBox key={index}> @@ -46,9 +45,16 @@ export const RPC = () => { {!rpcIsLoading && rpcData.map((rpc, index) => ( - <RPCBox key={index}> + <RPCBox + key={index} + aria-label={`${rpc.url} - ${rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}`} + > <Tooltip title={rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}> - {rpc.status ? <CheckIcon color='success' /> : <CancelIcon color='error' />} + {rpc.status ? ( + <Icon icon='check' alt='Check icon representing active RPC' size={20} /> + ) : ( + <Icon icon='error' alt='Error icon representing inactive RPC' size={20} /> + )} </Tooltip> <RPCUrl>{rpc.url}</RPCUrl> </RPCBox> diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index 54927cf..ce8a34d 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -1,3 +1,4 @@ +import { useEffect, useCallback } from 'react'; import { useTranslation } from 'next-i18next'; import { styled, TextField, InputAdornment, Box } from '@mui/material'; @@ -14,6 +15,24 @@ export const SearchBar = () => { setSearchTerm(value); }; + const closeSearchHandler = useCallback(() => { + closeSearch(); + }, [closeSearch]); + + useEffect(() => { + const handleKeyDown = (event: KeyboardEvent) => { + if (event.key === 'Escape' && isSearch) { + closeSearchHandler(); // Call closeSearch when Esc is pressed + } + }; + + document.addEventListener('keydown', handleKeyDown); + + return () => { + document.removeEventListener('keydown', handleKeyDown); + }; + }, [isSearch, closeSearchHandler]); + return ( <SearchContainer> <StyledTextField @@ -22,17 +41,18 @@ export const SearchBar = () => { onChange={handleChange} placeholder={t('HOME.DASHBOARD.search')} onClick={navigateToSearch} + aria-label={t('HOME.DASHBOARD.search')} InputProps={{ startAdornment: ( <InputAdornment position='start'> - <Icon icon='search' alt='search-icon' size={24} /> + <Icon icon='search' alt='Search icon' size={24} /> </InputAdornment> ), }} /> {isSearch && ( <SIconButton onClick={closeSearch} aria-label='close-search'> - <Icon icon='close' alt='close-icon' size={24} /> + <Icon icon='close' alt='Close search icon' size={24} /> </SIconButton> )} </SearchContainer> diff --git a/src/components/TVLTable.tsx b/src/components/TVLTable.tsx index 33b449a..1d53d94 100644 --- a/src/components/TVLTable.tsx +++ b/src/components/TVLTable.tsx @@ -21,6 +21,7 @@ export const TVLTable = () => { const { t } = useTranslation(); const { chainData } = useData(); const tvl = chainData?.tvl || []; + return ( <article> <STitle>{t('CHAIN.TVL.title')}</STitle> @@ -28,9 +29,10 @@ export const TVLTable = () => { <Table> <STableHead> <STableRow> - <TableCellHeadFirst>{t('CHAIN.TVL.token')}</TableCellHeadFirst> - <STableCellHead>{t('CHAIN.TVL.price')}</STableCellHead> - <STableCellHead>{t('CHAIN.TVL.tvl')}</STableCellHead> + <TableCellHeadFirst scope='col'>{t('CHAIN.TVL.token')}</TableCellHeadFirst> + + <STableCellHead scope='col'>{t('CHAIN.TVL.price')}</STableCellHead> + <STableCellHead scope='col'>{t('CHAIN.TVL.tvl')}</STableCellHead> </STableRow> </STableHead> @@ -38,13 +40,14 @@ export const TVLTable = () => { {tvl .sort((a, b) => parseFloat(b.amountUsd) - parseFloat(a.amountUsd)) .map((token, index) => ( - <STableBodyRow key={index}> + <STableBodyRow key={index} tabIndex={0} role='row' aria-label={`${token.name} (${token.symbol})`}> <FirstCellWithLogo> <TokenAvatar alt={token.name} src={token.imageUrl} /> <Typography> {token.name} ({token.symbol}) </Typography> </FirstCellWithLogo> + <STableCell>{formatDataNumber(token.price, 0, true)}</STableCell> <STableCell>{formatDataNumber(token.amountUsd, 0, true)}</STableCell> </STableBodyRow> diff --git a/src/data/IconPaths.ts b/src/data/IconPaths.ts index 5a3fe05..badca22 100644 --- a/src/data/IconPaths.ts +++ b/src/data/IconPaths.ts @@ -41,6 +41,10 @@ import SmallArrowLight from '~/assets/icons/smallArrowLight.svg'; import ArrowDownDark from '~/assets/icons/arrowDownDark.svg'; import ArrowDownLight from '~/assets/icons/arrowDownLight.svg'; import Add from '~/assets/icons/add.svg'; +import CheckDark from '~/assets/icons/checkDark.svg'; +import CheckLight from '~/assets/icons/checkLight.svg'; +import ErrorDark from '~/assets/icons/errorDark.svg'; +import ErrorLight from '~/assets/icons/errorLight.svg'; export const iconPaths: IconPaths = { block: { @@ -127,4 +131,12 @@ export const iconPaths: IconPaths = { dark: Add, light: Add, }, + check: { + dark: CheckDark, + light: CheckLight, + }, + error: { + dark: ErrorDark, + light: ErrorLight, + }, } as const; From 26706209c9b81564f776c0bf164926d425318cf5 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 26 Aug 2024 09:44:15 -0300 Subject: [PATCH 64/82] feat: add contract | notAvailable info (#42) closes ZKS-218 --- public/locales/en/common.json | 3 ++- public/locales/es/common.json | 3 ++- src/components/ChainTable.tsx | 28 +++++++++++++++++++++++--- src/components/TVLTable.tsx | 29 ++++++++++++++++++++++++--- src/containers/Tokens/TokensTable.tsx | 28 ++++++++++++++++++++------ src/types/Data.ts | 9 +-------- 6 files changed, 78 insertions(+), 22 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index ef7e18c..ece9281 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -57,7 +57,8 @@ "chain": "Chain", "token": "Token", "price": "Price", - "tvl": "TVL" + "tvl": "TVL", + "address": "Contract Address" }, "RPC": { "title": "RPC", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 91c16c2..a7b032e 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -58,7 +58,8 @@ "chain": "Cadena", "price": "Precio", "token": "Token", - "tvl": "TVL" + "tvl": "TVL", + "address": "Direcciรณn del contrato" }, "RPC": { "title": "RPC", diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index 462b96d..d62a4b6 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -11,6 +11,7 @@ import { Typography, Avatar, Box, + Link, } from '@mui/material'; import { EcosystemChainData } from '~/types'; @@ -39,15 +40,15 @@ export const ChainTable = ({ chains }: TableProps) => { <TableCellHeadFirst sx={{ width: '60%' }} scope='col'> {t('HOME.DASHBOARD.chain')} </TableCellHeadFirst> - <STableCellHead sx={{ width: '10%' }} scope='col'> - {t('HOME.DASHBOARD.chainId')} - </STableCellHead> <STableCellHead sx={{ width: '10%' }} scope='col'> {t('HOME.DASHBOARD.nativeToken')} </STableCellHead> <STableCellHead sx={{ width: '10%' }} scope='col'> {t('HOME.DASHBOARD.tvl')} </STableCellHead> + <STableCellHead sx={{ width: '10%' }} scope='col'> + {t('HOME.DASHBOARD.chainId')} + </STableCellHead> <STableCellHead sx={{ width: '10%' }} scope='col'> {t('HOME.DASHBOARD.type')} </STableCellHead> @@ -230,6 +231,16 @@ export const LogoCell = styled(Box)(() => { }; }); +export const ContractCell = styled(Link)(() => { + const { currentTheme } = useCustomTheme(); + return { + display: 'flex', + alignItems: 'center', + gap: currentTheme.gap, + color: currentTheme.textPrimary, + }; +}); + export const ChainAvatar = styled(Avatar)(() => { return { width: '2rem', @@ -258,6 +269,17 @@ export const ChainName = styled(Typography)(({ theme }) => { }; }); +export const NotAvailable = styled(Typography)(({ theme }) => { + const { currentTheme } = useCustomTheme(); + return { + fontSize: '1rem', + color: currentTheme.textSecondary, + [theme.breakpoints.down('md')]: { + fontSize: '0.875rem', + }, + }; +}); + export const InfoTagsContainer = styled(Box)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { diff --git a/src/components/TVLTable.tsx b/src/components/TVLTable.tsx index 1d53d94..861b495 100644 --- a/src/components/TVLTable.tsx +++ b/src/components/TVLTable.tsx @@ -14,8 +14,11 @@ import { STitle, STableBodyRow, TableCellHeadFirst, + ContractCell, + Icon, + NotAvailable, } from '~/components'; -import { formatDataNumber } from '~/utils'; +import { formatDataNumber, truncateAddress } from '~/utils'; export const TVLTable = () => { const { t } = useTranslation(); @@ -31,6 +34,7 @@ export const TVLTable = () => { <STableRow> <TableCellHeadFirst scope='col'>{t('CHAIN.TVL.token')}</TableCellHeadFirst> + <STableCellHead scope='col'>{t('CHAIN.TVL.address')}</STableCellHead> <STableCellHead scope='col'>{t('CHAIN.TVL.price')}</STableCellHead> <STableCellHead scope='col'>{t('CHAIN.TVL.tvl')}</STableCellHead> </STableRow> @@ -48,8 +52,27 @@ export const TVLTable = () => { </Typography> </FirstCellWithLogo> - <STableCell>{formatDataNumber(token.price, 0, true)}</STableCell> - <STableCell>{formatDataNumber(token.amountUsd, 0, true)}</STableCell> + <STableCell> + {token.contractAddress && ( + <ContractCell href={`https://etherscan.io/address/${token.contractAddress}`} target='_blank'> + <Typography> {truncateAddress(token.contractAddress || '')}</Typography> + <Icon icon='link' size={20} alt='Icon of a link to redirect to contract address on explorer' /> + </ContractCell> + )} + + {!token.contractAddress && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} + </STableCell> + + <STableCell> + {token.price && <Typography>{formatDataNumber(token.price, 0, true)}</Typography>} + + {!token.price && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} + </STableCell> + + <STableCell> + {token.amountUsd && <Typography>{formatDataNumber(token.amountUsd, 0, true)}</Typography>} + {!token.amountUsd && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} + </STableCell> </STableBodyRow> ))} </STableBody> diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index fc8c74e..b2e5a36 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -14,8 +14,9 @@ import { STableBodyRow, FirstCellWithLogo, TableCellHeadFirst, + NotAvailable, } from '~/components'; -import { formatDataNumber } from '~/utils'; +import { formatDataNumber, truncateAddress } from '~/utils'; export const TokensTable = ({ tvl }: TotalValueLockedProps) => { const { t } = useTranslation(); @@ -27,9 +28,11 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { <Table> <STableHead> <STableRow> - <TableCellHeadFirst sx={{ width: '40%' }}>{t('CHAIN.TVL.token')}</TableCellHeadFirst> - <STableCellHead sx={{ width: '30%' }}>{t('CHAIN.TVL.price')}</STableCellHead> - <STableCellHead sx={{ width: '30%' }}>{t('CHAIN.TVL.tvl')}</STableCellHead> + <TableCellHeadFirst>{t('CHAIN.TVL.token')}</TableCellHeadFirst> + + <STableCellHead scope='col'>{t('CHAIN.TVL.address')}</STableCellHead> + <STableCellHead>{t('CHAIN.TVL.price')}</STableCellHead> + <STableCellHead>{t('CHAIN.TVL.tvl')}</STableCellHead> </STableRow> </STableHead> @@ -44,8 +47,21 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { {token.name} ({token.symbol}) </Typography> </FirstCellWithLogo> - <STableCell sx={{ width: '30%' }}>{formatDataNumber(token.price, 0, true)}</STableCell> - <STableCell sx={{ width: '30%' }}>{formatDataNumber(token.amountUsd, 0, true)}</STableCell> + + <STableCell> + {token.contractAddress && <Typography>{truncateAddress(token.contractAddress || '')}</Typography>} + {!token.contractAddress && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} + </STableCell> + + <STableCell> + {token.price && formatDataNumber(token.price, 0, true)} + {!token.price && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} + </STableCell> + + <STableCell> + {token.amountUsd && formatDataNumber(token.amountUsd, 0, true)} + {!token.amountUsd && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} + </STableCell> </STableBodyRow> ))} </STableBody> diff --git a/src/types/Data.ts b/src/types/Data.ts index 5fb18e5..80a7353 100644 --- a/src/types/Data.ts +++ b/src/types/Data.ts @@ -9,7 +9,7 @@ export interface ChainData { imageUrl: string; decimals: number; }; - tvl: ChainTvl[]; + tvl: TvlData[]; batchesInfo: { commited: string; verified: string; @@ -85,13 +85,6 @@ export interface TvlData { decimals: number; } -export interface ChainTvl { - symbol: string; - name: string; - amountUsd: string; - imageUrl: string; - price: string; -} export interface TotalValueLockedProps { tvl: TvlData[]; } From e56030d1646a6509711e470efbfa620ccc9872f0 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 26 Aug 2024 10:29:14 -0300 Subject: [PATCH 65/82] feat: show more rpc urls (#41) closes ZKS-217 --- public/locales/en/common.json | 7 +- public/locales/es/common.json | 7 +- src/components/RPC.tsx | 125 ++++++++++++++++++++++++++++++---- src/data/chainMockData.json | 8 ++- 4 files changed, 129 insertions(+), 18 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index ece9281..dbf5674 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -61,10 +61,13 @@ "address": "Contract Address" }, "RPC": { - "title": "RPC", + "title": "RPCs", + "subtitle": "Statuses", "status": "Status", "statusActive": "Active", - "statusInactive": "Inactive" + "statusInactive": "Inactive", + "showMore": "Show more", + "showLess": "Show less" }, "FEEPARAMS": { "title": "Fee params", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index a7b032e..ed7f1f1 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -62,10 +62,13 @@ "address": "Direcciรณn del contrato" }, "RPC": { - "title": "RPC", + "title": "RPCs", + "subtitle": "Estados", "status": "Estado", "statusActive": "Activo", - "statusInactive": "Inactivo" + "statusInactive": "Inactivo", + "showMore": "Mostrar mรกs", + "showLess": "Mostrar menos" }, "FEEPARAMS": { "title": "Parรกmetros de gas", diff --git a/src/components/RPC.tsx b/src/components/RPC.tsx index 2b76ccd..96a52b2 100644 --- a/src/components/RPC.tsx +++ b/src/components/RPC.tsx @@ -1,9 +1,9 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useMemo } from 'react'; import { useTranslation } from 'next-i18next'; -import { Box, Typography, Tooltip, styled, Skeleton } from '@mui/material'; +import { Box, Typography, Tooltip, styled, Skeleton, Button } from '@mui/material'; import { useData, useCustomTheme } from '~/hooks'; -import { DataContainer, STitle, Icon } from '~/components'; +import { DataContainer, STitle, Icon, NotAvailable } from '~/components'; import { checkRpcStatus } from '~/utils'; export const RPC = () => { @@ -11,6 +11,7 @@ export const RPC = () => { const { chainData } = useData(); const [rpcData, setRpcData] = useState<{ url: string; status: boolean }[]>([]); const [rpcIsLoading, setRpcIsLoading] = useState(true); + const [showAll, setShowAll] = useState(false); useEffect(() => { const updateRpcStatuses = async () => { @@ -31,9 +32,21 @@ export const RPC = () => { updateRpcStatuses(); }, [chainData]); + const visibleRpcData = useMemo(() => { + return showAll ? rpcData : rpcData.slice(0, 4); + }, [showAll, rpcData]); + + const showMoreButton = useMemo(() => { + return rpcData.length > 4 && !rpcIsLoading; + }, [rpcData, rpcIsLoading]); + return ( <article> - <STitle>{t('CHAIN.RPC.title')}</STitle> + <RPCTitle> + <STitle>{t('CHAIN.RPC.title')}</STitle> + <Subtitle>{t('CHAIN.RPC.subtitle')}</Subtitle> + </RPCTitle> + <DataContainer aria-live='polite' aria-busy={rpcIsLoading}> {rpcIsLoading && Array.from({ length: 4 }).map((_, index) => ( @@ -44,26 +57,66 @@ export const RPC = () => { ))} {!rpcIsLoading && - rpcData.map((rpc, index) => ( + visibleRpcData.map((rpc, index) => ( <RPCBox key={index} aria-label={`${rpc.url} - ${rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}`} > - <Tooltip title={rpc.status ? t('CHAIN.RPC.statusActive') : t('CHAIN.RPC.statusInactive')}> - {rpc.status ? ( - <Icon icon='check' alt='Check icon representing active RPC' size={20} /> - ) : ( - <Icon icon='error' alt='Error icon representing inactive RPC' size={20} /> - )} - </Tooltip> + {rpc.status && ( + <Tooltip title={t('CHAIN.RPC.statusActive')}> + <RPCIcon hidden={false}> + <Icon icon='check' alt='Check icon representing active RPC' size={20} /> + </RPCIcon> + </Tooltip> + )} + + {!rpc.status && ( + <Tooltip title={t('CHAIN.RPC.statusInactive')}> + <RPCIcon hidden={false}> + <Icon icon='error' alt='Error icon representing inactive RPC' size={20} /> + </RPCIcon> + </Tooltip> + )} + <RPCUrl>{rpc.url}</RPCUrl> </RPCBox> ))} + + {!rpcIsLoading && rpcData.length === 0 && ( + <RPCBox> + <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable> + </RPCBox> + )} </DataContainer> + + {showMoreButton && ( + <RPCButtonContainer> + <RPCButton onClick={() => setShowAll(!showAll)}> + {showAll && t('CHAIN.RPC.showLess')} + + {!showAll && t('CHAIN.RPC.showMore')} + </RPCButton> + </RPCButtonContainer> + )} </article> ); }; +const RPCTitle = styled(Box)(() => { + return { + display: 'flex', + gap: '0.625rem', + alignItems: 'baseline', + }; +}); + +const Subtitle = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textSecondary, + }; +}); + const RPCBox = styled(Box)(() => { const { currentTheme } = useCustomTheme(); return { @@ -75,10 +128,56 @@ const RPCBox = styled(Box)(() => { }; }); -const RPCUrl = styled(Typography)(() => { +const RPCIcon = styled(Box)(() => { + return { + display: 'flex', + alignItems: 'center', + }; +}); + +const RPCUrl = styled(Typography)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { textDecoration: 'underline', textUnderlineOffset: currentTheme.gap, + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + maxWidth: '15rem', + [theme.breakpoints.down('md')]: { + maxWidth: '25rem', + }, + }; +}); + +const RPCButtonContainer = styled(Box)(() => { + return { + display: 'flex', + justifyContent: 'center', + marginTop: '1rem', + }; +}); + +const RPCButton = styled(Button)(() => { + const { currentTheme, theme } = useCustomTheme(); + + return { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + background: theme === 'dark' ? currentTheme.backgroundSecondary : currentTheme.backgroundTertiary, + borderRadius: currentTheme.borderRadius, + padding: '0.5rem 1rem', + color: currentTheme.textPrimary, + boxShadow: 'none', + textTransform: 'none', + fontSize: '1rem', + gap: '0.5rem', + lineHeight: '1.5rem', + textDecoration: 'none', + '&:hover': { + background: theme === 'dark' ? currentTheme.neutral[800] : currentTheme.neutral[300], + boxShadow: 'none', + }, }; }); diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json index 02284f4..1d3e857 100644 --- a/src/data/chainMockData.json +++ b/src/data/chainMockData.json @@ -561,7 +561,13 @@ "metadata": { "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", "name": "ZKsyncERA", - "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], + "publicRpcs": [ + "https://mainnet.era.zksync.io", + "https://zksync.drpc.org", + "https://zksync.meowrpc.com", + "https://invalidRpc.com", + "https://extraRpc.com" + ], "explorerUrl": "https://explorer.zksync.io/", "launchDate": 1679626800 } From d420d8ec02370797fe31f77dd7b8e5a941d9944b Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Thu, 29 Aug 2024 20:37:47 -0300 Subject: [PATCH 66/82] test: unit tests (#43) closes ZKS-216 --- jest.config.ts | 1 + jest.setup.ts | 3 + src/__tests__/format.test.ts | 41 +++++++++++ src/__tests__/misc.test.ts | 36 +++++++++ src/__tests__/services.test.ts | 131 +++++++++++++++++++++++++++++++++ src/__tests__/utils.test.ts | 9 --- src/config/env.ts | 4 +- src/utils/services.ts | 31 ++++++-- tsconfig.json | 2 +- 9 files changed, 240 insertions(+), 18 deletions(-) create mode 100644 jest.setup.ts create mode 100644 src/__tests__/format.test.ts create mode 100644 src/__tests__/misc.test.ts create mode 100644 src/__tests__/services.test.ts delete mode 100644 src/__tests__/utils.test.ts diff --git a/jest.config.ts b/jest.config.ts index 79f4a16..b056554 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -10,6 +10,7 @@ const createJestConfig = nextJest({ const config: Config = { coverageProvider: 'v8', testEnvironment: 'jsdom', + setupFiles: ['./jest.setup.ts'], }; // createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async diff --git a/jest.setup.ts b/jest.setup.ts new file mode 100644 index 0000000..7c97c03 --- /dev/null +++ b/jest.setup.ts @@ -0,0 +1,3 @@ +import { TextEncoder, TextDecoder } from 'util'; + +Object.assign(global, { TextDecoder, TextEncoder }); diff --git a/src/__tests__/format.test.ts b/src/__tests__/format.test.ts new file mode 100644 index 0000000..d2fab43 --- /dev/null +++ b/src/__tests__/format.test.ts @@ -0,0 +1,41 @@ +import { expect } from '@jest/globals'; + +import { truncateAddress, formatTimestampToDate, formatDataNumber, calculateUSDGas } from '~/utils/format'; + +describe('truncateAddress', () => { + it('should truncate the address correctly', () => { + const address = '0x1234567890abcdef1234567890abcdef12345678'; + expect(truncateAddress(address)).toBe('0x1234...5678'); + }); +}); + +describe('formatTimestampToDate', () => { + it('should format the timestamp to date correctly', () => { + const timestamp = 1627580800; // July 29, 2021 + expect(formatTimestampToDate(timestamp)).toBe('7/29/2021'); // The format may vary based on locale + }); +}); + +describe('formatDataNumber', () => { + it('should format a number correctly', () => { + expect(formatDataNumber(1234.567)).toBe('1,234.567'); + expect(formatDataNumber(0.0001234, 6)).toBe('0.000123'); + expect(formatDataNumber(1000000, 2, true)).toBe('$1,000,000.00'); + expect(formatDataNumber(1234567890, 3, false, true)).toBe('1.235B'); + }); + + it('should return 0 for invalid or zero input', () => { + expect(formatDataNumber('not a number')).toBe('0'); + expect(formatDataNumber(0, 2, true)).toBe('$0'); + }); +}); + +describe('calculateUSDGas', () => { + it('should calculate the USD value of gas correctly', () => { + const txGas = BigInt(21000); + const gasPriceInWei = BigInt(1000000000); // 1 Gwei + const etherPrice = 2000; // $2000 per ETH + + expect(calculateUSDGas(txGas, gasPriceInWei, etherPrice)).toBe(0.04); // 21000 * 1 Gwei * 2000 / 1e18 + }); +}); diff --git a/src/__tests__/misc.test.ts b/src/__tests__/misc.test.ts new file mode 100644 index 0000000..5024aac --- /dev/null +++ b/src/__tests__/misc.test.ts @@ -0,0 +1,36 @@ +import { expect } from '@jest/globals'; + +import { getDescription } from '~/utils/misc'; +import { formatDataNumber } from '~/utils'; + +jest.mock('../utils', () => ({ + formatDataNumber: jest.fn(), +})); + +describe('getDescription', () => { + const notAvailable = 'N/A'; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should return the notAvailable string if data is undefined', () => { + const result = getDescription(undefined, notAvailable); + expect(result).toBe(notAvailable); + }); + + it('should return the formatted number if data is a number', () => { + const numberData = 12345; + (formatDataNumber as jest.Mock).mockReturnValue('12,345'); + + const result = getDescription(numberData, notAvailable); + expect(result).toBe('12,345'); + }); + + it('should return the string as is if data is a string', () => { + const stringData = 'Some description'; + + const result = getDescription(stringData, notAvailable); + expect(result).toBe(stringData); + }); +}); diff --git a/src/__tests__/services.test.ts b/src/__tests__/services.test.ts new file mode 100644 index 0000000..4a342c2 --- /dev/null +++ b/src/__tests__/services.test.ts @@ -0,0 +1,131 @@ +import { expect } from '@jest/globals'; +import { fetchEcosystemData, fetchChainData, checkRpcStatus } from '~/utils/services'; +import ecosystemMockData from '~/data/ecosystemMockData.json'; +import chainMockData from '~/data/chainMockData.json'; +import { getConfig } from '~/config/'; + +global.fetch = jest.fn(); + +jest.mock('../config', () => ({ + getConfig: jest.fn(), +})); + +const mockApiUrl = 'http://mock-api-url.com'; + +describe('Data Fetching Utils', () => { + beforeEach(() => { + jest.clearAllMocks(); + (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); + }); + + describe('fetchEcosystemData', () => { + it('should return mock data if API_URL is not set', async () => { + (getConfig as jest.Mock).mockReturnValue({ API_URL: '' }); + + const result = await fetchEcosystemData(); + expect(result).toEqual(ecosystemMockData); + }); + + it('should fetch data from the API if API_URL is set', async () => { + (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); + const mockResponse = { some: 'data' }; + (fetch as jest.Mock).mockResolvedValueOnce({ + ok: true, + json: jest.fn().mockResolvedValue(mockResponse), + }); + + const result = await fetchEcosystemData(); + expect(fetch).toHaveBeenCalledTimes(1); + expect(fetch).toHaveBeenCalledWith(`${mockApiUrl}/metrics/ecosystem`); + expect(result).toEqual(mockResponse); + }); + + it('should throw an error if fetch fails', async () => { + (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); + (fetch as jest.Mock).mockRejectedValueOnce(new Error('Fetch failed')); + + await expect(fetchEcosystemData()).rejects.toThrow('Fetch failed'); + expect(fetch).toHaveBeenCalledTimes(1); + }); + }); + + describe('fetchChainData', () => { + const chainId = '1234'; + + it('should return mock data if API_URL is not set', async () => { + (getConfig as jest.Mock).mockReturnValue({ API_URL: '' }); + + const result = await fetchChainData(chainId); + expect(result).toEqual(chainMockData); + }); + + it('should fetch chain data from the API if API_URL is set', async () => { + (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); + const mockResponse = { chain: 'data' }; + (fetch as jest.Mock).mockResolvedValueOnce({ + ok: true, + json: jest.fn().mockResolvedValue(mockResponse), + }); + + const result = await fetchChainData(chainId); + expect(fetch).toHaveBeenCalledTimes(1); + expect(fetch).toHaveBeenCalledWith(`${mockApiUrl}/metrics/zkchain/${chainId}`); + expect(result).toEqual(mockResponse); + }); + + it('should throw an error if fetch fails', async () => { + (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); + (fetch as jest.Mock).mockRejectedValueOnce(new Error('Fetch failed')); + + await expect(fetchChainData(chainId)).rejects.toThrow('Fetch failed'); + expect(fetch).toHaveBeenCalledTimes(1); + }); + }); + + describe('checkRpcStatus', () => { + const rpcUrl = 'http://mock-rpc-url.com'; + const rpcRequestBody = { + jsonrpc: '2.0', + id: 1, + method: 'web3_clientVersion', + params: [], + }; + + it('should return true for a successful RPC status check', async () => { + const mockResponse = { result: 'clientVersion' }; + (fetch as jest.Mock).mockResolvedValueOnce({ + ok: true, + json: jest.fn().mockResolvedValue(mockResponse), + }); + + const result = await checkRpcStatus(rpcUrl); + expect(fetch).toHaveBeenCalledTimes(1); + expect(fetch).toHaveBeenCalledWith(rpcUrl, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(rpcRequestBody), + }); + expect(result).toBe(true); + }); + + it('should return false for a failed RPC status check', async () => { + (fetch as jest.Mock).mockRejectedValueOnce(new Error('RPC failed')); + + const result = await checkRpcStatus(rpcUrl); + expect(fetch).toHaveBeenCalledTimes(1); + expect(result).toBe(false); + }); + + it('should return false if the RPC response is invalid', async () => { + const mockResponse = { result: null }; // Invalid result + (fetch as jest.Mock).mockResolvedValueOnce({ + ok: true, + json: jest.fn().mockResolvedValue(mockResponse), + }); + + const result = await checkRpcStatus(rpcUrl); + expect(fetch).toHaveBeenCalledTimes(1); + expect(result).toBe(false); + }); + }); +}); diff --git a/src/__tests__/utils.test.ts b/src/__tests__/utils.test.ts deleted file mode 100644 index 7ecc33d..0000000 --- a/src/__tests__/utils.test.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { expect } from '@jest/globals'; -import { truncateAddress } from '../utils/format'; - -describe('truncateAddress', () => { - it('should correctly truncate a long wallet address', () => { - const address = '0x1234567890abcdef1234567890abcdef12345678'; - expect(truncateAddress(address)).toBe('0x1234...5678'); - }); -}); diff --git a/src/config/env.ts b/src/config/env.ts index a9ee227..96ac67d 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -2,10 +2,10 @@ import { Env } from '~/types'; export const getEnv = (): Env => { const NEXT_PUBLIC_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; - const NEXT_PUBLIC_API_URL = process.env.NEXT_PUBLIC_API_BASE_URL; + const NEXT_PUBLIC_API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL; return { PROJECT_ID: NEXT_PUBLIC_PROJECT_ID as string, - API_URL: NEXT_PUBLIC_API_URL as string, + API_URL: NEXT_PUBLIC_API_BASE_URL as string, }; }; diff --git a/src/utils/services.ts b/src/utils/services.ts index 8c78347..f542264 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -3,9 +3,16 @@ import ecosystemMockData from '~/data/ecosystemMockData.json'; import chainMockData from '~/data/chainMockData.json'; import { ChainData, EcosystemData } from '~/types'; -const { API_URL } = getConfig(); +/** + * Fetch data from the API or return mock data if API_URL is not set. + * @param endpoint - The API endpoint to fetch data from. + * @param mockData - The mock data to return if API_URL is not set. + * @returns The fetched data or mock data. + */ +const fetchData = async (endpoint: string, mockData: EcosystemData | ChainData) => { + const { API_URL } = getConfig(); + const url = `${API_URL}${endpoint}`; -const fetchData = async (url: string, mockData: EcosystemData | ChainData) => { if (!API_URL) return mockData; try { @@ -18,16 +25,28 @@ const fetchData = async (url: string, mockData: EcosystemData | ChainData) => { } }; +/** + * Fetch ecosystem data from the API or return mock data. + * @returns The ecosystem data. + */ export const fetchEcosystemData = async () => { - const url = `${API_URL}/metrics/ecosystem`; - return fetchData(url, ecosystemMockData); + return fetchData('/metrics/ecosystem', ecosystemMockData); }; +/** + * Fetch chain data from the API or return mock data. + * @param chainId - The ID of the chain to fetch data for. + * @returns The chain data. + */ export const fetchChainData = async (chainId: string) => { - const url = `${API_URL}/metrics/zkchain/${chainId}`; - return fetchData(url, chainMockData); + return fetchData(`/metrics/zkchain/${chainId}`, chainMockData); }; +/** + * Check the RPC status by sending a request to the RPC URL. + * @param rpcUrl - The URL of the RPC endpoint. + * @returns True if the RPC is available, false otherwise. + */ export const checkRpcStatus = async (rpcUrl: string): Promise<boolean> => { try { const response = await fetch(rpcUrl, { diff --git a/tsconfig.json b/tsconfig.json index 91e94bf..9562f00 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,7 +21,7 @@ "incremental": true, "plugins": [{ "name": "next" }], "baseUrl": ".", - "types": ["cypress"], + "types": ["cypress", "jest", "node"], "paths": { "~/*": ["src/*"] } From 2668c65b0f7c32b4d602b82953db191c123864b5 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 30 Aug 2024 10:52:13 -0300 Subject: [PATCH 67/82] fix: handle undefined data from backend (#47) --- src/components/Breadcrumb.tsx | 1 + src/components/ChainInfoCard.tsx | 2 +- src/components/ChainTable.tsx | 6 ++-- src/components/Gas.tsx | 4 +-- src/components/TVLGraph/DesktopTVLGraph.tsx | 4 +-- src/components/TVLGraph/MobileTVLGraph.tsx | 4 +-- src/components/TVLGraph/TokenInfo.tsx | 30 +++++++++---------- src/components/TVLGraph/index.tsx | 13 +++++---- src/components/TVLTable.tsx | 6 +++- src/containers/Footer/index.tsx | 32 ++------------------- src/containers/Tokens/TokensTable.tsx | 6 +++- 11 files changed, 45 insertions(+), 63 deletions(-) diff --git a/src/components/Breadcrumb.tsx b/src/components/Breadcrumb.tsx index 549c543..c4862a5 100644 --- a/src/components/Breadcrumb.tsx +++ b/src/components/Breadcrumb.tsx @@ -81,6 +81,7 @@ const BreadcrumbItem = styled('span')({ const ArrowIcon = styled(Image)({ width: '1.25rem', + height: '0.75rem', }); const BreadcrumbCurrent = styled(Typography)(() => { diff --git a/src/components/ChainInfoCard.tsx b/src/components/ChainInfoCard.tsx index eacd7db..290f1a0 100644 --- a/src/components/ChainInfoCard.tsx +++ b/src/components/ChainInfoCard.tsx @@ -23,7 +23,7 @@ export const ChainInfoCard = ({ title, description, icon, size, alt, isDataAvail </Label> </LabelContainer> - <Description id={`description-${title}`} available={isDataAvailable ? 'true' : 'false'}> + <Description id={`description-${title}`} available={isDataAvailable?.toString()}> {description} </Description> </CardContent> diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index d62a4b6..35e06bf 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -41,13 +41,13 @@ export const ChainTable = ({ chains }: TableProps) => { {t('HOME.DASHBOARD.chain')} </TableCellHeadFirst> <STableCellHead sx={{ width: '10%' }} scope='col'> - {t('HOME.DASHBOARD.nativeToken')} + {t('HOME.DASHBOARD.chainId')} </STableCellHead> <STableCellHead sx={{ width: '10%' }} scope='col'> - {t('HOME.DASHBOARD.tvl')} + {t('HOME.DASHBOARD.nativeToken')} </STableCellHead> <STableCellHead sx={{ width: '10%' }} scope='col'> - {t('HOME.DASHBOARD.chainId')} + {t('HOME.DASHBOARD.tvl')} </STableCellHead> <STableCellHead sx={{ width: '10%' }} scope='col'> {t('HOME.DASHBOARD.type')} diff --git a/src/components/Gas.tsx b/src/components/Gas.tsx index a2844ed..fd1ff17 100644 --- a/src/components/Gas.tsx +++ b/src/components/Gas.tsx @@ -17,11 +17,11 @@ export const Gas = () => { <Box> <SBox> <GasLabel>{t('HEADER.gasPrice')}:</GasLabel> - <GasValueText>{gasPriceInGwei} gwei</GasValueText> + <GasValueText>{gasPriceInGwei ? `${gasPriceInGwei} gwei` : '-'} </GasValueText> </SBox> <SBox> <GasLabel>{t('HEADER.transfer')}:</GasLabel> - <GasValueText>$ {erc20USD}</GasValueText> + <GasValueText>{erc20USD ? `$ ${erc20USD}` : '-'}</GasValueText> </SBox> </Box> </> diff --git a/src/components/TVLGraph/DesktopTVLGraph.tsx b/src/components/TVLGraph/DesktopTVLGraph.tsx index 6575411..9326589 100644 --- a/src/components/TVLGraph/DesktopTVLGraph.tsx +++ b/src/components/TVLGraph/DesktopTVLGraph.tsx @@ -16,13 +16,13 @@ export const DesktopTVLGraph = ({ tvl }: TotalValueLockedProps) => { isLast?: boolean, ) => ( <Grid item xs={xs} key={index}> - <GridContainer imageUrl={data.imageUrl} height={height} smallCard={smallCard}> + <GridContainer image={data.imageUrl} height={height} small={smallCard?.toString()}> <TokenInfo avatar={data.imageUrl} token={data.symbol} total={data.amountUsd} tokenName={data.name} - isLast={isLast} + isLast={isLast?.toString()} /> </GridContainer> </Grid> diff --git a/src/components/TVLGraph/MobileTVLGraph.tsx b/src/components/TVLGraph/MobileTVLGraph.tsx index e2cc5dc..e69e1d9 100644 --- a/src/components/TVLGraph/MobileTVLGraph.tsx +++ b/src/components/TVLGraph/MobileTVLGraph.tsx @@ -16,13 +16,13 @@ export const MobileTvlContainer = ({ tvl }: TotalValueLockedProps) => { isLast?: boolean, ) => ( <Grid item xs={xs} key={index}> - <GridContainer imageUrl={data.imageUrl} height={height} smallCard={smallCard}> + <GridContainer image={data.imageUrl} height={height} small={smallCard?.toString()}> <TokenInfo avatar={data.imageUrl} token={data.symbol} total={data.amountUsd} tokenName={data.name} - isLast={isLast} + isLast={isLast?.toString()} /> </GridContainer> </Grid> diff --git a/src/components/TVLGraph/TokenInfo.tsx b/src/components/TVLGraph/TokenInfo.tsx index ec763cb..af3c08a 100644 --- a/src/components/TVLGraph/TokenInfo.tsx +++ b/src/components/TVLGraph/TokenInfo.tsx @@ -7,26 +7,26 @@ interface TokenInfoProps { token: string; total: string; tokenName: string; - isLast?: boolean; + isLast?: string; } interface TvlProps { - isLast: boolean; + last?: string; } export const TokenInfo = ({ avatar, token, total, tokenName, isLast }: TokenInfoProps) => { return ( <ContentBox> <TopBox> - <TokenLogo src={avatar} alt={token} isLast={isLast || false} /> + <TokenLogo src={avatar} alt={token} last={isLast} /> <TextBox> - <TokenName isLast={isLast || false}>{tokenName}</TokenName> - <TokenTicker isLast={isLast || false}>{token}</TokenTicker> + <TokenName last={isLast}>{tokenName}</TokenName> + <TokenTicker last={isLast}>{token}</TokenTicker> </TextBox> </TopBox> - <TvlAmount isLast={isLast ? isLast : false}>{formatDataNumber(total, 0, true)}</TvlAmount> + {total && <TvlAmount last={isLast}>{formatDataNumber(total, 0, true)}</TvlAmount>} </ContentBox> ); }; @@ -50,13 +50,13 @@ const TopBox = styled(Box)(() => { }; }); -const TokenLogo = styled(Avatar)<TvlProps>(({ isLast }) => ({ - width: `${isLast ? '1.25rem' : '2.5rem'}`, - height: `${isLast ? '1.25rem' : '2.5rem'}`, +const TokenLogo = styled(Avatar)<TvlProps>(({ last }) => ({ + width: `${last === 'true' ? '1.25rem' : '2.5rem'}`, + height: `${last === 'true' ? '1.25rem' : '2.5rem'}`, })); -const TvlAmount = styled(Typography)<TvlProps>(({ isLast }) => ({ - fontSize: `${isLast ? '0.75rem' : '0.875rem'}`, +const TvlAmount = styled(Typography)<TvlProps>(({ last }) => ({ + fontSize: `${last === 'true' ? '0.75rem' : '0.875rem'}`, fontWeight: 400, })); @@ -68,17 +68,17 @@ const TextBox = styled(Box)(() => { }; }); -const TokenName = styled(Typography)<TvlProps>(({ isLast }) => ({ - fontSize: `${isLast ? '0.75rem' : '0.875rem'}`, +const TokenName = styled(Typography)<TvlProps>(({ last }) => ({ + fontSize: `${last === 'true' ? '0.75rem' : '0.875rem'}`, fontWeight: 400, whiteSpace: 'nowrap', margin: '0 0.25rem 0 0', })); -const TokenTicker = styled(Typography)<TvlProps>(({ isLast }) => { +const TokenTicker = styled(Typography)<TvlProps>(({ last }) => { const { currentTheme } = useCustomTheme(); return { - fontSize: `${isLast ? '0.75rem' : '0.875rem'}`, + fontSize: `${last === 'true' ? '0.75rem' : '0.875rem'}`, fontWeight: 400, color: currentTheme.textSecondary, whiteSpace: 'nowrap', diff --git a/src/components/TVLGraph/index.tsx b/src/components/TVLGraph/index.tsx index 46054c9..5a1cfe3 100644 --- a/src/components/TVLGraph/index.tsx +++ b/src/components/TVLGraph/index.tsx @@ -23,13 +23,14 @@ export const TvlContainer = styled(Grid)({ }); export interface GridContainerProps { - imageUrl?: string; + image?: string; height?: string; - smallCard?: boolean; + small?: string; } -export const GridContainer = styled(Grid)(({ imageUrl, height, smallCard }: GridContainerProps) => { +export const GridContainer = styled(Grid)(({ image, height, small }: GridContainerProps) => { const { currentTheme } = useCustomTheme(); + const smallCard = small === 'true'; return { position: 'relative', height: height || 'fit-content', @@ -43,11 +44,11 @@ export const GridContainer = styled(Grid)(({ imageUrl, height, smallCard }: Grid '&::before': { content: '""', position: 'absolute', - top: smallCard ? -20 : -25, - left: smallCard ? -50 : -95, + top: small ? -20 : -25, + left: small ? -50 : -95, width: '100%', height: '100%', - backgroundImage: `url(${imageUrl})`, + backgroundImage: `url(${image})`, backgroundRepeat: 'no-repeat', backgroundSize: smallCard ? '200px' : '400px', backgroundPosition: smallCard && 'center', diff --git a/src/components/TVLTable.tsx b/src/components/TVLTable.tsx index 861b495..b8de325 100644 --- a/src/components/TVLTable.tsx +++ b/src/components/TVLTable.tsx @@ -42,7 +42,11 @@ export const TVLTable = () => { <STableBody> {tvl - .sort((a, b) => parseFloat(b.amountUsd) - parseFloat(a.amountUsd)) + .sort((a, b) => { + const amountA = parseFloat(a.amountUsd) || 0; + const amountB = parseFloat(b.amountUsd) || 0; + return amountB - amountA; + }) .map((token, index) => ( <STableBodyRow key={index} tabIndex={0} role='row' aria-label={`${token.name} (${token.symbol})`}> <FirstCellWithLogo> diff --git a/src/containers/Footer/index.tsx b/src/containers/Footer/index.tsx index a42e21b..e81e576 100644 --- a/src/containers/Footer/index.tsx +++ b/src/containers/Footer/index.tsx @@ -1,6 +1,6 @@ import { useTranslation } from 'next-i18next'; import { styled } from '@mui/material/styles'; -import { Typography, Button } from '@mui/material'; +import { Typography } from '@mui/material'; import Image from 'next/image'; import Link from 'next/link'; @@ -15,13 +15,6 @@ export const Footer = () => { return ( <FooterContainer> - <SBox> - <FooterButton>{t('FOOTER.docs')}</FooterButton> - <FooterButton> - <Icon icon='github' alt='github' size={24} /> - <Typography>{t('FOOTER.github')}</Typography> - </FooterButton> - </SBox> <Subtitle> <SBox> <Typography>{t('FOOTER.madeWith')}</Typography> @@ -43,7 +36,7 @@ export const FooterContainer = styled('footer')(({ theme }) => { display: 'flex', padding: currentTheme.padding, alignItems: 'center', - justifyContent: 'space-between', + justifyContent: 'center', width: '100%', gap: '0', @@ -73,24 +66,3 @@ const Subtitle = styled('div')(() => { }, }; }); - -const FooterButton = styled(Button)(() => { - const { currentTheme } = useCustomTheme(); - - return { - display: 'flex', - gap: currentTheme.gap, - alignItems: 'center', - backgroundColor: currentTheme.backgroundSecondary, - borderRadius: currentTheme.borderRadius, - padding: currentTheme.padding, - cursor: 'pointer', - color: currentTheme.textPrimary, - textTransform: 'none', - fontSize: '1rem', - height: '3.5rem', - '&:hover': { - backgroundColor: currentTheme.backgroundHover, - }, - }; -}); diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index b2e5a36..87d15ff 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -38,7 +38,11 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { <STableBody> {tvl - .sort((a, b) => parseFloat(b.amountUsd) - parseFloat(a.amountUsd)) + .sort((a, b) => { + const amountA = parseFloat(a.amountUsd) || 0; + const amountB = parseFloat(b.amountUsd) || 0; + return amountB - amountA; + }) .map((token: TvlData, index) => ( <STableBodyRow key={index}> <FirstCellWithLogo> From f4ab36fb4abc17ea7916f86bebc731e102ece30b Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 30 Aug 2024 10:52:29 -0300 Subject: [PATCH 68/82] feat: testnet mode (#45) closes ZKS-223 --- .env.example | 3 ++- README.md | 4 ++- src/config/env.ts | 2 ++ src/containers/Header/DesktopHeader.tsx | 6 ++++- src/containers/Header/MobileHeader.tsx | 6 ++++- src/containers/Header/index.tsx | 35 ++++++++++++++++++++----- src/types/Config.ts | 1 + 7 files changed, 46 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index a0d01d8..a8f2bb2 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,3 @@ NEXT_PUBLIC_API_BASE_URL= # Example: https://api.example.com -NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect \ No newline at end of file +NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect +TESTNET= # true or false \ No newline at end of file diff --git a/README.md b/README.md index c95b251..be49cb0 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,9 @@ $ pnpm install $ cp .env.example .env ``` - Set up `NEXT_PUBLIC_API_BASE_URL` with ZKchainHub Backend API url. It will typically run on `http://localhost:3000` -- (Optionally) Set `NEXT_PUBLIC_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID +- (Optionally) + - Set `NEXT_PUBLIC_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID + - Set `TESTNET` with `true` to use testnet mode with testnet backend API URL set up in `NEXT_PUBLIC_API_BASE_URL` ## ๐Ÿƒ Running the app diff --git a/src/config/env.ts b/src/config/env.ts index 96ac67d..5aee8c3 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -3,9 +3,11 @@ import { Env } from '~/types'; export const getEnv = (): Env => { const NEXT_PUBLIC_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; const NEXT_PUBLIC_API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL; + const NEXT_PUBLIC_TESTNET_MODE = process.env.NEXT_PUBLIC_TESTNET_MODE; return { PROJECT_ID: NEXT_PUBLIC_PROJECT_ID as string, API_URL: NEXT_PUBLIC_API_BASE_URL as string, + TESTNET_MODE: NEXT_PUBLIC_TESTNET_MODE as string, }; }; diff --git a/src/containers/Header/DesktopHeader.tsx b/src/containers/Header/DesktopHeader.tsx index 25fcbec..84aefd4 100644 --- a/src/containers/Header/DesktopHeader.tsx +++ b/src/containers/Header/DesktopHeader.tsx @@ -1,11 +1,14 @@ import { useTranslation } from 'next-i18next'; -import { StyledHeader, LogoContainer, Logo, SIconButton, HeaderProps } from '~/containers'; +import { StyledHeader, LogoContainer, Logo, SIconButton, HeaderProps, Testnet } from '~/containers'; import { BasicSelect, SearchBar, Gas, SBox, Icon } from '~/components'; +import { getConfig } from '~/config'; import LogoDark from '~/assets/icons/logoDark.svg'; import LogoLight from '~/assets/icons/logoLight.svg'; +const { TESTNET_MODE } = getConfig(); + interface DesktopHeaderProps extends HeaderProps {} export const DesktopHeader = ({ @@ -24,6 +27,7 @@ export const DesktopHeader = ({ <StyledHeader> <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> + {TESTNET_MODE === 'true' && <Testnet>testnet</Testnet>} </LogoContainer> <SBox> <Gas /> diff --git a/src/containers/Header/MobileHeader.tsx b/src/containers/Header/MobileHeader.tsx index 40557aa..8ae3ede 100644 --- a/src/containers/Header/MobileHeader.tsx +++ b/src/containers/Header/MobileHeader.tsx @@ -3,13 +3,16 @@ import { styled } from '@mui/material/styles'; import { Box, IconButton, Drawer, List, ListItem, Typography, Button } from '@mui/material'; import { useTranslation } from 'next-i18next'; -import { StyledHeader, LogoContainer, Logo, HeaderProps } from '~/containers'; +import { StyledHeader, LogoContainer, Logo, HeaderProps, Testnet } from '~/containers'; import { BasicSelect, Gas, Icon } from '~/components'; import { useCustomTheme, useSearchContext } from '~/hooks'; +import { getConfig } from '~/config'; import LogoDark from '~/assets/icons/logoDark.svg'; import LogoLight from '~/assets/icons/logoLight.svg'; +const { TESTNET_MODE } = getConfig(); + interface MobileHeaderProps extends HeaderProps {} export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap, changeTheme }: MobileHeaderProps) => { @@ -29,6 +32,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <StyledHeader> <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> + {TESTNET_MODE === 'true' && <Testnet>testnet</Testnet>} </LogoContainer> <IconsContainer> diff --git a/src/containers/Header/index.tsx b/src/containers/Header/index.tsx index 2303be1..77c2032 100644 --- a/src/containers/Header/index.tsx +++ b/src/containers/Header/index.tsx @@ -1,5 +1,5 @@ import { styled } from '@mui/material/styles'; -import { IconButton, Box, useMediaQuery } from '@mui/material'; +import { IconButton, Box, useMediaQuery, Typography } from '@mui/material'; import { useRouter } from 'next/router'; import { useTranslation } from 'next-i18next'; import Image from 'next/image'; @@ -89,12 +89,20 @@ export const StyledHeader = styled('header')(() => { }; }); -export const LogoContainer = styled(Box)({ - display: 'flex', - alignItems: 'center', - height: '100%', - flexShrink: 0, - cursor: 'pointer', +export const LogoContainer = styled(Box)(({ theme }) => { + const { currentTheme } = useCustomTheme(); + + return { + display: 'flex', + alignItems: 'center', + height: '100%', + flexShrink: 0, + cursor: 'pointer', + gap: currentTheme.gap, + [theme.breakpoints.down('md')]: { + display: 'grid', + }, + }; }); export const Logo = styled(Image)({ @@ -118,3 +126,16 @@ export const SIconButton = styled(IconButton)(() => { }, }; }); + +export const Testnet = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + backgroundColor: currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + padding: '0.25rem 0.75rem', + gap: currentTheme.gap, + fontWeight: 'bold', + width: 'fit-content', + }; +}); diff --git a/src/types/Config.ts b/src/types/Config.ts index dcf6398..876e3b1 100644 --- a/src/types/Config.ts +++ b/src/types/Config.ts @@ -1,6 +1,7 @@ export interface Env { PROJECT_ID: string; API_URL: string; + TESTNET_MODE: string; } export type SupportedLanguage = 'en' | 'es'; From cd570469c4bed89cc5e8a84bbafaf6d210a34d12 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 30 Aug 2024 16:12:54 -0300 Subject: [PATCH 69/82] test: e2e navigation tests (#44) closes ZKS-119 --------- Co-authored-by: Laruku <laruku@defi.sucks> --- cypress/e2e/navigation.cy.ts | 41 ++++++++++++++++++++ cypress/e2e/spec.cy.ts | 5 --- src/components/BasicSelect.tsx | 2 +- src/components/Breadcrumb.tsx | 4 +- src/components/ChainTable.tsx | 3 +- src/components/SearchBar.tsx | 2 +- src/containers/ChainDetail/ChainMetadata.tsx | 2 +- src/containers/Dashboard/index.tsx | 2 +- src/containers/LockedAssets/index.tsx | 4 +- src/containers/Tokens/TokensTable.tsx | 4 +- 10 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 cypress/e2e/navigation.cy.ts delete mode 100644 cypress/e2e/spec.cy.ts diff --git a/cypress/e2e/navigation.cy.ts b/cypress/e2e/navigation.cy.ts new file mode 100644 index 0000000..1f948d6 --- /dev/null +++ b/cypress/e2e/navigation.cy.ts @@ -0,0 +1,41 @@ +describe('Navigation tests', () => { + beforeEach(() => { + cy.visit('/'); + }); + + it('should navigate to search page, type a query, navigate to chain details, and go back to home on breadcrumb', () => { + cy.getByTestId('search-bar').click(); + cy.url().should('include', '/search'); + + cy.getByTestId('search-bar').find('input').click().type('Invalid chain name'); + cy.get('input').should('have.value', 'Invalid chain name'); + cy.getByTestId('data-not-found').should('be.visible'); + + cy.getByTestId('search-bar').find('input').clear(); + cy.get('input').should('have.value', ''); + + cy.getByTestId('search-bar').find('input').type('324'); + cy.getByTestId('chain-row').should('be.visible').click(); + cy.url().should('include', '/324'); + + cy.getByTestId('home-breadcrumb').click(); + cy.url().should('eq', 'http://localhost:5173/'); + cy.getByTestId('search-bar').find('input').should('have.value', ''); + }); + + it('should navigate to tokens page, on all tokens button click', () => { + cy.getByTestId('all-tokens-button').click(); + cy.url().should('include', '/tokens'); + + cy.getByTestId('tokens-title').should('be.visible'); + cy.getByTestId('tokens-row').should('be.visible'); + }); + + it('should navigate to chain page by clicking on dashboard chain row', () => { + cy.getByTestId('chains-dashboard').should('be.visible'); + cy.getByTestId('chain-row').first().click(); + cy.url().should('include', '/324'); + + cy.getByTestId('chain-id').should('be.visible').and('contain', '324'); + }); +}); diff --git a/cypress/e2e/spec.cy.ts b/cypress/e2e/spec.cy.ts deleted file mode 100644 index 029c8bb..0000000 --- a/cypress/e2e/spec.cy.ts +++ /dev/null @@ -1,5 +0,0 @@ -describe('Renders every component', () => { - it('Renders App component', () => { - cy.visit('/'); - }); -}); diff --git a/src/components/BasicSelect.tsx b/src/components/BasicSelect.tsx index d470a1a..ab872fa 100644 --- a/src/components/BasicSelect.tsx +++ b/src/components/BasicSelect.tsx @@ -42,7 +42,7 @@ export const BasicSelect = ({ list, value, setValue, disabled, dataTest }: Basic endIcon={endIcon} fullWidth disabled={disabled} - data-test={dataTest} + data-testid={dataTest} > {value} </MenuButton> diff --git a/src/components/Breadcrumb.tsx b/src/components/Breadcrumb.tsx index c4862a5..e452a81 100644 --- a/src/components/Breadcrumb.tsx +++ b/src/components/Breadcrumb.tsx @@ -34,7 +34,9 @@ export const Breadcrumb = ({ isChain }: BreadcrumbProps) => { return ( <BreadcrumbNav aria-label='breadcrumb'> - <BreadcrumbLink href='/'>{t('HOME.home')}</BreadcrumbLink> + <BreadcrumbLink href='/' data-testid='home-breadcrumb'> + {t('HOME.home')} + </BreadcrumbLink> {breadcrumbItems.map(({ key, isLast, displayName, href }) => ( <BreadcrumbItem key={key}> diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index 35e06bf..41af2ed 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -32,7 +32,7 @@ export const ChainTable = ({ chains }: TableProps) => { }; return ( - <STableContainer> + <STableContainer data-testid='chains-dashboard'> <Table> {/* Table titles */} <STableHead> @@ -70,6 +70,7 @@ export const ChainTable = ({ chains }: TableProps) => { tabIndex={0} role='button' // Indicate that the row is interactive aria-label={`Navigate to ${data.metadata?.name || `ZK Chain ${data.chainId}`}`} + data-testid='chain-row' > {/* Chain Name with Logo and Tags */} <FirstCellWithLogo> diff --git a/src/components/SearchBar.tsx b/src/components/SearchBar.tsx index ce8a34d..080fa59 100644 --- a/src/components/SearchBar.tsx +++ b/src/components/SearchBar.tsx @@ -34,7 +34,7 @@ export const SearchBar = () => { }, [isSearch, closeSearchHandler]); return ( - <SearchContainer> + <SearchContainer data-testid='search-bar'> <StyledTextField variant='outlined' value={searchTerm} diff --git a/src/containers/ChainDetail/ChainMetadata.tsx b/src/containers/ChainDetail/ChainMetadata.tsx index 2e841f0..7d70eaf 100644 --- a/src/containers/ChainDetail/ChainMetadata.tsx +++ b/src/containers/ChainDetail/ChainMetadata.tsx @@ -20,7 +20,7 @@ export const ChainMetadata = () => { <Avatar src={chainMetadata?.iconUrl} alt={chainMetadata?.name} sx={{ width: 72, height: 72 }} /> <Box> <ChainName>{chainMetadata?.name}</ChainName> - <ChainId> + <ChainId data-testid='chain-id'> {t('CHAIN.chainId')}: <ChainIdValue>{chain}</ChainIdValue> </ChainId> </Box> diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 6856951..5f7e2ad 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -39,7 +39,7 @@ export const Dashboard = () => { </header> {availableChains && <ChainTable chains={filteredChains} />} - {!availableChains && <SearchLabel>{t('HOME.DASHBOARD.notFound')}</SearchLabel>} + {!availableChains && <SearchLabel data-testid='data-not-found'>{t('HOME.DASHBOARD.notFound')}</SearchLabel>} </DashboardContainer> ); }; diff --git a/src/containers/LockedAssets/index.tsx b/src/containers/LockedAssets/index.tsx index b2cf87f..d88e0cb 100644 --- a/src/containers/LockedAssets/index.tsx +++ b/src/containers/LockedAssets/index.tsx @@ -29,7 +29,9 @@ export const LockedAssets = () => { <TVLGraph tvl={ecosystemData.l1Tvl} /> <ButtonContainer> - <AllTokensButton onClick={goToTokensPage}> {t('HOME.LOCKEDASSETS.allTokens')} </AllTokensButton>{' '} + <AllTokensButton onClick={goToTokensPage} data-testid='all-tokens-button'> + {t('HOME.LOCKEDASSETS.allTokens')} + </AllTokensButton> </ButtonContainer> </> )} diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index 87d15ff..f0f599d 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -23,7 +23,7 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { return ( <Box> - <STitle>{t('TOKENS.title')}</STitle> + <STitle data-testid='tokens-title'>{t('TOKENS.title')}</STitle> <STableContainer> <Table> <STableHead> @@ -44,7 +44,7 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { return amountB - amountA; }) .map((token: TvlData, index) => ( - <STableBodyRow key={index}> + <STableBodyRow key={index} data-testid='tokens-row'> <FirstCellWithLogo> <TokenAvatar alt={token.name} src={token.imageUrl} /> <Typography> From 2d61ae76be3595ed6c182ca44c47951b94e4cb32 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Mon, 2 Sep 2024 09:19:08 -0300 Subject: [PATCH 70/82] fix: fee params data (#48) Update fee params: - Compute overhead part -> Max public data per batch - Last block verified -> Max priority data --- public/locales/en/common.json | 4 ++-- public/locales/es/common.json | 4 ++-- src/components/FeeParams.tsx | 14 +++++++------- src/providers/DataProvider.tsx | 24 +++++++++++++++--------- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/public/locales/en/common.json b/public/locales/en/common.json index dbf5674..5115e70 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -72,9 +72,9 @@ "FEEPARAMS": { "title": "Fee params", "batch": "Batch Overhead L1 Gas", - "compute": "Compute Overhead Part", + "maxPubData": "Max public data per batch", "maxGasBatch": "Max Gas per Batch", - "lastBlockVerified": "Last block verified" + "priorityTxMaxPubdata": "Max priority data" }, "backButton": "Go back" }, diff --git a/public/locales/es/common.json b/public/locales/es/common.json index ed7f1f1..34d5b66 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -73,9 +73,9 @@ "FEEPARAMS": { "title": "Parรกmetros de gas", "batch": "Sobrecarga de lote L1 Gas", - "compute": "Parte de sobrecarga de cรณmputo", + "maxPubData": "Mรกximos datos pรบblicos por lote", "maxGasBatch": "Mรกximo gas por lote", - "lastBlockVerified": "รšltimo bloque verificado" + "priorityTxMaxPubdata": "Maximos datos de prioridad" }, "backButton": "Volver" }, diff --git a/src/components/FeeParams.tsx b/src/components/FeeParams.tsx index 07c46b8..9e2072d 100644 --- a/src/components/FeeParams.tsx +++ b/src/components/FeeParams.tsx @@ -6,7 +6,7 @@ import { getDescription } from '~/utils'; export const FeeParams = () => { const { t } = useTranslation(); - const { chainData } = useData(); + const { chainData, maxL2GasPerBatch } = useData(); const notAvailable = t('CHAIN.CHAININFORMATION.notAvailable'); return ( @@ -23,7 +23,7 @@ export const FeeParams = () => { /> <ChainInfoCard - title={t('CHAIN.FEEPARAMS.compute')} + title={t('CHAIN.FEEPARAMS.maxPubData')} description={getDescription(chainData?.feeParams.maxPubdataPerBatch, notAvailable)} isDataAvailable={!!chainData?.feeParams.maxPubdataPerBatch} icon='block' @@ -32,9 +32,9 @@ export const FeeParams = () => { /> <ChainInfoCard - title={t('CHAIN.FEEPARAMS.lastBlockVerified')} - description={getDescription(chainData?.l2ChainInfo?.lastBlockVerified, notAvailable)} - isDataAvailable={!!chainData?.l2ChainInfo?.lastBlockVerified} + title={t('CHAIN.FEEPARAMS.priorityTxMaxPubdata')} + description={getDescription(chainData?.feeParams?.priorityTxMaxPubdata, notAvailable)} + isDataAvailable={!!chainData?.feeParams?.priorityTxMaxPubdata} icon='checkBlock' size={20} alt='Last verified block check icon' @@ -42,8 +42,8 @@ export const FeeParams = () => { <ChainInfoCard title={t('CHAIN.FEEPARAMS.maxGasBatch')} - description={getDescription(chainData?.feeParams.maxL2GasPerBatch, notAvailable)} - isDataAvailable={!!chainData?.feeParams.maxL2GasPerBatch} + description={getDescription(maxL2GasPerBatch, notAvailable)} + isDataAvailable={!!maxL2GasPerBatch} icon='max' size={20} alt='Maximum gas per batch icon' diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index 6abbd68..d6d2186 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -20,6 +20,7 @@ type ContextType = { totalL1TVL: number; erc20USD: number; gasPriceInGwei: string; + maxL2GasPerBatch: string; }; interface DataProps { @@ -72,19 +73,23 @@ export const DataProvider = ({ children }: DataProps) => { return accumulator + (Number(token.amountUsd) || 0); }, 0); - const formatGas = useCallback(() => { - if (ecosystemData) { - const { erc20Transfer, gasPrice, ethPrice } = ecosystemData.ethGasInfo; + const { erc20USD, gasPriceInGwei } = useMemo(() => { + if (!ecosystemData) return { erc20USD: 0, gasPriceInGwei: '0' }; - const erc20USD = calculateUSDGas(BigInt(erc20Transfer), BigInt(gasPrice), Number(ethPrice)); - const gasPriceInGwei = Number(formatGwei(BigInt(gasPrice))).toFixed(2); + const { erc20Transfer, gasPrice, ethPrice } = ecosystemData.ethGasInfo; + const erc20USD = calculateUSDGas(BigInt(erc20Transfer), BigInt(gasPrice), Number(ethPrice)); + const gasPriceInGwei = Number(formatGwei(BigInt(gasPrice))).toFixed(2); - return { erc20USD, gasPriceInGwei }; - } - return { erc20USD: 0, gasPriceInGwei: '0' }; + return { erc20USD, gasPriceInGwei }; }, [ecosystemData]); - const { erc20USD, gasPriceInGwei } = useMemo(() => formatGas(), [formatGas]); + const maxL2GasPerBatch = useMemo(() => { + if (!chainData) return '0 gwei'; + + const maxL2Gas = Number(formatGwei(BigInt(chainData.feeParams.maxL2GasPerBatch))).toFixed(2); + + return maxL2Gas + ' gwei'; + }, [chainData]); return ( <DataContext.Provider @@ -99,6 +104,7 @@ export const DataProvider = ({ children }: DataProps) => { totalL1TVL, erc20USD, gasPriceInGwei, + maxL2GasPerBatch, }} > {children} From b875424c5e9a8114ecb5c40ece4bdef37f7d1c85 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 3 Sep 2024 09:28:27 -0300 Subject: [PATCH 71/82] fix: testnet mode (#52) --- .env.example | 2 +- README.md | 2 +- src/containers/Header/DesktopHeader.tsx | 2 +- src/containers/Header/MobileHeader.tsx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index a8f2bb2..c0afc18 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,3 @@ NEXT_PUBLIC_API_BASE_URL= # Example: https://api.example.com NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect -TESTNET= # true or false \ No newline at end of file +NEXT_PUBLIC_TESTNET_MODE= # true or false \ No newline at end of file diff --git a/README.md b/README.md index be49cb0..ecb0179 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ $ cp .env.example .env - Set up `NEXT_PUBLIC_API_BASE_URL` with ZKchainHub Backend API url. It will typically run on `http://localhost:3000` - (Optionally) - Set `NEXT_PUBLIC_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID - - Set `TESTNET` with `true` to use testnet mode with testnet backend API URL set up in `NEXT_PUBLIC_API_BASE_URL` + - Set `NEXT_PUBLIC_TESTNET_MODE ` with `true` to use testnet mode with testnet backend API URL set up in `NEXT_PUBLIC_API_BASE_URL` ## ๐Ÿƒ Running the app diff --git a/src/containers/Header/DesktopHeader.tsx b/src/containers/Header/DesktopHeader.tsx index 84aefd4..ae3e0f1 100644 --- a/src/containers/Header/DesktopHeader.tsx +++ b/src/containers/Header/DesktopHeader.tsx @@ -27,7 +27,7 @@ export const DesktopHeader = ({ <StyledHeader> <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> - {TESTNET_MODE === 'true' && <Testnet>testnet</Testnet>} + {TESTNET_MODE === 'true' && <Testnet>Testnet</Testnet>} </LogoContainer> <SBox> <Gas /> diff --git a/src/containers/Header/MobileHeader.tsx b/src/containers/Header/MobileHeader.tsx index 8ae3ede..068e645 100644 --- a/src/containers/Header/MobileHeader.tsx +++ b/src/containers/Header/MobileHeader.tsx @@ -32,7 +32,7 @@ export const MobileHeader = ({ theme, goToHome, handleChangeLanguage, localesMap <StyledHeader> <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> - {TESTNET_MODE === 'true' && <Testnet>testnet</Testnet>} + {TESTNET_MODE === 'true' && <Testnet>Testnet</Testnet>} </LogoContainer> <IconsContainer> From b14a519f38a503f48340ba549df3e181840caa33 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 3 Sep 2024 12:29:40 -0300 Subject: [PATCH 72/82] fix: show significant digit (#50) --- src/__tests__/format.test.ts | 19 ++++++++++++------- src/components/TVLTable.tsx | 2 +- src/utils/format.ts | 11 ++++++----- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/__tests__/format.test.ts b/src/__tests__/format.test.ts index d2fab43..91909ba 100644 --- a/src/__tests__/format.test.ts +++ b/src/__tests__/format.test.ts @@ -1,22 +1,24 @@ import { expect } from '@jest/globals'; -import { truncateAddress, formatTimestampToDate, formatDataNumber, calculateUSDGas } from '~/utils/format'; +import { + truncateAddress, + formatTimestampToDate, + formatDataNumber, + calculateUSDGas, + formatSmallNumber, +} from '~/utils/format'; describe('truncateAddress', () => { it('should truncate the address correctly', () => { const address = '0x1234567890abcdef1234567890abcdef12345678'; expect(truncateAddress(address)).toBe('0x1234...5678'); }); -}); -describe('formatTimestampToDate', () => { it('should format the timestamp to date correctly', () => { const timestamp = 1627580800; // July 29, 2021 expect(formatTimestampToDate(timestamp)).toBe('7/29/2021'); // The format may vary based on locale }); -}); -describe('formatDataNumber', () => { it('should format a number correctly', () => { expect(formatDataNumber(1234.567)).toBe('1,234.567'); expect(formatDataNumber(0.0001234, 6)).toBe('0.000123'); @@ -28,9 +30,12 @@ describe('formatDataNumber', () => { expect(formatDataNumber('not a number')).toBe('0'); expect(formatDataNumber(0, 2, true)).toBe('$0'); }); -}); -describe('calculateUSDGas', () => { + it('should return significant digit from small number', () => { + expect(formatSmallNumber(0.00002123333, true)).toBe('$0.0000212'); + expect(formatDataNumber(0, 2, true)).toBe('$0'); + }); + it('should calculate the USD value of gas correctly', () => { const txGas = BigInt(21000); const gasPriceInWei = BigInt(1000000000); // 1 Gwei diff --git a/src/components/TVLTable.tsx b/src/components/TVLTable.tsx index b8de325..774242c 100644 --- a/src/components/TVLTable.tsx +++ b/src/components/TVLTable.tsx @@ -68,7 +68,7 @@ export const TVLTable = () => { </STableCell> <STableCell> - {token.price && <Typography>{formatDataNumber(token.price, 0, true)}</Typography>} + {token.price && <Typography>{formatDataNumber(Number(token.price), 0, true)}</Typography>} {!token.price && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} </STableCell> diff --git a/src/utils/format.ts b/src/utils/format.ts index 44c013e..96f957e 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -11,7 +11,7 @@ export function formatDataNumber(input: string | number, formatDecimal = 3, curr if (res === 0 || isNaN(res)) return `${currency ? '$0' : '0'}`; - if (res < 0.01) return formatSmallNumber(res); + if (res < 10) return formatSmallNumber(res, currency); const userNotation = compact ? 'compact' : 'standard'; const notation = res > 1e12 ? 'scientific' : userNotation; @@ -24,9 +24,9 @@ export function formatDataNumber(input: string | number, formatDecimal = 3, curr }).format(res); } -export const formatSmallNumber = (value: number) => { +export const formatSmallNumber = (value: number, currency?: boolean) => { if (value === 0) { - return '0'; + return currency ? '$0' : '0'; } const formattedValue = value.toString(); @@ -45,8 +45,9 @@ export const formatSmallNumber = (value: number) => { // Return the number with 3 digits after the last leading zero const result = formattedValue.slice(0, numLeadingZeros + 3); - // Trim any trailing zeros from the result - return result.replace(/\.?0+$/, ''); + const trimmedResult = result.replace(/\.?0+$/, ''); + + return currency ? `$${trimmedResult}` : trimmedResult; }; export const calculateUSDGas = (txGas: bigint, gasPriceInWei: bigint, etherPrice: number): number => { From ca2eb24ffd33678843dd7e1a4cd7ca7a3e687aae Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 3 Sep 2024 15:40:46 -0300 Subject: [PATCH 73/82] docs: vercel deployment guide (#53) --- README.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ecb0179..7af5105 100644 --- a/README.md +++ b/README.md @@ -25,13 +25,15 @@ $ pnpm install ## โš™๏ธ Setting up env variables - Create `.env` file in the `root` folder and copy paste `.env.example` content in there. + ``` $ cp .env.example .env ``` + - Set up `NEXT_PUBLIC_API_BASE_URL` with ZKchainHub Backend API url. It will typically run on `http://localhost:3000` -- (Optionally) - - Set `NEXT_PUBLIC_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID - - Set `NEXT_PUBLIC_TESTNET_MODE ` with `true` to use testnet mode with testnet backend API URL set up in `NEXT_PUBLIC_API_BASE_URL` +- (Optionally) + - Set `NEXT_PUBLIC_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID + - Set `NEXT_PUBLIC_TESTNET_MODE ` with `true` to use testnet mode with testnet backend API URL set up in `NEXT_PUBLIC_API_BASE_URL` ## ๐Ÿƒ Running the app @@ -41,9 +43,51 @@ $ pnpm run start To verify ZKchainHub UI is running open http://localhost:5173 in your browser +## Deployment + +## ๐Ÿ—๏ธ Vercel deployment + +## Prerequisites + +1. **Vercel Account**: [Sign up](https://vercel.com) if you donโ€™t have an account. +2. **Vercel CLI**: Install the Vercel CLI by running: + + ```bash + npm install -g vercel + ``` + +## Deployment Steps + +1. **Authenticate with Vercel**: Run the following command and follow the prompts to log in + + ```bash + vercel login + ``` + +2. **Deploy Your Project**: Navigate to your project directory and run: + + ```bash + vercel + ``` + +Follow the prompts to configure your project. +Vercel will automatically deploy your project and provide a live URL. + +3. **Set Environment Variables**: To add environment variables, use: + + ```bash + vercel env add <name> <value> + ``` + +**Additional Resources** + +- **[Vercel CLI Documentation](https://vercel.com/docs/cli)**: Find comprehensive information on using the Vercel CLI. +- **[Vercel Documentation](https://vercel.com/docs)**: Access general Vercel documentation and guides. + ## Development ### ๐Ÿ’ป Conventional Commits + We follow the Conventional Commits [specification](https://www.conventionalcommits.org/en/v1.0.0/#specification). ## Contributing @@ -52,4 +96,4 @@ ZKchainHub was built with โค๏ธ by [Wonderland](https://defi.sucks). Wonderland is a team of top Web3 researchers, developers, and operators who believe that the future needs to be open-source, permissionless, and decentralized. -[DeFi sucks](https://defi.sucks), but Wonderland is here to make it better. \ No newline at end of file +[DeFi sucks](https://defi.sucks), but Wonderland is here to make it better. From 4418f696d200a7b843286c21170843925e384fa5 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Wed, 4 Sep 2024 16:25:29 -0300 Subject: [PATCH 74/82] feat: remove mock data (#49) --- .env.example | 3 +- .github/workflows/build-test.yml | 6 +- .github/workflows/test.yml | 8 +- cypress/cypress.env.json | 4 + cypress/e2e/navigation.cy.ts | 3 + cypress/fixtures/chainMockData.json | 574 + cypress/fixtures/ecosystemMockData.json | 590 + package.json | 2 +- pnpm-lock.yaml | 15792 ++++++++++++---------- public/locales/en/common.json | 4 +- public/locales/es/common.json | 4 +- src/__tests__/services.test.ts | 20 +- src/config/env.ts | 2 + src/containers/ErrorContainer/index.tsx | 19 +- src/containers/Header/DesktopHeader.tsx | 4 +- src/pages/[chain]/index.tsx | 24 +- src/pages/error.tsx | 14 +- src/providers/DataProvider.tsx | 18 +- src/types/Config.ts | 1 + src/utils/services.ts | 22 +- 20 files changed, 10101 insertions(+), 7013 deletions(-) create mode 100644 cypress/cypress.env.json create mode 100644 cypress/fixtures/chainMockData.json create mode 100644 cypress/fixtures/ecosystemMockData.json diff --git a/.env.example b/.env.example index c0afc18..89f0719 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,4 @@ NEXT_PUBLIC_API_BASE_URL= # Example: https://api.example.com NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect -NEXT_PUBLIC_TESTNET_MODE= # true or false \ No newline at end of file +NEXT_PUBLIC_TESTNET_MODE= # true or false +NEXT_PUBLIC_TESTING_MODE= # true or false \ No newline at end of file diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 7434526..6ed78d6 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -25,9 +25,9 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: pnpm/action-setup@v3 + - uses: pnpm/action-setup@v4 with: - version: 8 + version: 9.5.0 - name: Install Node uses: actions/setup-node@v4 @@ -37,7 +37,7 @@ jobs: cache: 'pnpm' - name: Install project dependencies - run: pnpm install --frozen-lockfile --prefer-frozen-lockfile + run: pnpm install - name: Run Prettier run: pnpm prettier diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5f3f4fe..a81cc28 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,15 +12,15 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: pnpm/action-setup@v3 + - uses: pnpm/action-setup@v4 with: - version: 8 + version: 9.5.0 - name: Create env file run: | touch .env - echo "NEXT_PUBLIC_PROJECT_ID=${{ secrets.NEXT_PUBLIC_PROJECT_ID }}" >> .env - echo "NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}" >> .env + echo "NEXT_PUBLIC_API_BASE_URL=${{ secrets.NEXT_PUBLIC_API_BASE_URL }}" >> .env + echo "NEXT_PUBLIC_TESTING_MODE=${{ secrets.NEXT_PUBLIC_TESTING_MODE }}" >> .env - name: run Cypress and Jest uses: cypress-io/github-action@v6 diff --git a/cypress/cypress.env.json b/cypress/cypress.env.json new file mode 100644 index 0000000..f45bb1d --- /dev/null +++ b/cypress/cypress.env.json @@ -0,0 +1,4 @@ +{ + "NEXT_PUBLIC_API_BASE_URL": "http://mock-api:3000", + "NEXT_PUBLIC_TESTING_MODE": "true" +} diff --git a/cypress/e2e/navigation.cy.ts b/cypress/e2e/navigation.cy.ts index 1f948d6..028f2d8 100644 --- a/cypress/e2e/navigation.cy.ts +++ b/cypress/e2e/navigation.cy.ts @@ -1,5 +1,6 @@ describe('Navigation tests', () => { beforeEach(() => { + Cypress.env('NEXT_PUBLIC_API_BASE_URL', 'NEXT_PUBLIC_TESTING_MODE'); cy.visit('/'); }); @@ -16,6 +17,8 @@ describe('Navigation tests', () => { cy.getByTestId('search-bar').find('input').type('324'); cy.getByTestId('chain-row').should('be.visible').click(); + + cy.getByTestId('chain-id').should('be.visible').and('contain', '324'); cy.url().should('include', '/324'); cy.getByTestId('home-breadcrumb').click(); diff --git a/cypress/fixtures/chainMockData.json b/cypress/fixtures/chainMockData.json new file mode 100644 index 0000000..1d3e857 --- /dev/null +++ b/cypress/fixtures/chainMockData.json @@ -0,0 +1,574 @@ +{ + "chainType": "Rollup", + "tvl": [ + { + "amount": "117911.456355407359400867", + "amountUsd": "305202013.6303364090732041428", + "price": "2588.4", + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + { + "amount": "55480856.378207", + "amountUsd": "55536337.234585207", + "price": "1.001", + "name": "USDC", + "symbol": "USDC", + "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "998459864.823799773445941598", + "amountUsd": "10983058.513061797507905357578", + "price": "0.011", + "name": "Koi", + "symbol": "KOI", + "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "9472627.999218", + "amountUsd": "9482100.627217218", + "price": "1.001", + "name": "Tether USD", + "symbol": "USDT", + "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "109.13401208", + "amountUsd": "6320997.7803987076", + "price": "57919.595", + "name": "Wrapped BTC", + "symbol": "WBTC", + "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", + "type": "erc20", + "decimals": 8 + }, + { + "amount": "132452368.754496583511107126", + "amountUsd": "1854333.162562952169155499764", + "price": "0.014", + "name": "HYCO", + "symbol": "HYCO", + "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "47964958.588748853386740337", + "amountUsd": "1007264.130363725921121547077", + "price": "0.021", + "name": "Idexo Token", + "symbol": "IDO", + "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "257.706060883787096756", + "amountUsd": "743295.406461645912283008656", + "price": "2884.276", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4597086.058830655172811988", + "amountUsd": "717145.425177582206958670128", + "price": "0.156", + "name": "DEXTF Token", + "symbol": "DEXTF", + "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "709393.663223743840780868", + "amountUsd": "709393.663223743840780868", + "price": "1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "3611649.325725586386626848", + "amountUsd": "278096.998080870151770267296", + "price": "0.077", + "name": "GOVI", + "symbol": "GOVI", + "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "162910.961709234801235986", + "amountUsd": "162748.050747525566434750014", + "price": "0.999", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "769116.258069049173770643", + "amountUsd": "123058.60129104786780330288", + "price": "0.16", + "name": "Symbiosis", + "symbol": "SIS", + "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34.07328120799622273", + "amountUsd": "94955.28377731904151907308", + "price": "2786.796", + "name": "Coinbase Wrapped Staked ETH", + "symbol": "cbETH", + "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1748294.875759738167409463", + "amountUsd": "52448.84627279214502228389", + "price": "0.03", + "name": "ZKBase", + "symbol": "ZKB", + "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "70230.481253590057712656", + "amountUsd": "42138.2887521540346275936", + "price": "0.6", + "name": "DeversiFi Token", + "symbol": "DVF", + "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", + "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "290.508016952", + "amountUsd": "41502.265809779672", + "price": "142.861", + "name": "Wrapped SOL (Wormhole)", + "symbol": "SOL", + "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", + "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "4028.076528447", + "amountUsd": "26899.495056969066", + "price": "6.678", + "name": "Wrapped TON Coin", + "symbol": "TONCOIN", + "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "23546.536039530998897252", + "amountUsd": "23570.082575570529896149252", + "price": "1.001", + "name": "Curve.Fi USD Stablecoin", + "symbol": "crvUSD", + "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "8.989236054015567327", + "amountUsd": "23241.957473210977822112964", + "price": "2585.532", + "name": "Wrapped Ether", + "symbol": "WETH", + "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "6450474.040573841973953155", + "amountUsd": "19351.422121721525921859465", + "price": "0.003", + "name": "LSD Coin", + "symbol": "LSD", + "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5.423689884062204153", + "amountUsd": "16492.19348875982852231781", + "price": "3040.77", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34056.984148728150579544", + "amountUsd": "13248.166833855250575442616", + "price": "0.389", + "name": "Bella", + "symbol": "BEL", + "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "46220.536588230241212891", + "amountUsd": "11416.472537292869579584077", + "price": "0.247", + "name": "1INCH Token", + "symbol": "1INCH", + "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "563082.288758156473620986", + "amountUsd": "9572.398908888660051556762", + "price": "0.017", + "name": "Deri", + "symbol": "DERI", + "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4974.854892108430805034", + "amountUsd": "7477.206902838971499966102", + "price": "1.503", + "name": "Worldcoin", + "symbol": "WLD", + "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", + "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "43034.765060388679856659", + "amountUsd": "7401.979590386852935345348", + "price": "0.172", + "name": "Maverick Token", + "symbol": "MAV", + "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1267111.79536025946087647", + "amountUsd": "6335.55897680129730438235", + "price": "0.005", + "name": "ZigZag", + "symbol": "ZZ", + "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", + "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.1", + "amountUsd": "5807.2618", + "price": "58072.618", + "name": "tBTC v2", + "symbol": "tBTC", + "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1.607308526702602644", + "amountUsd": "4229.765794625615173705452", + "price": "2631.583", + "name": "rsETH", + "symbol": "rsETH", + "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "35.167061181353626164", + "amountUsd": "3811.335756712743296401992", + "price": "108.378", + "name": "Aave Token", + "symbol": "AAVE", + "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "312.082999060002117307", + "amountUsd": "3186.679503401681619821777", + "price": "10.211", + "name": "ChainLink Token", + "symbol": "LINK", + "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "154.058620754243125866", + "amountUsd": "2913.402577083491753251926", + "price": "18.911", + "name": "Metaverse Index", + "symbol": "MVI", + "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "33", + "amountUsd": "1845.129", + "price": "55.913", + "name": "Tellor Tributes", + "symbol": "TRB", + "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.639944048220845643", + "amountUsd": "1680.494350516037100209286", + "price": "2626.002", + "name": "Renzo Restaked ETH", + "symbol": "Renzo Restaked ETH", + "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4093.979328418030008295", + "amountUsd": "1637.591731367212003318", + "price": "0.4", + "name": "Matic Token", + "symbol": "MATIC", + "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1164511.592541489082720882", + "amountUsd": "1164.511592541489082720882", + "price": "0.001", + "name": "Fringe", + "symbol": "FRIN", + "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "132132.766491", + "amountUsd": "1057.062131928", + "price": "0.008", + "name": "Changer", + "symbol": "CNG", + "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", + "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5985.542511355987510812", + "amountUsd": "885.860291680686151600176", + "price": "0.148", + "name": "WOO", + "symbol": "WOO", + "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "134908.179074505869136306", + "amountUsd": "674.54089537252934568153", + "price": "0.005", + "name": "Furucombo", + "symbol": "COMBO", + "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "51689.739780035047575291", + "amountUsd": "620.276877360420570903492", + "price": "0.012", + "name": "Beam", + "symbol": "BEAM", + "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.201", + "amountUsd": "540.892809", + "price": "2691.009", + "name": "mETH", + "symbol": "mETH", + "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "42.412842071038840242", + "amountUsd": "441.263208907088093877768", + "price": "10.404", + "name": "Rocket Pool", + "symbol": "RPL", + "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "97739", + "amountUsd": "293.217", + "price": "0.003", + "name": "Bonsai3", + "symbol": "SEED", + "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.000014104615563706", + "amountUsd": "0.000004922510831733394", + "price": "0.349", + "name": "Storj", + "symbol": "STORJ", + "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "15945307297.038027211009518403", + "amountUsd": "0", + "price": "0", + "name": "Pepe", + "symbol": "PEPE", + "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1073815923.25847686794945247", + "amountUsd": "0", + "price": "0", + "name": "SHIBA INU", + "symbol": "SHIB", + "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.048392888467075907", + "amountUsd": "0", + "price": "0", + "name": "Syncus", + "symbol": "SYNC", + "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "10000100", + "amountUsd": "0", + "price": "0", + "name": "XWG", + "symbol": "XWG", + "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", + "type": "erc20", + "decimals": 18 + } + ], + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "batchesInfo": { "commited": "490885", "verified": "490883", "executed": "490839" }, + "feeParams": { + "batchOverheadL1Gas": 1000000, + "maxL2GasPerBatch": 80000000, + "maxPubdataPerBatch": 120000, + "minimalL2GasPrice": "250000000", + "priorityTxMaxPubdata": 99000 + }, + "metadata": { + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "name": "ZKsyncERA", + "publicRpcs": [ + "https://mainnet.era.zksync.io", + "https://zksync.drpc.org", + "https://zksync.meowrpc.com", + "https://invalidRpc.com", + "https://extraRpc.com" + ], + "explorerUrl": "https://explorer.zksync.io/", + "launchDate": 1679626800 + } +} diff --git a/cypress/fixtures/ecosystemMockData.json b/cypress/fixtures/ecosystemMockData.json new file mode 100644 index 0000000..d2c7826 --- /dev/null +++ b/cypress/fixtures/ecosystemMockData.json @@ -0,0 +1,590 @@ +{ + "l1Tvl": [ + { + "amount": "118306.55939191423985395", + "amountUsd": "300833113.49886311078510011665", + "price": "2542.827", + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + { + "amount": "56310048.030096", + "amountUsd": "56366358.078126096", + "price": "1.001", + "name": "USDC", + "symbol": "USDC", + "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "998459864.823799773445941598", + "amountUsd": "11981518.377885597281351299176", + "price": "0.012", + "name": "Koi", + "symbol": "KOI", + "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "9472627.999218", + "amountUsd": "9482100.627217218", + "price": "1.001", + "name": "Tether USD", + "symbol": "USDT", + "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "113.67749192", + "amountUsd": "6457843.93470259472", + "price": "56808.466", + "name": "Wrapped BTC", + "symbol": "WBTC", + "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", + "type": "erc20", + "decimals": 8 + }, + { + "amount": "132452368.754496583511107126", + "amountUsd": "1721880.793808455585644392638", + "price": "0.013", + "name": "HYCO", + "symbol": "HYCO", + "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "47964958.588748853386740337", + "amountUsd": "1007264.130363725921121547077", + "price": "0.021", + "name": "Idexo Token", + "symbol": "IDO", + "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "257.706060883787096756", + "amountUsd": "730177.652550539381483934744", + "price": "2833.374", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4597086.058830655172811988", + "amountUsd": "717145.425177582206958670128", + "price": "0.156", + "name": "DEXTF Token", + "symbol": "DEXTF", + "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "709393.663223743840780868", + "amountUsd": "709393.663223743840780868", + "price": "1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "3611649.325725586386626848", + "amountUsd": "274485.348755144565383640448", + "price": "0.076", + "name": "GOVI", + "symbol": "GOVI", + "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "162910.961709234801235986", + "amountUsd": "162585.139785816331633514028", + "price": "0.998", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "769116.258069049173770643", + "amountUsd": "123827.717549116916977073523", + "price": "0.161", + "name": "Symbiosis", + "symbol": "SIS", + "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34.07328120799622273", + "amountUsd": "93326.64908213923806502454", + "price": "2738.998", + "name": "Coinbase Wrapped Staked ETH", + "symbol": "cbETH", + "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1748294.875759738167409463", + "amountUsd": "54197.141148551883189693353", + "price": "0.031", + "name": "ZKBase", + "symbol": "ZKB", + "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "70230.481253590057712656", + "amountUsd": "42138.2887521540346275936", + "price": "0.6", + "name": "DeversiFi Token", + "symbol": "DVF", + "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", + "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "290.508016952", + "amountUsd": "40900.62370667208", + "price": "140.79", + "name": "Wrapped SOL (Wormhole)", + "symbol": "SOL", + "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", + "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "4028.076528447", + "amountUsd": "26339.592419514933", + "price": "6.539", + "name": "Wrapped TON Coin", + "symbol": "TONCOIN", + "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "23546.536039530998897252", + "amountUsd": "23570.082575570529896149252", + "price": "1.001", + "name": "Curve.Fi USD Stablecoin", + "symbol": "crvUSD", + "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "8.989236054015567327", + "amountUsd": "22847.294053495478354188356", + "price": "2541.628", + "name": "Wrapped Ether", + "symbol": "WETH", + "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "6450474.040573841973953155", + "amountUsd": "19351.422121721525921859465", + "price": "0.003", + "name": "LSD Coin", + "symbol": "LSD", + "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5.423689884062204153", + "amountUsd": "16213.876842359176516206615", + "price": "2989.455", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34056.984148728150579544", + "amountUsd": "13009.767944814153521385808", + "price": "0.382", + "name": "Bella", + "symbol": "BEL", + "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "46220.536588230241212891", + "amountUsd": "11324.031464116409097158295", + "price": "0.245", + "name": "1INCH Token", + "symbol": "1INCH", + "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "563082.288758156473620986", + "amountUsd": "9009.316620130503577935776", + "price": "0.016", + "name": "Deri", + "symbol": "DERI", + "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "43034.765060388679856659", + "amountUsd": "7315.91006026607557563203", + "price": "0.17", + "name": "Maverick Token", + "symbol": "MAV", + "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4874.863543072452577322", + "amountUsd": "7244.047225005664529900492", + "price": "1.486", + "name": "Worldcoin", + "symbol": "WLD", + "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", + "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1267111.79536025946087647", + "amountUsd": "6335.55897680129730438235", + "price": "0.005", + "name": "ZigZag", + "symbol": "ZZ", + "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", + "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.1", + "amountUsd": "5675.4499", + "price": "56754.499", + "name": "tBTC v2", + "symbol": "tBTC", + "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1.607308526702602644", + "amountUsd": "4156.075520601880950285984", + "price": "2585.736", + "name": "rsETH", + "symbol": "rsETH", + "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "35.167061181353626164", + "amountUsd": "3755.806967107385920689036", + "price": "106.799", + "name": "Aave Token", + "symbol": "AAVE", + "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "312.082999060002117307", + "amountUsd": "3143.299966532341325516104", + "price": "10.072", + "name": "ChainLink Token", + "symbol": "LINK", + "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "154.058620754243125866", + "amountUsd": "2615.91538040704827720468", + "price": "16.98", + "name": "Metaverse Index", + "symbol": "MVI", + "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "33", + "amountUsd": "1821.369", + "price": "55.193", + "name": "Tellor Tributes", + "symbol": "TRB", + "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.639944048220845643", + "amountUsd": "1651.358977888638439774782", + "price": "2580.474", + "name": "Renzo Restaked ETH", + "symbol": "Renzo Restaked ETH", + "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4093.979328418030008295", + "amountUsd": "1633.497752038793973309705", + "price": "0.399", + "name": "Matic Token", + "symbol": "MATIC", + "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "132132.766491", + "amountUsd": "1189.194898419", + "price": "0.009", + "name": "Changer", + "symbol": "CNG", + "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", + "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1164511.592541489082720882", + "amountUsd": "1164.511592541489082720882", + "price": "0.001", + "name": "Fringe", + "symbol": "FRIN", + "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5985.542511355987510812", + "amountUsd": "867.90366414661818906774", + "price": "0.145", + "name": "WOO", + "symbol": "WOO", + "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "134908.179074505869136306", + "amountUsd": "674.54089537252934568153", + "price": "0.005", + "name": "Furucombo", + "symbol": "COMBO", + "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "51689.739780035047575291", + "amountUsd": "620.276877360420570903492", + "price": "0.012", + "name": "Beam", + "symbol": "BEAM", + "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.201", + "amountUsd": "532.432317", + "price": "2648.917", + "name": "mETH", + "symbol": "mETH", + "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "42.412842071038840242", + "amountUsd": "442.15387859057990952285", + "price": "10.425", + "name": "Rocket Pool", + "symbol": "RPL", + "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "97739", + "amountUsd": "293.217", + "price": "0.003", + "name": "Bonsai3", + "symbol": "SEED", + "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.000014104615563706", + "amountUsd": "0.000004950720062860806", + "price": "0.351", + "name": "Storj", + "symbol": "STORJ", + "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "15945307297.038027211009518403", + "amountUsd": "0", + "price": "0", + "name": "Pepe", + "symbol": "PEPE", + "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1073815923.25847686794945247", + "amountUsd": "0", + "price": "0", + "name": "SHIBA INU", + "symbol": "SHIB", + "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.048392888467075907", + "amountUsd": "0", + "price": "0", + "name": "Syncus", + "symbol": "SYNC", + "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "10000100", + "amountUsd": "0", + "price": "0", + "name": "XWG", + "symbol": "XWG", + "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", + "type": "erc20", + "decimals": 18 + } + ], + "ethGasInfo": { "gasPrice": "2811768091", "erc20Transfer": "34853", "ethTransfer": "21000", "ethPrice": "2609.988" }, + "zkChains": [ + { + "chainId": "324", + "chainType": "Rollup", + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "tvl": "389188998.253667604685659703935", + "metadata": { + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "name": "ZKsyncERA", + "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], + "explorerUrl": "https://explorer.zksync.io/", + "launchDate": 1679626800 + }, + "rpc": false + }, + { + "chainId": "388", + "chainType": "Rollup", + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "tvl": "1802056.74192740728", + "metadata": { + "iconUrl": "https://s3.coinmarketcap.com/static-gravity/image/84e1ec1257dd4a6da6ee5584338a2460.jpeg", + "name": "Cronos", + "publicRpcs": ["https://mainnet.zkevm.cronos.org"], + "explorerUrl": "https://explorer.zkevm.cronos.org/", + "launchDate": 1679626800 + }, + "rpc": false + } + ] +} diff --git a/package.json b/package.json index 5954fa2..a2ecdbd 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@next/eslint-plugin-next": "14.1.3", "@rainbow-me/rainbowkit": "2.1.4", "@tanstack/react-query": "5.28.0", + "cypress": "13.14.1", "i18next": "23.7.6", "next": "14.2.5", "next-i18next": "15.2.0", @@ -63,7 +64,6 @@ "@types/react-dom": "18.2.7", "@typescript-eslint/eslint-plugin": "6.0.0", "@typescript-eslint/parser": "6.0.0", - "cypress": "13.13.3", "eslint": "8.45.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-import": "2.28.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bdfbd91..5314bb8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,191 +1,6973 @@ -lockfileVersion: '6.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true excludeLinksFromLockfile: false -dependencies: - '@emotion/cache': - specifier: 11.11.0 - version: 11.11.0 - '@emotion/react': - specifier: 11.11.3 - version: 11.11.3(@types/react@18.2.15)(react@18.2.0) - '@emotion/server': - specifier: 11.11.0 - version: 11.11.0 - '@emotion/styled': - specifier: 11.11.0 - version: 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.15)(react@18.2.0) - '@mui/icons-material': - specifier: 5.15.6 - version: 5.15.6(@mui/material@5.15.14)(@types/react@18.2.15)(react@18.2.0) - '@mui/material': - specifier: 5.15.14 - version: 5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) - '@mui/material-nextjs': - specifier: 5.15.11 - version: 5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.15)(next@14.2.5)(react@18.2.0) - '@next/eslint-plugin-next': - specifier: 14.1.3 - version: 14.1.3 - '@rainbow-me/rainbowkit': - specifier: 2.1.4 - version: 2.1.4(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(viem@2.19.6)(wagmi@2.12.5) - '@tanstack/react-query': - specifier: 5.28.0 - version: 5.28.0(react@18.2.0) - i18next: - specifier: 23.7.6 - version: 23.7.6 - next: - specifier: 14.2.5 - version: 14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) - next-i18next: - specifier: 15.2.0 - version: 15.2.0(i18next@23.7.6)(next@14.2.5)(react-i18next@14.0.0)(react@18.2.0) - react: - specifier: 18.2.0 - version: 18.2.0 - react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) - react-i18next: - specifier: 14.0.0 - version: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) - react-router-dom: - specifier: 6.15.0 - version: 6.15.0(react-dom@18.2.0)(react@18.2.0) - viem: - specifier: 2.19.6 - version: 2.19.6(typescript@5.4.2) - wagmi: - specifier: 2.12.5 - version: 2.12.5(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) - -devDependencies: - '@defi-wonderland/crypto-husky-checks': - specifier: 1.3.0 - version: 1.3.0 - '@jest/globals': - specifier: 29.7.0 - version: 29.7.0 - '@testing-library/jest-dom': - specifier: 6.1.2 - version: 6.1.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0) - '@testing-library/react': - specifier: 14.2.1 - version: 14.2.1(react-dom@18.2.0)(react@18.2.0) - '@testing-library/user-event': - specifier: 14.4.3 - version: 14.4.3(@testing-library/dom@10.4.0) - '@types/jest': - specifier: 29.5.12 - version: 29.5.12 - '@types/lodash.merge': - specifier: 4.6.7 - version: 4.6.7 - '@types/node': - specifier: 20.12.13 - version: 20.12.13 - '@types/react': - specifier: 18.2.15 - version: 18.2.15 - '@types/react-dom': - specifier: 18.2.7 - version: 18.2.7 - '@typescript-eslint/eslint-plugin': - specifier: 6.0.0 - version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.4.2) - '@typescript-eslint/parser': - specifier: 6.0.0 - version: 6.0.0(eslint@8.45.0)(typescript@5.4.2) - cypress: - specifier: 13.13.3 - version: 13.13.3 - eslint: - specifier: 8.45.0 - version: 8.45.0 - eslint-config-prettier: - specifier: 9.0.0 - version: 9.0.0(eslint@8.45.0) - eslint-plugin-import: - specifier: 2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.0.0)(eslint@8.45.0) - eslint-plugin-jsx-a11y: - specifier: 6.7.1 - version: 6.7.1(eslint@8.45.0) - eslint-plugin-prettier: - specifier: 5.0.0 - version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.45.0)(prettier@3.0.3) - eslint-plugin-react: - specifier: 7.33.2 - version: 7.33.2(eslint@8.45.0) - eslint-plugin-react-hooks: - specifier: 4.6.0 - version: 4.6.0(eslint@8.45.0) - eslint-plugin-react-refresh: - specifier: 0.4.3 - version: 0.4.3(eslint@8.45.0) - husky: - specifier: 8.0.3 - version: 8.0.3 - jest: - specifier: 29.7.0 - version: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) - jest-environment-jsdom: - specifier: 29.7.0 - version: 29.7.0 - jsdom: - specifier: 24.0.0 - version: 24.0.0 - lodash.merge: - specifier: 4.6.2 - version: 4.6.2 - prettier: - specifier: 3.0.3 - version: 3.0.3 - styled-components: - specifier: 6.0.7 - version: 6.0.7(react-dom@18.2.0)(react@18.2.0) - ts-jest: - specifier: 29.1.4 - version: 29.1.4(@babel/core@7.24.1)(jest@29.7.0)(typescript@5.4.2) - ts-node: - specifier: 10.9.2 - version: 10.9.2(@types/node@20.12.13)(typescript@5.4.2) - typescript: - specifier: 5.4.2 - version: 5.4.2 +importers: + + .: + dependencies: + '@emotion/cache': + specifier: 11.11.0 + version: 11.11.0 + '@emotion/react': + specifier: 11.11.3 + version: 11.11.3(@types/react@18.2.15)(react@18.2.0) + '@emotion/server': + specifier: 11.11.0 + version: 11.11.0 + '@emotion/styled': + specifier: 11.11.0 + version: 11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0) + '@mui/icons-material': + specifier: 5.15.6 + version: 5.15.6(@mui/material@5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.15)(react@18.2.0) + '@mui/material': + specifier: 5.15.14 + version: 5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@mui/material-nextjs': + specifier: 5.15.11 + version: 5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.15)(next@14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + '@next/eslint-plugin-next': + specifier: 14.1.3 + version: 14.1.3 + '@rainbow-me/rainbowkit': + specifier: 2.1.4 + version: 2.1.4(@tanstack/react-query@5.28.0(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10))(wagmi@2.12.5(@tanstack/query-core@5.28.0)(@tanstack/react-query@5.28.0(react@18.2.0))(@types/react@18.2.15)(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10))) + '@tanstack/react-query': + specifier: 5.28.0 + version: 5.28.0(react@18.2.0) + cypress: + specifier: 13.14.1 + version: 13.14.1 + i18next: + specifier: 23.7.6 + version: 23.7.6 + next: + specifier: 14.2.5 + version: 14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next-i18next: + specifier: 15.2.0 + version: 15.2.0(i18next@23.7.6)(next@14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-i18next@14.0.0(i18next@23.7.6)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0))(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-i18next: + specifier: 14.0.0 + version: 14.0.0(i18next@23.7.6)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0) + react-router-dom: + specifier: 6.15.0 + version: 6.15.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + viem: + specifier: 2.19.6 + version: 2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) + wagmi: + specifier: 2.12.5 + version: 2.12.5(@tanstack/query-core@5.28.0)(@tanstack/react-query@5.28.0(react@18.2.0))(@types/react@18.2.15)(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)) + devDependencies: + '@defi-wonderland/crypto-husky-checks': + specifier: 1.3.0 + version: 1.3.0 + '@jest/globals': + specifier: 29.7.0 + version: 29.7.0 + '@testing-library/jest-dom': + specifier: 6.1.2 + version: 6.1.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2))) + '@testing-library/react': + specifier: 14.2.1 + version: 14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@testing-library/user-event': + specifier: 14.4.3 + version: 14.4.3(@testing-library/dom@10.4.0) + '@types/jest': + specifier: 29.5.12 + version: 29.5.12 + '@types/lodash.merge': + specifier: 4.6.7 + version: 4.6.7 + '@types/node': + specifier: 20.12.13 + version: 20.12.13 + '@types/react': + specifier: 18.2.15 + version: 18.2.15 + '@types/react-dom': + specifier: 18.2.7 + version: 18.2.7 + '@typescript-eslint/eslint-plugin': + specifier: 6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2))(eslint@8.45.0)(typescript@5.4.2) + '@typescript-eslint/parser': + specifier: 6.0.0 + version: 6.0.0(eslint@8.45.0)(typescript@5.4.2) + eslint: + specifier: 8.45.0 + version: 8.45.0 + eslint-config-prettier: + specifier: 9.0.0 + version: 9.0.0(eslint@8.45.0) + eslint-plugin-import: + specifier: 2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2))(eslint@8.45.0) + eslint-plugin-jsx-a11y: + specifier: 6.7.1 + version: 6.7.1(eslint@8.45.0) + eslint-plugin-prettier: + specifier: 5.0.0 + version: 5.0.0(eslint-config-prettier@9.0.0(eslint@8.45.0))(eslint@8.45.0)(prettier@3.0.3) + eslint-plugin-react: + specifier: 7.33.2 + version: 7.33.2(eslint@8.45.0) + eslint-plugin-react-hooks: + specifier: 4.6.0 + version: 4.6.0(eslint@8.45.0) + eslint-plugin-react-refresh: + specifier: 0.4.3 + version: 0.4.3(eslint@8.45.0) + husky: + specifier: 8.0.3 + version: 8.0.3 + jest: + specifier: 29.7.0 + version: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) + jest-environment-jsdom: + specifier: 29.7.0 + version: 29.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + jsdom: + specifier: 24.0.0 + version: 24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + lodash.merge: + specifier: 4.6.2 + version: 4.6.2 + prettier: + specifier: 3.0.3 + version: 3.0.3 + styled-components: + specifier: 6.0.7 + version: 6.0.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + ts-jest: + specifier: 29.1.4 + version: 29.1.4(@babel/core@7.24.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.1))(jest@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)))(typescript@5.4.2) + ts-node: + specifier: 10.9.2 + version: 10.9.2(@types/node@20.12.13)(typescript@5.4.2) + typescript: + specifier: 5.4.2 + version: 5.4.2 packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@adobe/css-tools@4.3.3': + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + + '@adraffy/ens-normalize@1.10.0': + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/cli@7.24.1': + resolution: {integrity: sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/code-frame@7.24.1': + resolution: {integrity: sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg==} + engines: {node: '>=6.9.0'} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.24.1': + resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.2': + resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.24.1': + resolution: {integrity: sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.25.2': + resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.24.1': + resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.0': + resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.22.5': + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.24.7': + resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': + resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.23.6': + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.24.1': + resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-class-features-plugin@7.25.0': + resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.22.15': + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.25.2': + resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.1': + resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-environment-visitor@7.22.20': + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.23.0': + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.22.5': + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.23.0': + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.24.8': + resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.1': + resolution: {integrity: sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.23.3': + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.22.5': + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-optimise-call-expression@7.24.7': + resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.0': + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.24.8': + resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.22.20': + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-remap-async-to-generator@7.25.0': + resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.24.1': + resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.25.0': + resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.22.5': + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.22.6': + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.1': + resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.22.20': + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.23.5': + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.22.20': + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.0': + resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.24.1': + resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.0': + resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.1': + resolution: {integrity: sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.24.1': + resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.25.3': + resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3': + resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0': + resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': + resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0': + resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': + resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7': + resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': + resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0': + resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-external-helpers@7.24.1': + resolution: {integrity: sha512-l3JgdWBntLRPvZkKzHmc0z+AkI91MmXOJUAeUlHbCYfgv8qLZPcYYsAIdY3iLG3TYIDDCC6Ob+e1knlniSX6fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-default-from@7.24.7': + resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-object-rest-spread@7.20.7': + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.24.7': + resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.24.7': + resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.1': + resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.24.7': + resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.1': + resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.24.7': + resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.1': + resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.24.7': + resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.1': + resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.24.7': + resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.24.1': + resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-arrow-functions@7.24.7': + resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.24.1': + resolution: {integrity: sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.25.0': + resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.24.1': + resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.24.7': + resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.24.1': + resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.24.7': + resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.24.1': + resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.0': + resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.1': + resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.24.7': + resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.24.1': + resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-class-static-block@7.24.7': + resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.24.1': + resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-classes@7.25.0': + resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.24.1': + resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.24.7': + resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.24.1': + resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.24.8': + resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.1': + resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.24.7': + resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.24.1': + resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.24.7': + resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0': + resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.24.1': + resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dynamic-import@7.24.7': + resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.24.1': + resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.24.7': + resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.24.1': + resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.24.7': + resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.25.2': + resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.24.1': + resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.24.7': + resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.24.1': + resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.1': + resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.24.1': + resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.24.7': + resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.24.1': + resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.2': + resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.24.1': + resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.24.7': + resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.24.1': + resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.24.7': + resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.24.1': + resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.24.7': + resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.1': + resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.24.8': + resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.24.1': + resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.0': + resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.24.1': + resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.24.7': + resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7': + resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.24.1': + resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-new-target@7.24.7': + resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': + resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7': + resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.24.1': + resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.24.7': + resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.1': + resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.24.7': + resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.24.1': + resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.24.7': + resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.1': + resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.24.7': + resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.1': + resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.24.8': + resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.24.1': + resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.24.7': + resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.24.1': + resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.24.7': + resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.1': + resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.24.7': + resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.24.1': + resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.24.7': + resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.24.1': + resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.24.7': + resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.22.5': + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.24.7': + resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.24.7': + resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.23.4': + resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.2': + resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.24.1': + resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.24.1': + resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.24.7': + resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.24.1': + resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-reserved-words@7.24.7': + resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.24.7': + resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.1': + resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.24.7': + resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.24.1': + resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.24.7': + resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.24.1': + resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.24.7': + resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.24.1': + resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.24.7': + resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.24.1': + resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.24.8': + resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.24.1': + resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.2': + resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.24.1': + resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.24.7': + resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.24.1': + resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.24.7': + resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.24.1': + resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.24.7': + resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.1': + resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-unicode-sets-regex@7.24.7': + resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.24.1': + resolution: {integrity: sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-env@7.25.3': + resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-flow@7.24.7': + resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.24.1': + resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.24.1': + resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.24.7': + resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/register@7.24.6': + resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/regjsgen@0.8.0': + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + '@babel/runtime@7.24.1': + resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.24.8': + resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.25.0': + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.24.0': + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.24.1': + resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.3': + resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.24.0': + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.2': + resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@coinbase/wallet-sdk@3.9.3': + resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + + '@coinbase/wallet-sdk@4.0.4': + resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@cypress/request@3.0.1': + resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} + engines: {node: '>= 6'} + + '@cypress/xvfb@1.2.4': + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + + '@defi-wonderland/crypto-husky-checks@1.3.0': + resolution: {integrity: sha512-6h4cppr5HAjGXA5jIRQdmL0UBxOUAbsOuvYV54C42deOP/jc/EHw8CWuWzoOHLxveA6Pt7op1A8GjoQIhR6l/Q==} + hasBin: true + + '@emotion/babel-plugin@11.11.0': + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + + '@emotion/cache@11.11.0': + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + + '@emotion/hash@0.9.1': + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/is-prop-valid@1.2.2': + resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + + '@emotion/memoize@0.8.1': + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + '@emotion/react@11.11.3': + resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.1.3': + resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + + '@emotion/server@11.11.0': + resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} + peerDependencies: + '@emotion/css': ^11.0.0-rc.0 + peerDependenciesMeta: + '@emotion/css': + optional: true + + '@emotion/sheet@1.2.2': + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + + '@emotion/styled@11.11.0': + resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} + peerDependencies: + '@emotion/react': ^11.0.0-rc.0 + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/unitless@0.8.1': + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + + '@emotion/use-insertion-effect-with-fallbacks@1.0.1': + resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.2.1': + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + + '@emotion/weak-memoize@0.3.1': + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.10.0': + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.44.0': + resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@ethereumjs/common@3.2.0': + resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/tx@4.2.0': + resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} + engines: {node: '>=14'} + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@floating-ui/core@1.6.0': + resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + + '@floating-ui/dom@1.6.3': + resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + + '@floating-ui/react-dom@2.0.8': + resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@floating-ui/utils@0.2.1': + resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.2': + resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/ttlcache@1.4.1': + resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} + engines: {node: '>=12'} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@29.7.0': + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/core@29.7.0': + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@29.7.0': + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@29.6.3': + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-result@29.7.0': + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/test-sequencer@29.7.0': + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@26.6.2': + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.4.15': + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@lit-labs/ssr-dom-shim@1.2.1': + resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} + + '@lit/reactive-element@1.6.3': + resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + + '@metamask/eth-json-rpc-provider@1.0.1': + resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} + engines: {node: '>=14.0.0'} + + '@metamask/json-rpc-engine@7.3.3': + resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-engine@8.0.2': + resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} + engines: {node: '>=16.0.0'} + + '@metamask/json-rpc-middleware-stream@7.0.2': + resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} + engines: {node: '>=16.0.0'} + + '@metamask/object-multiplex@2.0.0': + resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} + engines: {node: ^16.20 || ^18.16 || >=20} + + '@metamask/onboarding@1.0.1': + resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + + '@metamask/providers@16.1.0': + resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} + engines: {node: ^18.18 || >=20} + + '@metamask/rpc-errors@6.3.1': + resolution: {integrity: sha512-ugDY7cKjF4/yH5LtBaOIKHw/AiGGSAmzptAUEiAEGr/78LwuzcXAxmzEQfSfMIfI+f9Djr8cttq1pRJJKfTuCg==} + engines: {node: '>=16.0.0'} + + '@metamask/safe-event-emitter@2.0.0': + resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + + '@metamask/safe-event-emitter@3.1.1': + resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} + engines: {node: '>=12.0.0'} + + '@metamask/sdk-communication-layer@0.27.0': + resolution: {integrity: sha512-G9LCaQzIqp5WmUmvHN6UUdjWrBh67MbRobmbbs5fcc2+9XFhj3vBgtyleUYjun91jSlPHoZeo+f/Pj4/WoPIJg==} + peerDependencies: + cross-fetch: ^4.0.0 + eciesjs: ^0.3.16 + eventemitter2: ^6.4.7 + readable-stream: ^3.6.2 + socket.io-client: ^4.5.1 + + '@metamask/sdk-install-modal-web@0.26.5': + resolution: {integrity: sha512-qVA9Nk+NorGx5hXyODy5wskptE8R7RNYTYt49VbQpJogqbbVe1dnJ98+KaA43PBN4XYMCXmcIhULNiEHGsLynA==} + peerDependencies: + i18next: 23.11.5 + react: ^18.2.0 + react-dom: ^18.2.0 + react-native: '*' + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + react-native: + optional: true + + '@metamask/sdk@0.27.0': + resolution: {integrity: sha512-6sMjr/0qR700X1svPGEQ4rBdtccidBLeTC27fYQc7r9ROgSixB1DUUAyu/LoySVqt3Hu/Zm7NnAHXuT228ht7A==} + peerDependencies: + react: ^18.2.0 + react-dom: ^18.2.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@metamask/superstruct@3.1.0': + resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@5.0.2': + resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} + engines: {node: '>=14.0.0'} + + '@metamask/utils@8.5.0': + resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} + engines: {node: '>=16.0.0'} + + '@metamask/utils@9.1.0': + resolution: {integrity: sha512-g2REf+xSt0OZfMoNNdC4+/Yy8eP3KUqvIArel54XRFKPoXbHI6+YjFfrLtfykWBjffOp7DTfIc3Kvk5TLfuiyg==} + engines: {node: '>=16.0.0'} + + '@motionone/animation@10.18.0': + resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + + '@motionone/dom@10.18.0': + resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + + '@motionone/easing@10.18.0': + resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + + '@motionone/generators@10.18.0': + resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + + '@motionone/svelte@10.16.4': + resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + + '@motionone/types@10.17.1': + resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} + + '@motionone/utils@10.18.0': + resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + + '@motionone/vue@10.16.4': + resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} + deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + + '@mui/base@5.0.0-beta.40': + resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/core-downloads-tracker@5.15.14': + resolution: {integrity: sha512-on75VMd0XqZfaQW+9pGjSNiqW+ghc5E2ZSLRBXwcXl/C4YzjfyjrLPhrEpKnR9Uym9KXBvxrhoHfPcczYHweyA==} + + '@mui/icons-material@5.15.6': + resolution: {integrity: sha512-GnkxMtlhs+8ieHLmCytg00ew0vMOiXGFCw8Ra9nxMsBjBqnrOI5gmXqUm+sGggeEU/HG8HyeqC1MX/IxOBJHzA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/material-nextjs@5.15.11': + resolution: {integrity: sha512-cp5RWYbBngyi7NKP91R9QITllfxumCVPFjqe4AKzNROVuCot0VpgkafxXqfbv0uFsyUU0ROs0O2M3r17q604Aw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/cache': ^11.11.0 + '@emotion/server': ^11.11.0 + '@mui/material': ^5.0.0 + '@types/react': ^17.0.0 || ^18.0.0 + next: ^13.0.0 || ^14.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/cache': + optional: true + '@emotion/server': + optional: true + '@types/react': + optional: true + + '@mui/material@5.15.14': + resolution: {integrity: sha512-kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/private-theming@5.15.14': + resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/styled-engine@5.15.14': + resolution: {integrity: sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.4.1 + '@emotion/styled': ^11.3.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + + '@mui/system@5.15.14': + resolution: {integrity: sha512-auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@emotion/react': ^11.5.0 + '@emotion/styled': ^11.3.0 + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@emotion/react': + optional: true + '@emotion/styled': + optional: true + '@types/react': + optional: true + + '@mui/types@7.2.14': + resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@mui/utils@5.15.14': + resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/react': ^17.0.0 || ^18.0.0 + react: ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + '@next/env@14.2.5': + resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} + + '@next/eslint-plugin-next@14.1.3': + resolution: {integrity: sha512-VCnZI2cy77Yaj3L7Uhs3+44ikMM1VD/fBMwvTBb3hIaTIuqa+DmG4dhUDq+MASu3yx97KhgsVJbsas0XuiKyww==} + + '@next/swc-darwin-arm64@14.2.5': + resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@14.2.5': + resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@14.2.5': + resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@14.2.5': + resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@14.2.5': + resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@14.2.5': + resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@14.2.5': + resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-ia32-msvc@14.2.5': + resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@next/swc-win32-x64-msvc@14.2.5': + resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} + + '@noble/curves@1.4.0': + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-wasm@2.4.1': + resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + engines: {node: '>= 10.0.0'} + bundledDependencies: + - napi-wasm + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@rainbow-me/rainbowkit@2.1.4': + resolution: {integrity: sha512-dJ92cGERc5FcyqFRJRh4iUi2IBS26pBAM1NSL7J2LNxqtOfeOAuAvzVFtJUxDCidS0/hNbvPY47GU68QpW4g6A==} + engines: {node: '>=12.4'} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + react-dom: '>=18' + viem: 2.x + wagmi: ^2.9.0 + + '@react-native-community/cli-clean@14.0.0': + resolution: {integrity: sha512-kvHthZTNur/wLLx8WL5Oh+r04zzzFAX16r8xuaLhu9qGTE6Th1JevbsIuiQb5IJqD8G/uZDKgIZ2a0/lONcbJg==} + + '@react-native-community/cli-config@14.0.0': + resolution: {integrity: sha512-2Nr8KR+dgn1z+HLxT8piguQ1SoEzgKJnOPQKE1uakxWaRFcQ4LOXgzpIAscYwDW6jmQxdNqqbg2cRUoOS7IMtQ==} + + '@react-native-community/cli-debugger-ui@14.0.0': + resolution: {integrity: sha512-JpfzILfU7eKE9+7AMCAwNJv70H4tJGVv3ZGFqSVoK1YHg5QkVEGsHtoNW8AsqZRS6Fj4os+Fmh+r+z1L36sPmg==} + + '@react-native-community/cli-debugger-ui@14.0.0-alpha.11': + resolution: {integrity: sha512-0wCNQxhCniyjyMXgR1qXliY180y/2QbvoiYpp2MleGQADr5M1b8lgI4GoyADh5kE+kX3VL0ssjgyxpmbpCD86A==} + + '@react-native-community/cli-doctor@14.0.0': + resolution: {integrity: sha512-in6jylHjaPUaDzV+JtUblh8m9JYIHGjHOf6Xn57hrmE5Zwzwuueoe9rSMHF1P0mtDgRKrWPzAJVejElddfptWA==} + + '@react-native-community/cli-platform-android@14.0.0': + resolution: {integrity: sha512-nt7yVz3pGKQXnVa5MAk7zR+1n41kNKD3Hi2OgybH5tVShMBo7JQoL2ZVVH6/y/9wAwI/s7hXJgzf1OIP3sMq+Q==} + + '@react-native-community/cli-platform-apple@14.0.0': + resolution: {integrity: sha512-WniJL8vR4MeIsjqio2hiWWuUYUJEL3/9TDL5aXNwG68hH3tYgK3742+X9C+vRzdjTmf5IKc/a6PwLsdplFeiwQ==} + + '@react-native-community/cli-platform-ios@14.0.0': + resolution: {integrity: sha512-8kxGv7mZ5nGMtueQDq+ndu08f0ikf3Zsqm3Ix8FY5KCXpSgP14uZloO2GlOImq/zFESij+oMhCkZJGggpWpfAw==} + + '@react-native-community/cli-server-api@14.0.0': + resolution: {integrity: sha512-A0FIsj0QCcDl1rswaVlChICoNbfN+mkrKB5e1ab5tOYeZMMyCHqvU+eFvAvXjHUlIvVI+LbqCkf4IEdQ6H/2AQ==} + + '@react-native-community/cli-server-api@14.0.0-alpha.11': + resolution: {integrity: sha512-I7YeYI7S5wSxnQAqeG8LNqhT99FojiGIk87DU0vTp6U8hIMLcA90fUuBAyJY38AuQZ12ZJpGa8ObkhIhWzGkvg==} + + '@react-native-community/cli-tools@14.0.0': + resolution: {integrity: sha512-L7GX5hyYYv0ZWbAyIQKzhHuShnwDqlKYB0tqn57wa5riGCaxYuRPTK+u4qy+WRCye7+i8M4Xj6oQtSd4z0T9cA==} + + '@react-native-community/cli-tools@14.0.0-alpha.11': + resolution: {integrity: sha512-HQCfVnX9aqRdKdLxmQy4fUAUo+YhNGlBV7ZjOayPbuEGWJ4RN+vSy0Cawk7epo7hXd6vKzc7P7y3HlU6Kxs7+w==} + + '@react-native-community/cli-types@14.0.0': + resolution: {integrity: sha512-CMUevd1pOWqvmvutkUiyQT2lNmMHUzSW7NKc1xvHgg39NjbS58Eh2pMzIUP85IwbYNeocfYc3PH19vA/8LnQtg==} + + '@react-native-community/cli@14.0.0': + resolution: {integrity: sha512-KwMKJB5jsDxqOhT8CGJ55BADDAYxlYDHv5R/ASQlEcdBEZxT0zZmnL0iiq2VqzETUy+Y/Nop+XDFgqyoQm0C2w==} + engines: {node: '>=18'} + hasBin: true + + '@react-native/assets-registry@0.75.1': + resolution: {integrity: sha512-mrW6dvueJgP5v5mR/dxvW9v+t9AmzR5OMDMq94reT04QarREGGDHEOW5sLzj4uT6Xhqtda2+ZQOaEZ6PPcv+QA==} + engines: {node: '>=18'} + + '@react-native/babel-plugin-codegen@0.75.1': + resolution: {integrity: sha512-M7CxPAYZVDeBCCyC4BToEf6vPFtZ5EAA5F2fcm0RuErWMNiB2ycD7nCSVpZtQXOxgNItNi+7mRFTLKTNb7AFrQ==} + engines: {node: '>=18'} + + '@react-native/babel-preset@0.75.1': + resolution: {integrity: sha512-u5+7PCkz9J5XKhUwDSJCxLyt49L9qirlBvOR8IwztWVhrf+gd/iIgQLZm9vf/j9tfLhEsgvMup6FMha2/u1cQw==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/codegen@0.75.1': + resolution: {integrity: sha512-nO5CQuXTPL8iou9EzkUjOrGsiano3hGC80AwFlFt8h7q8Bked293YaB3qRQRwN4gmedR8ZKVZGI/pyuvuOWLfQ==} + engines: {node: '>=18'} + peerDependencies: + '@babel/preset-env': ^7.1.6 + + '@react-native/community-cli-plugin@0.75.1': + resolution: {integrity: sha512-G0GPvFAVrC9k0MfwnKXimaYKqOlEzXFMZ6DmZi2zxSGPFt/MV3sSRjbv3yb8q0mLcK78/J7w1DyImcSQopOCLg==} + engines: {node: '>=18'} + + '@react-native/debugger-frontend@0.75.1': + resolution: {integrity: sha512-N+awwEYZHj9lR4hieBK2oFB6C0qa4/6NPpzeqvtLnZddr38H6Wv9CHxSFA8pqIBu4qmn4JcRjOjVD6pXCcLohA==} + engines: {node: '>=18'} + + '@react-native/dev-middleware@0.75.1': + resolution: {integrity: sha512-2vBIqNe5p/j3ZfDtV3R74OlwoGTgJVDhx9bMIK1U8ODqic+8OVjqvQKGNB+KUb/+HiPkKAhpAIsgcEmL/Nq1sg==} + engines: {node: '>=18'} + + '@react-native/gradle-plugin@0.75.1': + resolution: {integrity: sha512-a2gVjX3MB9TF9QZSKje79n1GDAnseTU94VIcFH/4DS3KjbK3yrNXsu1maxGZxDUAKmTUH7Rz4An/Rb5nkZG7dw==} + engines: {node: '>=18'} + + '@react-native/js-polyfills@0.75.1': + resolution: {integrity: sha512-7yUCDtsNaIoOefI3M1XiqUaxNQIzNYL0P38IE6JuroVZspPaGmwB34RkgBTuDzNQ+p/4EIgBmqRzqF5Jjlf92A==} + engines: {node: '>=18'} + + '@react-native/metro-babel-transformer@0.75.1': + resolution: {integrity: sha512-X4NZNWox2E97fJG97XNuTd9wU3FK2c+S/Neg7KsBETPOHUkdoORC3nH1VQRrIqID85yYgdxLxvDwXa9hkmzjuA==} + engines: {node: '>=18'} + peerDependencies: + '@babel/core': '*' + + '@react-native/normalize-colors@0.75.1': + resolution: {integrity: sha512-TnUII4YFtPBzxA0Eu1RvXrauw+fZlixK6QgbuOZSfhEfgM1ri6O1wse3VaR+h1CJw2NlNjgi902x9uUX8HbH8w==} + + '@react-native/virtualized-lists@0.75.1': + resolution: {integrity: sha512-e7XL9XtU2Z9NUFJFwL9StHa9l2La0/fU7wZ05s8YEMxB+7Fgyn7/X4JsIk7G4xTSPXxPKV2Yz9STHGzKT5OcKQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/react': ^18.2.6 + react: '*' + react-native: '*' + peerDependenciesMeta: + '@types/react': + optional: true + + '@remix-run/router@1.8.0': + resolution: {integrity: sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==} + engines: {node: '>=14.0.0'} + + '@safe-global/safe-apps-provider@0.18.3': + resolution: {integrity: sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ==} + + '@safe-global/safe-apps-sdk@9.1.0': + resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} + + '@safe-global/safe-gateway-typescript-sdk@3.22.2': + resolution: {integrity: sha512-Y0yAxRaB98LFp2Dm+ACZqBSdAmI3FlpH/LjxOZ94g/ouuDJecSq0iR26XZ5QDuEL8Rf+L4jBJaoDC08CD0KkJw==} + engines: {node: '>=16'} + + '@scure/base@1.1.7': + resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@socket.io/component-emitter@3.1.2': + resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} + + '@stablelib/aead@1.0.1': + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/chacha20poly1305@1.0.1': + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + + '@stablelib/chacha@1.0.1': + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hkdf@1.0.1': + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/sha256@1.0.1': + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.5': + resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + + '@tanstack/query-core@5.28.0': + resolution: {integrity: sha512-BfltXqnoIAXTCFrQCu40M3Ch7odQ6IJraTy0t8n12jAwXMYKIgDwOBWTqkSUYD+vxMi8Ag0+9F8lw9wZKhi2Yg==} + + '@tanstack/react-query@5.28.0': + resolution: {integrity: sha512-nF4E4rFMQdh30gECGkTfyzgjgfSr4MLVgYoIsf7KqVkjUjEQHPpi9jyx10kO3Yq/OQMKOLMHAzD31st/lxDPbQ==} + peerDependencies: + react: ^18.0.0 + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/dom@9.3.4': + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + + '@testing-library/jest-dom@6.1.2': + resolution: {integrity: sha512-NP9jl1Q2qDDtx+cqogowtQtmgD2OVs37iMSIsTv5eN5ETRkf26Kj6ugVwA93/gZzzFWQAsgkKkcftDe91BJCkQ==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + + '@testing-library/react@14.2.1': + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@testing-library/user-event@14.4.3': + resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/dom-screen-wake-lock@1.0.3': + resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/hoist-non-react-statics@3.3.5': + resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@29.5.12': + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + + '@types/jsdom@20.0.1': + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/lodash.merge@4.6.7': + resolution: {integrity: sha512-OwxUJ9E50gw3LnAefSHJPHaBLGEKmQBQ7CZe/xflHkyy/wH2zVyEIAKReHvVrrn7zKdF58p16We9kMfh7v0RRQ==} + + '@types/lodash@4.17.0': + resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@20.12.13': + resolution: {integrity: sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prop-types@15.7.11': + resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + + '@types/react-dom@18.2.7': + resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + + '@types/react-transition-group@4.4.10': + resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} + + '@types/react@18.2.15': + resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + + '@types/scheduler@0.16.8': + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/sinonjs__fake-timers@8.1.1': + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + + '@types/sizzle@2.3.8': + resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/stylis@4.2.5': + resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@15.0.19': + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + + '@types/yargs@17.0.32': + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript-eslint/eslint-plugin@6.0.0': + resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@6.0.0': + resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@6.0.0': + resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/type-utils@6.0.0': + resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@6.0.0': + resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@typescript-eslint/typescript-estree@6.0.0': + resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@6.0.0': + resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + + '@typescript-eslint/visitor-keys@6.0.0': + resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + engines: {node: ^16.0.0 || >=18.0.0} + + '@vanilla-extract/css@1.14.0': + resolution: {integrity: sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA==} + + '@vanilla-extract/dynamic@2.1.0': + resolution: {integrity: sha512-8zl0IgBYRtgD1h+56Zu13wHTiMTJSVEa4F7RWX9vTB/5Xe2KtjoiqApy/szHPVFA56c+ex6A4GpCQjT1bKXbYw==} + + '@vanilla-extract/private@1.0.5': + resolution: {integrity: sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==} + + '@vanilla-extract/sprinkles@1.6.1': + resolution: {integrity: sha512-N/RGKwGAAidBupZ436RpuweRQHEFGU+mvAqBo8PRMAjJEmHoPDttV8RObaMLrJHWLqvX+XUMinHUnD0hFRQISw==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + + '@wagmi/connectors@5.1.5': + resolution: {integrity: sha512-z+UAfwfTqVldoNxUFffHPcc/ets3UP1ehXE6b9k9ZDaih8VdZJRGz84qLjx+GVnI/+FrHfFwPPD9C2YYd2azww==} + peerDependencies: + '@wagmi/core': 2.13.4 + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + '@wagmi/core@2.13.4': + resolution: {integrity: sha512-J6gfxHYr8SCc/BzEa712LnI+qLFs5K2nBLupwQqQl4WiAlCu8SdcpbZokqiwfCMYhIRMj0+YFEP9qe4ypcexmw==} + peerDependencies: + '@tanstack/query-core': '>=5.0.0' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + '@tanstack/query-core': + optional: true + typescript: + optional: true + + '@walletconnect/core@2.14.0': + resolution: {integrity: sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g==} + + '@walletconnect/environment@1.0.1': + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + + '@walletconnect/ethereum-provider@2.14.0': + resolution: {integrity: sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg==} + + '@walletconnect/events@1.0.1': + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + + '@walletconnect/heartbeat@1.2.2': + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + + '@walletconnect/jsonrpc-http-connection@1.0.8': + resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + + '@walletconnect/jsonrpc-provider@1.0.14': + resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + + '@walletconnect/jsonrpc-utils@1.0.8': + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + + '@walletconnect/jsonrpc-ws-connection@1.0.14': + resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + + '@walletconnect/keyvaluestorage@1.1.1': + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@walletconnect/logger@2.1.2': + resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + + '@walletconnect/modal-core@2.6.2': + resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + + '@walletconnect/modal-ui@2.6.2': + resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + + '@walletconnect/modal@2.6.2': + resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + + '@walletconnect/relay-api@1.0.10': + resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + + '@walletconnect/relay-auth@1.0.4': + resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + + '@walletconnect/safe-json@1.0.2': + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + + '@walletconnect/sign-client@2.14.0': + resolution: {integrity: sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg==} + + '@walletconnect/time@1.0.2': + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + + '@walletconnect/types@2.14.0': + resolution: {integrity: sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g==} + + '@walletconnect/universal-provider@2.14.0': + resolution: {integrity: sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA==} + + '@walletconnect/utils@2.14.0': + resolution: {integrity: sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ==} + + '@walletconnect/window-getters@1.0.1': + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + + '@walletconnect/window-metadata@1.0.1': + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + abitype@1.0.5: + resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + + acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array.prototype.findlastindex@1.2.4: + resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + ast-types-flow@0.0.7: + resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} + + ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async-mutex@0.2.6: + resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axe-core@4.8.4: + resolution: {integrity: sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==} + engines: {node: '>=4'} + + axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + + babel-core@7.0.0-bridge.0: + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + babel-jest@29.7.0: + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.10: + resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.1: + resolution: {integrity: sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.1: + resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-transform-flow-enums@0.0.2: + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + + babel-preset-current-node-syntax@1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@29.6.3: + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + blob-util@2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + bowser@2.11.0: + resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserslist@4.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-from@0.1.2: + resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.8: + resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} + engines: {node: '>=6.14.2'} + + busboy@1.6.0: + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} + engines: {node: '>=10.16.0'} + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + + caniuse-lite@1.0.30001599: + resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} + + caniuse-lite@1.0.30001651: + resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + check-more-types@2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chrome-launcher@0.15.2: + resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} + engines: {node: '>=12.13.0'} + hasBin: true + + chromium-edge-launcher@0.2.0: + resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + + cjs-module-lexer@1.3.1: + resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} + + 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-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + clipboardy@4.0.0: + resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} + engines: {node: '>=18'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + + 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'} + + clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + + connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + core-js-compat@3.36.1: + resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} + + core-js-compat@3.38.0: + resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} + + core-js@3.37.1: + resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + create-jest@29.7.0: + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + + cross-fetch@4.0.0: + resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crossws@0.2.4: + resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} + peerDependencies: + uWebSockets.js: '*' + peerDependenciesMeta: + uWebSockets.js: + optional: true + + css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + cssstyle@4.0.1: + resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} + engines: {node: '>=18'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cypress@13.14.1: + resolution: {integrity: sha512-Wo+byPmjps66hACEH5udhXINEiN3qS3jWNGRzJOjrRJF3D0+YrcP2LVB1T7oYaVQM/S+eanqEvBWYc8cf7Vcbg==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} + hasBin: true + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-urls@3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + + dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deep-object-diff@1.1.9: + resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} + + deepmerge@4.3.1: + 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'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + duplexer2@0.1.4: + resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + eciesjs@0.3.19: + resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + electron-to-chromium@1.4.710: + resolution: {integrity: sha512-w+9yAVHoHhysCa+gln7AzbO9CdjFcL/wN/5dd+XW/Msl2d/4+WisEaCF1nty0xbAKaxdaJfgLB2296U7zZB7BA==} + + electron-to-chromium@1.5.10: + resolution: {integrity: sha512-C3RDERDjrNW262GCRvpoer3a0Ksd66CtgDLxMHhzShQ8fhL4kwnpVXsJPAKg9xJjIROXUbLBrvtOzVAjALMIWA==} + + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + + emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + + 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==} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + engine.io-client@6.5.4: + resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} + + engine.io-parser@5.2.3: + resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} + engines: {node: '>=10.0.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + envinfo@7.13.0: + resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} + engines: {node: '>=4'} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + + es-abstract@1.22.5: + resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} + engines: {node: '>= 0.4'} + + es-abstract@1.23.2: + resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} + engines: {node: '>= 0.4'} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.0.18: + resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + + 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@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@9.0.0: + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-module-utils@2.8.1: + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-import@2.28.1: + resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jsx-a11y@6.7.1: + resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-plugin-prettier@5.0.0: + resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react-refresh@0.4.3: + resolution: {integrity: sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==} + peerDependencies: + eslint: '>=7' + + eslint-plugin-react@7.33.2: + resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + eth-block-tracker@7.1.0: + resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} + engines: {node: '>=14.0.0'} + + eth-json-rpc-filters@6.0.1: + resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} + engines: {node: '>=14.0.0'} + + eth-query@2.1.2: + resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + + eth-rpc-errors@4.0.3: + resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter2@6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + + eventemitter2@6.4.9: + resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + 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'} + + executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extension-port-stream@3.0.0: + resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} + engines: {node: '>=12.0.0'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + + fast-xml-parser@4.4.1: + resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} + hasBin: true + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + + find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + flow-enums-runtime@0.0.6: + resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} + + flow-parser@0.243.0: + resolution: {integrity: sha512-HCDBfH+kZcY5etWYeAqatjW78gkIryzb9XixRsA8lGI1uyYc7aCpElkkO4H+KIpoyQMiY0VAZPI4cyac3wQe8w==} + engines: {node: '>=0.4.0'} + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + futoin-hkdf@1.5.3: + resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} + engines: {node: '>=8'} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port-please@3.1.2: + resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + getos@3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + h3@1.12.0: + resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hermes-estree@0.22.0: + resolution: {integrity: sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==} + + hermes-estree@0.23.0: + resolution: {integrity: sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==} + + hermes-parser@0.22.0: + resolution: {integrity: sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==} + + hermes-parser@0.23.0: + resolution: {integrity: sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==} + + hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-parse-stringify@3.0.1: + resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + + html-tokenize@2.0.1: + resolution: {integrity: sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==} + hasBin: true + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-shutdown@1.2.2: + resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + http-signature@1.3.6: + resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} + engines: {node: '>=0.10'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + 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'} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + i18next-browser-languagedetector@7.1.0: + resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + + i18next-fs-backend@2.3.1: + resolution: {integrity: sha512-tvfXskmG/9o+TJ5Fxu54sSO5OkY6d+uMn+K6JiUGLJrwxAVfer+8V3nU8jq3ts9Pe5lXJv4b1N7foIjJ8Iy2Gg==} + + i18next@23.11.5: + resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} + + i18next@23.7.6: + resolution: {integrity: sha512-O66BhXBw0fH4bEJMA0/klQKPEbcwAp5wjXEL803pdAynNbg2f4qhLIYlNHJyE7icrL6XmSZKPYaaXwy11kJ6YQ==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + idb-keyval@6.2.1: + resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + + image-size@1.1.1: + resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} + engines: {node: '>=16.x'} + hasBin: true + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-stream@2.0.1: + 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-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is64bit@2.0.0: + resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} + engines: {node: '>=18'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + + isows@1.0.4: + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} + peerDependencies: + ws: '*' + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@6.0.3: + resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} + engines: {node: '>=10'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + iterator.prototype@1.1.2: + resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + + jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + + jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-cli@29.7.0: + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jest-config@29.7.0: + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-environment-jsdom@29.7.0: + resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@29.7.0: + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + + jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + jscodeshift@0.14.0: + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + + jsdom@20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@24.0.0: + resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-rpc-engine@6.1.0: + resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} + engines: {node: '>=10.0.0'} + + json-rpc-random-id@1.0.1: + resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + language-subtag-registry@0.3.22: + resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} + + language-tags@1.0.5: + resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + + lazy-ass@1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lighthouse-logger@1.4.2: + resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + listhen@1.7.2: + resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + hasBin: true + + listr2@3.14.0: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + lit-element@3.3.3: + resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + + lit-html@2.8.0: + resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + + lit@2.8.0: + resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + + logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + marky@1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + + media-query-parser@2.0.2: + resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + metro-babel-transformer@0.80.10: + resolution: {integrity: sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==} + engines: {node: '>=18'} + + metro-cache-key@0.80.10: + resolution: {integrity: sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==} + engines: {node: '>=18'} + + metro-cache@0.80.10: + resolution: {integrity: sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==} + engines: {node: '>=18'} + + metro-config@0.80.10: + resolution: {integrity: sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==} + engines: {node: '>=18'} + + metro-core@0.80.10: + resolution: {integrity: sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==} + engines: {node: '>=18'} + + metro-file-map@0.80.10: + resolution: {integrity: sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==} + engines: {node: '>=18'} + + metro-minify-terser@0.80.10: + resolution: {integrity: sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==} + engines: {node: '>=18'} + + metro-resolver@0.80.10: + resolution: {integrity: sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==} + engines: {node: '>=18'} + + metro-runtime@0.80.10: + resolution: {integrity: sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==} + engines: {node: '>=18'} + + metro-source-map@0.80.10: + resolution: {integrity: sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==} + engines: {node: '>=18'} + + metro-symbolicate@0.80.10: + resolution: {integrity: sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==} + engines: {node: '>=18'} + hasBin: true + + metro-transform-plugins@0.80.10: + resolution: {integrity: sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==} + engines: {node: '>=18'} + + metro-transform-worker@0.80.10: + resolution: {integrity: sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==} + engines: {node: '>=18'} + + metro@0.80.10: + resolution: {integrity: sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==} + engines: {node: '>=18'} + hasBin: true + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + micromatch@4.0.7: + resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + mipd@0.0.7: + resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.1: + resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + + modern-ahocorasick@1.0.1: + resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} + + motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + multipipe@1.0.2: + resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + next-i18next@15.2.0: + resolution: {integrity: sha512-Rl5yZ4oGffsB0AjRykZ5PzNQ2M6am54MaMayldGmH/UKZisrIxk2SKEPJvaHhKlWe1qgdNi2FkodwK8sEjfEmg==} + engines: {node: '>=14'} + peerDependencies: + i18next: '>= 23.7.13' + next: '>= 12.0.0' + react: '>= 17.0.2' + react-i18next: '>= 13.5.0' + + next@14.2.5: + resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + + nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + + node-fetch-native@1.6.4: + resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-gyp-build@4.8.1: + resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + 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} + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + + ob1@0.80.10: + resolution: {integrity: sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==} + engines: {node: '>=18'} + + obj-multiplex@1.0.0: + resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@0.4.0: + resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.hasown@1.1.3: + resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + ofetch@1.3.4: + resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + + ohash@1.1.3: + resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + 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'} + + open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ospath@1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + + outdent@0.8.0: + resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + 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'} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + 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==} + + path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pify@5.0.0: + resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} + engines: {node: '>=10'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-types@1.1.3: + resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + pony-cause@2.1.11: + resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} + engines: {node: '>=12.0.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.36: + resolution: {integrity: sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==} + engines: {node: ^10 || ^12 || >=14} + + preact@10.23.2: + resolution: {integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + + proxy-from-env@1.0.0: + resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@6.1.0: + resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + + qr-code-styling@1.6.0-rc.1: + resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + + qrcode-generator@1.4.4: + resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} + + qrcode-terminal-nooctal@0.12.1: + resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} + hasBin: true + + qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qs@6.10.4: + resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} + engines: {node: '>=0.6'} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + react-devtools-core@5.3.1: + resolution: {integrity: sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-i18next@14.0.0: + resolution: {integrity: sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==} + peerDependencies: + i18next: '>= 23.2.3' + react: '>= 16.8.0' + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + react-native-webview@11.26.1: + resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} + peerDependencies: + react: '*' + react-native: '*' + + react-native@0.75.1: + resolution: {integrity: sha512-6WGjZdqXLEuBWAP+h2WH5a2Nd9jn7KmQ1GYy0Krzkcfvz9vPtKKIUSEjwvi3q+M0UTu3V/ESBaMDfT/GGr3fkg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@types/react': ^18.2.6 + react: ^18.2.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-router-dom@6.15.0: + resolution: {integrity: sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.15.0: + resolution: {integrity: sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + readable-stream@1.0.34: + resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + + regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + + regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + + request-progress@3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + + rollup-plugin-visualizer@5.12.0: + resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rollup: + optional: true + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + + scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + + secp256k1@5.0.0: + resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} + engines: {node: '>=14.0.0'} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + + 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'} + + socket.io-client@4.7.5: + resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} + engines: {node: '>=10.0.0'} + + socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + source-map-js@1.1.0: + resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==} + engines: {node: '>=0.10.0'} + + source-map-js@1.2.0: + resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + streamsearch@1.1.0: + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} + engines: {node: '>=10.0.0'} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-width@4.2.3: + 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.prototype.matchall@4.0.10: + resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + 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-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + styled-components@6.0.7: + resolution: {integrity: sha512-xIwWuiRMYR43mskVsW9MGTRjSo7ol4bcVjT595fGUp3OLBJOlOgaiKaxsHdC4a2HqWKqKnh0CmcRbk5ogyDjTg==} + engines: {node: '>= 16'} + peerDependencies: + babel-plugin-styled-components: '>= 2' + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + peerDependenciesMeta: + babel-plugin-styled-components: + optional: true + + styled-jsx@5.1.1: + resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} + + sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + + superstruct@1.0.4: + resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} + engines: {node: '>=14.0.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.8.8: + resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + system-architecture@0.1.0: + resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} + engines: {node: '>=18'} + + temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + + terser@5.31.6: + resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} + + through2@0.4.2: + resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} + + through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tough-cookie@4.1.3: + resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + + tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-jest@29.1.4: + resolution: {integrity: sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==} + engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/transform': ^29.0.0 + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/transform': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.5: + resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + engines: {node: '>= 0.4'} + + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@1.0.38: + resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + uint8arrays@3.1.0: + resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + unenv@1.10.0: + resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + + unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unstorage@1.10.2: + resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} + peerDependencies: + '@azure/app-configuration': ^1.5.0 + '@azure/cosmos': ^4.0.0 + '@azure/data-tables': ^13.2.2 + '@azure/identity': ^4.0.1 + '@azure/keyvault-secrets': ^4.8.0 + '@azure/storage-blob': ^12.17.0 + '@capacitor/preferences': ^5.0.7 + '@netlify/blobs': ^6.5.0 || ^7.0.0 + '@planetscale/database': ^1.16.0 + '@upstash/redis': ^1.28.4 + '@vercel/kv': ^1.0.1 + idb-keyval: ^6.2.1 + ioredis: ^5.3.2 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/kv': + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + untun@0.1.3: + resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} + hasBin: true + + update-browserslist-db@1.0.13: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uqr@0.1.2: + resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sync-external-store@1.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + + valtio@1.11.2: + resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=16.8' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + viem@2.19.6: + resolution: {integrity: sha512-7jiuX+ZncPZE8iEzgW/iO7EaAMRJEW8hYeJy9YFTMK34Wa9aWzqOm4lrORgemlsqJ/kpQG4InzhG0jc2HY67FA==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + + void-elements@3.1.0: + resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} + engines: {node: '>=0.10.0'} + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + wagmi@2.12.5: + resolution: {integrity: sha512-+fpSUsVKyGOumguQirtpyMb7dmDP4/ZdwrTqrBc+WZVTwR9S8WdFPParw/BKXVZjF9euJxu1zKsWQSLBeCROfQ==} + peerDependencies: + '@tanstack/react-query': '>=5.0.0' + react: '>=18' + typescript: '>=5.0.4' + viem: 2.x + peerDependenciesMeta: + typescript: + optional: true + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + webauthn-p256@0.0.5: + resolution: {integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==} + + webextension-polyfill@0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + + 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'} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + + whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + ws@6.2.3: + resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - /@adobe/css-tools@4.3.3: - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} - dev: true + ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - /@adraffy/ens-normalize@1.10.0: - resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} - dev: false + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - /@ampproject/remapping@2.3.0: - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + + xtend@2.1.2: + resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} + engines: {node: '>=0.4'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yaml@2.5.0: + resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} + engines: {node: '>= 14'} + hasBin: true + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zustand@4.4.1: + resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@adobe/css-tools@4.3.3': {} + + '@adraffy/ens-normalize@1.10.0': {} + + '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - /@babel/cli@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-HbmrtxyFUr34LwAlV9jS+sSIjUp4FpdtIMGwgufY3AsxrIfsh/HxlMTywsONAZsU0RMYbZtbZFpUCrSGs7o0EA==} - engines: {node: '>=6.9.0'} - hasBin: true - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/cli@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@jridgewell/trace-mapping': 0.3.25 @@ -198,33 +6980,22 @@ packages: optionalDependencies: '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 chokidar: 3.6.0 - dev: true - /@babel/code-frame@7.24.1: - resolution: {integrity: sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg==} - engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.1': dependencies: '@babel/highlight': 7.24.1 picocolors: 1.0.0 - /@babel/code-frame@7.24.7: - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} + '@babel/code-frame@7.24.7': dependencies: '@babel/highlight': 7.24.7 picocolors: 1.0.1 - /@babel/compat-data@7.24.1: - resolution: {integrity: sha512-Pc65opHDliVpRHuKfzI+gSA4zcgr65O4cl64fFJIWEEh8JoHIHh0Oez1Eo8Arz8zq/JhgKodQaxEwUPRtZylVA==} - engines: {node: '>=6.9.0'} + '@babel/compat-data@7.24.1': {} - /@babel/compat-data@7.25.2: - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} - engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.2': {} - /@babel/core@7.24.1: - resolution: {integrity: sha512-F82udohVyIgGAY2VVj/g34TpFUG606rumIHjTfVbssPg2zTR7PuuEpZcX8JA6sgBfIYmJrFtWgPvHQuJamVqZQ==} - engines: {node: '>=6.9.0'} + '@babel/core@7.24.1': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.1 @@ -244,9 +7015,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/core@7.25.2: - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.24.7 @@ -266,57 +7035,40 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.24.1: - resolution: {integrity: sha512-DfCRfZsBcrPEHUfuBMgbJ1Ut01Y/itOs+hY2nFLgqsqXd52/iSiVq5TITtUasIUgm+IIKdY2/1I7auiQOEeC9A==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.24.1': dependencies: '@babel/types': 7.24.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/generator@7.25.0: - resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==} - engines: {node: '>=6.9.0'} + '@babel/generator@7.25.0': dependencies: '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.22.5: - resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} - engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.22.5': dependencies: '@babel/types': 7.24.0 - /@babel/helper-annotate-as-pure@7.24.7: - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} - engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.25.2 - dev: false - /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: - resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} - engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: '@babel/types': 7.24.0 - dev: true - /@babel/helper-builder-binary-assignment-operator-visitor@7.24.7: - resolution: {integrity: sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==} - engines: {node: '>=6.9.0'} + '@babel/helper-builder-binary-assignment-operator-visitor@7.24.7': dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-compilation-targets@7.23.6: - resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.23.6': dependencies: '@babel/compat-data': 7.24.1 '@babel/helper-validator-option': 7.23.5 @@ -324,9 +7076,7 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-compilation-targets@7.25.2: - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} - engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.2': dependencies: '@babel/compat-data': 7.25.2 '@babel/helper-validator-option': 7.24.8 @@ -334,11 +7084,7 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 @@ -350,13 +7096,8 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - dev: true - /@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.25.2): - resolution: {integrity: sha512-1yJa9dX9g//V6fDebXoEfEsxkZHk3Hcbm+zLhyu6qVgYFLvmTALTeV+jNU9e5RnYtioBrGEOdoI2joMSNQ/+aA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.24.1(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.22.5 @@ -368,13 +7109,8 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - dev: false - /@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.24.7 @@ -386,13 +7122,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -404,35 +7135,22 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.1): - resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - /@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.24.1): - resolution: {integrity: sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-create-regexp-features-plugin@7.25.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.24.7 regexpu-core: 5.3.2 semver: 6.3.1 - dev: false - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.1): - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 @@ -442,12 +7160,8 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.1): - resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.25.2 @@ -457,61 +7171,41 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} + '@babel/helper-environment-visitor@7.22.20': {} - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} + '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.24.0 '@babel/types': 7.24.0 - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} + '@babel/helper-hoist-variables@7.22.5': dependencies: '@babel/types': 7.24.0 - /@babel/helper-member-expression-to-functions@7.23.0: - resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} - engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.23.0': dependencies: '@babel/types': 7.24.0 - /@babel/helper-member-expression-to-functions@7.24.8: - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} - engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.24.8': dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-module-imports@7.24.1: - resolution: {integrity: sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.1': dependencies: '@babel/types': 7.24.0 - /@babel/helper-module-imports@7.24.7: - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.1): - resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 @@ -520,11 +7214,7 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - /@babel/helper-module-transforms@7.25.2(@babel/core@7.24.1): - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.25.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-imports': 7.24.7 @@ -533,13 +7223,8 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-imports': 7.24.7 @@ -549,44 +7234,26 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helper-optimise-call-expression@7.22.5: - resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} - engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.22.5': dependencies: '@babel/types': 7.24.0 - /@babel/helper-optimise-call-expression@7.24.7: - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} - engines: {node: '>=6.9.0'} + '@babel/helper-optimise-call-expression@7.24.7': dependencies: '@babel/types': 7.25.2 - dev: false - /@babel/helper-plugin-utils@7.24.0: - resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} - engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.0': {} - /@babel/helper-plugin-utils@7.24.8: - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.24.8': {} - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.1): - resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - dev: true - /@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-remap-async-to-generator@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.24.7 @@ -594,37 +7261,22 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-replace-supers@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - dev: true - /@babel/helper-replace-supers@7.24.1(@babel/core@7.25.2): - resolution: {integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.24.1(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - dev: false - /@babel/helper-replace-supers@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-member-expression-to-functions': 7.24.8 @@ -632,13 +7284,8 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2): - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-member-expression-to-functions': 7.24.8 @@ -646,92 +7293,60 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-simple-access@7.22.5: - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} - engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.22.5': dependencies: '@babel/types': 7.24.0 - /@babel/helper-simple-access@7.24.7: - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} + '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - /@babel/helper-skip-transparent-expression-wrappers@7.22.5: - resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} - engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: '@babel/types': 7.24.0 - /@babel/helper-skip-transparent-expression-wrappers@7.24.7: - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} + '@babel/helper-split-export-declaration@7.22.6': dependencies: '@babel/types': 7.24.0 - /@babel/helper-string-parser@7.24.1: - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - - /@babel/helper-string-parser@7.24.8: - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.1': {} - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.24.8': {} - /@babel/helper-validator-identifier@7.24.7: - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.22.20': {} - /@babel/helper-validator-option@7.23.5: - resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': {} - /@babel/helper-validator-option@7.24.8: - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.23.5': {} - /@babel/helper-wrap-function@7.22.20: - resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} - engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helper-wrap-function@7.22.20': dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.24.0 '@babel/types': 7.24.0 - dev: true - /@babel/helper-wrap-function@7.25.0: - resolution: {integrity: sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==} - engines: {node: '>=6.9.0'} + '@babel/helper-wrap-function@7.25.0': dependencies: '@babel/template': 7.25.0 '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false - /@babel/helpers@7.24.1: - resolution: {integrity: sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.24.1': dependencies: '@babel/template': 7.24.0 '@babel/traverse': 7.24.1 @@ -739,105 +7354,64 @@ packages: transitivePeerDependencies: - supports-color - /@babel/helpers@7.25.0: - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} - engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 '@babel/types': 7.25.2 - /@babel/highlight@7.24.1: - resolution: {integrity: sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.1': dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.0 - /@babel/highlight@7.24.7: - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 - /@babel/parser@7.24.1: - resolution: {integrity: sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.24.1': dependencies: '@babel/types': 7.24.0 - /@babel/parser@7.25.3: - resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} - engines: {node: '>=6.0.0'} - hasBin: true + '@babel/parser@7.25.3': dependencies: '@babel/types': 7.25.2 - /@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.24.1): - resolution: {integrity: sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.24.1(@babel/core@7.24.1) - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 @@ -845,95 +7419,51 @@ packages: '@babel/plugin-transform-optional-chaining': 7.24.8(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-external-helpers@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-l3JgdWBntLRPvZkKzHmc0z+AkI91MmXOJUAeUlHbCYfgv8qLZPcYYsAIdY3iLG3TYIDDCC6Ob+e1knlniSX6fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-external-helpers@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.1): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.25.2) '@babel/helper-plugin-utils': 7.24.0 - dev: false - /@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-export-default-from@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-export-default-from': 7.24.7(@babel/core@7.24.1) - dev: false - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2): - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - dev: false - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.1): - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.24.1)': dependencies: '@babel/compat-data': 7.24.1 '@babel/core': 7.24.1 @@ -941,14 +7471,8 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) - dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2): - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 @@ -956,463 +7480,256 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.1): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.1): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2): - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.1): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-default-from@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-flow@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-assertions@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.1): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.1): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.1): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2): - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.1): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2): - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.1): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.1): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - dev: false - - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.1): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/helper-plugin-utils': 7.24.8 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-arrow-functions@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-async-generator-functions@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 @@ -1421,25 +7738,15 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-imports': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-imports': 7.24.7 @@ -1447,89 +7754,49 @@ packages: '@babel/helper-remap-async-to-generator': 7.25.0(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoped-functions@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-h71T2QQvDgM2SmT29UYU6ozjMlAt7s7CSs5Hvy8f8cf/GM/Z4a2zMfN+fjVGaieeCrXR3EdQl6C4gQG+OgmbKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-block-scoping@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-class-properties@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-FUHlKCn6J3ERiu8Dv+4eoz7w8+kFLSyeVG4vDAikwADGjUCoHw/JHokyGtr8OR4UjpwPVivyF+h8Q5iv/JmrtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 + '@babel/plugin-transform-class-static-block@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 + '@babel/plugin-transform-class-static-block@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) @@ -1537,13 +7804,8 @@ packages: '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 @@ -1554,13 +7816,8 @@ packages: '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - dev: true - /@babel/plugin-transform-classes@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-classes@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.24.7 @@ -1571,234 +7828,129 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/template': 7.24.0 - dev: true - /@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-computed-properties@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/template': 7.25.0 - dev: false - /@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.1): - resolution: {integrity: sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-destructuring@7.24.8(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dotall-regex@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-duplicate-keys@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-dynamic-import@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-exponentiation-operator@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-builder-binary-assignment-operator-visitor': 7.24.7 '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-export-namespace-from@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.24.1): - resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-flow-strip-types@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.25.2) - dev: false - /@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true - /@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-for-of@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-function-name@7.25.1(@babel/core@7.24.1): - resolution: {integrity: sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-function-name@7.25.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.25.2 @@ -1806,133 +7958,73 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-json-strings@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-literals@7.25.2(@babel/core@7.24.1): - resolution: {integrity: sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-literals@7.25.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-logical-assignment-operators@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-member-expression-literals@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-amd@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-simple-access': 7.22.5 - dev: true - /@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.1): - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) @@ -1940,13 +8032,8 @@ packages: '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2): - resolution: {integrity: sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) @@ -1954,26 +8041,16 @@ packages: '@babel/helper-simple-access': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.24.1): - resolution: {integrity: sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-systemjs@7.25.0(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) @@ -1982,207 +8059,117 @@ packages: '@babel/traverse': 7.25.3 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-modules-umd@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-transforms': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.1): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-named-capturing-groups-regex@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-new-target@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-nullish-coalescing-operator@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-numeric-separator@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) - dev: false - - /@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + + '@babel/plugin-transform-object-rest-spread@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) '@babel/plugin-transform-parameters': 7.24.1(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-rest-spread@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-compilation-targets': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) '@babel/plugin-transform-parameters': 7.24.7(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-object-super@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-replace-supers': 7.25.0(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-catch-binding@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) - dev: false - /@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.1): - resolution: {integrity: sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-optional-chaining@7.24.8(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 @@ -2190,70 +8177,40 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-parameters@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-methods@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-private-property-in-object@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.24.7 @@ -2262,83 +8219,43 @@ packages: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-property-literals@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-display-name@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.1): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.1): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 @@ -2346,13 +8263,8 @@ packages: '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) '@babel/types': 7.24.0 - dev: true - /@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.1): - resolution: {integrity: sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.25.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.24.7 @@ -2362,66 +8274,36 @@ packages: '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-pure-annotations@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 regenerator-transform: 0.15.2 - dev: true - /@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-regenerator@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 regenerator-transform: 0.15.2 - dev: false - /@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-reserved-words@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-runtime@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-module-imports': 7.24.7 @@ -2432,130 +8314,70 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-shorthand-properties@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - dev: true - /@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-spread@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-sticky-regex@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-template-literals@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.1): - resolution: {integrity: sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typeof-symbol@7.24.8(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-liYSESjX2fZ7JyBFkYG78nfvHlMKE6IpNdTVnxmlYUR+j5ZLsitFbaAE+eJSK2zPPkNWNw4mXL51rQ8WrvdK0w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-create-class-features-plugin': 7.24.1(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.1) - dev: true - /@babel/plugin-transform-typescript@7.25.2(@babel/core@7.24.1): - resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-annotate-as-pure': 7.24.7 @@ -2565,13 +8387,8 @@ packages: '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2): - resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-annotate-as-pure': 7.24.7 @@ -2581,99 +8398,54 @@ packages: '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-escapes@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-property-regex@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-unicode-regex@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.0 - dev: true - /@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.1): - resolution: {integrity: sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 + '@babel/plugin-transform-unicode-sets-regex@7.24.7(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-create-regexp-features-plugin': 7.25.2(@babel/core@7.24.1) '@babel/helper-plugin-utils': 7.24.8 - dev: false - /@babel/preset-env@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/compat-data': 7.24.1 '@babel/core': 7.24.1 @@ -2758,13 +8530,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /@babel/preset-env@7.25.3(@babel/core@7.24.1): - resolution: {integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-env@7.25.3(@babel/core@7.24.1)': dependencies: '@babel/compat-data': 7.25.2 '@babel/core': 7.24.1 @@ -2852,35 +8619,22 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /@babel/preset-flow@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-NL3Lo0NorCU607zU3NwRyJbpaB6E3t0xtd3LfAQKDfkeX4/ggcDXvkmkW42QWT5owUeW/jAe4hn+2qvkV1IbfQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-flow@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 '@babel/helper-validator-option': 7.24.8 '@babel/plugin-transform-flow-strip-types': 7.25.2(@babel/core@7.25.2) - dev: false - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.1): - resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 '@babel/types': 7.24.0 esutils: 2.0.3 - /@babel/preset-react@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-react@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 @@ -2889,13 +8643,8 @@ packages: '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.24.1) '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.24.1) '@babel/plugin-transform-react-pure-annotations': 7.24.1(@babel/core@7.24.1) - dev: true - /@babel/preset-typescript@7.24.1(@babel/core@7.24.1): - resolution: {integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.24.1(@babel/core@7.24.1)': dependencies: '@babel/core': 7.24.1 '@babel/helper-plugin-utils': 7.24.0 @@ -2903,13 +8652,8 @@ packages: '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.1) '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.1) '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.1) - dev: true - /@babel/preset-typescript@7.24.7(@babel/core@7.25.2): - resolution: {integrity: sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 @@ -2919,13 +8663,8 @@ packages: '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) transitivePeerDependencies: - supports-color - dev: false - /@babel/register@7.24.6(@babel/core@7.25.2): - resolution: {integrity: sha512-WSuFCc2wCqMeXkz/i3yfAAsxwWflEgbVkZzivgAmXl/MxrXeoYFZOOPllbC8R8WTF7u61wSRQtDVZ1879cdu6w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/register@7.24.6(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 clone-deep: 4.0.1 @@ -2933,48 +8672,34 @@ packages: make-dir: 2.1.0 pirates: 4.0.6 source-map-support: 0.5.21 - dev: false - /@babel/regjsgen@0.8.0: - resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + '@babel/regjsgen@0.8.0': {} - /@babel/runtime@7.24.1: - resolution: {integrity: sha512-+BIznRzyqBf+2wCTxcKE3wDjfGeCoVE61KSHGpkzqrLi8qxqFwBeUFyId2cxkTmm55fzDGnm0+yCxaxygrLUnQ==} - engines: {node: '>=6.9.0'} + '@babel/runtime@7.24.1': dependencies: regenerator-runtime: 0.14.1 - /@babel/runtime@7.24.8: - resolution: {integrity: sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==} - engines: {node: '>=6.9.0'} + '@babel/runtime@7.24.8': dependencies: regenerator-runtime: 0.14.1 - /@babel/runtime@7.25.0: - resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} - engines: {node: '>=6.9.0'} + '@babel/runtime@7.25.0': dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} - engines: {node: '>=6.9.0'} + '@babel/template@7.24.0': dependencies: '@babel/code-frame': 7.24.1 '@babel/parser': 7.24.1 '@babel/types': 7.24.0 - /@babel/template@7.25.0: - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} + '@babel/template@7.25.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - /@babel/traverse@7.24.1: - resolution: {integrity: sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.24.1': dependencies: '@babel/code-frame': 7.24.1 '@babel/generator': 7.24.1 @@ -2989,9 +8714,7 @@ packages: transitivePeerDependencies: - supports-color - /@babel/traverse@7.25.3: - resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==} - engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.3': dependencies: '@babel/code-frame': 7.24.7 '@babel/generator': 7.25.0 @@ -3003,28 +8726,21 @@ packages: transitivePeerDependencies: - supports-color - /@babel/types@7.24.0: - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} - engines: {node: '>=6.9.0'} + '@babel/types@7.24.0': dependencies: '@babel/helper-string-parser': 7.24.1 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 - /@babel/types@7.25.2: - resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} - engines: {node: '>=6.9.0'} + '@babel/types@7.25.2': dependencies: '@babel/helper-string-parser': 7.24.8 '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - /@bcoe/v8-coverage@0.2.3: - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: true + '@bcoe/v8-coverage@0.2.3': {} - /@coinbase/wallet-sdk@3.9.3: - resolution: {integrity: sha512-N/A2DRIf0Y3PHc1XAMvbBUu4zisna6qAdqABMZwBMNEfWrXpAwx16pZGkYCLGE+Rvv1edbcB2LYDRnACNcmCiw==} + '@coinbase/wallet-sdk@3.9.3': dependencies: bn.js: 5.2.1 buffer: 6.0.3 @@ -3037,10 +8753,8 @@ packages: sha.js: 2.4.11 transitivePeerDependencies: - supports-color - dev: false - /@coinbase/wallet-sdk@4.0.4: - resolution: {integrity: sha512-74c040CRnGhfRjr3ArnkAgud86erIqdkPHNt5HR1k9u97uTIZCJww9eGYT67Qf7gHPpGS/xW8Be1D4dvRm63FA==} + '@coinbase/wallet-sdk@4.0.4': dependencies: buffer: 6.0.3 clsx: 1.2.1 @@ -3048,28 +8762,18 @@ packages: keccak: 3.0.4 preact: 10.23.2 sha.js: 2.4.11 - dev: false - /@colors/colors@1.5.0: - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} - engines: {node: '>=0.1.90'} - requiresBuild: true - dev: true + '@colors/colors@1.5.0': optional: true - - /@cspotcode/source-map-support@0.8.1: - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} + + '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - dev: true - /@cypress/request@3.0.1: - resolution: {integrity: sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==} - engines: {node: '>= 6'} + '@cypress/request@3.0.1': dependencies: aws-sign2: 0.7.0 - aws4: 1.13.1 + aws4: 1.13.2 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -3083,27 +8787,20 @@ packages: performance-now: 2.1.0 qs: 6.10.4 safe-buffer: 5.2.1 - tough-cookie: 4.1.4 + tough-cookie: 4.1.3 tunnel-agent: 0.6.0 uuid: 8.3.2 - dev: true - /@cypress/xvfb@1.2.4(supports-color@8.1.1): - resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + '@cypress/xvfb@1.2.4(supports-color@8.1.1)': dependencies: debug: 3.2.7(supports-color@8.1.1) lodash.once: 4.1.1 transitivePeerDependencies: - supports-color - dev: true - /@defi-wonderland/crypto-husky-checks@1.3.0: - resolution: {integrity: sha512-6h4cppr5HAjGXA5jIRQdmL0UBxOUAbsOuvYV54C42deOP/jc/EHw8CWuWzoOHLxveA6Pt7op1A8GjoQIhR6l/Q==} - hasBin: true - dev: true + '@defi-wonderland/crypto-husky-checks@1.3.0': {} - /@emotion/babel-plugin@11.11.0: - resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + '@emotion/babel-plugin@11.11.0': dependencies: '@babel/helper-module-imports': 7.24.1 '@babel/runtime': 7.24.1 @@ -3116,42 +8813,26 @@ packages: find-root: 1.1.0 source-map: 0.5.7 stylis: 4.2.0 - dev: false - /@emotion/cache@11.11.0: - resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + '@emotion/cache@11.11.0': dependencies: '@emotion/memoize': 0.8.1 '@emotion/sheet': 1.2.2 '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 stylis: 4.2.0 - dev: false - /@emotion/hash@0.9.1: - resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} - dev: false + '@emotion/hash@0.9.1': {} - /@emotion/hash@0.9.2: - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - dev: false + '@emotion/hash@0.9.2': {} - /@emotion/is-prop-valid@1.2.2: - resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==} + '@emotion/is-prop-valid@1.2.2': dependencies: '@emotion/memoize': 0.8.1 - /@emotion/memoize@0.8.1: - resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + '@emotion/memoize@0.8.1': {} - /@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-Cnn0kuq4DoONOMcnoVsTOR8E+AdnKFf//6kUWc4LCdnxj31pZWn7rIULd6Y7/Js1PiPHzn7SKCM9vB/jBni8eA==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true + '@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 '@emotion/babel-plugin': 11.11.0 @@ -3160,48 +8841,29 @@ packages: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 - '@types/react': 18.2.15 hoist-non-react-statics: 3.3.2 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /@emotion/serialize@1.1.3: - resolution: {integrity: sha512-iD4D6QVZFDhcbH0RAG1uVu1CwVLMWUkCvAqqlewO/rxf8+87yIBAlt4+AxMiiKPLs5hFc0owNk/sLLAOROw3cA==} + '@emotion/serialize@1.1.3': dependencies: '@emotion/hash': 0.9.1 '@emotion/memoize': 0.8.1 '@emotion/unitless': 0.8.1 '@emotion/utils': 1.2.1 csstype: 3.1.3 - dev: false - /@emotion/server@11.11.0: - resolution: {integrity: sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==} - peerDependencies: - '@emotion/css': ^11.0.0-rc.0 - peerDependenciesMeta: - '@emotion/css': - optional: true + '@emotion/server@11.11.0': dependencies: '@emotion/utils': 1.2.1 html-tokenize: 2.0.1 multipipe: 1.0.2 through: 2.3.8 - dev: false - /@emotion/sheet@1.2.2: - resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} - dev: false + '@emotion/sheet@1.2.2': {} - /@emotion/styled@11.11.0(@emotion/react@11.11.3)(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==} - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true + '@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 '@emotion/babel-plugin': 11.11.0 @@ -3210,47 +8872,28 @@ packages: '@emotion/serialize': 1.1.3 '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@emotion/utils': 1.2.1 - '@types/react': 18.2.15 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /@emotion/unitless@0.8.1: - resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + '@emotion/unitless@0.8.1': {} - /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): - resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} - peerDependencies: - react: '>=16.8.0' + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': dependencies: react: 18.2.0 - dev: false - /@emotion/utils@1.2.1: - resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} - dev: false + '@emotion/utils@1.2.1': {} - /@emotion/weak-memoize@0.3.1: - resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} - dev: false + '@emotion/weak-memoize@0.3.1': {} - /@eslint-community/eslint-utils@4.4.0(eslint@8.45.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + '@eslint-community/eslint-utils@4.4.0(eslint@8.45.0)': dependencies: eslint: 8.45.0 eslint-visitor-keys: 3.4.3 - dev: true - /@eslint-community/regexpp@4.10.0: - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true + '@eslint-community/regexpp@4.10.0': {} - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 debug: 4.3.4 @@ -3263,139 +8906,86 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true - /@eslint/js@8.44.0: - resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + '@eslint/js@8.44.0': {} - /@ethereumjs/common@3.2.0: - resolution: {integrity: sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==} + '@ethereumjs/common@3.2.0': dependencies: '@ethereumjs/util': 8.1.0 crc-32: 1.2.2 - dev: false - /@ethereumjs/rlp@4.0.1: - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - dev: false + '@ethereumjs/rlp@4.0.1': {} - /@ethereumjs/tx@4.2.0: - resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} - engines: {node: '>=14'} + '@ethereumjs/tx@4.2.0': dependencies: '@ethereumjs/common': 3.2.0 '@ethereumjs/rlp': 4.0.1 '@ethereumjs/util': 8.1.0 ethereum-cryptography: 2.2.1 - dev: false - /@ethereumjs/util@8.1.0: - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} + '@ethereumjs/util@8.1.0': dependencies: '@ethereumjs/rlp': 4.0.1 ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 - dev: false - /@floating-ui/core@1.6.0: - resolution: {integrity: sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==} + '@floating-ui/core@1.6.0': dependencies: '@floating-ui/utils': 0.2.1 - dev: false - /@floating-ui/dom@1.6.3: - resolution: {integrity: sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==} + '@floating-ui/dom@1.6.3': dependencies: '@floating-ui/core': 1.6.0 '@floating-ui/utils': 0.2.1 - dev: false - /@floating-ui/react-dom@2.0.8(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' + '@floating-ui/react-dom@2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@floating-ui/dom': 1.6.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /@floating-ui/utils@0.2.1: - resolution: {integrity: sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==} - dev: false + '@floating-ui/utils@0.2.1': {} - /@hapi/hoek@9.3.0: - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - dev: false + '@hapi/hoek@9.3.0': {} - /@hapi/topo@5.1.0: - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} - engines: {node: '>=10.10.0'} + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.2 debug: 4.3.4 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true - /@humanwhocodes/module-importer@1.0.1: - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - dev: true + '@humanwhocodes/module-importer@1.0.1': {} - /@humanwhocodes/object-schema@2.0.2: - resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} - dev: true + '@humanwhocodes/object-schema@2.0.2': {} - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} + '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 + string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false + wrap-ansi-cjs: wrap-ansi@7.0.0 - /@isaacs/ttlcache@1.4.1: - resolution: {integrity: sha512-RQgQ4uQ+pLbqXfOmieB91ejmLwvSgv9nLx6sT6sD83s7umBypgg+OIBOBbEUiJXrfpnp9j0mRhYYdzp9uqq3lA==} - engines: {node: '>=12'} - dev: false + '@isaacs/ttlcache@1.4.1': {} - /@istanbuljs/load-nyc-config@1.1.0: - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 js-yaml: 3.14.1 resolve-from: 5.0.0 - dev: true - /@istanbuljs/schema@0.1.3: - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - dev: true + '@istanbuljs/schema@0.1.3': {} - /@jest/console@29.7.0: - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.13 @@ -3403,16 +8993,8 @@ packages: jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - dev: true - /@jest/core@29.7.0(ts-node@10.9.2): - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -3426,7 +9008,7 @@ packages: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3446,44 +9028,30 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /@jest/create-cache-key-function@29.7.0: - resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/create-cache-key-function@29.7.0': dependencies: '@jest/types': 29.6.3 - dev: false - /@jest/environment@29.7.0: - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/node': 20.12.13 jest-mock: 29.7.0 - /@jest/expect-utils@29.7.0: - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - dev: true - /@jest/expect@29.7.0: - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/expect@29.7.0': dependencies: expect: 29.7.0 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/fake-timers@29.7.0: - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 @@ -3492,9 +9060,7 @@ packages: jest-mock: 29.7.0 jest-util: 29.7.0 - /@jest/globals@29.7.0: - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -3502,16 +9068,8 @@ packages: jest-mock: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/reporters@29.7.0: - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 29.7.0 @@ -3539,46 +9097,32 @@ packages: v8-to-istanbul: 9.3.0 transitivePeerDependencies: - supports-color - dev: true - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - /@jest/source-map@29.6.3: - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.25 callsites: 3.1.0 graceful-fs: 4.2.11 - dev: true - /@jest/test-result@29.7.0: - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-result@29.7.0': dependencies: '@jest/console': 29.7.0 '@jest/types': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - dev: true - /@jest/test-sequencer@29.7.0: - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 graceful-fs: 4.2.11 jest-haste-map: 29.7.0 slash: 3.0.0 - dev: true - /@jest/transform@29.7.0: - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/transform@29.7.0': dependencies: '@babel/core': 7.24.1 '@jest/types': 29.6.3 @@ -3597,22 +9141,16 @@ packages: write-file-atomic: 4.0.2 transitivePeerDependencies: - supports-color - dev: true - /@jest/types@26.6.2: - resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} - engines: {node: '>= 10.14.2'} + '@jest/types@26.6.2': dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 '@types/node': 20.12.13 '@types/yargs': 15.0.19 chalk: 4.1.2 - dev: false - /@jest/types@29.6.3: - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 @@ -3621,91 +9159,64 @@ packages: '@types/yargs': 17.0.32 chalk: 4.1.2 - /@jridgewell/gen-mapping@0.3.5: - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} - engines: {node: '>=6.0.0'} + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - /@jridgewell/resolve-uri@3.1.2: - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} + '@jridgewell/resolve-uri@3.1.2': {} - /@jridgewell/set-array@1.2.1: - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} - engines: {node: '>=6.0.0'} + '@jridgewell/set-array@1.2.1': {} - /@jridgewell/source-map@0.3.6: - resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/source-map@0.3.6': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - dev: false - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.4.15': {} - /@jridgewell/trace-mapping@0.3.25: - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.25': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true - /@lit-labs/ssr-dom-shim@1.2.1: - resolution: {integrity: sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==} - dev: false + '@lit-labs/ssr-dom-shim@1.2.1': {} - /@lit/reactive-element@1.6.3: - resolution: {integrity: sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==} + '@lit/reactive-element@1.6.3': dependencies: '@lit-labs/ssr-dom-shim': 1.2.1 - dev: false - /@metamask/eth-json-rpc-provider@1.0.1: - resolution: {integrity: sha512-whiUMPlAOrVGmX8aKYVPvlKyG4CpQXiNNyt74vE1xb5sPvmx5oA7B/kOi/JdBvhGQq97U1/AVdXEdk2zkP8qyA==} - engines: {node: '>=14.0.0'} + '@metamask/eth-json-rpc-provider@1.0.1': dependencies: '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/json-rpc-engine@7.3.3: - resolution: {integrity: sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==} - engines: {node: '>=16.0.0'} + '@metamask/json-rpc-engine@7.3.3': dependencies: '@metamask/rpc-errors': 6.3.1 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.5.0 transitivePeerDependencies: - supports-color - dev: false - /@metamask/json-rpc-engine@8.0.2: - resolution: {integrity: sha512-IoQPmql8q7ABLruW7i4EYVHWUbF74yrp63bRuXV5Zf9BQwcn5H9Ww1eLtROYvI1bUXwOiHZ6qT5CWTrDc/t/AA==} - engines: {node: '>=16.0.0'} + '@metamask/json-rpc-engine@8.0.2': dependencies: '@metamask/rpc-errors': 6.3.1 '@metamask/safe-event-emitter': 3.1.1 '@metamask/utils': 8.5.0 transitivePeerDependencies: - supports-color - dev: false - /@metamask/json-rpc-middleware-stream@7.0.2: - resolution: {integrity: sha512-yUdzsJK04Ev98Ck4D7lmRNQ8FPioXYhEUZOMS01LXW8qTvPGiRVXmVltj2p4wrLkh0vW7u6nv0mNl5xzC5Qmfg==} - engines: {node: '>=16.0.0'} + '@metamask/json-rpc-middleware-stream@7.0.2': dependencies: '@metamask/json-rpc-engine': 8.0.2 '@metamask/safe-event-emitter': 3.1.1 @@ -3713,25 +9224,17 @@ packages: readable-stream: 3.6.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/object-multiplex@2.0.0: - resolution: {integrity: sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA==} - engines: {node: ^16.20 || ^18.16 || >=20} + '@metamask/object-multiplex@2.0.0': dependencies: once: 1.4.0 readable-stream: 3.6.2 - dev: false - /@metamask/onboarding@1.0.1: - resolution: {integrity: sha512-FqHhAsCI+Vacx2qa5mAFcWNSrTcVGMNjzxVgaX8ECSny/BJ9/vgXP9V7WF/8vb9DltPeQkxr+Fnfmm6GHfmdTQ==} + '@metamask/onboarding@1.0.1': dependencies: bowser: 2.11.0 - dev: false - /@metamask/providers@16.1.0: - resolution: {integrity: sha512-znVCvux30+3SaUwcUGaSf+pUckzT5ukPRpcBmy+muBLC0yaWnBcvDqGfcsw6CBIenUdFrVoAFa8B6jsuCY/a+g==} - engines: {node: ^18.18 || >=20} + '@metamask/providers@16.1.0': dependencies: '@metamask/json-rpc-engine': 8.0.2 '@metamask/json-rpc-middleware-stream': 7.0.2 @@ -3747,35 +9250,19 @@ packages: webextension-polyfill: 0.10.0 transitivePeerDependencies: - supports-color - dev: false - /@metamask/rpc-errors@6.3.1: - resolution: {integrity: sha512-ugDY7cKjF4/yH5LtBaOIKHw/AiGGSAmzptAUEiAEGr/78LwuzcXAxmzEQfSfMIfI+f9Djr8cttq1pRJJKfTuCg==} - engines: {node: '>=16.0.0'} + '@metamask/rpc-errors@6.3.1': dependencies: '@metamask/utils': 9.1.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color - dev: false - /@metamask/safe-event-emitter@2.0.0: - resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} - dev: false + '@metamask/safe-event-emitter@2.0.0': {} - /@metamask/safe-event-emitter@3.1.1: - resolution: {integrity: sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==} - engines: {node: '>=12.0.0'} - dev: false + '@metamask/safe-event-emitter@3.1.1': {} - /@metamask/sdk-communication-layer@0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5): - resolution: {integrity: sha512-G9LCaQzIqp5WmUmvHN6UUdjWrBh67MbRobmbbs5fcc2+9XFhj3vBgtyleUYjun91jSlPHoZeo+f/Pj4/WoPIJg==} - peerDependencies: - cross-fetch: ^4.0.0 - eciesjs: ^0.3.16 - eventemitter2: ^6.4.7 - readable-stream: ^3.6.2 - socket.io-client: ^4.5.1 + '@metamask/sdk-communication-layer@0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: bufferutil: 4.0.8 cross-fetch: 4.0.0 @@ -3784,50 +9271,27 @@ packages: eciesjs: 0.3.19 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.7.5 + socket.io-client: 4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: - supports-color - dev: false - /@metamask/sdk-install-modal-web@0.26.5(i18next@23.11.5)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0): - resolution: {integrity: sha512-qVA9Nk+NorGx5hXyODy5wskptE8R7RNYTYt49VbQpJogqbbVe1dnJ98+KaA43PBN4XYMCXmcIhULNiEHGsLynA==} - peerDependencies: - i18next: 23.11.5 - react: ^18.2.0 - react-dom: ^18.2.0 - react-native: '*' - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - react-native: - optional: true + '@metamask/sdk-install-modal-web@0.26.5(i18next@23.11.5)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)': dependencies: i18next: 23.11.5 qr-code-styling: 1.6.0-rc.1 + optionalDependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) - dev: false + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10) - /@metamask/sdk@0.27.0(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0): - resolution: {integrity: sha512-6sMjr/0qR700X1svPGEQ4rBdtccidBLeTC27fYQc7r9ROgSixB1DUUAyu/LoySVqt3Hu/Zm7NnAHXuT228ht7A==} - peerDependencies: - react: ^18.2.0 - react-dom: ^18.2.0 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true + '@metamask/sdk@0.27.0(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(utf-8-validate@5.0.10)': dependencies: '@metamask/onboarding': 1.0.1 '@metamask/providers': 16.1.0 - '@metamask/sdk-communication-layer': 0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5) - '@metamask/sdk-install-modal-web': 0.26.5(i18next@23.11.5)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) + '@metamask/sdk-communication-layer': 0.27.0(cross-fetch@4.0.0)(eciesjs@0.3.19)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@metamask/sdk-install-modal-web': 0.26.5(i18next@23.11.5)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0) '@types/dom-screen-wake-lock': 1.0.3 bowser: 2.11.0 cross-fetch: 4.0.0 @@ -3840,14 +9304,15 @@ packages: obj-multiplex: 1.0.0 pump: 3.0.0 qrcode-terminal-nooctal: 0.12.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-native-webview: 11.26.1(react-native@0.75.1)(react@18.2.0) + react-native-webview: 11.26.1(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0) readable-stream: 3.6.2 rollup-plugin-visualizer: 5.12.0 - socket.io-client: 4.7.5 + socket.io-client: 4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) util: 0.12.5 uuid: 8.3.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: - bufferutil - encoding @@ -3855,16 +9320,10 @@ packages: - rollup - supports-color - utf-8-validate - dev: false - /@metamask/superstruct@3.1.0: - resolution: {integrity: sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==} - engines: {node: '>=16.0.0'} - dev: false + '@metamask/superstruct@3.1.0': {} - /@metamask/utils@5.0.2: - resolution: {integrity: sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g==} - engines: {node: '>=14.0.0'} + '@metamask/utils@5.0.2': dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.12 @@ -3873,11 +9332,8 @@ packages: superstruct: 1.0.4 transitivePeerDependencies: - supports-color - dev: false - /@metamask/utils@8.5.0: - resolution: {integrity: sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==} - engines: {node: '>=16.0.0'} + '@metamask/utils@8.5.0': dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.1.0 @@ -3890,11 +9346,8 @@ packages: uuid: 9.0.1 transitivePeerDependencies: - supports-color - dev: false - /@metamask/utils@9.1.0: - resolution: {integrity: sha512-g2REf+xSt0OZfMoNNdC4+/Yy8eP3KUqvIArel54XRFKPoXbHI6+YjFfrLtfykWBjffOp7DTfIc3Kvk5TLfuiyg==} - engines: {node: '>=16.0.0'} + '@metamask/utils@9.1.0': dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.1.0 @@ -3907,19 +9360,15 @@ packages: uuid: 9.0.1 transitivePeerDependencies: - supports-color - dev: false - /@motionone/animation@10.18.0: - resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} + '@motionone/animation@10.18.0': dependencies: '@motionone/easing': 10.18.0 '@motionone/types': 10.17.1 '@motionone/utils': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/dom@10.18.0: - resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} + '@motionone/dom@10.18.0': dependencies: '@motionone/animation': 10.18.0 '@motionone/generators': 10.18.0 @@ -3927,147 +9376,79 @@ packages: '@motionone/utils': 10.18.0 hey-listen: 1.0.8 tslib: 2.6.3 - dev: false - /@motionone/easing@10.18.0: - resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} + '@motionone/easing@10.18.0': dependencies: '@motionone/utils': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/generators@10.18.0: - resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} + '@motionone/generators@10.18.0': dependencies: '@motionone/types': 10.17.1 '@motionone/utils': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/svelte@10.16.4: - resolution: {integrity: sha512-zRVqk20lD1xqe+yEDZhMYgftsuHc25+9JSo+r0a0OWUJFocjSV9D/+UGhX4xgJsuwB9acPzXLr20w40VnY2PQA==} + '@motionone/svelte@10.16.4': dependencies: '@motionone/dom': 10.18.0 tslib: 2.6.3 - dev: false - /@motionone/types@10.17.1: - resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} - dev: false + '@motionone/types@10.17.1': {} - /@motionone/utils@10.18.0: - resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} + '@motionone/utils@10.18.0': dependencies: '@motionone/types': 10.17.1 hey-listen: 1.0.8 tslib: 2.6.3 - dev: false - /@motionone/vue@10.16.4: - resolution: {integrity: sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==} - deprecated: Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion + '@motionone/vue@10.16.4': dependencies: '@motionone/dom': 10.18.0 tslib: 2.6.3 - dev: false - /@mui/base@5.0.0-beta.40(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@mui/base@5.0.0-beta.40(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 - '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/react-dom': 2.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.2.15) '@mui/utils': 5.15.14(@types/react@18.2.15)(react@18.2.0) '@popperjs/core': 2.11.8 - '@types/react': 18.2.15 clsx: 2.1.0 prop-types: 15.8.1 react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@mui/core-downloads-tracker@5.15.14: - resolution: {integrity: sha512-on75VMd0XqZfaQW+9pGjSNiqW+ghc5E2ZSLRBXwcXl/C4YzjfyjrLPhrEpKnR9Uym9KXBvxrhoHfPcczYHweyA==} - dev: false - - /@mui/icons-material@5.15.6(@mui/material@5.15.14)(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-GnkxMtlhs+8ieHLmCytg00ew0vMOiXGFCw8Ra9nxMsBjBqnrOI5gmXqUm+sGggeEU/HG8HyeqC1MX/IxOBJHzA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: - '@babel/runtime': 7.24.1 - '@mui/material': 5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.15 - react: 18.2.0 - dev: false - - /@mui/material-nextjs@5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14)(@types/react@18.2.15)(next@14.2.5)(react@18.2.0): - resolution: {integrity: sha512-cp5RWYbBngyi7NKP91R9QITllfxumCVPFjqe4AKzNROVuCot0VpgkafxXqfbv0uFsyUU0ROs0O2M3r17q604Aw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/cache': ^11.11.0 - '@emotion/server': ^11.11.0 - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - next: ^13.0.0 || ^14.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/cache': - optional: true - '@emotion/server': - optional: true - '@types/react': - optional: true + react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.15 + + '@mui/core-downloads-tracker@5.15.14': {} + + '@mui/icons-material@5.15.6(@mui/material@5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.15)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.24.1 + '@mui/material': 5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.15 + + '@mui/material-nextjs@5.15.11(@emotion/cache@11.11.0)(@emotion/server@11.11.0)(@mui/material@5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@types/react@18.2.15)(next@14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 + '@mui/material': 5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + next: 14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: 18.2.0 + optionalDependencies: '@emotion/cache': 11.11.0 '@emotion/server': 11.11.0 - '@mui/material': 5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.15 - next: 14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - dev: false - /@mui/material@5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-kEbRw6fASdQ1SQ7LVdWR5OlWV3y7Y54ZxkLzd6LV5tmz+NpO3MJKZXSfgR0LHMP7meKsPiMm4AuzV0pXDpk/BQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true + '@mui/material@5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 - '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.15)(react@18.2.0) - '@mui/base': 5.0.0-beta.40(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0) + '@mui/base': 5.0.0-beta.40(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@mui/core-downloads-tracker': 5.15.14 - '@mui/system': 5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react@18.2.0) + '@mui/system': 5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.2.15) '@mui/utils': 5.15.14(@types/react@18.2.15)(react@18.2.0) - '@types/react': 18.2.15 '@types/react-transition-group': 4.4.10 clsx: 2.1.0 csstype: 3.1.3 @@ -4075,360 +9456,162 @@ packages: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-is: 18.2.0 - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) - dev: false + react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + optionalDependencies: + '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 - /@mui/private-theming@5.15.14(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@mui/private-theming@5.15.14(@types/react@18.2.15)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.8 '@mui/utils': 5.15.14(@types/react@18.2.15)(react@18.2.0) - '@types/react': 18.2.15 prop-types: 15.8.1 react: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /@mui/styled-engine@5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0): - resolution: {integrity: sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true + '@mui/styled-engine@5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.8 '@emotion/cache': 11.11.0 - '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.15)(react@18.2.0) csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 - dev: false + optionalDependencies: + '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0) - /@mui/system@5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-auXLXzUaCSSOLqJXmsAaq7P96VPRXg2Rrz6OHNV7lr+kB8lobUF+/N84Vd9C4G/wvCXYPs5TYuuGBRhcGbiBGg==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true + '@mui/system@5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 - '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) - '@emotion/styled': 11.11.0(@emotion/react@11.11.3)(@types/react@18.2.15)(react@18.2.0) '@mui/private-theming': 5.15.14(@types/react@18.2.15)(react@18.2.0) - '@mui/styled-engine': 5.15.14(@emotion/react@11.11.3)(@emotion/styled@11.11.0)(react@18.2.0) + '@mui/styled-engine': 5.15.14(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@emotion/styled@11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0))(react@18.2.0) '@mui/types': 7.2.14(@types/react@18.2.15) '@mui/utils': 5.15.14(@types/react@18.2.15)(react@18.2.0) - '@types/react': 18.2.15 clsx: 2.1.0 csstype: 3.1.3 prop-types: 15.8.1 react: 18.2.0 - dev: false + optionalDependencies: + '@emotion/react': 11.11.3(@types/react@18.2.15)(react@18.2.0) + '@emotion/styled': 11.11.0(@emotion/react@11.11.3(@types/react@18.2.15)(react@18.2.0))(@types/react@18.2.15)(react@18.2.0) + '@types/react': 18.2.15 - /@mui/types@7.2.14(@types/react@18.2.15): - resolution: {integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - dependencies: + '@mui/types@7.2.14(@types/react@18.2.15)': + optionalDependencies: '@types/react': 18.2.15 - dev: false - /@mui/utils@5.15.14(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@mui/utils@5.15.14(@types/react@18.2.15)(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 '@types/prop-types': 15.7.11 - '@types/react': 18.2.15 prop-types: 15.8.1 react: 18.2.0 react-is: 18.2.0 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /@next/env@14.2.5: - resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} - dev: false + '@next/env@14.2.5': {} - /@next/eslint-plugin-next@14.1.3: - resolution: {integrity: sha512-VCnZI2cy77Yaj3L7Uhs3+44ikMM1VD/fBMwvTBb3hIaTIuqa+DmG4dhUDq+MASu3yx97KhgsVJbsas0XuiKyww==} + '@next/eslint-plugin-next@14.1.3': dependencies: glob: 10.3.10 - dev: false - /@next/swc-darwin-arm64@14.2.5: - resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@next/swc-darwin-arm64@14.2.5': optional: true - /@next/swc-darwin-x64@14.2.5: - resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@next/swc-darwin-x64@14.2.5': optional: true - /@next/swc-linux-arm64-gnu@14.2.5: - resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-arm64-gnu@14.2.5': optional: true - /@next/swc-linux-arm64-musl@14.2.5: - resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-arm64-musl@14.2.5': optional: true - /@next/swc-linux-x64-gnu@14.2.5: - resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-x64-gnu@14.2.5': optional: true - /@next/swc-linux-x64-musl@14.2.5: - resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@next/swc-linux-x64-musl@14.2.5': optional: true - /@next/swc-win32-arm64-msvc@14.2.5: - resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + '@next/swc-win32-arm64-msvc@14.2.5': optional: true - /@next/swc-win32-ia32-msvc@14.2.5: - resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@next/swc-win32-ia32-msvc@14.2.5': optional: true - /@next/swc-win32-x64-msvc@14.2.5: - resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@next/swc-win32-x64-msvc@14.2.5': optional: true - /@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3: - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} - requiresBuild: true - dev: true + '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': optional: true - /@noble/curves@1.4.0: - resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + '@noble/curves@1.4.0': dependencies: '@noble/hashes': 1.4.0 - dev: false - /@noble/curves@1.4.2: - resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + '@noble/curves@1.4.2': dependencies: '@noble/hashes': 1.4.0 - dev: false - /@noble/hashes@1.4.0: - resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} - engines: {node: '>= 16'} - dev: false + '@noble/hashes@1.4.0': {} - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@nodelib/fs.stat@2.0.5': {} - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - /@parcel/watcher-android-arm64@2.4.1: - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false + '@parcel/watcher-android-arm64@2.4.1': optional: true - /@parcel/watcher-darwin-arm64@2.4.1: - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false + '@parcel/watcher-darwin-arm64@2.4.1': optional: true - /@parcel/watcher-darwin-x64@2.4.1: - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false + '@parcel/watcher-darwin-x64@2.4.1': optional: true - /@parcel/watcher-freebsd-x64@2.4.1: - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false + '@parcel/watcher-freebsd-x64@2.4.1': optional: true - /@parcel/watcher-linux-arm-glibc@2.4.1: - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm-glibc@2.4.1': optional: true - /@parcel/watcher-linux-arm64-glibc@2.4.1: - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm64-glibc@2.4.1': optional: true - /@parcel/watcher-linux-arm64-musl@2.4.1: - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-arm64-musl@2.4.1': optional: true - /@parcel/watcher-linux-x64-glibc@2.4.1: - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-x64-glibc@2.4.1': optional: true - /@parcel/watcher-linux-x64-musl@2.4.1: - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false + '@parcel/watcher-linux-x64-musl@2.4.1': optional: true - /@parcel/watcher-wasm@2.4.1: - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} - engines: {node: '>= 10.0.0'} + '@parcel/watcher-wasm@2.4.1': dependencies: is-glob: 4.0.3 micromatch: 4.0.7 - dev: false - bundledDependencies: - - napi-wasm - /@parcel/watcher-win32-arm64@2.4.1: - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-arm64@2.4.1': optional: true - /@parcel/watcher-win32-ia32@2.4.1: - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-ia32@2.4.1': optional: true - /@parcel/watcher-win32-x64@2.4.1: - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false + '@parcel/watcher-win32-x64@2.4.1': optional: true - /@parcel/watcher@2.4.1: - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} - engines: {node: '>= 10.0.0'} + '@parcel/watcher@2.4.1': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 @@ -4447,33 +9630,15 @@ packages: '@parcel/watcher-win32-arm64': 2.4.1 '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - dev: false - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: false + '@pkgjs/parseargs@0.11.0': optional: true - /@pkgr/core@0.1.1: - resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dev: true + '@pkgr/core@0.1.1': {} - /@popperjs/core@2.11.8: - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - dev: false + '@popperjs/core@2.11.8': {} - /@rainbow-me/rainbowkit@2.1.4(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react@18.2.0)(viem@2.19.6)(wagmi@2.12.5): - resolution: {integrity: sha512-dJ92cGERc5FcyqFRJRh4iUi2IBS26pBAM1NSL7J2LNxqtOfeOAuAvzVFtJUxDCidS0/hNbvPY47GU68QpW4g6A==} - engines: {node: '>=12.4'} - peerDependencies: - '@tanstack/react-query': '>=5.0.0' - react: '>=18' - react-dom: '>=18' - viem: 2.x - wagmi: ^2.9.0 + '@rainbow-me/rainbowkit@2.1.4(@tanstack/react-query@5.28.0(react@18.2.0))(@types/react@18.2.15)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10))(wagmi@2.12.5(@tanstack/query-core@5.28.0)(@tanstack/react-query@5.28.0(react@18.2.0))(@types/react@18.2.15)(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)))': dependencies: '@tanstack/react-query': 5.28.0(react@18.2.0) '@vanilla-extract/css': 1.14.0 @@ -4485,23 +9650,19 @@ packages: react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.7(@types/react@18.2.15)(react@18.2.0) ua-parser-js: 1.0.38 - viem: 2.19.6(typescript@5.4.2) - wagmi: 2.12.5(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) + viem: 2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) + wagmi: 2.12.5(@tanstack/query-core@5.28.0)(@tanstack/react-query@5.28.0(react@18.2.0))(@types/react@18.2.15)(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)) transitivePeerDependencies: - '@types/react' - dev: false - /@react-native-community/cli-clean@14.0.0: - resolution: {integrity: sha512-kvHthZTNur/wLLx8WL5Oh+r04zzzFAX16r8xuaLhu9qGTE6Th1JevbsIuiQb5IJqD8G/uZDKgIZ2a0/lONcbJg==} + '@react-native-community/cli-clean@14.0.0': dependencies: '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 execa: 5.1.1 fast-glob: 3.3.2 - dev: false - /@react-native-community/cli-config@14.0.0(typescript@5.4.2): - resolution: {integrity: sha512-2Nr8KR+dgn1z+HLxT8piguQ1SoEzgKJnOPQKE1uakxWaRFcQ4LOXgzpIAscYwDW6jmQxdNqqbg2cRUoOS7IMtQ==} + '@react-native-community/cli-config@14.0.0(typescript@5.4.2)': dependencies: '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 @@ -4511,26 +9672,20 @@ packages: joi: 17.13.3 transitivePeerDependencies: - typescript - dev: false - /@react-native-community/cli-debugger-ui@14.0.0: - resolution: {integrity: sha512-JpfzILfU7eKE9+7AMCAwNJv70H4tJGVv3ZGFqSVoK1YHg5QkVEGsHtoNW8AsqZRS6Fj4os+Fmh+r+z1L36sPmg==} + '@react-native-community/cli-debugger-ui@14.0.0': dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - dev: false - /@react-native-community/cli-debugger-ui@14.0.0-alpha.11: - resolution: {integrity: sha512-0wCNQxhCniyjyMXgR1qXliY180y/2QbvoiYpp2MleGQADr5M1b8lgI4GoyADh5kE+kX3VL0ssjgyxpmbpCD86A==} + '@react-native-community/cli-debugger-ui@14.0.0-alpha.11': dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - dev: false - /@react-native-community/cli-doctor@14.0.0(typescript@5.4.2): - resolution: {integrity: sha512-in6jylHjaPUaDzV+JtUblh8m9JYIHGjHOf6Xn57hrmE5Zwzwuueoe9rSMHF1P0mtDgRKrWPzAJVejElddfptWA==} + '@react-native-community/cli-doctor@14.0.0(typescript@5.4.2)': dependencies: '@react-native-community/cli-config': 14.0.0(typescript@5.4.2) '@react-native-community/cli-platform-android': 14.0.0 @@ -4550,10 +9705,8 @@ packages: yaml: 2.5.0 transitivePeerDependencies: - typescript - dev: false - /@react-native-community/cli-platform-android@14.0.0: - resolution: {integrity: sha512-nt7yVz3pGKQXnVa5MAk7zR+1n41kNKD3Hi2OgybH5tVShMBo7JQoL2ZVVH6/y/9wAwI/s7hXJgzf1OIP3sMq+Q==} + '@react-native-community/cli-platform-android@14.0.0': dependencies: '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 @@ -4561,10 +9714,8 @@ packages: fast-glob: 3.3.2 fast-xml-parser: 4.4.1 logkitty: 0.7.1 - dev: false - /@react-native-community/cli-platform-apple@14.0.0: - resolution: {integrity: sha512-WniJL8vR4MeIsjqio2hiWWuUYUJEL3/9TDL5aXNwG68hH3tYgK3742+X9C+vRzdjTmf5IKc/a6PwLsdplFeiwQ==} + '@react-native-community/cli-platform-apple@14.0.0': dependencies: '@react-native-community/cli-tools': 14.0.0 chalk: 4.1.2 @@ -4572,16 +9723,12 @@ packages: fast-glob: 3.3.2 fast-xml-parser: 4.4.1 ora: 5.4.1 - dev: false - /@react-native-community/cli-platform-ios@14.0.0: - resolution: {integrity: sha512-8kxGv7mZ5nGMtueQDq+ndu08f0ikf3Zsqm3Ix8FY5KCXpSgP14uZloO2GlOImq/zFESij+oMhCkZJGggpWpfAw==} + '@react-native-community/cli-platform-ios@14.0.0': dependencies: '@react-native-community/cli-platform-apple': 14.0.0 - dev: false - /@react-native-community/cli-server-api@14.0.0: - resolution: {integrity: sha512-A0FIsj0QCcDl1rswaVlChICoNbfN+mkrKB5e1ab5tOYeZMMyCHqvU+eFvAvXjHUlIvVI+LbqCkf4IEdQ6H/2AQ==} + '@react-native-community/cli-server-api@14.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@react-native-community/cli-debugger-ui': 14.0.0 '@react-native-community/cli-tools': 14.0.0 @@ -4591,15 +9738,13 @@ packages: nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 6.2.3 + ws: 6.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false - /@react-native-community/cli-server-api@14.0.0-alpha.11: - resolution: {integrity: sha512-I7YeYI7S5wSxnQAqeG8LNqhT99FojiGIk87DU0vTp6U8hIMLcA90fUuBAyJY38AuQZ12ZJpGa8ObkhIhWzGkvg==} + '@react-native-community/cli-server-api@14.0.0-alpha.11(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@react-native-community/cli-debugger-ui': 14.0.0-alpha.11 '@react-native-community/cli-tools': 14.0.0-alpha.11 @@ -4609,15 +9754,13 @@ packages: nocache: 3.0.4 pretty-format: 26.6.2 serve-static: 1.15.0 - ws: 6.2.3 + ws: 6.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false - /@react-native-community/cli-tools@14.0.0: - resolution: {integrity: sha512-L7GX5hyYYv0ZWbAyIQKzhHuShnwDqlKYB0tqn57wa5riGCaxYuRPTK+u4qy+WRCye7+i8M4Xj6oQtSd4z0T9cA==} + '@react-native-community/cli-tools@14.0.0': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 @@ -4629,10 +9772,8 @@ packages: semver: 7.6.3 shell-quote: 1.8.1 sudo-prompt: 9.2.1 - dev: false - /@react-native-community/cli-tools@14.0.0-alpha.11: - resolution: {integrity: sha512-HQCfVnX9aqRdKdLxmQy4fUAUo+YhNGlBV7ZjOayPbuEGWJ4RN+vSy0Cawk7epo7hXd6vKzc7P7y3HlU6Kxs7+w==} + '@react-native-community/cli-tools@14.0.0-alpha.11': dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 @@ -4644,24 +9785,18 @@ packages: semver: 7.6.3 shell-quote: 1.8.1 sudo-prompt: 9.2.1 - dev: false - /@react-native-community/cli-types@14.0.0: - resolution: {integrity: sha512-CMUevd1pOWqvmvutkUiyQT2lNmMHUzSW7NKc1xvHgg39NjbS58Eh2pMzIUP85IwbYNeocfYc3PH19vA/8LnQtg==} + '@react-native-community/cli-types@14.0.0': dependencies: joi: 17.13.3 - dev: false - /@react-native-community/cli@14.0.0(typescript@5.4.2): - resolution: {integrity: sha512-KwMKJB5jsDxqOhT8CGJ55BADDAYxlYDHv5R/ASQlEcdBEZxT0zZmnL0iiq2VqzETUy+Y/Nop+XDFgqyoQm0C2w==} - engines: {node: '>=18'} - hasBin: true + '@react-native-community/cli@14.0.0(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)': dependencies: '@react-native-community/cli-clean': 14.0.0 '@react-native-community/cli-config': 14.0.0(typescript@5.4.2) '@react-native-community/cli-debugger-ui': 14.0.0 '@react-native-community/cli-doctor': 14.0.0(typescript@5.4.2) - '@react-native-community/cli-server-api': 14.0.0 + '@react-native-community/cli-server-api': 14.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@react-native-community/cli-tools': 14.0.0 '@react-native-community/cli-types': 14.0.0 chalk: 4.1.2 @@ -4678,28 +9813,17 @@ packages: - supports-color - typescript - utf-8-validate - dev: false - /@react-native/assets-registry@0.75.1: - resolution: {integrity: sha512-mrW6dvueJgP5v5mR/dxvW9v+t9AmzR5OMDMq94reT04QarREGGDHEOW5sLzj4uT6Xhqtda2+ZQOaEZ6PPcv+QA==} - engines: {node: '>=18'} - dev: false + '@react-native/assets-registry@0.75.1': {} - /@react-native/babel-plugin-codegen@0.75.1(@babel/preset-env@7.25.3): - resolution: {integrity: sha512-M7CxPAYZVDeBCCyC4BToEf6vPFtZ5EAA5F2fcm0RuErWMNiB2ycD7nCSVpZtQXOxgNItNi+7mRFTLKTNb7AFrQ==} - engines: {node: '>=18'} + '@react-native/babel-plugin-codegen@0.75.1(@babel/preset-env@7.25.3(@babel/core@7.24.1))': dependencies: - '@react-native/codegen': 0.75.1(@babel/preset-env@7.25.3) + '@react-native/codegen': 0.75.1(@babel/preset-env@7.25.3(@babel/core@7.24.1)) transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/babel-preset@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3): - resolution: {integrity: sha512-u5+7PCkz9J5XKhUwDSJCxLyt49L9qirlBvOR8IwztWVhrf+gd/iIgQLZm9vf/j9tfLhEsgvMup6FMha2/u1cQw==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' + '@react-native/babel-preset@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))': dependencies: '@babel/core': 7.24.1 '@babel/plugin-proposal-export-default-from': 7.24.7(@babel/core@7.24.1) @@ -4743,44 +9867,36 @@ packages: '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.24.1) '@babel/plugin-transform-unicode-regex': 7.24.7(@babel/core@7.24.1) '@babel/template': 7.25.0 - '@react-native/babel-plugin-codegen': 0.75.1(@babel/preset-env@7.25.3) + '@react-native/babel-plugin-codegen': 0.75.1(@babel/preset-env@7.25.3(@babel/core@7.24.1)) babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.24.1) react-refresh: 0.14.2 transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/codegen@0.75.1(@babel/preset-env@7.25.3): - resolution: {integrity: sha512-nO5CQuXTPL8iou9EzkUjOrGsiano3hGC80AwFlFt8h7q8Bked293YaB3qRQRwN4gmedR8ZKVZGI/pyuvuOWLfQ==} - engines: {node: '>=18'} - peerDependencies: - '@babel/preset-env': ^7.1.6 + '@react-native/codegen@0.75.1(@babel/preset-env@7.25.3(@babel/core@7.24.1))': dependencies: '@babel/parser': 7.25.3 '@babel/preset-env': 7.25.3(@babel/core@7.24.1) glob: 7.2.3 hermes-parser: 0.22.0 invariant: 2.2.4 - jscodeshift: 0.14.0(@babel/preset-env@7.25.3) + jscodeshift: 0.14.0(@babel/preset-env@7.25.3(@babel/core@7.24.1)) mkdirp: 0.5.6 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /@react-native/community-cli-plugin@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3): - resolution: {integrity: sha512-G0GPvFAVrC9k0MfwnKXimaYKqOlEzXFMZ6DmZi2zxSGPFt/MV3sSRjbv3yb8q0mLcK78/J7w1DyImcSQopOCLg==} - engines: {node: '>=18'} + '@react-native/community-cli-plugin@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@react-native-community/cli-server-api': 14.0.0-alpha.11 + '@react-native-community/cli-server-api': 14.0.0-alpha.11(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@react-native-community/cli-tools': 14.0.0-alpha.11 - '@react-native/dev-middleware': 0.75.1 - '@react-native/metro-babel-transformer': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3) + '@react-native/dev-middleware': 0.75.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@react-native/metro-babel-transformer': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1)) chalk: 4.1.2 execa: 5.1.1 - metro: 0.80.10 - metro-config: 0.80.10 + metro: 0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) + metro-config: 0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) metro-core: 0.80.10 node-fetch: 2.7.0 querystring: 0.2.1 @@ -4792,16 +9908,10 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /@react-native/debugger-frontend@0.75.1: - resolution: {integrity: sha512-N+awwEYZHj9lR4hieBK2oFB6C0qa4/6NPpzeqvtLnZddr38H6Wv9CHxSFA8pqIBu4qmn4JcRjOjVD6pXCcLohA==} - engines: {node: '>=18'} - dev: false + '@react-native/debugger-frontend@0.75.1': {} - /@react-native/dev-middleware@0.75.1: - resolution: {integrity: sha512-2vBIqNe5p/j3ZfDtV3R74OlwoGTgJVDhx9bMIK1U8ODqic+8OVjqvQKGNB+KUb/+HiPkKAhpAIsgcEmL/Nq1sg==} - engines: {node: '>=18'} + '@react-native/dev-middleware@0.75.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@isaacs/ttlcache': 1.4.1 '@react-native/debugger-frontend': 0.75.1 @@ -4814,161 +9924,104 @@ packages: open: 7.4.2 selfsigned: 2.4.1 serve-static: 1.15.0 - ws: 6.2.3 + ws: 6.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - dev: false - /@react-native/gradle-plugin@0.75.1: - resolution: {integrity: sha512-a2gVjX3MB9TF9QZSKje79n1GDAnseTU94VIcFH/4DS3KjbK3yrNXsu1maxGZxDUAKmTUH7Rz4An/Rb5nkZG7dw==} - engines: {node: '>=18'} - dev: false + '@react-native/gradle-plugin@0.75.1': {} - /@react-native/js-polyfills@0.75.1: - resolution: {integrity: sha512-7yUCDtsNaIoOefI3M1XiqUaxNQIzNYL0P38IE6JuroVZspPaGmwB34RkgBTuDzNQ+p/4EIgBmqRzqF5Jjlf92A==} - engines: {node: '>=18'} - dev: false + '@react-native/js-polyfills@0.75.1': {} - /@react-native/metro-babel-transformer@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3): - resolution: {integrity: sha512-X4NZNWox2E97fJG97XNuTd9wU3FK2c+S/Neg7KsBETPOHUkdoORC3nH1VQRrIqID85yYgdxLxvDwXa9hkmzjuA==} - engines: {node: '>=18'} - peerDependencies: - '@babel/core': '*' + '@react-native/metro-babel-transformer@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))': dependencies: '@babel/core': 7.24.1 - '@react-native/babel-preset': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3) + '@react-native/babel-preset': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1)) hermes-parser: 0.22.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - dev: false - /@react-native/normalize-colors@0.75.1: - resolution: {integrity: sha512-TnUII4YFtPBzxA0Eu1RvXrauw+fZlixK6QgbuOZSfhEfgM1ri6O1wse3VaR+h1CJw2NlNjgi902x9uUX8HbH8w==} - dev: false + '@react-native/normalize-colors@0.75.1': {} - /@react-native/virtualized-lists@0.75.1(@types/react@18.2.15)(react-native@0.75.1)(react@18.2.0): - resolution: {integrity: sha512-e7XL9XtU2Z9NUFJFwL9StHa9l2La0/fU7wZ05s8YEMxB+7Fgyn7/X4JsIk7G4xTSPXxPKV2Yz9STHGzKT5OcKQ==} - engines: {node: '>=18'} - peerDependencies: - '@types/react': ^18.2.6 - react: '*' - react-native: '*' - peerDependenciesMeta: - '@types/react': - optional: true + '@react-native/virtualized-lists@0.75.1(@types/react@18.2.15)(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)': dependencies: - '@types/react': 18.2.15 invariant: 2.2.4 nullthrows: 1.1.1 react: 18.2.0 - react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) - dev: false + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10) + optionalDependencies: + '@types/react': 18.2.15 - /@remix-run/router@1.8.0: - resolution: {integrity: sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg==} - engines: {node: '>=14.0.0'} - dev: false + '@remix-run/router@1.8.0': {} - /@safe-global/safe-apps-provider@0.18.3(typescript@5.4.2): - resolution: {integrity: sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ==} + '@safe-global/safe-apps-provider@0.18.3(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(typescript@5.4.2) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) events: 3.3.0 transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - dev: false - /@safe-global/safe-apps-sdk@9.1.0(typescript@5.4.2): - resolution: {integrity: sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==} + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.22.2 - viem: 2.19.6(typescript@5.4.2) + viem: 2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - dev: false - /@safe-global/safe-gateway-typescript-sdk@3.22.2: - resolution: {integrity: sha512-Y0yAxRaB98LFp2Dm+ACZqBSdAmI3FlpH/LjxOZ94g/ouuDJecSq0iR26XZ5QDuEL8Rf+L4jBJaoDC08CD0KkJw==} - engines: {node: '>=16'} - dev: false + '@safe-global/safe-gateway-typescript-sdk@3.22.2': {} - /@scure/base@1.1.7: - resolution: {integrity: sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==} - dev: false + '@scure/base@1.1.7': {} - /@scure/bip32@1.4.0: - resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + '@scure/bip32@1.4.0': dependencies: '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 '@scure/base': 1.1.7 - dev: false - /@scure/bip39@1.3.0: - resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + '@scure/bip39@1.3.0': dependencies: '@noble/hashes': 1.4.0 '@scure/base': 1.1.7 - dev: false - /@sideway/address@4.1.5: - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 - dev: false - /@sideway/formula@3.0.1: - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - dev: false + '@sideway/formula@3.0.1': {} - /@sideway/pinpoint@2.0.0: - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - dev: false + '@sideway/pinpoint@2.0.0': {} - /@sinclair/typebox@0.27.8: - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.27.8': {} - /@sinonjs/commons@3.0.1: - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + '@sinonjs/commons@3.0.1': dependencies: type-detect: 4.0.8 - /@sinonjs/fake-timers@10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.1 - /@socket.io/component-emitter@3.1.2: - resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} - dev: false + '@socket.io/component-emitter@3.1.2': {} - /@stablelib/aead@1.0.1: - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - dev: false + '@stablelib/aead@1.0.1': {} - /@stablelib/binary@1.0.1: - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + '@stablelib/binary@1.0.1': dependencies: '@stablelib/int': 1.0.1 - dev: false - /@stablelib/bytes@1.0.1: - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} - dev: false + '@stablelib/bytes@1.0.1': {} - /@stablelib/chacha20poly1305@1.0.1: - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + '@stablelib/chacha20poly1305@1.0.1': dependencies: '@stablelib/aead': 1.0.1 '@stablelib/binary': 1.0.1 @@ -4976,126 +10029,85 @@ packages: '@stablelib/constant-time': 1.0.1 '@stablelib/poly1305': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/chacha@1.0.1: - resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + '@stablelib/chacha@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/constant-time@1.0.1: - resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} - dev: false + '@stablelib/constant-time@1.0.1': {} - /@stablelib/ed25519@1.0.3: - resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + '@stablelib/ed25519@1.0.3': dependencies: '@stablelib/random': 1.0.2 '@stablelib/sha512': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/hash@1.0.1: - resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} - dev: false + '@stablelib/hash@1.0.1': {} - /@stablelib/hkdf@1.0.1: - resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + '@stablelib/hkdf@1.0.1': dependencies: '@stablelib/hash': 1.0.1 '@stablelib/hmac': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/hmac@1.0.1: - resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + '@stablelib/hmac@1.0.1': dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/int@1.0.1: - resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} - dev: false + '@stablelib/int@1.0.1': {} - /@stablelib/keyagreement@1.0.1: - resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + '@stablelib/keyagreement@1.0.1': dependencies: '@stablelib/bytes': 1.0.1 - dev: false - /@stablelib/poly1305@1.0.1: - resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + '@stablelib/poly1305@1.0.1': dependencies: '@stablelib/constant-time': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/random@1.0.2: - resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + '@stablelib/random@1.0.2': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/sha256@1.0.1: - resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + '@stablelib/sha256@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/sha512@1.0.1: - resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + '@stablelib/sha512@1.0.1': dependencies: '@stablelib/binary': 1.0.1 '@stablelib/hash': 1.0.1 '@stablelib/wipe': 1.0.1 - dev: false - /@stablelib/wipe@1.0.1: - resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} - dev: false + '@stablelib/wipe@1.0.1': {} - /@stablelib/x25519@1.0.3: - resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + '@stablelib/x25519@1.0.3': dependencies: '@stablelib/keyagreement': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/wipe': 1.0.1 - dev: false - /@swc/counter@0.1.3: - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - dev: false + '@swc/counter@0.1.3': {} - /@swc/helpers@0.5.5: - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 tslib: 2.6.3 - dev: false - /@tanstack/query-core@5.28.0: - resolution: {integrity: sha512-BfltXqnoIAXTCFrQCu40M3Ch7odQ6IJraTy0t8n12jAwXMYKIgDwOBWTqkSUYD+vxMi8Ag0+9F8lw9wZKhi2Yg==} - dev: false + '@tanstack/query-core@5.28.0': {} - /@tanstack/react-query@5.28.0(react@18.2.0): - resolution: {integrity: sha512-nF4E4rFMQdh30gECGkTfyzgjgfSr4MLVgYoIsf7KqVkjUjEQHPpi9jyx10kO3Yq/OQMKOLMHAzD31st/lxDPbQ==} - peerDependencies: - react: ^18.0.0 + '@tanstack/react-query@5.28.0(react@18.2.0)': dependencies: '@tanstack/query-core': 5.28.0 react: 18.2.0 - dev: false - /@testing-library/dom@10.4.0: - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} - engines: {node: '>=18'} + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 '@babel/runtime': 7.25.0 @@ -5105,11 +10117,8 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - dev: true - /@testing-library/dom@9.3.4: - resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} - engines: {node: '>=14'} + '@testing-library/dom@9.3.4': dependencies: '@babel/code-frame': 7.24.1 '@babel/runtime': 7.24.1 @@ -5119,294 +10128,177 @@ packages: dom-accessibility-api: 0.5.16 lz-string: 1.5.0 pretty-format: 27.5.1 - dev: true - /@testing-library/jest-dom@6.1.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0): - resolution: {integrity: sha512-NP9jl1Q2qDDtx+cqogowtQtmgD2OVs37iMSIsTv5eN5ETRkf26Kj6ugVwA93/gZzzFWQAsgkKkcftDe91BJCkQ==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true + '@testing-library/jest-dom@6.1.2(@jest/globals@29.7.0)(@types/jest@29.5.12)(jest@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)))': dependencies: '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.24.1 - '@jest/globals': 29.7.0 - '@types/jest': 29.5.12 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.5.16 - jest: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) lodash: 4.17.21 redent: 3.0.0 - dev: true + optionalDependencies: + '@jest/globals': 29.7.0 + '@types/jest': 29.5.12 + jest: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) - /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} - engines: {node: '>=14'} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + '@testing-library/react@14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.24.1 '@testing-library/dom': 9.3.4 '@types/react-dom': 18.2.7 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: true - /@testing-library/user-event@14.4.3(@testing-library/dom@10.4.0): - resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' + '@testing-library/user-event@14.4.3(@testing-library/dom@10.4.0)': dependencies: '@testing-library/dom': 10.4.0 - dev: true - /@tootallnate/once@2.0.0: - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - dev: true + '@tootallnate/once@2.0.0': {} - /@tsconfig/node10@1.0.11: - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} - dev: true + '@tsconfig/node10@1.0.11': {} - /@tsconfig/node12@1.0.11: - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - dev: true + '@tsconfig/node12@1.0.11': {} - /@tsconfig/node14@1.0.3: - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - dev: true + '@tsconfig/node14@1.0.3': {} - /@tsconfig/node16@1.0.4: - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - dev: true + '@tsconfig/node16@1.0.4': {} - /@types/aria-query@5.0.4: - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - dev: true + '@types/aria-query@5.0.4': {} - /@types/babel__core@7.20.5: - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 - dev: true - /@types/babel__generator@7.6.8: - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.6.8': dependencies: '@babel/types': 7.25.2 - dev: true - /@types/babel__template@7.4.4: - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.25.3 '@babel/types': 7.25.2 - dev: true - /@types/babel__traverse@7.20.6: - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.20.6': dependencies: '@babel/types': 7.25.2 - dev: true - /@types/debug@4.1.12: - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 - dev: false - /@types/dom-screen-wake-lock@1.0.3: - resolution: {integrity: sha512-3Iten7X3Zgwvk6kh6/NRdwN7WbZ760YgFCsF5AxDifltUQzW1RaW+WRmcVtgwFzLjaNu64H+0MPJ13yRa8g3Dw==} - dev: false + '@types/dom-screen-wake-lock@1.0.3': {} - /@types/graceful-fs@4.1.9: - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + '@types/graceful-fs@4.1.9': dependencies: '@types/node': 20.12.13 - dev: true - /@types/hoist-non-react-statics@3.3.5: - resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} + '@types/hoist-non-react-statics@3.3.5': dependencies: '@types/react': 18.2.15 hoist-non-react-statics: 3.3.2 - dev: false - /@types/istanbul-lib-coverage@2.0.6: - resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + '@types/istanbul-lib-coverage@2.0.6': {} - /@types/istanbul-lib-report@3.0.3: - resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 - /@types/istanbul-reports@3.0.4: - resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - /@types/jest@29.5.12: - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + '@types/jest@29.5.12': dependencies: expect: 29.7.0 pretty-format: 29.7.0 - dev: true - /@types/jsdom@20.0.1: - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + '@types/jsdom@20.0.1': dependencies: '@types/node': 20.12.13 '@types/tough-cookie': 4.0.5 parse5: 7.1.2 - dev: true - /@types/json-schema@7.0.15: - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true + '@types/json-schema@7.0.15': {} - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + '@types/json5@0.0.29': {} - /@types/lodash.merge@4.6.7: - resolution: {integrity: sha512-OwxUJ9E50gw3LnAefSHJPHaBLGEKmQBQ7CZe/xflHkyy/wH2zVyEIAKReHvVrrn7zKdF58p16We9kMfh7v0RRQ==} + '@types/lodash.merge@4.6.7': dependencies: '@types/lodash': 4.17.0 - dev: true - /@types/lodash@4.17.0: - resolution: {integrity: sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==} - dev: true + '@types/lodash@4.17.0': {} - /@types/ms@0.7.34: - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - dev: false + '@types/ms@0.7.34': {} - /@types/node-forge@1.3.11: - resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + '@types/node-forge@1.3.11': dependencies: '@types/node': 20.12.13 - dev: false - /@types/node@20.12.13: - resolution: {integrity: sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==} + '@types/node@20.12.13': dependencies: undici-types: 5.26.5 - /@types/parse-json@4.0.2: - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - dev: false + '@types/parse-json@4.0.2': {} - /@types/prop-types@15.7.11: - resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} + '@types/prop-types@15.7.11': {} - /@types/react-dom@18.2.7: - resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} + '@types/react-dom@18.2.7': dependencies: '@types/react': 18.2.15 - dev: true - /@types/react-transition-group@4.4.10: - resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} + '@types/react-transition-group@4.4.10': dependencies: '@types/react': 18.2.15 - dev: false - /@types/react@18.2.15: - resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} + '@types/react@18.2.15': dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.3 - /@types/scheduler@0.16.8: - resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + '@types/scheduler@0.16.8': {} - /@types/secp256k1@4.0.6: - resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + '@types/secp256k1@4.0.6': dependencies: '@types/node': 20.12.13 - dev: false - /@types/semver@7.5.8: - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true + '@types/semver@7.5.8': {} - /@types/sinonjs__fake-timers@8.1.1: - resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} - dev: true + '@types/sinonjs__fake-timers@8.1.1': {} - /@types/sizzle@2.3.8: - resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} - dev: true + '@types/sizzle@2.3.8': {} - /@types/stack-utils@2.0.3: - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + '@types/stack-utils@2.0.3': {} - /@types/stylis@4.2.5: - resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==} - dev: true + '@types/stylis@4.2.5': {} - /@types/tough-cookie@4.0.5: - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - dev: true + '@types/tough-cookie@4.0.5': {} - /@types/trusted-types@2.0.7: - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - dev: false + '@types/trusted-types@2.0.7': {} - /@types/yargs-parser@21.0.3: - resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + '@types/yargs-parser@21.0.3': {} - /@types/yargs@15.0.19: - resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + '@types/yargs@15.0.19': dependencies: '@types/yargs-parser': 21.0.3 - dev: false - /@types/yargs@17.0.32: - resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 - /@types/yauzl@2.10.3: - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - requiresBuild: true + '@types/yauzl@2.10.3': dependencies: '@types/node': 20.12.13 - dev: true optional: true - /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.4.2): - resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2))(eslint@8.45.0)(typescript@5.4.2)': dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.4.2) @@ -5423,20 +10315,12 @@ packages: natural-compare-lite: 1.4.0 semver: 7.6.0 ts-api-utils: 1.3.0(typescript@5.4.2) + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2): - resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2)': dependencies: '@typescript-eslint/scope-manager': 6.0.0 '@typescript-eslint/types': 6.0.0 @@ -5444,52 +10328,31 @@ packages: '@typescript-eslint/visitor-keys': 6.0.0 debug: 4.3.4 eslint: 8.45.0 + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/scope-manager@6.0.0: - resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@6.0.0': dependencies: '@typescript-eslint/types': 6.0.0 '@typescript-eslint/visitor-keys': 6.0.0 - dev: true - /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.4.2): - resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.4.2)': dependencies: '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.4.2) '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.4.2) debug: 4.3.4 eslint: 8.45.0 ts-api-utils: 1.3.0(typescript@5.4.2) + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/types@6.0.0: - resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} - engines: {node: ^16.0.0 || >=18.0.0} - dev: true + '@typescript-eslint/types@6.0.0': {} - /@typescript-eslint/typescript-estree@6.0.0(typescript@5.4.2): - resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + '@typescript-eslint/typescript-estree@6.0.0(typescript@5.4.2)': dependencies: '@typescript-eslint/types': 6.0.0 '@typescript-eslint/visitor-keys': 6.0.0 @@ -5498,16 +10361,12 @@ packages: is-glob: 4.0.3 semver: 7.6.0 ts-api-utils: 1.3.0(typescript@5.4.2) + optionalDependencies: typescript: 5.4.2 transitivePeerDependencies: - supports-color - dev: true - /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.4.2): - resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.4.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.15 @@ -5521,18 +10380,13 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: true - /@typescript-eslint/visitor-keys@6.0.0: - resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} - engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@6.0.0': dependencies: '@typescript-eslint/types': 6.0.0 eslint-visitor-keys: 3.4.3 - dev: true - /@vanilla-extract/css@1.14.0: - resolution: {integrity: sha512-rYfm7JciWZ8PFzBM/HDiE2GLnKI3xJ6/vdmVJ5BSgcCZ5CxRlM9Cjqclni9lGzF3eMOijnUhCd/KV8TOzyzbMA==} + '@vanilla-extract/css@1.14.0': dependencies: '@emotion/hash': 0.9.2 '@vanilla-extract/private': 1.0.5 @@ -5545,46 +10399,30 @@ packages: media-query-parser: 2.0.2 modern-ahocorasick: 1.0.1 outdent: 0.8.0 - dev: false - /@vanilla-extract/dynamic@2.1.0: - resolution: {integrity: sha512-8zl0IgBYRtgD1h+56Zu13wHTiMTJSVEa4F7RWX9vTB/5Xe2KtjoiqApy/szHPVFA56c+ex6A4GpCQjT1bKXbYw==} + '@vanilla-extract/dynamic@2.1.0': dependencies: '@vanilla-extract/private': 1.0.5 - dev: false - /@vanilla-extract/private@1.0.5: - resolution: {integrity: sha512-6YXeOEKYTA3UV+RC8DeAjFk+/okoNz/h88R+McnzA2zpaVqTR/Ep+vszkWYlGBcMNO7vEkqbq5nT/JMMvhi+tw==} - dev: false + '@vanilla-extract/private@1.0.5': {} - /@vanilla-extract/sprinkles@1.6.1(@vanilla-extract/css@1.14.0): - resolution: {integrity: sha512-N/RGKwGAAidBupZ436RpuweRQHEFGU+mvAqBo8PRMAjJEmHoPDttV8RObaMLrJHWLqvX+XUMinHUnD0hFRQISw==} - peerDependencies: - '@vanilla-extract/css': ^1.0.0 + '@vanilla-extract/sprinkles@1.6.1(@vanilla-extract/css@1.14.0)': dependencies: '@vanilla-extract/css': 1.14.0 - dev: false - /@wagmi/connectors@5.1.5(@types/react@18.2.15)(@wagmi/core@2.13.4)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6): - resolution: {integrity: sha512-z+UAfwfTqVldoNxUFffHPcc/ets3UP1ehXE6b9k9ZDaih8VdZJRGz84qLjx+GVnI/+FrHfFwPPD9C2YYd2azww==} - peerDependencies: - '@wagmi/core': 2.13.4 - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true + '@wagmi/connectors@5.1.5(@types/react@18.2.15)(@wagmi/core@2.13.4(@tanstack/query-core@5.28.0)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10))': dependencies: '@coinbase/wallet-sdk': 4.0.4 - '@metamask/sdk': 0.27.0(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) - '@safe-global/safe-apps-provider': 0.18.3(typescript@5.4.2) - '@safe-global/safe-apps-sdk': 9.1.0(typescript@5.4.2) - '@wagmi/core': 2.13.4(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) - '@walletconnect/ethereum-provider': 2.14.0(@types/react@18.2.15)(react@18.2.0) + '@metamask/sdk': 0.27.0(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.3(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) + '@wagmi/core': 2.13.4(@tanstack/query-core@5.28.0)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)) + '@walletconnect/ethereum-provider': 2.14.0(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(utf-8-validate@5.0.10) '@walletconnect/modal': 2.6.2(@types/react@18.2.15)(react@18.2.0) - cbw-sdk: /@coinbase/wallet-sdk@3.9.3 + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + viem: 2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) + optionalDependencies: typescript: 5.4.2 - viem: 2.19.6(typescript@5.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -5610,39 +10448,28 @@ packages: - uWebSockets.js - utf-8-validate - zod - dev: false - /@wagmi/core@2.13.4(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6): - resolution: {integrity: sha512-J6gfxHYr8SCc/BzEa712LnI+qLFs5K2nBLupwQqQl4WiAlCu8SdcpbZokqiwfCMYhIRMj0+YFEP9qe4ypcexmw==} - peerDependencies: - '@tanstack/query-core': '>=5.0.0' - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - '@tanstack/query-core': - optional: true - typescript: - optional: true + '@wagmi/core@2.13.4(@tanstack/query-core@5.28.0)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10))': dependencies: eventemitter3: 5.0.1 mipd: 0.0.7(typescript@5.4.2) - typescript: 5.4.2 - viem: 2.19.6(typescript@5.4.2) + viem: 2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) zustand: 4.4.1(@types/react@18.2.15)(react@18.2.0) + optionalDependencies: + '@tanstack/query-core': 5.28.0 + typescript: 5.4.2 transitivePeerDependencies: - '@types/react' - immer - react - dev: false - /@walletconnect/core@2.14.0: - resolution: {integrity: sha512-E/dgBM9q3judXnTfZQ5ILvDpeSdDpabBLsXtYXa3Nyc26cfNplfLJ2nXm9FgtTdhM1nZ7yx4+zDPiXawBRZl2g==} + '@walletconnect/core@2.14.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/jsonrpc-ws-connection': 1.0.14 + '@walletconnect/jsonrpc-ws-connection': 1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.10 @@ -5673,25 +10500,21 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/environment@1.0.1: - resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/ethereum-provider@2.14.0(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-Cc2/DCn85VciA10BrsNWFM//3VC1D8yjwrjfUKjGndLPDz0YIdAxTgYZViIlMjE0lzQC/DMvPYEAnGfW0O1Bwg==} + '@walletconnect/ethereum-provider@2.14.0(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(utf-8-validate@5.0.10)': dependencies: '@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/modal': 2.6.2(@types/react@18.2.15)(react@18.2.0) - '@walletconnect/sign-client': 2.14.0 + '@walletconnect/sign-client': 2.14.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/types': 2.14.0 - '@walletconnect/universal-provider': 2.14.0 + '@walletconnect/universal-provider': 2.14.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/utils': 2.14.0 events: 3.3.0 transitivePeerDependencies: @@ -5714,25 +10537,19 @@ packages: - react - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/events@1.0.1: - resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + '@walletconnect/events@1.0.1': dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 - dev: false - /@walletconnect/heartbeat@1.2.2: - resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + '@walletconnect/heartbeat@1.2.2': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/time': 1.0.2 events: 3.3.0 - dev: false - /@walletconnect/jsonrpc-http-connection@1.0.8: - resolution: {integrity: sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==} + '@walletconnect/jsonrpc-http-connection@1.0.8': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 @@ -5740,50 +10557,35 @@ packages: events: 3.3.0 transitivePeerDependencies: - encoding - dev: false - /@walletconnect/jsonrpc-provider@1.0.14: - resolution: {integrity: sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==} + '@walletconnect/jsonrpc-provider@1.0.14': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - dev: false - /@walletconnect/jsonrpc-types@1.0.4: - resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + '@walletconnect/jsonrpc-types@1.0.4': dependencies: events: 3.3.0 keyvaluestorage-interface: 1.0.0 - dev: false - /@walletconnect/jsonrpc-utils@1.0.8: - resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + '@walletconnect/jsonrpc-utils@1.0.8': dependencies: '@walletconnect/environment': 1.0.1 '@walletconnect/jsonrpc-types': 1.0.4 tslib: 1.14.1 - dev: false - /@walletconnect/jsonrpc-ws-connection@1.0.14: - resolution: {integrity: sha512-Jsl6fC55AYcbkNVkwNM6Jo+ufsuCQRqViOQ8ZBPH9pRREHH9welbBiszuTLqEJiQcO/6XfFDl6bzCJIkrEi8XA==} + '@walletconnect/jsonrpc-ws-connection@1.0.14(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 - ws: 7.5.10 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /@walletconnect/keyvaluestorage@1.1.1: - resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} - peerDependencies: - '@react-native-async-storage/async-storage': 1.x - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true + '@walletconnect/keyvaluestorage@1.1.1': dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.1 @@ -5802,26 +10604,20 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/logger@2.1.2: - resolution: {integrity: sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==} + '@walletconnect/logger@2.1.2': dependencies: '@walletconnect/safe-json': 1.0.2 pino: 7.11.0 - dev: false - /@walletconnect/modal-core@2.6.2(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} + '@walletconnect/modal-core@2.6.2(@types/react@18.2.15)(react@18.2.0)': dependencies: valtio: 1.11.2(@types/react@18.2.15)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/modal-ui@2.6.2(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-rbdstM1HPGvr7jprQkyPggX7rP4XiCG85ZA+zWBEX0dVQg8PpAgRUqpeub4xQKDgY7pY/xLRXSiCVdWGqvG2HA==} + '@walletconnect/modal-ui@2.6.2(@types/react@18.2.15)(react@18.2.0)': dependencies: '@walletconnect/modal-core': 2.6.2(@types/react@18.2.15)(react@18.2.0) lit: 2.8.0 @@ -5830,26 +10626,20 @@ packages: transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/modal@2.6.2(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-eFopgKi8AjKf/0U4SemvcYw9zlLpx9njVN8sf6DAkowC2Md0gPU/UNEbH1Wwj407pEKnEds98pKWib1NN1ACoA==} + '@walletconnect/modal@2.6.2(@types/react@18.2.15)(react@18.2.0)': dependencies: '@walletconnect/modal-core': 2.6.2(@types/react@18.2.15)(react@18.2.0) '@walletconnect/modal-ui': 2.6.2(@types/react@18.2.15)(react@18.2.0) transitivePeerDependencies: - '@types/react' - react - dev: false - /@walletconnect/relay-api@1.0.10: - resolution: {integrity: sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==} + '@walletconnect/relay-api@1.0.10': dependencies: '@walletconnect/jsonrpc-types': 1.0.4 - dev: false - /@walletconnect/relay-auth@1.0.4: - resolution: {integrity: sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ==} + '@walletconnect/relay-auth@1.0.4': dependencies: '@stablelib/ed25519': 1.0.3 '@stablelib/random': 1.0.2 @@ -5857,18 +10647,14 @@ packages: '@walletconnect/time': 1.0.2 tslib: 1.14.1 uint8arrays: 3.1.0 - dev: false - /@walletconnect/safe-json@1.0.2: - resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + '@walletconnect/safe-json@1.0.2': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/sign-client@2.14.0: - resolution: {integrity: sha512-UrB3S3eLjPYfBLCN3WJ5u7+WcZ8kFMe/QIDqLf76Jk6TaLwkSUy563LvnSw4KW/kA+/cY1KBSdUDfX1tzYJJXg==} + '@walletconnect/sign-client@2.14.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@walletconnect/core': 2.14.0 + '@walletconnect/core': 2.14.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 @@ -5895,16 +10681,12 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/time@1.0.2: - resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + '@walletconnect/time@1.0.2': dependencies: tslib: 1.14.1 - dev: false - /@walletconnect/types@2.14.0: - resolution: {integrity: sha512-vevMi4jZLJ55vLuFOicQFmBBbLyb+S0sZS4IsaBdZkQflfGIq34HkN13c/KPl4Ye0aoR4/cUcUSitmGIzEQM5g==} + '@walletconnect/types@2.14.0': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 @@ -5927,17 +10709,15 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - /@walletconnect/universal-provider@2.14.0: - resolution: {integrity: sha512-Mr8uoTmD6H0+Hh+3gxBu4l3T2uP/nNPR02sVtwEujNum++F727mMk+ifPRIpkVo21V/bvXFEy8sHTs5hqyq5iA==} + '@walletconnect/universal-provider@2.14.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: '@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/logger': 2.1.2 - '@walletconnect/sign-client': 2.14.0 + '@walletconnect/sign-client': 2.14.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@walletconnect/types': 2.14.0 '@walletconnect/utils': 2.14.0 events: 3.3.0 @@ -5959,10 +10739,8 @@ packages: - ioredis - uWebSockets.js - utf-8-validate - dev: false - /@walletconnect/utils@2.14.0: - resolution: {integrity: sha512-vRVomYQEtEAyCK2c5bzzEvtgxaGGITF8mWuIL+WYSAMyEJLY97mirP2urDucNwcUczwxUgI+no9RiNFbUHreQQ==} + '@walletconnect/utils@2.14.0': dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 @@ -5993,288 +10771,173 @@ packages: - '@vercel/kv' - ioredis - uWebSockets.js - dev: false - - /@walletconnect/window-getters@1.0.1: - resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} - dependencies: - tslib: 1.14.1 - dev: false - - /@walletconnect/window-metadata@1.0.1: - resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} - dependencies: - '@walletconnect/window-getters': 1.0.1 - tslib: 1.14.1 - dev: false - - /abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - dev: true - - /abitype@1.0.5(typescript@5.4.2): - resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} - peerDependencies: - typescript: '>=5.0.4' - zod: ^3 >=3.22.0 - peerDependenciesMeta: - typescript: - optional: true - zod: - optional: true + + '@walletconnect/window-getters@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/window-metadata@1.0.1': dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 + + abab@2.0.6: {} + + abitype@1.0.5(typescript@5.4.2): + optionalDependencies: typescript: 5.4.2 - dev: false - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} + abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 - dev: false - /accepts@1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} + accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - dev: false - /acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + acorn-globals@7.0.1: dependencies: acorn: 8.11.3 acorn-walk: 8.3.2 - dev: true - /acorn-jsx@5.3.2(acorn@8.11.3): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 - dev: true - /acorn-walk@8.3.2: - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} - engines: {node: '>=0.4.0'} - dev: true + acorn-walk@8.3.2: {} - /acorn@8.11.3: - resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true + acorn@8.11.3: {} - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false + acorn@8.12.1: {} - /agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@6.0.2: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /agent-base@7.1.0: - resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} - engines: {node: '>= 14'} + agent-base@7.1.0: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - dev: true - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true - /anser@1.4.10: - resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} - dev: false + anser@1.4.10: {} - /ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - dev: true + ansi-colors@4.1.3: {} - /ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - dev: true - /ansi-fragments@0.2.1: - resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + ansi-fragments@0.2.1: dependencies: colorette: 1.4.0 slice-ansi: 2.1.0 strip-ansi: 5.2.0 - dev: false - /ansi-regex@4.1.1: - resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} - engines: {node: '>=6'} - dev: false + ansi-regex@4.1.1: {} - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + ansi-regex@5.0.1: {} - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: false + ansi-regex@6.0.1: {} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - /ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} + ansi-styles@5.2.0: {} - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - dev: false + ansi-styles@6.2.1: {} - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - /appdirsjs@1.2.7: - resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} - dev: false + appdirsjs@1.2.7: {} - /arch@2.2.0: - resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} - dev: true + arch@2.2.0: {} - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: true + arg@4.1.3: {} - /argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 - /argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + argparse@2.0.1: {} - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + aria-query@5.1.3: dependencies: deep-equal: 2.2.3 - dev: true - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + aria-query@5.3.0: dependencies: dequal: 2.0.3 - dev: true - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 is-array-buffer: 3.0.4 - dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} - engines: {node: '>= 0.4'} + array-includes@3.1.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 get-intrinsic: 1.2.4 is-string: 1.0.7 - dev: true - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: true + array-union@2.1.0: {} - /array.prototype.findlastindex@1.2.4: - resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} - engines: {node: '>= 0.4'} + array.prototype.findlastindex@1.2.4: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} + array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} + array.prototype.flatmap@1.3.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 es-shim-unscopables: 1.0.2 - dev: true - /array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + array.prototype.tosorted@1.1.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -6284,110 +10947,72 @@ packages: get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - dev: true - /asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - dev: false + asap@2.0.6: {} - /asn1@0.2.6: - resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + asn1@0.2.6: dependencies: safer-buffer: 2.1.2 - dev: true - /assert-plus@1.0.0: - resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} - engines: {node: '>=0.8'} - dev: true + assert-plus@1.0.0: {} - /ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} - dev: true + ast-types-flow@0.0.7: {} - /ast-types@0.15.2: - resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} - engines: {node: '>=4'} + ast-types@0.15.2: dependencies: tslib: 2.6.3 - dev: false - /astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - dev: false + astral-regex@1.0.0: {} - /astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - dev: true + astral-regex@2.0.0: {} - /async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: false + async-limiter@1.0.1: {} - /async-mutex@0.2.6: - resolution: {integrity: sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw==} + async-mutex@0.2.6: dependencies: tslib: 2.6.3 - dev: false - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: true + async@3.2.6: {} - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true + asynckit@0.4.0: {} - /at-least-node@1.0.0: - resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} - engines: {node: '>= 4.0.0'} - dev: true + at-least-node@1.0.0: {} - /atomic-sleep@1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - dev: false + atomic-sleep@1.0.0: {} - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 - /aws-sign2@0.7.0: - resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - dev: true + aws-sign2@0.7.0: {} - /aws4@1.13.1: - resolution: {integrity: sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==} - dev: true + aws4@1.13.2: {} - /axe-core@4.8.4: - resolution: {integrity: sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==} - engines: {node: '>=4'} - dev: true + axe-core@4.8.4: {} - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + axobject-query@3.2.1: dependencies: dequal: 2.0.3 - dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.25.2): - resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} - peerDependencies: - '@babel/core': ^7.0.0-0 + babel-core@7.0.0-bridge.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 - dev: false - /babel-jest@29.7.0(@babel/core@7.25.2): - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 + babel-jest@29.7.0(@babel/core@7.24.1): + dependencies: + '@babel/core': 7.24.1 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.24.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + optional: true + + babel-jest@29.7.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 '@jest/transform': 29.7.0 @@ -6399,11 +11024,8 @@ packages: slash: 3.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.24.0 '@istanbuljs/load-nyc-config': 1.1.0 @@ -6412,31 +11034,21 @@ packages: test-exclude: 6.0.0 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.25.0 '@babel/types': 7.25.2 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 - dev: true - /babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} + babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.24.8 cosmiconfig: 7.1.0 resolve: 1.22.8 - dev: false - /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.1): - resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.1): dependencies: '@babel/compat-data': 7.24.1 '@babel/core': 7.24.1 @@ -6444,12 +11056,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.1): - resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.1): dependencies: '@babel/compat-data': 7.25.2 '@babel/core': 7.24.1 @@ -6457,66 +11065,44 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.1): - resolution: {integrity: sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.1): dependencies: '@babel/core': 7.24.1 '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) core-js-compat: 3.36.1 transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.24.1): - resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.24.1): dependencies: '@babel/core': 7.24.1 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.1) core-js-compat: 3.38.0 transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.1): - resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.1): dependencies: '@babel/core': 7.24.1 '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: true - /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.1): - resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.1): dependencies: '@babel/core': 7.24.1 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.1) transitivePeerDependencies: - supports-color - dev: false - /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.1): - resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.24.1): dependencies: '@babel/plugin-syntax-flow': 7.24.7(@babel/core@7.24.1) transitivePeerDependencies: - '@babel/core' - dev: false - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.1): - resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.1): dependencies: '@babel/core': 7.24.1 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) @@ -6531,12 +11117,28 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) - dev: true - /babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-current-node-syntax@1.1.0(@babel/core@7.24.1): + dependencies: + '@babel/core': 7.24.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.24.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.1) + optional: true + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) @@ -6554,176 +11156,116 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - dev: true - /babel-preset-jest@29.6.3(@babel/core@7.25.2): - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 + babel-preset-jest@29.6.3(@babel/core@7.24.1): + dependencies: + '@babel/core': 7.24.1 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.24.1) + optional: true + + babel-preset-jest@29.6.3(@babel/core@7.25.2): dependencies: '@babel/core': 7.25.2 babel-plugin-jest-hoist: 29.6.3 babel-preset-current-node-syntax: 1.1.0(@babel/core@7.25.2) - dev: true - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@1.0.2: {} - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + base64-js@1.5.1: {} - /bcrypt-pbkdf@1.0.2: - resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 - dev: true - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - requiresBuild: true + binary-extensions@2.3.0: {} - /bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - dev: false - /blob-util@2.0.2: - resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} - dev: true + blob-util@2.0.2: {} - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true + bluebird@3.7.2: {} - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - dev: false + bn.js@4.12.0: {} - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - dev: false + bn.js@5.2.1: {} - /bowser@2.11.0: - resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} - dev: false + bowser@2.11.0: {} - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - dev: false - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + braces@3.0.2: dependencies: fill-range: 7.0.1 - /braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} + braces@3.0.3: dependencies: fill-range: 7.1.1 - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - dev: false + brorand@1.1.0: {} - /browserslist@4.23.0: - resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.23.0: dependencies: caniuse-lite: 1.0.30001599 electron-to-chromium: 1.4.710 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) - /browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + browserslist@4.23.3: dependencies: caniuse-lite: 1.0.30001651 electron-to-chromium: 1.5.10 node-releases: 2.0.18 update-browserslist-db: 1.1.0(browserslist@4.23.3) - /bs-logger@0.2.6: - resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} - engines: {node: '>= 6'} + bs-logger@0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 - dev: true - /bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + bser@2.1.1: dependencies: node-int64: 0.4.0 - /buffer-crc32@0.2.13: - resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} - dev: true + buffer-crc32@0.2.13: {} - /buffer-from@0.1.2: - resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} - dev: false + buffer-from@0.1.2: {} - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-from@1.1.2: {} - /buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - dev: false - /bufferutil@4.0.8: - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} - engines: {node: '>=6.14.2'} - requiresBuild: true + bufferutil@4.0.8: dependencies: node-gyp-build: 4.8.1 - dev: false - /busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} + busboy@1.6.0: dependencies: streamsearch: 1.1.0 - dev: false - /bytes@3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: false + bytes@3.0.0: {} - /cachedir@2.4.0: - resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} - engines: {node: '>=6'} - dev: true + cachedir@2.4.0: {} - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 @@ -6731,87 +11273,51 @@ packages: get-intrinsic: 1.2.4 set-function-length: 1.2.2 - /caller-callsite@2.0.0: - resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} - engines: {node: '>=4'} + caller-callsite@2.0.0: dependencies: callsites: 2.0.0 - dev: false - /caller-path@2.0.0: - resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} - engines: {node: '>=4'} + caller-path@2.0.0: dependencies: caller-callsite: 2.0.0 - dev: false - /callsites@2.0.0: - resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} - engines: {node: '>=4'} - dev: false + callsites@2.0.0: {} - /callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} + callsites@3.1.0: {} - /camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} + camelcase@5.3.1: {} - /camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} + camelcase@6.3.0: {} - /camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - dev: true + camelize@1.0.1: {} - /caniuse-lite@1.0.30001599: - resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} + caniuse-lite@1.0.30001599: {} - /caniuse-lite@1.0.30001651: - resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==} + caniuse-lite@1.0.30001651: {} - /caseless@0.12.0: - resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - dev: true + caseless@0.12.0: {} - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - /chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} + chalk@3.0.0: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true - /chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - /char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - dev: true + char-regex@1.0.2: {} - /check-more-types@2.24.0: - resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} - engines: {node: '>= 0.8.0'} - dev: true + check-more-types@2.24.0: {} - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} + chokidar@3.6.0: dependencies: anymatch: 3.1.3 braces: 3.0.2 @@ -6823,10 +11329,7 @@ packages: optionalDependencies: fsevents: 2.3.3 - /chrome-launcher@0.15.2: - resolution: {integrity: sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==} - engines: {node: '>=12.13.0'} - hasBin: true + chrome-launcher@0.15.2: dependencies: '@types/node': 20.12.13 escape-string-regexp: 4.0.0 @@ -6834,10 +11337,8 @@ packages: lighthouse-logger: 1.4.2 transitivePeerDependencies: - supports-color - dev: false - /chromium-edge-launcher@0.2.0: - resolution: {integrity: sha512-JfJjUnq25y9yg4FABRRVPmBGWPZZi+AQXT4mxupb67766/0UlhG8PAZCz6xzEMXTbW3CsSoE8PcCWA49n35mKg==} + chromium-edge-launcher@0.2.0: dependencies: '@types/node': 20.12.13 escape-string-regexp: 4.0.0 @@ -6847,195 +11348,111 @@ packages: rimraf: 3.0.2 transitivePeerDependencies: - supports-color - dev: false - /ci-info@2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - - /ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} + ci-info@2.0.0: {} - /citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + ci-info@3.9.0: {} + + citty@0.1.6: dependencies: consola: 3.2.3 - dev: false - /cjs-module-lexer@1.3.1: - resolution: {integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==} - dev: true + cjs-module-lexer@1.3.1: {} - /clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true + clean-stack@2.2.0: {} - /cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - /cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - dev: false + cli-spinners@2.9.2: {} - /cli-table3@0.6.5: - resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} - engines: {node: 10.* || >= 12.*} + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 - dev: true - /cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} + cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 string-width: 4.2.3 - dev: true - /client-only@0.0.1: - resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - dev: false + client-only@0.0.1: {} - /clipboardy@4.0.0: - resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} - engines: {node: '>=18'} + clipboardy@4.0.0: dependencies: execa: 8.0.1 is-wsl: 3.1.0 is64bit: 2.0.0 - dev: false - /cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - dev: false - /cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - /clone-deep@4.0.1: - resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} - engines: {node: '>=6'} + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - dev: false - /clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - dev: false + clone@1.0.4: {} - /clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - dev: false + clsx@1.2.1: {} - /clsx@2.1.0: - resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} - engines: {node: '>=6'} - dev: false + clsx@2.1.0: {} - /co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: true + co@4.6.0: {} - /collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - dev: true + collect-v8-coverage@1.0.2: {} - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + color-convert@1.9.3: dependencies: color-name: 1.1.3 - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} + color-convert@2.0.1: dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + color-name@1.1.3: {} - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-name@1.1.4: {} - /colorette@1.4.0: - resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} - dev: false + colorette@1.4.0: {} - /colorette@2.0.20: - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - dev: true + colorette@2.0.20: {} - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - dev: true - /command-exists@1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - dev: false + command-exists@1.2.9: {} - /commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: false + commander@2.20.3: {} - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: true + commander@4.1.1: {} - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: true + commander@6.2.1: {} - /commander@9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: false + commander@9.5.0: {} - /common-tags@1.8.2: - resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} - engines: {node: '>=4.0.0'} - dev: true + common-tags@1.8.2: {} - /commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - dev: false + commondir@1.0.1: {} - /compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} + compressible@2.0.18: dependencies: mime-db: 1.53.0 - dev: false - /compression@1.7.4: - resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} - engines: {node: '>= 0.8.0'} + compression@1.7.4: dependencies: accepts: 1.3.8 bytes: 3.0.0 @@ -7046,18 +11463,12 @@ packages: vary: 1.1.2 transitivePeerDependencies: - supports-color - dev: false - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + concat-map@0.0.1: {} - /confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - dev: false + confbox@0.1.7: {} - /connect@3.7.0: - resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} - engines: {node: '>= 0.10.0'} + connect@3.7.0: dependencies: debug: 2.6.9 finalhandler: 1.1.2 @@ -7065,102 +11476,62 @@ packages: utils-merge: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} - engines: {node: ^14.18.0 || >=16.10.0} - dev: false + consola@3.2.3: {} - /convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - dev: false + convert-source-map@1.9.0: {} - /convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + convert-source-map@2.0.0: {} - /cookie-es@1.2.2: - resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - dev: false + cookie-es@1.2.2: {} - /core-js-compat@3.36.1: - resolution: {integrity: sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==} + core-js-compat@3.36.1: dependencies: browserslist: 4.23.0 - dev: true - /core-js-compat@3.38.0: - resolution: {integrity: sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==} + core-js-compat@3.38.0: dependencies: browserslist: 4.23.3 - dev: false - /core-js@3.37.1: - resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} - requiresBuild: true - dev: false + core-js@3.37.1: {} - /core-util-is@1.0.2: - resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} - dev: true + core-util-is@1.0.2: {} - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false + core-util-is@1.0.3: {} - /cosmiconfig@5.2.1: - resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} - engines: {node: '>=4'} + cosmiconfig@5.2.1: dependencies: import-fresh: 2.0.0 is-directory: 0.3.1 js-yaml: 3.14.1 parse-json: 4.0.0 - dev: false - /cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - dev: false - /cosmiconfig@9.0.0(typescript@5.4.2): - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true + cosmiconfig@9.0.0(typescript@5.4.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 + optionalDependencies: typescript: 5.4.2 - dev: false - /crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: false + crc-32@1.2.2: {} - /create-jest@29.7.0(@types/node@20.12.13)(ts-node@10.9.2): - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true + create-jest@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -7168,103 +11539,58 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - dev: true + create-require@1.1.1: {} - /cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + cross-fetch@3.1.8: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - dev: false - /cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - dev: false - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} + cross-spawn@7.0.3: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - /crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true - dev: false + crossws@0.2.4: {} - /css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - dev: true + css-color-keywords@1.0.0: {} - /css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + css-to-react-native@3.2.0: dependencies: camelize: 1.0.1 css-color-keywords: 1.0.0 postcss-value-parser: 4.2.0 - dev: true - /css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - dev: false + css-what@6.1.0: {} - /css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - dev: true + css.escape@1.5.1: {} - /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - dev: false + cssesc@3.0.0: {} - /cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true + cssom@0.3.8: {} - /cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - dev: true + cssom@0.5.0: {} - /cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} + cssstyle@2.3.0: dependencies: cssom: 0.3.8 - dev: true - /cssstyle@4.0.1: - resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==} - engines: {node: '>=18'} + cssstyle@4.0.1: dependencies: rrweb-cssom: 0.6.0 - dev: true - /csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.1.3: {} - /cypress@13.13.3: - resolution: {integrity: sha512-hUxPrdbJXhUOTzuML+y9Av7CKoYznbD83pt8g3klgpioEha0emfx4WNIuVRx0C76r0xV2MIwAW9WYiXfVJYFQw==} - engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} - hasBin: true - requiresBuild: true + cypress@13.14.1: dependencies: '@cypress/request': 3.0.1 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) @@ -7308,145 +11634,79 @@ packages: tmp: 0.2.3 untildify: 4.0.0 yauzl: 2.10.0 - dev: true - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true + damerau-levenshtein@1.0.8: {} - /dashdash@1.14.1: - resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} - engines: {node: '>=0.10'} + dashdash@1.14.1: dependencies: assert-plus: 1.0.0 - dev: true - /data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} + data-urls@3.0.2: dependencies: abab: 2.0.6 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - dev: true - /data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} + data-urls@5.0.0: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - dev: true - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} + data-view-byte-length@1.0.1: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} + data-view-byte-offset@1.0.0: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-data-view: 1.0.1 - dev: true - /date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} + date-fns@2.30.0: dependencies: '@babel/runtime': 7.25.0 - dev: false - /dayjs@1.11.12: - resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + dayjs@1.11.12: {} - /debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@2.6.9: dependencies: ms: 2.0.0 - dev: false - /debug@3.2.7(supports-color@8.1.1): - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@3.2.7(supports-color@8.1.1): dependencies: ms: 2.1.3 + optionalDependencies: supports-color: 8.1.1 - dev: true - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.4: dependencies: ms: 2.1.2 - /debug@4.3.6(supports-color@8.1.1): - resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + debug@4.3.6(supports-color@8.1.1): dependencies: ms: 2.1.2 + optionalDependencies: supports-color: 8.1.1 - /decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - dev: false + decamelize@1.2.0: {} - /decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true + decimal.js@10.4.3: {} - /decode-uri-component@0.2.2: - resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} - engines: {node: '>=0.10'} - dev: false + decode-uri-component@0.2.2: {} - /dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true - dev: true + dedent@1.5.3(babel-plugin-macros@3.1.0): + optionalDependencies: + babel-plugin-macros: 3.1.0 - /deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} + deep-equal@2.2.3: dependencies: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 @@ -7466,199 +11726,113 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.2 which-typed-array: 1.1.15 - dev: true - /deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true + deep-is@0.1.4: {} - /deep-object-diff@1.1.9: - resolution: {integrity: sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==} - dev: false + deep-object-diff@1.1.9: {} - /deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} + deepmerge@4.3.1: {} - /defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defaults@1.0.4: dependencies: clone: 1.0.4 - dev: false - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} + define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 es-errors: 1.3.0 gopd: 1.0.1 - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: false + define-lazy-prop@2.0.0: {} - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - dev: true - /defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - dev: false + defu@6.1.4: {} - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: true + delayed-stream@1.0.0: {} - /denodeify@1.2.1: - resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} - dev: false + denodeify@1.2.1: {} - /depd@2.0.0: - resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} - engines: {node: '>= 0.8'} - dev: false + depd@2.0.0: {} - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: true + dequal@2.0.3: {} - /destr@2.0.3: - resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} - dev: false + destr@2.0.3: {} - /destroy@1.2.0: - resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - dev: false + destroy@1.2.0: {} - /detect-browser@5.3.0: - resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} - dev: false + detect-browser@5.3.0: {} - /detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - dev: false + detect-libc@1.0.3: {} - /detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - dev: true + detect-newline@3.1.0: {} - /detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - dev: false + detect-node-es@1.1.0: {} - /diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + diff-sequences@29.6.3: {} - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: true + diff@4.0.2: {} - /dijkstrajs@1.0.3: - resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} - dev: false + dijkstrajs@1.0.3: {} - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 - dev: true - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} + doctrine@2.1.0: dependencies: esutils: 2.0.3 - dev: true - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} + doctrine@3.0.0: dependencies: esutils: 2.0.3 - dev: true - /dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - dev: true + dom-accessibility-api@0.5.16: {} - /dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.24.8 csstype: 3.1.3 - dev: false - /domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead + domexception@4.0.0: dependencies: webidl-conversions: 7.0.0 - dev: true - /duplexer2@0.1.4: - resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} + duplexer2@0.1.4: dependencies: readable-stream: 2.3.8 - dev: false - /duplexify@4.1.3: - resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + duplexify@4.1.3: dependencies: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 3.6.2 stream-shift: 1.0.3 - dev: false - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false + eastasianwidth@0.2.0: {} - /ecc-jsbn@0.1.2: - resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + ecc-jsbn@0.1.2: dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 - dev: true - /eciesjs@0.3.19: - resolution: {integrity: sha512-b+PkRDZ3ym7HEcnbxc22CMVCpgsnr8+gGgST3U5PtgeX1luvINgfXW7efOyUtmn/jFtA/lg5ywBi/Uazf4oeaA==} + eciesjs@0.3.19: dependencies: '@types/secp256k1': 4.0.6 futoin-hkdf: 1.5.3 secp256k1: 5.0.0 - dev: false - /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: false + ee-first@1.1.1: {} - /electron-to-chromium@1.4.710: - resolution: {integrity: sha512-w+9yAVHoHhysCa+gln7AzbO9CdjFcL/wN/5dd+XW/Msl2d/4+WisEaCF1nty0xbAKaxdaJfgLB2296U7zZB7BA==} + electron-to-chromium@1.4.710: {} - /electron-to-chromium@1.5.10: - resolution: {integrity: sha512-C3RDERDjrNW262GCRvpoer3a0Ksd66CtgDLxMHhzShQ8fhL4kwnpVXsJPAKg9xJjIROXUbLBrvtOzVAjALMIWA==} + electron-to-chromium@1.5.10: {} - /elliptic@6.5.7: - resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + elliptic@6.5.7: dependencies: bn.js: 4.12.0 brorand: 1.1.0 @@ -7667,98 +11841,60 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - /emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - dev: true + emittery@0.13.1: {} - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@8.0.0: {} - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + emoji-regex@9.2.2: {} - /encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - dev: false + encode-utf8@1.0.3: {} - /encodeurl@1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: false + encodeurl@1.0.2: {} - /end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + end-of-stream@1.4.4: dependencies: once: 1.4.0 - /engine.io-client@6.5.4: - resolution: {integrity: sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==} + engine.io-client@6.5.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.6(supports-color@8.1.1) engine.io-parser: 5.2.3 - ws: 8.17.1 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) xmlhttprequest-ssl: 2.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false - /engine.io-parser@5.2.3: - resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==} - engines: {node: '>=10.0.0'} - dev: false + engine.io-parser@5.2.3: {} - /enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - dev: true - /entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - dev: true + entities@4.5.0: {} - /env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: false + env-paths@2.2.1: {} - /envinfo@7.13.0: - resolution: {integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==} - engines: {node: '>=4'} - hasBin: true - dev: false + envinfo@7.13.0: {} - /error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 - /error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 - dev: false - /errorhandler@1.5.1: - resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} - engines: {node: '>= 0.8'} + errorhandler@1.5.1: dependencies: accepts: 1.3.8 escape-html: 1.0.3 - dev: false - /es-abstract@1.22.5: - resolution: {integrity: sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==} - engines: {node: '>= 0.4'} + es-abstract@1.22.5: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -7801,11 +11937,8 @@ packages: typed-array-length: 1.0.5 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-abstract@1.23.2: - resolution: {integrity: sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==} - engines: {node: '>= 0.4'} + es-abstract@1.23.2: dependencies: array-buffer-byte-length: 1.0.1 arraybuffer.prototype.slice: 1.0.3 @@ -7853,20 +11986,14 @@ packages: typed-array-length: 1.0.5 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 - dev: true - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} + es-define-property@1.0.0: dependencies: get-intrinsic: 1.2.4 - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} + es-errors@1.3.0: {} - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + es-get-iterator@1.1.3: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 @@ -7877,11 +12004,8 @@ packages: is-string: 1.0.7 isarray: 2.0.5 stop-iteration-iterator: 1.0.0 - dev: true - /es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} - engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.18: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -7897,130 +12021,69 @@ packages: internal-slot: 1.0.7 iterator.prototype: 1.1.2 safe-array-concat: 1.1.2 - dev: true - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 - dev: true - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 has-tostringtag: 1.0.2 hasown: 2.0.2 - dev: true - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.2 - dev: true - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} + es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - dev: true - /escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} - engines: {node: '>=6'} + escalade@3.1.2: {} - /escape-html@1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false + escape-html@1.0.3: {} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} + escape-string-regexp@1.0.5: {} - /escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} + escape-string-regexp@2.0.0: {} - /escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} + escape-string-regexp@4.0.0: {} - /escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true + escodegen@2.1.0: dependencies: esprima: 4.0.1 estraverse: 5.3.0 esutils: 2.0.3 optionalDependencies: source-map: 0.6.1 - dev: true - /eslint-config-prettier@9.0.0(eslint@8.45.0): - resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' + eslint-config-prettier@9.0.0(eslint@8.45.0): dependencies: eslint: 8.45.0 - dev: true - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7(supports-color@8.1.1) is-core-module: 2.13.1 resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.0.0)(eslint-import-resolver-node@0.3.9)(eslint@8.45.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + eslint-module-utils@2.8.1(@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint@8.45.0): dependencies: - '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.4.2) debug: 3.2.7(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.4.2) eslint: 8.45.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.0.0)(eslint@8.45.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2))(eslint@8.45.0): dependencies: - '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.4.2) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.4 array.prototype.flat: 1.3.2 @@ -8029,7 +12092,7 @@ packages: doctrine: 2.1.0 eslint: 8.45.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.0.0)(eslint-import-resolver-node@0.3.9)(eslint@8.45.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.4.2))(eslint-import-resolver-node@0.3.9)(eslint@8.45.0) has: 1.0.4 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -8039,17 +12102,14 @@ packages: object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.4.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.45.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-jsx-a11y@6.7.1(eslint@8.45.0): dependencies: '@babel/runtime': 7.24.1 aria-query: 5.3.0 @@ -8068,51 +12128,25 @@ packages: object.entries: 1.1.8 object.fromentries: 2.0.8 semver: 6.3.1 - dev: true - /eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0)(eslint@8.45.0)(prettier@3.0.3): - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true + eslint-plugin-prettier@5.0.0(eslint-config-prettier@9.0.0(eslint@8.45.0))(eslint@8.45.0)(prettier@3.0.3): dependencies: eslint: 8.45.0 - eslint-config-prettier: 9.0.0(eslint@8.45.0) prettier: 3.0.3 prettier-linter-helpers: 1.0.0 synckit: 0.8.8 - dev: true + optionalDependencies: + eslint-config-prettier: 9.0.0(eslint@8.45.0) - /eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + eslint-plugin-react-hooks@4.6.0(eslint@8.45.0): dependencies: eslint: 8.45.0 - dev: true - /eslint-plugin-react-refresh@0.4.3(eslint@8.45.0): - resolution: {integrity: sha512-Hh0wv8bUNY877+sI0BlCUlsS0TYYQqvzEwJsJJPM2WF4RnTStSnSR3zdJYa2nPOJgg3UghXi54lVyMSmpCalzA==} - peerDependencies: - eslint: '>=7' + eslint-plugin-react-refresh@0.4.3(eslint@8.45.0): dependencies: eslint: 8.45.0 - dev: true - /eslint-plugin-react@7.33.2(eslint@8.45.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + eslint-plugin-react@7.33.2(eslint@8.45.0): dependencies: array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -8131,33 +12165,20 @@ packages: resolve: 2.0.0-next.5 semver: 6.3.1 string.prototype.matchall: 4.0.10 - dev: true - /eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} + eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - dev: true - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true - /eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + eslint-visitor-keys@3.4.3: {} - /eslint@8.45.0: - resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true + eslint@8.45.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@eslint-community/regexpp': 4.10.0 @@ -8198,58 +12219,32 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + espree@9.6.1: dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 - dev: true - /esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true + esprima@4.0.1: {} - /esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} + esquery@1.5.0: dependencies: estraverse: 5.3.0 - dev: true - /esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 - dev: true - /estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - dev: true + estraverse@4.3.0: {} - /estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - dev: true + estraverse@5.3.0: {} - /esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} + esutils@2.0.3: {} - /etag@1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: false + etag@1.8.1: {} - /eth-block-tracker@7.1.0: - resolution: {integrity: sha512-8YdplnuE1IK4xfqpf4iU7oBxnOYAc35934o083G8ao+8WM8QQtt/mVlAY6yIAdY1eMeLqg4Z//PZjJGmWGPMRg==} - engines: {node: '>=14.0.0'} + eth-block-tracker@7.1.0: dependencies: '@metamask/eth-json-rpc-provider': 1.0.1 '@metamask/safe-event-emitter': 3.1.1 @@ -8258,66 +12253,42 @@ packages: pify: 3.0.0 transitivePeerDependencies: - supports-color - dev: false - /eth-json-rpc-filters@6.0.1: - resolution: {integrity: sha512-ITJTvqoCw6OVMLs7pI8f4gG92n/St6x80ACtHodeS+IXmO0w+t1T5OOzfSt7KLSMLRkVUoexV7tztLgDxg+iig==} - engines: {node: '>=14.0.0'} + eth-json-rpc-filters@6.0.1: dependencies: '@metamask/safe-event-emitter': 3.1.1 async-mutex: 0.2.6 eth-query: 2.1.2 json-rpc-engine: 6.1.0 pify: 5.0.0 - dev: false - /eth-query@2.1.2: - resolution: {integrity: sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==} + eth-query@2.1.2: dependencies: json-rpc-random-id: 1.0.1 xtend: 4.0.2 - dev: false - /eth-rpc-errors@4.0.3: - resolution: {integrity: sha512-Z3ymjopaoft7JDoxZcEb3pwdGh7yiYMhOwm2doUt6ASXlMavpNlK6Cre0+IMl2VSGyEU9rkiperQhp5iRxn5Pg==} + eth-rpc-errors@4.0.3: dependencies: fast-safe-stringify: 2.1.1 - dev: false - /ethereum-cryptography@2.2.1: - resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + ethereum-cryptography@2.2.1: dependencies: '@noble/curves': 1.4.2 '@noble/hashes': 1.4.0 '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 - dev: false - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false + event-target-shim@5.0.1: {} - /eventemitter2@6.4.7: - resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} - dev: true + eventemitter2@6.4.7: {} - /eventemitter2@6.4.9: - resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} - dev: false + eventemitter2@6.4.9: {} - /eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - dev: false + eventemitter3@5.0.1: {} - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false + events@3.3.0: {} - /execa@4.1.0: - resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} - engines: {node: '>=10'} + execa@4.1.0: dependencies: cross-spawn: 7.0.3 get-stream: 5.2.0 @@ -8328,11 +12299,8 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 - dev: true - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} + execa@5.1.1: dependencies: cross-spawn: 7.0.3 get-stream: 6.0.1 @@ -8344,9 +12312,7 @@ packages: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} + execa@8.0.1: dependencies: cross-spawn: 7.0.3 get-stream: 8.0.1 @@ -8357,51 +12323,31 @@ packages: onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 - dev: false - /executable@4.1.1: - resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} - engines: {node: '>=4'} + executable@4.1.1: dependencies: pify: 2.3.0 - dev: true - /exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - dev: true + exit@0.1.2: {} - /expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 - dev: true - /exponential-backoff@3.1.1: - resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} - dev: false + exponential-backoff@3.1.1: {} - /extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true + extend@3.0.2: {} - /extension-port-stream@3.0.0: - resolution: {integrity: sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw==} - engines: {node: '>=12.0.0'} + extension-port-stream@3.0.0: dependencies: readable-stream: 3.6.2 webextension-polyfill: 0.10.0 - dev: false - /extract-zip@2.0.1(supports-color@8.1.1): - resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} - engines: {node: '>= 10.17.0'} - hasBin: true + extract-zip@2.0.1(supports-color@8.1.1): dependencies: debug: 4.3.6(supports-color@8.1.1) get-stream: 5.2.0 @@ -8410,23 +12356,14 @@ packages: '@types/yauzl': 2.10.3 transitivePeerDependencies: - supports-color - dev: true - /extsprintf@1.3.0: - resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} - engines: {'0': node >=0.6.0} - dev: true + extsprintf@1.3.0: {} - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-deep-equal@3.1.3: {} - /fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - dev: true + fast-diff@1.3.0: {} - /fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} - engines: {node: '>=8.6.0'} + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -8434,81 +12371,49 @@ packages: merge2: 1.4.1 micromatch: 4.0.5 - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + fast-json-stable-stringify@2.1.0: {} - /fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + fast-levenshtein@2.0.6: {} - /fast-redact@3.5.0: - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} - engines: {node: '>=6'} - dev: false + fast-redact@3.5.0: {} - /fast-safe-stringify@2.1.1: - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} - dev: false + fast-safe-stringify@2.1.1: {} - /fast-xml-parser@4.4.1: - resolution: {integrity: sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==} - hasBin: true + fast-xml-parser@4.4.1: dependencies: strnum: 1.0.5 - dev: false - /fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + fastq@1.17.1: dependencies: reusify: 1.0.4 - /fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + fb-watchman@2.0.2: dependencies: bser: 2.1.1 - /fd-slicer@1.1.0: - resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fd-slicer@1.1.0: dependencies: pend: 1.2.0 - dev: true - /figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 - dev: true - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - dev: true - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - requiresBuild: true + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - /fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - /filter-obj@1.1.0: - resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} - engines: {node: '>=0.10.0'} - dev: false + filter-obj@1.1.0: {} - /finalhandler@1.1.2: - resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} - engines: {node: '>= 0.8'} + finalhandler@1.1.2: dependencies: debug: 2.6.9 encodeurl: 1.0.2 @@ -8519,170 +12424,104 @@ packages: unpipe: 1.0.0 transitivePeerDependencies: - supports-color - dev: false - /find-cache-dir@2.1.0: - resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} - engines: {node: '>=6'} + find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - dev: false - /find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false + find-root@1.1.0: {} - /find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} + find-up@3.0.0: dependencies: locate-path: 3.0.0 - dev: false - /find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - /find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} + find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + flat-cache@3.2.0: dependencies: flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 - dev: true - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true + flatted@3.3.1: {} - /flow-enums-runtime@0.0.6: - resolution: {integrity: sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==} - dev: false + flow-enums-runtime@0.0.6: {} - /flow-parser@0.243.0: - resolution: {integrity: sha512-HCDBfH+kZcY5etWYeAqatjW78gkIryzb9XixRsA8lGI1uyYc7aCpElkkO4H+KIpoyQMiY0VAZPI4cyac3wQe8w==} - engines: {node: '>=0.4.0'} - dev: false + flow-parser@0.243.0: {} - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + for-each@0.3.3: dependencies: is-callable: 1.2.7 - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} + foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - dev: false - /forever-agent@0.6.1: - resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - dev: true + forever-agent@0.6.1: {} - /form-data@2.3.3: - resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} - engines: {node: '>= 0.12'} + form-data@2.3.3: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true - /fresh@0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: false + fresh@0.5.2: {} - /fs-extra@8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} + fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - dev: false - /fs-extra@9.1.0: - resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} - engines: {node: '>=10'} + fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - dev: true - /fs-readdir-recursive@1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - dev: true + fs-readdir-recursive@1.1.0: {} - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fs.realpath@1.0.0: {} - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true + fsevents@2.3.3: optional: true - /function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-bind@1.1.2: {} - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 functions-have-names: 1.2.3 - dev: true - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true + functions-have-names@1.2.3: {} - /futoin-hkdf@1.5.3: - resolution: {integrity: sha512-SewY5KdMpaoCeh7jachEWFsh1nNlaDjNHZXWqL5IGwtpEYHTgkr2+AMCgNwKWkcc0wpSYrZfR7he4WdmHFtDxQ==} - engines: {node: '>=8'} - dev: false + futoin-hkdf@1.5.3: {} - /gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} + gensync@1.0.0-beta.2: {} - /get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} + get-caller-file@2.0.5: {} - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 @@ -8690,84 +12529,51 @@ packages: has-symbols: 1.0.3 hasown: 2.0.2 - /get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - dev: false + get-nonce@1.0.1: {} - /get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - dev: true + get-package-type@0.1.0: {} - /get-port-please@3.1.2: - resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} - dev: false + get-port-please@3.1.2: {} - /get-stream@5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} + get-stream@5.2.0: dependencies: pump: 3.0.0 - dev: true - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} + get-stream@6.0.1: {} - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: false + get-stream@8.0.1: {} - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - dev: true - /getos@3.2.1: - resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + getos@3.2.1: dependencies: - async: 3.2.5 - dev: true + async: 3.2.6 - /getpass@0.1.7: - resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + getpass@0.1.7: dependencies: assert-plus: 1.0.0 - dev: true - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - /glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} + glob-parent@6.0.2: dependencies: is-glob: 4.0.3 - dev: true - /glob@10.3.10: - resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true + glob@10.3.10: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 minimatch: 9.0.3 minipass: 7.0.4 path-scurry: 1.10.1 - dev: false - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + glob@7.2.3: dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -8776,34 +12582,21 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /global-dirs@3.0.1: - resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} - engines: {node: '>=10'} + global-dirs@3.0.1: dependencies: ini: 2.0.0 - dev: true - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + globals@11.12.0: {} - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} + globals@13.24.0: dependencies: type-fest: 0.20.2 - dev: true - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} + globalthis@1.0.3: dependencies: define-properties: 1.2.1 - dev: true - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 @@ -8811,26 +12604,18 @@ packages: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 - dev: true - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.0.1: dependencies: get-intrinsic: 1.2.4 - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graceful-fs@4.2.11: {} - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true + grapheme-splitter@1.0.4: {} - /graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true + graphemer@1.4.0: {} - /h3@1.12.0: - resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} + h3@1.12.0: dependencies: cookie-es: 1.2.2 crossws: 0.2.4 @@ -8844,670 +12629,387 @@ packages: unenv: 1.10.0 transitivePeerDependencies: - uWebSockets.js - dev: false - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + has-bigints@1.0.2: {} - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + has-flag@3.0.0: {} - /has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} + has-flag@4.0.0: {} - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} + has-proto@1.0.3: {} - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} + has-symbols@1.0.3: {} - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 - /has@1.0.4: - resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} - engines: {node: '>= 0.4.0'} - dev: true + has@1.0.4: {} - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + hash.js@1.1.7: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: false - /hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} + hasown@2.0.2: dependencies: function-bind: 1.1.2 - /hermes-estree@0.22.0: - resolution: {integrity: sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw==} - dev: false + hermes-estree@0.22.0: {} - /hermes-estree@0.23.0: - resolution: {integrity: sha512-Rkp0PNLGpORw4ktsttkVbpYJbrYKS3hAnkxu8D9nvQi6LvSbuPa+tYw/t2u3Gjc35lYd/k95YkjqyTcN4zspag==} - dev: false + hermes-estree@0.23.0: {} - /hermes-parser@0.22.0: - resolution: {integrity: sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA==} + hermes-parser@0.22.0: dependencies: hermes-estree: 0.22.0 - dev: false - /hermes-parser@0.23.0: - resolution: {integrity: sha512-xLwM4ylfHGwrm+2qXfO1JT/fnqEDGSnpS/9hQ4VLtqTexSviu2ZpBgz07U8jVtndq67qdb/ps0qvaWDZ3fkTyg==} + hermes-parser@0.23.0: dependencies: hermes-estree: 0.23.0 - dev: false - /hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - dev: false + hey-listen@1.0.8: {} - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + hmac-drbg@1.0.1: dependencies: hash.js: 1.1.7 minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 - dev: false - /hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + hoist-non-react-statics@3.3.2: dependencies: react-is: 16.13.1 - dev: false - /html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 - dev: true - /html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} + html-encoding-sniffer@4.0.0: dependencies: whatwg-encoding: 3.1.1 - dev: true - /html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: true + html-escaper@2.0.2: {} - /html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} + html-parse-stringify@3.0.1: dependencies: void-elements: 3.1.0 - dev: false - /html-tokenize@2.0.1: - resolution: {integrity: sha512-QY6S+hZ0f5m1WT8WffYN+Hg+xm/w5I8XeUcAq/ZYP5wVC8xbKi4Whhru3FtrAebD5EhBW8rmFzkDI6eCAuFe2w==} - hasBin: true + html-tokenize@2.0.1: dependencies: buffer-from: 0.1.2 inherits: 2.0.4 minimist: 1.2.8 readable-stream: 1.0.34 through2: 0.4.2 - dev: false - /http-errors@2.0.0: - resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} - engines: {node: '>= 0.8'} + http-errors@2.0.0: dependencies: depd: 2.0.0 inherits: 2.0.4 setprototypeof: 1.2.0 statuses: 2.0.1 toidentifier: 1.0.1 - dev: false - /http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /http-shutdown@1.2.2: - resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - dev: false + http-shutdown@1.2.2: {} - /http-signature@1.3.6: - resolution: {integrity: sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==} - engines: {node: '>=0.10'} + http-signature@1.3.6: dependencies: assert-plus: 1.0.0 jsprim: 2.0.2 sshpk: 1.18.0 - dev: true - /https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} - engines: {node: '>= 14'} + https-proxy-agent@7.0.4: dependencies: agent-base: 7.1.0 debug: 4.3.4 transitivePeerDependencies: - supports-color - dev: true - /human-signals@1.1.1: - resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} - engines: {node: '>=8.12.0'} - dev: true + human-signals@1.1.1: {} - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} + human-signals@2.1.0: {} - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: false + human-signals@5.0.0: {} - /husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} - hasBin: true - dev: true + husky@8.0.3: {} - /i18next-browser-languagedetector@7.1.0: - resolution: {integrity: sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA==} + i18next-browser-languagedetector@7.1.0: dependencies: '@babel/runtime': 7.25.0 - dev: false - /i18next-fs-backend@2.3.1: - resolution: {integrity: sha512-tvfXskmG/9o+TJ5Fxu54sSO5OkY6d+uMn+K6JiUGLJrwxAVfer+8V3nU8jq3ts9Pe5lXJv4b1N7foIjJ8Iy2Gg==} - dev: false + i18next-fs-backend@2.3.1: {} - /i18next@23.11.5: - resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} + i18next@23.11.5: dependencies: '@babel/runtime': 7.25.0 - dev: false - /i18next@23.7.6: - resolution: {integrity: sha512-O66BhXBw0fH4bEJMA0/klQKPEbcwAp5wjXEL803pdAynNbg2f4qhLIYlNHJyE7icrL6XmSZKPYaaXwy11kJ6YQ==} + i18next@23.7.6: dependencies: '@babel/runtime': 7.24.8 - dev: false - /iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - dev: true - /idb-keyval@6.2.1: - resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} - dev: false + idb-keyval@6.2.1: {} - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + ieee754@1.2.1: {} - /ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - dev: true + ignore@5.3.1: {} - /image-size@1.1.1: - resolution: {integrity: sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==} - engines: {node: '>=16.x'} - hasBin: true + image-size@1.1.1: dependencies: queue: 6.0.2 - dev: false - /import-fresh@2.0.0: - resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} - engines: {node: '>=4'} + import-fresh@2.0.0: dependencies: caller-path: 2.0.0 resolve-from: 3.0.0 - dev: false - /import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} + import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-local@3.2.0: - resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} - engines: {node: '>=8'} - hasBin: true + import-local@3.2.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 - dev: true - /imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} + imurmurhash@0.1.4: {} - /indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true + indent-string@4.0.0: {} - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + inflight@1.0.6: dependencies: once: 1.4.0 wrappy: 1.0.2 - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inherits@2.0.4: {} - /ini@2.0.0: - resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} - engines: {node: '>=10'} - dev: true + ini@2.0.0: {} - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} + internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 side-channel: 1.0.6 - dev: true - /invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + invariant@2.2.4: dependencies: loose-envify: 1.4.0 - dev: false - /iron-webcrypto@1.2.1: - resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} - dev: false + iron-webcrypto@1.2.1: {} - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} + is-arguments@1.1.1: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.2.1: {} - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - requiresBuild: true + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} + is-boolean-object@1.1.2: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} + is-callable@1.2.7: {} - /is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true + is-ci@3.0.1: dependencies: ci-info: 3.9.0 - dev: true - /is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + is-core-module@2.13.1: dependencies: hasown: 2.0.2 - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} + is-data-view@1.0.1: dependencies: is-typed-array: 1.1.13 - dev: true - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-directory@0.3.1: - resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} - engines: {node: '>=0.10.0'} - dev: false + is-directory@0.3.1: {} - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: false + is-docker@2.2.1: {} - /is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - hasBin: true - dev: false + is-docker@3.0.0: {} - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} + is-extglob@2.1.1: {} - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-finalizationregistry@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - dev: false + is-fullwidth-code-point@2.0.0: {} - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} + is-fullwidth-code-point@3.0.0: {} - /is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - dev: true + is-generator-fn@2.1.0: {} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.2 - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - /is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true + is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 - dev: false - /is-installed-globally@0.4.0: - resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} - engines: {node: '>=10'} + is-installed-globally@0.4.0: dependencies: global-dirs: 3.0.1 is-path-inside: 3.0.3 - dev: true - /is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - dev: false + is-interactive@1.0.0: {} - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: true + is-map@2.0.3: {} - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true + is-negative-zero@2.0.3: {} - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} + is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - requiresBuild: true + is-number@7.0.0: {} - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true + is-path-inside@3.0.3: {} - /is-plain-object@2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} + is-plain-object@2.0.4: dependencies: isobject: 3.0.1 - dev: false - /is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - dev: true + is-potential-custom-element-name@1.0.1: {} - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} + is-regex@1.1.4: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 - dev: true - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: true + is-set@2.0.3: {} - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} + is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 - dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} + is-stream@2.0.1: {} - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false + is-stream@3.0.0: {} - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 - dev: true - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} + is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - dev: true - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} + is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 - /is-typedarray@1.0.0: - resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - dev: true + is-typedarray@1.0.0: {} - /is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + is-unicode-supported@0.1.0: {} - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: true + is-weakmap@2.0.2: {} - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + is-weakref@1.0.2: dependencies: call-bind: 1.0.7 - dev: true - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} + is-weakset@2.0.3: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 - dev: true - /is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - dev: false + is-wsl@1.1.0: {} - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 - dev: false - /is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} + is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 - dev: false - /is64bit@2.0.0: - resolution: {integrity: sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==} - engines: {node: '>=18'} + is64bit@2.0.0: dependencies: system-architecture: 0.1.0 - dev: false - /isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: false + isarray@0.0.1: {} - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false + isarray@1.0.0: {} - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + isarray@2.0.5: {} - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isexe@2.0.0: {} - /isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - dev: false + isobject@3.0.1: {} - /isomorphic-unfetch@3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + isomorphic-unfetch@3.1.0: dependencies: node-fetch: 2.7.0 unfetch: 4.2.0 transitivePeerDependencies: - encoding - dev: false - /isows@1.0.4(ws@8.17.1): - resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} - peerDependencies: - ws: '*' + isows@1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: - ws: 8.17.1 - dev: false + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) - /isstream@0.1.2: - resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - dev: true + isstream@0.1.2: {} - /istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - dev: true + istanbul-lib-coverage@3.2.2: {} - /istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} + istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.24.1 '@babel/parser': 7.24.1 @@ -9516,11 +13018,8 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} + istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.3 @@ -9529,67 +13028,47 @@ packages: semver: 7.6.3 transitivePeerDependencies: - supports-color - dev: true - /istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - dev: true - /istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} + istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.6(supports-color@8.1.1) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - dev: true - /istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - dev: true - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.6 set-function-name: 2.0.2 - dev: true - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} - engines: {node: '>=14'} + jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - dev: false - /jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 - dev: true - /jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-circus@29.7.0(babel-plugin-macros@3.1.0): dependencies: '@jest/environment': 29.7.0 '@jest/expect': 29.7.0 @@ -9598,7 +13077,7 @@ packages: '@types/node': 20.12.13 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.3 + dedent: 1.5.3(babel-plugin-macros@3.1.0) is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -9614,26 +13093,17 @@ packages: transitivePeerDependencies: - babel-plugin-macros - supports-color - dev: true - /jest-cli@29.7.0(@types/node@20.12.13)(ts-node@10.9.2): - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest-cli@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) + create-jest: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -9642,31 +13112,19 @@ packages: - babel-plugin-macros - supports-color - ts-node - dev: true - /jest-config@29.7.0(@types/node@20.12.13)(ts-node@10.9.2): - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true + jest-config@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)): dependencies: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.12.13 babel-jest: 29.7.0(@babel/core@7.25.2) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 glob: 7.2.3 graceful-fs: 4.2.11 - jest-circus: 29.7.0 + jest-circus: 29.7.0(babel-plugin-macros@3.1.0) jest-environment-node: 29.7.0 jest-get-type: 29.6.3 jest-regex-util: 29.6.3 @@ -9679,48 +13137,33 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 20.12.13 ts-node: 10.9.2(@types/node@20.12.13)(typescript@5.4.2) transitivePeerDependencies: - babel-plugin-macros - supports-color - dev: true - /jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-diff@29.7.0: dependencies: chalk: 4.1.2 diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 - dev: true - /jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 jest-get-type: 29.6.3 jest-util: 29.7.0 - pretty-format: 29.7.0 - dev: true - - /jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true + pretty-format: 29.7.0 + + jest-environment-jsdom@29.7.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -9729,16 +13172,13 @@ packages: '@types/node': 20.12.13 jest-mock: 29.7.0 jest-util: 29.7.0 - jsdom: 20.0.3 + jsdom: 20.0.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: true - /jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -9747,13 +13187,9 @@ packages: jest-mock: 29.7.0 jest-util: 29.7.0 - /jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-get-type@29.6.3: {} - /jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 @@ -9768,29 +13204,20 @@ packages: walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 - dev: true - /jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 - dev: true - /jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.24.1 '@jest/types': 29.6.3 @@ -9802,44 +13229,26 @@ packages: slash: 3.0.0 stack-utils: 2.0.6 - /jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.13 jest-util: 29.7.0 - /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - dependencies: + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + optionalDependencies: jest-resolve: 29.7.0 - dev: true - /jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true + jest-regex-util@29.6.3: {} - /jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 jest-snapshot: 29.7.0 transitivePeerDependencies: - supports-color - dev: true - /jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve@29.7.0: dependencies: chalk: 4.1.2 graceful-fs: 4.2.11 @@ -9850,11 +13259,8 @@ packages: resolve: 1.22.8 resolve.exports: 2.0.2 slash: 3.0.0 - dev: true - /jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runner@29.7.0: dependencies: '@jest/console': 29.7.0 '@jest/environment': 29.7.0 @@ -9879,11 +13285,8 @@ packages: source-map-support: 0.5.13 transitivePeerDependencies: - supports-color - dev: true - /jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 @@ -9909,11 +13312,8 @@ packages: strip-bom: 4.0.0 transitivePeerDependencies: - supports-color - dev: true - /jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-snapshot@29.7.0: dependencies: '@babel/core': 7.24.1 '@babel/generator': 7.24.1 @@ -9937,11 +13337,8 @@ packages: semver: 7.6.0 transitivePeerDependencies: - supports-color - dev: true - /jest-util@29.7.0: - resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 20.12.13 @@ -9950,9 +13347,7 @@ packages: graceful-fs: 4.2.11 picomatch: 2.3.1 - /jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 camelcase: 6.3.0 @@ -9961,9 +13356,7 @@ packages: leven: 3.1.0 pretty-format: 29.7.0 - /jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-watcher@29.7.0: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 @@ -9973,86 +13366,54 @@ packages: emittery: 0.13.1 jest-util: 29.7.0 string-length: 4.0.2 - dev: true - /jest-worker@29.7.0: - resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-worker@29.7.0: dependencies: '@types/node': 20.12.13 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - /jest@29.7.0(@types/node@20.12.13)(ts-node@10.9.2): - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + jest@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) + jest-cli: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros - supports-color - ts-node - dev: true - /jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} - hasBin: true - dev: false + jiti@1.21.6: {} - /joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 '@sideway/address': 4.1.5 '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - dev: false - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-tokens@4.0.0: {} - /js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - /js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true + js-yaml@4.1.0: dependencies: argparse: 2.0.1 - /jsbn@0.1.1: - resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} - dev: true + jsbn@0.1.1: {} - /jsc-android@250231.0.0: - resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} - dev: false + jsc-android@250231.0.0: {} - /jsc-safe-url@0.2.4: - resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} - dev: false + jsc-safe-url@0.2.4: {} - /jscodeshift@0.14.0(@babel/preset-env@7.25.3): - resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} - hasBin: true - peerDependencies: - '@babel/preset-env': ^7.1.6 + jscodeshift@0.14.0(@babel/preset-env@7.25.3(@babel/core@7.24.1)): dependencies: '@babel/core': 7.25.2 '@babel/parser': 7.25.3 @@ -10076,16 +13437,8 @@ packages: write-file-atomic: 2.4.3 transitivePeerDependencies: - supports-color - dev: false - /jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true + jsdom@20.0.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: abab: 2.0.6 acorn: 8.11.3 @@ -10111,22 +13464,14 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.18.0 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: true - /jsdom@24.0.0: - resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true + jsdom@24.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: cssstyle: 4.0.1 data-urls: 5.0.0 @@ -10147,179 +13492,109 @@ packages: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.16.0 + ws: 8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: true - /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} - hasBin: true + jsesc@0.5.0: {} - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true + jsesc@2.5.2: {} - /json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + json-buffer@3.0.1: {} - /json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - dev: false + json-parse-better-errors@1.0.2: {} - /json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-parse-even-better-errors@2.3.1: {} - /json-rpc-engine@6.1.0: - resolution: {integrity: sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ==} - engines: {node: '>=10.0.0'} + json-rpc-engine@6.1.0: dependencies: '@metamask/safe-event-emitter': 2.0.0 eth-rpc-errors: 4.0.3 - dev: false - /json-rpc-random-id@1.0.1: - resolution: {integrity: sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==} - dev: false + json-rpc-random-id@1.0.1: {} - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + json-schema-traverse@0.4.1: {} - /json-schema@0.4.0: - resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} - dev: true + json-schema@0.4.0: {} - /json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true + json-stable-stringify-without-jsonify@1.0.1: {} - /json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - dev: true + json-stringify-safe@5.0.1: {} - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true + json5@1.0.2: dependencies: minimist: 1.2.8 - dev: true - /json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + json5@2.2.3: {} - /jsonfile@4.0.0: - resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - dev: false - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.1.0: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - dev: true - /jsprim@2.0.2: - resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} - engines: {'0': node >=0.6.0} + jsprim@2.0.2: dependencies: assert-plus: 1.0.0 extsprintf: 1.3.0 json-schema: 0.4.0 verror: 1.10.0 - dev: true - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.7 array.prototype.flat: 1.3.2 object.assign: 4.1.5 object.values: 1.2.0 - dev: true - /keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - requiresBuild: true + keccak@3.0.4: dependencies: node-addon-api: 2.0.2 node-gyp-build: 4.8.1 readable-stream: 3.6.2 - dev: false - /keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@4.5.4: dependencies: json-buffer: 3.0.1 - dev: true - /keyvaluestorage-interface@1.0.0: - resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} - dev: false + keyvaluestorage-interface@1.0.0: {} - /kind-of@6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - dev: false + kind-of@6.0.3: {} - /kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} + kleur@3.0.3: {} - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: true + language-subtag-registry@0.3.22: {} - /language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + language-tags@1.0.5: dependencies: language-subtag-registry: 0.3.22 - dev: true - /lazy-ass@1.6.0: - resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} - engines: {node: '> 0.8'} - dev: true + lazy-ass@1.6.0: {} - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} + leven@3.1.0: {} - /levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /lighthouse-logger@1.4.2: - resolution: {integrity: sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==} + lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 marky: 1.2.5 transitivePeerDependencies: - supports-color - dev: false - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lines-and-columns@1.2.4: {} - /listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} - hasBin: true + listhen@1.7.2: dependencies: '@parcel/watcher': 2.4.1 '@parcel/watcher-wasm': 2.4.1 @@ -10341,202 +13616,127 @@ packages: uqr: 0.1.2 transitivePeerDependencies: - uWebSockets.js - dev: false - /listr2@3.14.0(enquirer@2.4.1): - resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} - engines: {node: '>=10.0.0'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + listr2@3.14.0(enquirer@2.4.1): dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 - enquirer: 2.4.1 log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.4.1 rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 - dev: true + optionalDependencies: + enquirer: 2.4.1 - /lit-element@3.3.3: - resolution: {integrity: sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==} + lit-element@3.3.3: dependencies: '@lit-labs/ssr-dom-shim': 1.2.1 '@lit/reactive-element': 1.6.3 lit-html: 2.8.0 - dev: false - /lit-html@2.8.0: - resolution: {integrity: sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==} + lit-html@2.8.0: dependencies: '@types/trusted-types': 2.0.7 - dev: false - /lit@2.8.0: - resolution: {integrity: sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==} + lit@2.8.0: dependencies: '@lit/reactive-element': 1.6.3 lit-element: 3.3.3 lit-html: 2.8.0 - dev: false - /locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} + locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - dev: false - /locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} + locate-path@5.0.0: dependencies: p-locate: 4.1.0 - /locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} + locate-path@6.0.0: dependencies: p-locate: 5.0.0 - /lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.debounce@4.0.8: {} - /lodash.isequal@4.5.0: - resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - dev: false + lodash.isequal@4.5.0: {} - /lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - dev: true + lodash.memoize@4.1.2: {} - /lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true + lodash.merge@4.6.2: {} - /lodash.once@4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: true + lodash.once@4.1.1: {} - /lodash.throttle@4.1.1: - resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} - dev: false + lodash.throttle@4.1.1: {} - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true + lodash@4.17.21: {} - /log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + 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 - dev: true - /logkitty@0.7.1: - resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} - hasBin: true + logkitty@0.7.1: dependencies: ansi-fragments: 0.2.1 dayjs: 1.11.12 yargs: 15.4.1 - dev: false - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} - engines: {node: 14 || >=16.14} - dev: false + lru-cache@10.2.0: {} - /lru-cache@10.4.3: - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - dev: false + lru-cache@10.4.3: {} - /lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} + lru-cache@6.0.0: dependencies: yallist: 4.0.0 - dev: true - /lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - dev: true + lz-string@1.5.0: {} - /make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} + make-dir@2.1.0: dependencies: pify: 4.0.1 semver: 5.7.2 - /make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} + make-dir@4.0.0: dependencies: semver: 7.6.3 - dev: true - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: true + make-error@1.3.6: {} - /makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + makeerror@1.0.12: dependencies: tmpl: 1.0.5 - /marky@1.2.5: - resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} - dev: false + marky@1.2.5: {} - /media-query-parser@2.0.2: - resolution: {integrity: sha512-1N4qp+jE0pL5Xv4uEcwVUhIkwdUO3S/9gML90nqKA7v7FcOS5vUtatfzok9S9U1EJU8dHWlcv95WLnKmmxZI9w==} + media-query-parser@2.0.2: dependencies: '@babel/runtime': 7.25.0 - dev: false - /memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - dev: false + memoize-one@5.2.1: {} - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge-stream@2.0.0: {} - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} + merge2@1.4.1: {} - /metro-babel-transformer@0.80.10: - resolution: {integrity: sha512-GXHueUzgzcazfzORDxDzWS9jVVRV6u+cR6TGvHOfGdfLzJCj7/D0PretLfyq+MwN20twHxLW+BUXkoaB8sCQBg==} - engines: {node: '>=18'} + metro-babel-transformer@0.80.10: dependencies: '@babel/core': 7.25.2 flow-enums-runtime: 0.0.6 @@ -10544,33 +13744,24 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /metro-cache-key@0.80.10: - resolution: {integrity: sha512-57qBhO3zQfoU/hP4ZlLW5hVej2jVfBX6B4NcSfMj4LgDPL3YknWg80IJBxzQfjQY/m+fmMLmPy8aUMHzUp/guA==} - engines: {node: '>=18'} + metro-cache-key@0.80.10: dependencies: flow-enums-runtime: 0.0.6 - dev: false - /metro-cache@0.80.10: - resolution: {integrity: sha512-8CBtDJwMguIE5RvV3PU1QtxUG8oSSX54mIuAbRZmcQ0MYiOl9JdrMd4JCBvIyhiZLoSStph425SMyCSnjtJsdA==} - engines: {node: '>=18'} + metro-cache@0.80.10: dependencies: exponential-backoff: 3.1.1 flow-enums-runtime: 0.0.6 metro-core: 0.80.10 - dev: false - /metro-config@0.80.10: - resolution: {integrity: sha512-0GYAw0LkmGbmA81FepKQepL1KU/85Cyv7sAiWm6QWeV6AcVCpsKg6jGLqGHJ0LLPL60rWzA4TV1DQAlzdJAEtA==} - engines: {node: '>=18'} + metro-config@0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: connect: 3.7.0 cosmiconfig: 5.2.1 flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.80.10 + metro: 0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) metro-cache: 0.80.10 metro-core: 0.80.10 metro-runtime: 0.80.10 @@ -10579,20 +13770,14 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /metro-core@0.80.10: - resolution: {integrity: sha512-nwBB6HbpGlNsZMuzxVqxqGIOsn5F3JKpsp8PziS7Z4mV8a/jA1d44mVOgYmDa2q5WlH5iJfRIIhdz24XRNDlLA==} - engines: {node: '>=18'} + metro-core@0.80.10: dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 metro-resolver: 0.80.10 - dev: false - /metro-file-map@0.80.10: - resolution: {integrity: sha512-ytsUq8coneaN7ZCVk1IogojcGhLIbzWyiI2dNmw2nnBgV/0A+M5WaTTgZ6dJEz3dzjObPryDnkqWPvIGLCPtiw==} - engines: {node: '>=18'} + metro-file-map@0.80.10: dependencies: anymatch: 3.1.3 debug: 2.6.9 @@ -10609,34 +13794,22 @@ packages: fsevents: 2.3.3 transitivePeerDependencies: - supports-color - dev: false - /metro-minify-terser@0.80.10: - resolution: {integrity: sha512-Xyv9pEYpOsAerrld7cSLIcnCCpv8ItwysOmTA+AKf1q4KyE9cxrH2O2SA0FzMCkPzwxzBWmXwHUr+A89BpEM6g==} - engines: {node: '>=18'} + metro-minify-terser@0.80.10: dependencies: flow-enums-runtime: 0.0.6 terser: 5.31.6 - dev: false - /metro-resolver@0.80.10: - resolution: {integrity: sha512-EYC5CL7f+bSzrqdk1bylKqFNGabfiI5PDctxoPx70jFt89Jz+ThcOscENog8Jb4LEQFG6GkOYlwmPpsi7kx3QA==} - engines: {node: '>=18'} + metro-resolver@0.80.10: dependencies: flow-enums-runtime: 0.0.6 - dev: false - /metro-runtime@0.80.10: - resolution: {integrity: sha512-Xh0N589ZmSIgJYAM+oYwlzTXEHfASZac9TYPCNbvjNTn0EHKqpoJ/+Im5G3MZT4oZzYv4YnvzRtjqS5k0tK94A==} - engines: {node: '>=18'} + metro-runtime@0.80.10: dependencies: '@babel/runtime': 7.25.0 flow-enums-runtime: 0.0.6 - dev: false - /metro-source-map@0.80.10: - resolution: {integrity: sha512-EyZswqJW8Uukv/HcQr6K19vkMXW1nzHAZPWJSEyJFKIbgp708QfRZ6vnZGmrtFxeJEaFdNup4bGnu8/mIOYlyA==} - engines: {node: '>=18'} + metro-source-map@0.80.10: dependencies: '@babel/traverse': 7.25.3 '@babel/types': 7.25.2 @@ -10649,12 +13822,8 @@ packages: vlq: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /metro-symbolicate@0.80.10: - resolution: {integrity: sha512-qAoVUoSxpfZ2DwZV7IdnQGXCSsf2cAUExUcZyuCqGlY5kaWBb0mx2BL/xbMFDJ4wBp3sVvSBPtK/rt4J7a0xBA==} - engines: {node: '>=18'} - hasBin: true + metro-symbolicate@0.80.10: dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 @@ -10665,11 +13834,8 @@ packages: vlq: 1.0.1 transitivePeerDependencies: - supports-color - dev: false - /metro-transform-plugins@0.80.10: - resolution: {integrity: sha512-leAx9gtA+2MHLsCeWK6XTLBbv2fBnNFu/QiYhWzMq8HsOAP4u1xQAU0tSgPs8+1vYO34Plyn79xTLUtQCRSSUQ==} - engines: {node: '>=18'} + metro-transform-plugins@0.80.10: dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 @@ -10679,18 +13845,15 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - dev: false - /metro-transform-worker@0.80.10: - resolution: {integrity: sha512-zNfNLD8Rz99U+JdOTqtF2o7iTjcDMMYdVS90z6+81Tzd2D0lDWVpls7R1hadS6xwM+ymgXFQTjM6V6wFoZaC0g==} - engines: {node: '>=18'} + metro-transform-worker@0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@babel/core': 7.25.2 '@babel/generator': 7.25.0 '@babel/parser': 7.25.3 '@babel/types': 7.25.2 flow-enums-runtime: 0.0.6 - metro: 0.80.10 + metro: 0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) metro-babel-transformer: 0.80.10 metro-cache: 0.80.10 metro-cache-key: 0.80.10 @@ -10703,12 +13866,8 @@ packages: - encoding - supports-color - utf-8-validate - dev: false - /metro@0.80.10: - resolution: {integrity: sha512-FDPi0X7wpafmDREXe1lgg3WzETxtXh6Kpq8+IwsG35R2tMyp2kFIqDdshdohuvDt1J/qDARcEPq7V/jElTb1kA==} - engines: {node: '>=18'} - hasBin: true + metro@0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@babel/code-frame': 7.24.7 '@babel/core': 7.25.2 @@ -10735,7 +13894,7 @@ packages: metro-babel-transformer: 0.80.10 metro-cache: 0.80.10 metro-cache-key: 0.80.10 - metro-config: 0.80.10 + metro-config: 0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) metro-core: 0.80.10 metro-file-map: 0.80.10 metro-resolver: 0.80.10 @@ -10743,7 +13902,7 @@ packages: metro-source-map: 0.80.10 metro-symbolicate: 0.80.10 metro-transform-plugins: 0.80.10 - metro-transform-worker: 0.80.10 + metro-transform-worker: 0.80.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) mime-types: 2.1.35 node-fetch: 2.7.0 nullthrows: 1.1.1 @@ -10751,147 +13910,82 @@ packages: source-map: 0.5.7 strip-ansi: 6.0.1 throat: 5.0.0 - ws: 7.5.10 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) yargs: 17.7.2 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - dev: false - /micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - dev: false + micro-ftch@0.3.1: {} - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} + micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 - /micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} - engines: {node: '>=8.6'} + micromatch@4.0.7: dependencies: braces: 3.0.3 picomatch: 2.3.1 - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} + mime-db@1.52.0: {} - /mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - engines: {node: '>= 0.6'} - dev: false + mime-db@1.53.0: {} - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 - /mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: false + mime@1.6.0: {} - /mime@2.6.0: - resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: false + mime@2.6.0: {} - /mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - dev: false + mime@3.0.0: {} - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mimic-fn@2.1.0: {} - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: false + mimic-fn@4.0.0: {} - /min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - dev: true + min-indent@1.0.1: {} - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - dev: false + minimalistic-assert@1.0.1: {} - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - dev: false + minimalistic-crypto-utils@1.0.1: {} - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - /minimatch@9.0.3: - resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} - engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 - dev: false - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} - engines: {node: '>=16 || 14 >=14.17'} - dev: false - - /mipd@0.0.7(typescript@5.4.2): - resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: + + minimist@1.2.8: {} + + minipass@7.0.4: {} + + mipd@0.0.7(typescript@5.4.2): + optionalDependencies: typescript: 5.4.2 - dev: false - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true + mkdirp@0.5.6: dependencies: minimist: 1.2.8 - dev: false - /mkdirp@1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false + mkdirp@1.0.4: {} - /mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mlly@1.7.1: dependencies: acorn: 8.12.1 pathe: 1.1.2 pkg-types: 1.1.3 ufo: 1.5.4 - dev: false - /modern-ahocorasick@1.0.1: - resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} - dev: false + modern-ahocorasick@1.0.1: {} - /motion@10.16.2: - resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + motion@10.16.2: dependencies: '@motionone/animation': 10.18.0 '@motionone/dom': 10.18.0 @@ -10899,64 +13993,33 @@ packages: '@motionone/types': 10.17.1 '@motionone/utils': 10.18.0 '@motionone/vue': 10.16.4 - dev: false - /mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - dev: false + mri@1.2.0: {} - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false + ms@2.0.0: {} - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + ms@2.1.2: {} - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + ms@2.1.3: {} - /multiformats@9.9.0: - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} - dev: false + multiformats@9.9.0: {} - /multipipe@1.0.2: - resolution: {integrity: sha512-6uiC9OvY71vzSGX8lZvSqscE7ft9nPupJ8fMjrCNRAUy2LREUW42UL+V/NTrogr6rFgRydUrCX4ZitfpSNkSCQ==} + multipipe@1.0.2: dependencies: duplexer2: 0.1.4 object-assign: 4.1.1 - dev: false - /nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + nanoid@3.3.7: {} - /natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - dev: true + natural-compare-lite@1.4.0: {} - /natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + natural-compare@1.4.0: {} - /negotiator@0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false + negotiator@0.6.3: {} - /neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - dev: false + neo-async@2.6.2: {} - /next-i18next@15.2.0(i18next@23.7.6)(next@14.2.5)(react-i18next@14.0.0)(react@18.2.0): - resolution: {integrity: sha512-Rl5yZ4oGffsB0AjRykZ5PzNQ2M6am54MaMayldGmH/UKZisrIxk2SKEPJvaHhKlWe1qgdNi2FkodwK8sEjfEmg==} - engines: {node: '>=14'} - peerDependencies: - i18next: '>= 23.7.13' - next: '>= 12.0.0' - react: '>= 17.0.2' - react-i18next: '>= 13.5.0' + next-i18next@15.2.0(i18next@23.7.6)(next@14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react-i18next@14.0.0(i18next@23.7.6)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.24.8 '@types/hoist-non-react-statics': 3.3.5 @@ -10964,28 +14027,11 @@ packages: hoist-non-react-statics: 3.3.2 i18next: 23.7.6 i18next-fs-backend: 2.3.1 - next: 14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0) + next: 14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 - react-i18next: 14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0) - dev: false + react-i18next: 14.0.0(i18next@23.7.6)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0) - /next@14.2.5(@babel/core@7.24.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-0f8aRfBVL+mpzfBjYfQuLWh2WyAwtJXCRfkPF4UJ5qd2YwrHczsrSzXU4tRMV0OAxR8ZJZWPFn6uhSC56UTsLA==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true + next@14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@next/env': 14.2.5 '@swc/helpers': 0.5.5 @@ -10995,7 +14041,7 @@ packages: postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.24.1)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 14.2.5 '@next/swc-darwin-x64': 14.2.5 @@ -11009,276 +14055,161 @@ packages: transitivePeerDependencies: - '@babel/core' - babel-plugin-macros - dev: false - /nocache@3.0.4: - resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} - engines: {node: '>=12.0.0'} - dev: false + nocache@3.0.4: {} - /node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - dev: false + node-abort-controller@3.1.1: {} - /node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - dev: false + node-addon-api@2.0.2: {} - /node-addon-api@5.1.0: - resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} - dev: false + node-addon-api@5.1.0: {} - /node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - dev: false + node-addon-api@7.1.1: {} - /node-dir@0.1.17: - resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} - engines: {node: '>= 0.10.5'} + node-dir@0.1.17: dependencies: minimatch: 3.1.2 - dev: false - /node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} - dev: false + node-fetch-native@1.6.4: {} - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - dev: false - /node-forge@1.3.1: - resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} - engines: {node: '>= 6.13.0'} - dev: false + node-forge@1.3.1: {} - /node-gyp-build@4.8.1: - resolution: {integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==} - hasBin: true - dev: false + node-gyp-build@4.8.1: {} - /node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + node-int64@0.4.0: {} - /node-releases@2.0.14: - resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + node-releases@2.0.14: {} - /node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.18: {} - /node-stream-zip@1.15.0: - resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} - engines: {node: '>=0.12.0'} - dev: false + node-stream-zip@1.15.0: {} - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - requiresBuild: true + normalize-path@3.0.0: {} - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - /npm-run-path@5.3.0: - resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 - dev: false - /nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - dev: false + nullthrows@1.1.1: {} - /nwsapi@2.2.7: - resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} - dev: true + nwsapi@2.2.7: {} - /ob1@0.80.10: - resolution: {integrity: sha512-dJHyB0S6JkMorUSfSGcYGkkg9kmq3qDUu3ygZUKIfkr47XOPuG35r2Sk6tbwtHXbdKIXmcMvM8DF2CwgdyaHfQ==} - engines: {node: '>=18'} + ob1@0.80.10: dependencies: flow-enums-runtime: 0.0.6 - dev: false - /obj-multiplex@1.0.0: - resolution: {integrity: sha512-0GNJAOsHoBHeNTvl5Vt6IWnpUEcc3uSRxzBri7EDyIcMgYvnY2JL2qdeV5zTMjWQX5OHcD5amcW2HFfDh0gjIA==} + obj-multiplex@1.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 readable-stream: 2.3.8 - dev: false - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} + object-assign@4.1.1: {} - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true + object-inspect@1.13.1: {} - /object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} + object-is@1.1.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - dev: true - /object-keys@0.4.0: - resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} - dev: false + object-keys@0.4.0: {} - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true + object-keys@1.1.1: {} - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} + object.assign@4.1.5: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} + object.entries@1.1.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} + object.fromentries@2.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.2 es-object-atoms: 1.0.0 - dev: true - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} + object.groupby@1.0.3: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.2 - dev: true - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + object.hasown@1.1.3: dependencies: define-properties: 1.2.1 es-abstract: 1.22.5 - dev: true - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} + object.values@1.2.0: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} + ofetch@1.3.4: dependencies: destr: 2.0.3 node-fetch-native: 1.6.4 ufo: 1.5.4 - dev: false - /ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} - dev: false + ohash@1.1.3: {} - /on-exit-leak-free@0.2.0: - resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} - dev: false + on-exit-leak-free@0.2.0: {} - /on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} + on-finished@2.3.0: dependencies: ee-first: 1.1.1 - dev: false - /on-finished@2.4.1: - resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} - engines: {node: '>= 0.8'} + on-finished@2.4.1: dependencies: ee-first: 1.1.1 - dev: false - /on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: false + on-headers@1.0.2: {} - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + once@1.4.0: dependencies: wrappy: 1.0.2 - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 - dev: false - /open@6.4.0: - resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} - engines: {node: '>=8'} + open@6.4.0: dependencies: is-wsl: 1.1.0 - dev: false - /open@7.4.2: - resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} - engines: {node: '>=8'} + open@7.4.2: dependencies: is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false - /open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - dev: false - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} + optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 @@ -11286,11 +14217,8 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true - /ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@5.4.1: dependencies: bl: 4.1.0 chalk: 4.1.2 @@ -11301,184 +14229,106 @@ packages: log-symbols: 4.1.0 strip-ansi: 6.0.1 wcwidth: 1.0.1 - dev: false - /ospath@1.2.2: - resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} - dev: true + ospath@1.2.2: {} - /outdent@0.8.0: - resolution: {integrity: sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==} - dev: false + outdent@0.8.0: {} - /p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} + p-limit@2.3.0: dependencies: p-try: 2.2.0 - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - /p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} + p-locate@3.0.0: dependencies: p-limit: 2.3.0 - dev: false - /p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} + p-locate@4.1.0: dependencies: p-limit: 2.3.0 - /p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} + p-locate@5.0.0: dependencies: p-limit: 3.1.0 - /p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} + p-map@4.0.0: dependencies: aggregate-error: 3.1.0 - dev: true - /p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} + p-try@2.2.0: {} - /parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} + parent-module@1.0.1: dependencies: callsites: 3.1.0 - /parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} + parse-json@4.0.0: dependencies: error-ex: 1.3.2 json-parse-better-errors: 1.0.2 - dev: false - /parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.1 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 - /parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@7.1.2: dependencies: entities: 4.5.0 - dev: true - /parseurl@1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false + parseurl@1.3.3: {} - /path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: false + path-exists@3.0.0: {} - /path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} + path-exists@4.0.0: {} - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} + path-is-absolute@1.0.1: {} - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} + path-key@3.1.1: {} - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: false + path-key@4.0.0: {} - /path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-parse@1.0.7: {} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + path-scurry@1.10.1: dependencies: lru-cache: 10.2.0 minipass: 7.0.4 - dev: false - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} + path-type@4.0.0: {} - /pathe@1.1.2: - resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - dev: false + pathe@1.1.2: {} - /pend@1.2.0: - resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} - dev: true + pend@1.2.0: {} - /performance-now@2.1.0: - resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - dev: true + performance-now@2.1.0: {} - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.0.0: {} - /picocolors@1.0.1: - resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + picocolors@1.0.1: {} - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} + picomatch@2.3.1: {} - /pify@2.3.0: - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} - engines: {node: '>=0.10.0'} - dev: true + pify@2.3.0: {} - /pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - dev: false + pify@3.0.0: {} - /pify@4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} + pify@4.0.1: {} - /pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - dev: false + pify@5.0.0: {} - /pino-abstract-transport@0.5.0: - resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + pino-abstract-transport@0.5.0: dependencies: duplexify: 4.1.3 split2: 4.2.0 - dev: false - /pino-std-serializers@4.0.0: - resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} - dev: false + pino-std-serializers@4.0.0: {} - /pino@7.11.0: - resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} - hasBin: true + pino@7.11.0: dependencies: atomic-sleep: 1.0.0 fast-redact: 3.5.0 @@ -11491,343 +14341,202 @@ packages: safe-stable-stringify: 2.4.3 sonic-boom: 2.8.0 thread-stream: 0.15.2 - dev: false - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} + pirates@4.0.6: {} - /pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 - dev: false - /pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - dev: true - /pkg-types@1.1.3: - resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} + pkg-types@1.1.3: dependencies: confbox: 0.1.7 mlly: 1.7.1 pathe: 1.1.2 - dev: false - /pngjs@5.0.0: - resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} - engines: {node: '>=10.13.0'} - dev: false + pngjs@5.0.0: {} - /pony-cause@2.1.11: - resolution: {integrity: sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==} - engines: {node: '>=12.0.0'} - dev: false + pony-cause@2.1.11: {} - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} + possible-typed-array-names@1.0.0: {} - /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: true + postcss-value-parser@4.2.0: {} - /postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.31: dependencies: nanoid: 3.3.7 picocolors: 1.0.1 source-map-js: 1.2.0 - dev: false - /postcss@8.4.36: - resolution: {integrity: sha512-/n7eumA6ZjFHAsbX30yhHup/IMkOmlmvtEi7P+6RMYf+bGJSUHc3geH4a0NSZxAz/RJfiS9tooCTs9LAVYUZKw==} - engines: {node: ^10 || ^12 || >=14} + postcss@8.4.36: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.1.0 - dev: true - /preact@10.23.2: - resolution: {integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==} - dev: false + preact@10.23.2: {} - /prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - dev: true + prelude-ls@1.2.1: {} - /prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} + prettier-linter-helpers@1.0.0: dependencies: fast-diff: 1.3.0 - dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} - engines: {node: '>=14'} - hasBin: true - dev: true + prettier@3.0.3: {} - /pretty-bytes@5.6.0: - resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} - engines: {node: '>=6'} - dev: true + pretty-bytes@5.6.0: {} - /pretty-format@26.6.2: - resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} - engines: {node: '>= 10'} + pretty-format@26.6.2: dependencies: '@jest/types': 26.6.2 ansi-regex: 5.0.1 ansi-styles: 4.3.0 react-is: 17.0.2 - dev: false - /pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@27.5.1: dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 react-is: 17.0.2 - dev: true - /pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false + process-nextick-args@2.0.1: {} - /process-warning@1.0.0: - resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} - dev: false + process-warning@1.0.0: {} - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: true + process@0.11.10: {} - /promise@8.3.0: - resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + promise@8.3.0: dependencies: asap: 2.0.6 - dev: false - /prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} + prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + prop-types@15.8.1: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 react-is: 16.13.1 - /proxy-compare@2.5.1: - resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} - dev: false + proxy-compare@2.5.1: {} - /proxy-from-env@1.0.0: - resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} - dev: true + proxy-from-env@1.0.0: {} - /psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - dev: true + psl@1.9.0: {} - /pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - /punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - dev: true + punycode@2.3.1: {} - /pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - dev: true + pure-rand@6.1.0: {} - /qr-code-styling@1.6.0-rc.1: - resolution: {integrity: sha512-ModRIiW6oUnsP18QzrRYZSc/CFKFKIdj7pUs57AEVH20ajlglRpN3HukjHk0UbNMTlKGuaYl7Gt6/O5Gg2NU2Q==} + qr-code-styling@1.6.0-rc.1: dependencies: qrcode-generator: 1.4.4 - dev: false - /qrcode-generator@1.4.4: - resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} - dev: false + qrcode-generator@1.4.4: {} - /qrcode-terminal-nooctal@0.12.1: - resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} - hasBin: true - dev: false + qrcode-terminal-nooctal@0.12.1: {} - /qrcode@1.5.3: - resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} - engines: {node: '>=10.13.0'} - hasBin: true + qrcode@1.5.3: dependencies: dijkstrajs: 1.0.3 encode-utf8: 1.0.3 pngjs: 5.0.0 yargs: 15.4.1 - dev: false - /qs@6.10.4: - resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} - engines: {node: '>=0.6'} + qs@6.10.4: dependencies: side-channel: 1.0.6 - dev: true - /query-string@7.1.3: - resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} - engines: {node: '>=6'} + query-string@7.1.3: dependencies: decode-uri-component: 0.2.2 filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 - dev: false - /querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: false + querystring@0.2.1: {} - /querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - dev: true + querystringify@2.2.0: {} - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + queue-microtask@1.2.3: {} - /queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + queue@6.0.2: dependencies: inherits: 2.0.4 - dev: false - /quick-format-unescaped@4.0.4: - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} - dev: false + quick-format-unescaped@4.0.4: {} - /radix3@1.1.2: - resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} - dev: false + radix3@1.1.2: {} - /range-parser@1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: false + range-parser@1.2.1: {} - /react-devtools-core@5.3.1: - resolution: {integrity: sha512-7FSb9meX0btdBQLwdFOwt6bGqvRPabmVMMslv8fgoSPqXyuGpgQe36kx8gR86XPw7aV1yVouTp6fyZ0EH+NfUw==} + react-devtools-core@5.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: shell-quote: 1.8.1 - ws: 7.5.10 + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - dev: false - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} - peerDependencies: - react: ^18.2.0 + react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 react: 18.2.0 scheduler: 0.23.0 - /react-i18next@14.0.0(i18next@23.7.6)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0): - resolution: {integrity: sha512-OCrS8rHNAmnr8ggGRDxjakzihrMW7HCbsplduTm3EuuQ6fyvWGT41ksZpqbduYoqJurBmEsEVZ1pILSUWkHZng==} - peerDependencies: - i18next: '>= 23.2.3' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true + react-i18next@14.0.0(i18next@23.7.6)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0): dependencies: '@babel/runtime': 7.24.8 html-parse-stringify: 3.0.1 i18next: 23.7.6 react: 18.2.0 + optionalDependencies: react-dom: 18.2.0(react@18.2.0) - react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) - dev: false + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10) - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@16.13.1: {} - /react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@17.0.2: {} - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + react-is@18.2.0: {} - /react-native-webview@11.26.1(react-native@0.75.1)(react@18.2.0): - resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} - peerDependencies: - react: '*' - react-native: '*' + react-native-webview@11.26.1(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0): dependencies: escape-string-regexp: 2.0.0 invariant: 2.2.4 react: 18.2.0 - react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2) - dev: false + react-native: 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10) - /react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2): - resolution: {integrity: sha512-6WGjZdqXLEuBWAP+h2WH5a2Nd9jn7KmQ1GYy0Krzkcfvz9vPtKKIUSEjwvi3q+M0UTu3V/ESBaMDfT/GGr3fkg==} - engines: {node: '>=18'} - hasBin: true - peerDependencies: - '@types/react': ^18.2.6 - react: ^18.2.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native-community/cli': 14.0.0(typescript@5.4.2) + '@react-native-community/cli': 14.0.0(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) '@react-native-community/cli-platform-android': 14.0.0 '@react-native-community/cli-platform-ios': 14.0.0 '@react-native/assets-registry': 0.75.1 - '@react-native/codegen': 0.75.1(@babel/preset-env@7.25.3) - '@react-native/community-cli-plugin': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3) + '@react-native/codegen': 0.75.1(@babel/preset-env@7.25.3(@babel/core@7.24.1)) + '@react-native/community-cli-plugin': 0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@react-native/gradle-plugin': 0.75.1 '@react-native/js-polyfills': 0.75.1 '@react-native/normalize-colors': 0.75.1 - '@react-native/virtualized-lists': 0.75.1(@types/react@18.2.15)(react-native@0.75.1)(react@18.2.0) - '@types/react': 18.2.15 + '@react-native/virtualized-lists': 0.75.1(@types/react@18.2.15)(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -11847,15 +14556,17 @@ packages: pretty-format: 26.6.2 promise: 8.3.0 react: 18.2.0 - react-devtools-core: 5.3.1 + react-devtools-core: 5.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) react-refresh: 0.14.2 regenerator-runtime: 0.13.11 scheduler: 0.24.0-canary-efb381bbf-20230505 semver: 7.6.3 stacktrace-parser: 0.1.10 whatwg-fetch: 3.6.20 - ws: 6.2.3 + ws: 6.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) yargs: 17.7.2 + optionalDependencies: + '@types/react': 18.2.15 transitivePeerDependencies: - '@babel/core' - '@babel/preset-env' @@ -11864,93 +14575,50 @@ packages: - supports-color - typescript - utf-8-validate - dev: false - /react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - dev: false + react-refresh@0.14.2: {} - /react-remove-scroll-bar@2.3.6(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll-bar@2.3.6(@types/react@18.2.15)(react@18.2.0): dependencies: - '@types/react': 18.2.15 react: 18.2.0 react-style-singleton: 2.2.1(@types/react@18.2.15)(react@18.2.0) tslib: 2.6.3 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /react-remove-scroll@2.5.7(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-remove-scroll@2.5.7(@types/react@18.2.15)(react@18.2.0): dependencies: - '@types/react': 18.2.15 react: 18.2.0 react-remove-scroll-bar: 2.3.6(@types/react@18.2.15)(react@18.2.0) react-style-singleton: 2.2.1(@types/react@18.2.15)(react@18.2.0) tslib: 2.6.3 use-callback-ref: 1.3.2(@types/react@18.2.15)(react@18.2.0) use-sidecar: 1.1.2(@types/react@18.2.15)(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /react-router-dom@6.15.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' + react-router-dom@6.15.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@remix-run/router': 1.8.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-router: 6.15.0(react@18.2.0) - dev: false - /react-router@6.15.0(react@18.2.0): - resolution: {integrity: sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' + react-router@6.15.0(react@18.2.0): dependencies: '@remix-run/router': 1.8.0 react: 18.2.0 - dev: false - /react-style-singleton@2.2.1(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + react-style-singleton@2.2.1(@types/react@18.2.15)(react@18.2.0): dependencies: - '@types/react': 18.2.15 get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.3 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.24.1 dom-helpers: 5.2.1 @@ -11958,25 +14626,19 @@ packages: prop-types: 15.8.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} - engines: {node: '>=0.10.0'} + react@18.2.0: dependencies: loose-envify: 1.4.0 - /readable-stream@1.0.34: - resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==} + readable-stream@1.0.34: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 isarray: 0.0.1 string_decoder: 0.10.31 - dev: false - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 inherits: 2.0.4 @@ -11985,54 +14647,34 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 - dev: false - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} + readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - dev: false - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - requiresBuild: true + readdirp@3.6.0: dependencies: picomatch: 2.3.1 - /readline@1.3.0: - resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} - dev: false + readline@1.3.0: {} - /real-require@0.1.0: - resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} - engines: {node: '>= 12.13.0'} - dev: false + real-require@0.1.0: {} - /recast@0.21.5: - resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} - engines: {node: '>= 4'} + recast@0.21.5: dependencies: ast-types: 0.15.2 esprima: 4.0.1 source-map: 0.6.1 tslib: 2.6.3 - dev: false - /redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} + redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - dev: true - /reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} + reflect.getprototypeof@1.0.6: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -12041,42 +14683,29 @@ packages: get-intrinsic: 1.2.4 globalthis: 1.0.3 which-builtin-type: 1.1.3 - dev: true - /regenerate-unicode-properties@10.1.1: - resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} - engines: {node: '>=4'} + regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 - /regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + regenerate@1.4.2: {} - /regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - dev: false + regenerator-runtime@0.13.11: {} - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regenerator-runtime@0.14.1: {} - /regenerator-transform@0.15.2: - resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + regenerator-transform@0.15.2: dependencies: '@babel/runtime': 7.24.8 - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.2: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-errors: 1.3.0 set-function-name: 2.0.2 - dev: true - /regexpu-core@5.3.2: - resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} - engines: {node: '>=4'} + regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 @@ -12085,228 +14714,133 @@ packages: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - /regjsparser@0.9.1: - resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} - hasBin: true + regjsparser@0.9.1: dependencies: jsesc: 0.5.0 - /request-progress@3.0.0: - resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + request-progress@3.0.0: dependencies: throttleit: 1.0.1 - dev: true - /require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} + require-directory@2.1.1: {} - /require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - dev: false + require-main-filename@2.0.0: {} - /requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - dev: true + requires-port@1.0.0: {} - /resolve-cwd@3.0.0: - resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} - engines: {node: '>=8'} + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 - dev: true - /resolve-from@3.0.0: - resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} - engines: {node: '>=4'} - dev: false + resolve-from@3.0.0: {} - /resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} + resolve-from@4.0.0: {} - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: true + resolve-from@5.0.0: {} - /resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - dev: true + resolve.exports@2.0.2: {} - /resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} - hasBin: true + resolve@1.22.8: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true + resolve@2.0.0-next.5: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - dev: true - /restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + reusify@1.0.4: {} - /rfdc@1.4.1: - resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - dev: true + rfdc@1.4.1: {} - /rimraf@2.6.3: - resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + rimraf@2.6.3: dependencies: glob: 7.2.3 - dev: false - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true + rimraf@3.0.2: dependencies: glob: 7.2.3 - /rollup-plugin-visualizer@5.12.0: - resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} - engines: {node: '>=14'} - hasBin: true - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true + rollup-plugin-visualizer@5.12.0: dependencies: open: 8.4.2 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.7.2 - dev: false - /rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - dev: true + rrweb-cssom@0.6.0: {} - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - /rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + rxjs@7.8.1: dependencies: tslib: 2.6.3 - dev: true - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} + safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 - dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false + safe-buffer@5.1.2: {} - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-buffer@5.2.1: {} - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 - dev: true - /safe-stable-stringify@2.4.3: - resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} - engines: {node: '>=10'} - dev: false + safe-stable-stringify@2.4.3: {} - /safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true + safer-buffer@2.1.2: {} - /saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} + saxes@6.0.0: dependencies: xmlchars: 2.2.0 - dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + scheduler@0.23.0: dependencies: loose-envify: 1.4.0 - /scheduler@0.24.0-canary-efb381bbf-20230505: - resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + scheduler@0.24.0-canary-efb381bbf-20230505: dependencies: loose-envify: 1.4.0 - dev: false - /secp256k1@5.0.0: - resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} - engines: {node: '>=14.0.0'} - requiresBuild: true + secp256k1@5.0.0: dependencies: elliptic: 6.5.7 node-addon-api: 5.1.0 node-gyp-build: 4.8.1 - dev: false - /selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@2.4.1: dependencies: '@types/node-forge': 1.3.11 node-forge: 1.3.1 - dev: false - /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} - hasBin: true + semver@5.7.2: {} - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true + semver@6.3.1: {} - /semver@7.6.0: - resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.0: dependencies: lru-cache: 6.0.0 - dev: true - /semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} - engines: {node: '>=10'} - hasBin: true + semver@7.6.3: {} - /send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} - engines: {node: '>= 0.8.0'} + send@0.18.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -12323,16 +14857,10 @@ packages: statuses: 2.0.1 transitivePeerDependencies: - supports-color - dev: false - /serialize-error@2.1.0: - resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} - engines: {node: '>=0.10.0'} - dev: false + serialize-error@2.1.0: {} - /serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} - engines: {node: '>= 0.8.0'} + serve-static@1.15.0: dependencies: encodeurl: 1.0.2 escape-html: 1.0.3 @@ -12340,15 +14868,10 @@ packages: send: 0.18.0 transitivePeerDependencies: - supports-color - dev: false - /set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - dev: false + set-blocking@2.0.0: {} - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 @@ -12357,195 +14880,118 @@ packages: gopd: 1.0.1 has-property-descriptors: 1.0.2 - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} + set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 es-errors: 1.3.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - dev: true - /setprototypeof@1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: false + setprototypeof@1.2.0: {} - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true + sha.js@2.4.11: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: false - /shallow-clone@3.0.1: - resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} - engines: {node: '>=8'} + shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 - dev: false - /shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - dev: true + shallowequal@1.1.0: {} - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} + shebang-regex@3.0.0: {} - /shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} - dev: false + shell-quote@1.8.1: {} - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} + side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 object-inspect: 1.13.1 - dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@3.0.7: {} - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: false + signal-exit@4.1.0: {} - /sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + sisteransi@1.0.5: {} - /slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - dev: true + slash@2.0.0: {} - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} + slash@3.0.0: {} - /slice-ansi@2.1.0: - resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} - engines: {node: '>=6'} + slice-ansi@2.1.0: dependencies: ansi-styles: 3.2.1 astral-regex: 1.0.0 is-fullwidth-code-point: 2.0.0 - dev: false - /slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} + slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: true - /slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - dev: true - /socket.io-client@4.7.5: - resolution: {integrity: sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==} - engines: {node: '>=10.0.0'} + socket.io-client@4.7.5(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.6(supports-color@8.1.1) - engine.io-client: 6.5.4 + engine.io-client: 6.5.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) socket.io-parser: 4.2.4 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - dev: false - /socket.io-parser@4.2.4: - resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} - engines: {node: '>=10.0.0'} + socket.io-parser@4.2.4: dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color - dev: false - /sonic-boom@2.8.0: - resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + sonic-boom@2.8.0: dependencies: atomic-sleep: 1.0.0 - dev: false - /source-map-js@1.1.0: - resolution: {integrity: sha512-9vC2SfsJzlej6MAaMPLu8HiBSHGdRAJ9hVFYN1ibZoNkeanmDmLUcIrj6G9DGL7XMJ54AKg/G75akXl1/izTOw==} - engines: {node: '>=0.10.0'} - dev: true + source-map-js@1.1.0: {} - /source-map-js@1.2.0: - resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} - engines: {node: '>=0.10.0'} - dev: false + source-map-js@1.2.0: {} - /source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: false - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: false + source-map@0.5.7: {} - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} + source-map@0.6.1: {} - /source-map@0.7.4: - resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} - engines: {node: '>= 8'} - dev: false + source-map@0.7.4: {} - /split-on-first@1.1.0: - resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} - engines: {node: '>=6'} - dev: false + split-on-first@1.1.0: {} - /split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - dev: false + split2@4.2.0: {} - /sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.0.3: {} - /sshpk@1.18.0: - resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} - engines: {node: '>=0.10.0'} - hasBin: true + sshpk@1.18.0: dependencies: asn1: 0.2.6 assert-plus: 1.0.0 @@ -12556,87 +15002,51 @@ packages: jsbn: 0.1.1 safer-buffer: 2.1.2 tweetnacl: 0.14.5 - dev: true - /stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - /stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - dev: false + stackframe@1.3.4: {} - /stacktrace-parser@0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} + stacktrace-parser@0.1.10: dependencies: type-fest: 0.7.1 - dev: false - /statuses@1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false + statuses@1.5.0: {} - /statuses@2.0.1: - resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} - engines: {node: '>= 0.8'} - dev: false + statuses@2.0.1: {} - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - dev: false + std-env@3.7.0: {} - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} + stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 - dev: true - /stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - dev: false + stream-shift@1.0.3: {} - /streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - dev: false + streamsearch@1.1.0: {} - /strict-uri-encode@2.0.0: - resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} - engines: {node: '>=4'} - dev: false + strict-uri-encode@2.0.0: {} - /string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} + string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - dev: true - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} + string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: false - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + string.prototype.matchall@4.0.10: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 @@ -12647,115 +15057,65 @@ packages: regexp.prototype.flags: 1.5.2 set-function-name: 2.0.2 side-channel: 1.0.6 - dev: true - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.2 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.22.5 - dev: true - /string_decoder@0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: false + string_decoder@0.10.31: {} - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - dev: false - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - dev: false - /strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} + strip-ansi@5.2.0: dependencies: ansi-regex: 4.1.1 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} + strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 - dev: false - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true + strip-bom@3.0.0: {} - /strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true + strip-bom@4.0.0: {} - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} + strip-final-newline@2.0.0: {} - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: false + strip-final-newline@3.0.0: {} - /strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 - dev: true - /strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true + strip-json-comments@3.1.1: {} - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false + strnum@1.0.5: {} - /styled-components@6.0.7(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-xIwWuiRMYR43mskVsW9MGTRjSo7ol4bcVjT595fGUp3OLBJOlOgaiKaxsHdC4a2HqWKqKnh0CmcRbk5ogyDjTg==} - engines: {node: '>= 16'} - peerDependencies: - babel-plugin-styled-components: '>= 2' - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - peerDependenciesMeta: - babel-plugin-styled-components: - optional: true + styled-components@6.0.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/cli': 7.24.1(@babel/core@7.24.1) '@babel/core': 7.24.1 @@ -12780,243 +15140,123 @@ packages: tslib: 2.6.2 transitivePeerDependencies: - supports-color - dev: true - /styled-jsx@5.1.1(@babel/core@7.24.1)(react@18.2.0): - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true + styled-jsx@5.1.1(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react@18.2.0): dependencies: - '@babel/core': 7.24.1 client-only: 0.0.1 react: 18.2.0 - dev: false + optionalDependencies: + '@babel/core': 7.24.1 + babel-plugin-macros: 3.1.0 - /stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - dev: false + stylis@4.2.0: {} - /stylis@4.3.1: - resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} - dev: true + stylis@4.3.1: {} - /sudo-prompt@9.2.1: - resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} - dev: false + sudo-prompt@9.2.1: {} - /superstruct@1.0.4: - resolution: {integrity: sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==} - engines: {node: '>=14.0.0'} - dev: false + superstruct@1.0.4: {} - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 - /supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} + supports-color@7.2.0: dependencies: has-flag: 4.0.0 - /supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} + supports-color@8.1.1: dependencies: has-flag: 4.0.0 - /supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} + supports-preserve-symlinks-flag@1.0.0: {} - /symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - dev: true + symbol-tree@3.2.4: {} - /synckit@0.8.8: - resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} - engines: {node: ^14.18.0 || >=16.0.0} + synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 tslib: 2.6.2 - dev: true - /system-architecture@0.1.0: - resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} - engines: {node: '>=18'} - dev: false + system-architecture@0.1.0: {} - /temp@0.8.4: - resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} - engines: {node: '>=6.0.0'} + temp@0.8.4: dependencies: rimraf: 2.6.3 - dev: false - /terser@5.31.6: - resolution: {integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==} - engines: {node: '>=10'} - hasBin: true + terser@5.31.6: dependencies: '@jridgewell/source-map': 0.3.6 acorn: 8.12.1 commander: 2.20.3 source-map-support: 0.5.21 - dev: false - /test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: true - /text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + text-table@0.2.0: {} - /thread-stream@0.15.2: - resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + thread-stream@0.15.2: dependencies: real-require: 0.1.0 - dev: false - /throat@5.0.0: - resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} - dev: false + throat@5.0.0: {} - /throttleit@1.0.1: - resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} - dev: true + throttleit@1.0.1: {} - /through2@0.4.2: - resolution: {integrity: sha512-45Llu+EwHKtAZYTPPVn3XZHBgakWMN3rokhEv5hu596XP+cNgplMg+Gj+1nmAvj+L0K7+N49zBKx5rah5u0QIQ==} + through2@0.4.2: dependencies: readable-stream: 1.0.34 xtend: 2.1.2 - dev: false - /through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 - dev: false - /through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + through@2.3.8: {} - /tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} - engines: {node: '>=14.14'} - dev: true + tmp@0.2.3: {} - /tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + tmpl@1.0.5: {} - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} + to-fast-properties@2.0.0: {} - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - requiresBuild: true + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 - /toidentifier@1.0.1: - resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} - engines: {node: '>=0.6'} - dev: false - - /tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} - engines: {node: '>=6'} - dependencies: - psl: 1.9.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - dev: true + toidentifier@1.0.1: {} - /tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + tough-cookie@4.1.3: dependencies: psl: 1.9.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 - dev: true - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false + tr46@0.0.3: {} - /tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} + tr46@3.0.0: dependencies: punycode: 2.3.1 - dev: true - /tr46@5.0.0: - resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} - engines: {node: '>=18'} + tr46@5.0.0: dependencies: punycode: 2.3.1 - dev: true - /ts-api-utils@1.3.0(typescript@5.4.2): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' + ts-api-utils@1.3.0(typescript@5.4.2): dependencies: typescript: 5.4.2 - dev: true - /ts-jest@29.1.4(@babel/core@7.24.1)(jest@29.7.0)(typescript@5.4.2): - resolution: {integrity: sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==} - engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@jest/transform': ^29.0.0 - '@jest/types': ^29.0.0 - babel-jest: ^29.0.0 - esbuild: '*' - jest: ^29.0.0 - typescript: '>=4.3 <6' - peerDependenciesMeta: - '@babel/core': - optional: true - '@jest/transform': - optional: true - '@jest/types': - optional: true - babel-jest: - optional: true - esbuild: - optional: true + ts-jest@29.1.4(@babel/core@7.24.1)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.24.1))(jest@29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)))(typescript@5.4.2): dependencies: - '@babel/core': 7.24.1 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.12.13)(ts-node@10.9.2) + jest: 29.7.0(@types/node@20.12.13)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -13024,21 +15264,13 @@ packages: semver: 7.6.0 typescript: 5.4.2 yargs-parser: 21.1.1 - dev: true + optionalDependencies: + '@babel/core': 7.24.1 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.24.1) - /ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2): - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + ts-node@10.9.2(@types/node@20.12.13)(typescript@5.4.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -13055,87 +15287,53 @@ packages: typescript: 5.4.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 - dev: true - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + tsconfig-paths@3.15.0: dependencies: '@types/json5': 0.0.29 json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false + tslib@1.14.1: {} - /tslib@2.6.2: - resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - dev: true + tslib@2.6.2: {} - /tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.6.3: {} - /tunnel-agent@0.6.0: - resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 - dev: true - /tweetnacl@0.14.5: - resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - dev: true + tweetnacl@0.14.5: {} - /type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - dev: true - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} + type-detect@4.0.8: {} - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true + type-fest@0.20.2: {} - /type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - dev: true + type-fest@0.21.3: {} - /type-fest@0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false + type-fest@0.7.1: {} - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -13143,11 +15341,8 @@ packages: gopd: 1.0.1 has-proto: 1.0.3 is-typed-array: 1.1.13 - dev: true - /typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} - engines: {node: '>= 0.4'} + typed-array-length@1.0.5: dependencies: call-bind: 1.0.7 for-each: 0.3.3 @@ -13155,334 +15350,169 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 possible-typed-array-names: 1.0.0 - dev: true - /typescript@5.4.2: - resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} - engines: {node: '>=14.17'} - hasBin: true + typescript@5.4.2: {} - /ua-parser-js@1.0.38: - resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} - dev: false + ua-parser-js@1.0.38: {} - /ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - dev: false + ufo@1.5.4: {} - /uint8arrays@3.1.0: - resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} + uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 - dev: false - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - dev: true - /uncrypto@0.1.3: - resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - dev: false + uncrypto@0.1.3: {} - /undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - requiresBuild: true + undici-types@5.26.5: {} - /unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} + unenv@1.10.0: dependencies: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 node-fetch-native: 1.6.4 pathe: 1.1.2 - dev: false - /unfetch@4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} - dev: false + unfetch@4.2.0: {} - /unicode-canonical-property-names-ecmascript@2.0.0: - resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} - engines: {node: '>=4'} + unicode-canonical-property-names-ecmascript@2.0.0: {} - /unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} + unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 - /unicode-match-property-value-ecmascript@2.1.0: - resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} - engines: {node: '>=4'} + unicode-match-property-value-ecmascript@2.1.0: {} - /unicode-property-aliases-ecmascript@2.1.0: - resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} - engines: {node: '>=4'} + unicode-property-aliases-ecmascript@2.1.0: {} - /universalify@0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: false + universalify@0.1.2: {} - /universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - dev: true + universalify@0.2.0: {} - /universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - dev: true + universalify@2.0.1: {} - /unpipe@1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: false + unpipe@1.0.0: {} - /unstorage@1.10.2(idb-keyval@6.2.1): - resolution: {integrity: sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==} - peerDependencies: - '@azure/app-configuration': ^1.5.0 - '@azure/cosmos': ^4.0.0 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.0.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.17.0 - '@capacitor/preferences': ^5.0.7 - '@netlify/blobs': ^6.5.0 || ^7.0.0 - '@planetscale/database': ^1.16.0 - '@upstash/redis': ^1.28.4 - '@vercel/kv': ^1.0.1 - idb-keyval: ^6.2.1 - ioredis: ^5.3.2 - peerDependenciesMeta: - '@azure/app-configuration': - optional: true - '@azure/cosmos': - optional: true - '@azure/data-tables': - optional: true - '@azure/identity': - optional: true - '@azure/keyvault-secrets': - optional: true - '@azure/storage-blob': - optional: true - '@capacitor/preferences': - optional: true - '@netlify/blobs': - optional: true - '@planetscale/database': - optional: true - '@upstash/redis': - optional: true - '@vercel/kv': - optional: true - idb-keyval: - optional: true - ioredis: - optional: true + unstorage@1.10.2(idb-keyval@6.2.1): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 h3: 1.12.0 - idb-keyval: 6.2.1 listhen: 1.7.2 lru-cache: 10.4.3 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 ufo: 1.5.4 + optionalDependencies: + idb-keyval: 6.2.1 transitivePeerDependencies: - uWebSockets.js - dev: false - /untildify@4.0.0: - resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} - engines: {node: '>=8'} - dev: true + untildify@4.0.0: {} - /untun@0.1.3: - resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} - hasBin: true + untun@0.1.3: dependencies: citty: 0.1.6 consola: 3.2.3 pathe: 1.1.2 - dev: false - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.0.13(browserslist@4.23.0): dependencies: browserslist: 4.23.0 escalade: 3.1.2 picocolors: 1.0.0 - /update-browserslist-db@1.1.0(browserslist@4.23.3): - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + update-browserslist-db@1.1.0(browserslist@4.23.3): dependencies: browserslist: 4.23.3 escalade: 3.1.2 picocolors: 1.0.1 - /uqr@0.1.2: - resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} - dev: false + uqr@0.1.2: {} - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + uri-js@4.4.1: dependencies: punycode: 2.3.1 - dev: true - /url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - dev: true - /use-callback-ref@1.3.2(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-callback-ref@1.3.2(@types/react@18.2.15)(react@18.2.0): dependencies: - '@types/react': 18.2.15 react: 18.2.0 tslib: 2.6.3 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /use-sidecar@1.1.2(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true + use-sidecar@1.1.2(@types/react@18.2.15)(react@18.2.0): dependencies: - '@types/react': 18.2.15 detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.3 - dev: false + optionalDependencies: + '@types/react': 18.2.15 - /use-sync-external-store@1.2.0(react@18.2.0): - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + use-sync-external-store@1.2.0(react@18.2.0): dependencies: react: 18.2.0 - dev: false - /utf-8-validate@5.0.10: - resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} - engines: {node: '>=6.14.2'} - requiresBuild: true + utf-8-validate@5.0.10: dependencies: node-gyp-build: 4.8.1 - dev: false - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false + util-deprecate@1.0.2: {} - /util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.13 which-typed-array: 1.1.15 - dev: false - /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: false + utils-merge@1.0.1: {} - /uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true + uuid@8.3.2: {} - /uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - dev: false + uuid@9.0.1: {} - /v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - dev: true + v8-compile-cache-lib@3.0.1: {} - /v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} + v8-to-istanbul@9.3.0: dependencies: '@jridgewell/trace-mapping': 0.3.25 '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - dev: true - /valtio@1.11.2(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-1XfIxnUXzyswPAPXo1P3Pdx2mq/pIqZICkWN60Hby0d9Iqb+MEIpqgYVlbflvHdrp2YR/q3jyKWRPJJ100yxaw==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@types/react': '>=16.8' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - react: - optional: true + valtio@1.11.2(@types/react@18.2.15)(react@18.2.0): dependencies: - '@types/react': 18.2.15 proxy-compare: 2.5.1 - react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) - dev: false + optionalDependencies: + '@types/react': 18.2.15 + react: 18.2.0 - /vary@1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false + vary@1.1.2: {} - /verror@1.10.0: - resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} - engines: {'0': node >=0.6.0} + verror@1.10.0: dependencies: assert-plus: 1.0.0 core-util-is: 1.0.2 extsprintf: 1.3.0 - dev: true - /viem@2.19.6(typescript@5.4.2): - resolution: {integrity: sha512-7jiuX+ZncPZE8iEzgW/iO7EaAMRJEW8hYeJy9YFTMK34Wa9aWzqOm4lrORgemlsqJ/kpQG4InzhG0jc2HY67FA==} - peerDependencies: - typescript: '>=5.0.4' - peerDependenciesMeta: - typescript: - optional: true + viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10): dependencies: '@adraffy/ens-normalize': 1.10.0 '@noble/curves': 1.4.0 @@ -13490,57 +15520,38 @@ packages: '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 abitype: 1.0.5(typescript@5.4.2) - isows: 1.0.4(ws@8.17.1) - typescript: 5.4.2 + isows: 1.0.4(ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)) webauthn-p256: 0.0.5 - ws: 8.17.1 + ws: 8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.2 transitivePeerDependencies: - bufferutil - utf-8-validate - zod - dev: false - /vlq@1.0.1: - resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} - dev: false + vlq@1.0.1: {} - /void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - dev: false + void-elements@3.1.0: {} - /w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 - dev: true - /w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 - dev: true - /wagmi@2.12.5(@tanstack/react-query@5.28.0)(@types/react@18.2.15)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6): - resolution: {integrity: sha512-+fpSUsVKyGOumguQirtpyMb7dmDP4/ZdwrTqrBc+WZVTwR9S8WdFPParw/BKXVZjF9euJxu1zKsWQSLBeCROfQ==} - peerDependencies: - '@tanstack/react-query': '>=5.0.0' - react: '>=18' - typescript: '>=5.0.4' - viem: 2.x - peerDependenciesMeta: - typescript: - optional: true + wagmi@2.12.5(@tanstack/query-core@5.28.0)(@tanstack/react-query@5.28.0(react@18.2.0))(@types/react@18.2.15)(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)): dependencies: '@tanstack/react-query': 5.28.0(react@18.2.0) - '@wagmi/connectors': 5.1.5(@types/react@18.2.15)(@wagmi/core@2.13.4)(react-dom@18.2.0)(react-native@0.75.1)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) - '@wagmi/core': 2.13.4(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6) + '@wagmi/connectors': 5.1.5(@types/react@18.2.15)(@wagmi/core@2.13.4(@tanstack/query-core@5.28.0)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(react-dom@18.2.0(react@18.2.0))(react-native@0.75.1(@babel/core@7.24.1)(@babel/preset-env@7.25.3(@babel/core@7.24.1))(@types/react@18.2.15)(bufferutil@4.0.8)(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10))(react@18.2.0)(typescript@5.4.2)(utf-8-validate@5.0.10)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)) + '@wagmi/core': 2.13.4(@tanstack/query-core@5.28.0)(@types/react@18.2.15)(react@18.2.0)(typescript@5.4.2)(viem@2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10)) react: 18.2.0 - typescript: 5.4.2 use-sync-external-store: 1.2.0(react@18.2.0) - viem: 2.19.6(typescript@5.4.2) + viem: 2.19.6(bufferutil@4.0.8)(typescript@5.4.2)(utf-8-validate@5.0.10) + optionalDependencies: + typescript: 5.4.2 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -13567,103 +15578,64 @@ packages: - uWebSockets.js - utf-8-validate - zod - dev: false - /walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + walker@1.0.8: dependencies: makeerror: 1.0.12 - /wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + wcwidth@1.0.1: dependencies: defaults: 1.0.4 - dev: false - /webauthn-p256@0.0.5: - resolution: {integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==} + webauthn-p256@0.0.5: dependencies: '@noble/curves': 1.4.0 '@noble/hashes': 1.4.0 - dev: false - /webextension-polyfill@0.10.0: - resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} - dev: false + webextension-polyfill@0.10.0: {} - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false + webidl-conversions@3.0.1: {} - /webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - dev: true + webidl-conversions@7.0.0: {} - /whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 - dev: true - /whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - dev: true - /whatwg-fetch@3.6.20: - resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} - dev: false + whatwg-fetch@3.6.20: {} - /whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - dev: true + whatwg-mimetype@3.0.0: {} - /whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - dev: true + whatwg-mimetype@4.0.0: {} - /whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} + whatwg-url@11.0.0: dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 - dev: true - /whatwg-url@14.0.0: - resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} - engines: {node: '>=18'} + whatwg-url@14.0.0: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 - dev: true - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - dev: false - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 is-boolean-object: 1.1.2 is-number-object: 1.0.7 is-string: 1.0.7 is-symbol: 1.0.4 - dev: true - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} + which-builtin-type@1.1.3: dependencies: function.prototype.name: 1.1.6 has-tostringtag: 1.0.2 @@ -13677,25 +15649,17 @@ packages: which-boxed-primitive: 1.0.2 which-collection: 1.0.2 which-typed-array: 1.1.15 - dev: true - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} + which-collection@1.0.2: dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 is-weakset: 2.0.3 - dev: true - /which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - dev: false + which-module@2.0.1: {} - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} + which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.7 @@ -13703,195 +15667,102 @@ packages: gopd: 1.0.1 has-tostringtag: 1.0.2 - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true + which@2.0.2: dependencies: isexe: 2.0.0 - /wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} + wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: false - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wrappy@1.0.2: {} - /write-file-atomic@2.4.3: - resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + write-file-atomic@2.4.3: dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: false - /write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - dev: true - /ws@6.2.3: - resolution: {integrity: sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + ws@6.2.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: async-limiter: 1.0.1 - dev: false + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 - /ws@7.5.10: - resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true + ws@8.16.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 - /ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false + ws@8.17.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 - /ws@8.18.0: - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: true + ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 - /xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - dev: true + xml-name-validator@4.0.0: {} - /xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - dev: true + xml-name-validator@5.0.0: {} - /xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - dev: true + xmlchars@2.2.0: {} - /xmlhttprequest-ssl@2.0.0: - resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} - engines: {node: '>=0.4.0'} - dev: false + xmlhttprequest-ssl@2.0.0: {} - /xtend@2.1.2: - resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} - engines: {node: '>=0.4'} + xtend@2.1.2: dependencies: object-keys: 0.4.0 - dev: false - /xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - dev: false + xtend@4.0.2: {} - /y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: false + y18n@4.0.3: {} - /y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} + y18n@5.0.8: {} - /yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@3.1.1: {} - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true + yallist@4.0.0: {} - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false + yaml@1.10.2: {} - /yaml@2.5.0: - resolution: {integrity: sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==} - engines: {node: '>= 14'} - hasBin: true - dev: false + yaml@2.5.0: {} - /yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - dev: false - /yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} + yargs-parser@21.1.1: {} - /yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} + yargs@15.4.1: dependencies: cliui: 6.0.0 decamelize: 1.2.0 @@ -13904,11 +15775,8 @@ packages: which-module: 2.0.1 y18n: 4.0.3 yargs-parser: 18.1.3 - dev: false - /yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} + yargs@17.7.2: dependencies: cliui: 8.0.1 escalade: 3.1.2 @@ -13918,38 +15786,18 @@ packages: y18n: 5.0.8 yargs-parser: 21.1.1 - /yauzl@2.10.0: - resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yauzl@2.10.0: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 - dev: true - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: true + yn@3.1.1: {} - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + yocto-queue@0.1.0: {} - /zustand@4.4.1(@types/react@18.2.15)(react@18.2.0): - resolution: {integrity: sha512-QCPfstAS4EBiTQzlaGP1gmorkh/UL1Leaj2tdj+zZCZ/9bm0WS7sI2wnfD5lpOszFqWJ1DcPnGoY8RDL61uokw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true + zustand@4.4.1(@types/react@18.2.15)(react@18.2.0): dependencies: + use-sync-external-store: 1.2.0(react@18.2.0) + optionalDependencies: '@types/react': 18.2.15 react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) - dev: false diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 5115e70..15a9b28 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -93,7 +93,9 @@ }, "ERROR": { "title": "Error", - "message": "An error occurred while fetching the data. Please try again later." + "noApiUrl": "API URL is missing. Please add it in the .env file.", + "networkError": "Network connection error. Please try again later.", + "errorFetchingData": "There was a problem retrieving the data. Please try again later." }, "LOCALES": { "en": "English", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 34d5b66..99d4d91 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -94,7 +94,9 @@ }, "ERROR": { "title": "Error", - "message": "Lo sentimos, algo saliรณ mal. Por favor, intรฉntelo de nuevo mรกs tarde." + "noApiUrl": "No se encontrรณ la URL de la API. Por favor, agrรฉguela en el archivo .env.", + "networkError": "Error de conexiรณn de red. Por favor, intรฉntelo de nuevo mรกs tarde.", + "errorFetchingData": "Lo sentimos, algo saliรณ mal. Por favor, intรฉntelo de nuevo mรกs tarde." }, "LOCALES": { "en": "Inglรฉs", diff --git a/src/__tests__/services.test.ts b/src/__tests__/services.test.ts index 4a342c2..a6f6495 100644 --- a/src/__tests__/services.test.ts +++ b/src/__tests__/services.test.ts @@ -1,7 +1,5 @@ import { expect } from '@jest/globals'; import { fetchEcosystemData, fetchChainData, checkRpcStatus } from '~/utils/services'; -import ecosystemMockData from '~/data/ecosystemMockData.json'; -import chainMockData from '~/data/chainMockData.json'; import { getConfig } from '~/config/'; global.fetch = jest.fn(); @@ -19,11 +17,10 @@ describe('Data Fetching Utils', () => { }); describe('fetchEcosystemData', () => { - it('should return mock data if API_URL is not set', async () => { + it('should throw an error if API_URL is not set', async () => { (getConfig as jest.Mock).mockReturnValue({ API_URL: '' }); - const result = await fetchEcosystemData(); - expect(result).toEqual(ecosystemMockData); + await expect(fetchEcosystemData()).rejects.toThrow('API_URL_NOT_SET'); }); it('should fetch data from the API if API_URL is set', async () => { @@ -44,7 +41,7 @@ describe('Data Fetching Utils', () => { (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); (fetch as jest.Mock).mockRejectedValueOnce(new Error('Fetch failed')); - await expect(fetchEcosystemData()).rejects.toThrow('Fetch failed'); + await expect(fetchEcosystemData()).rejects.toThrow('ERROR_FETCHING_DATA'); expect(fetch).toHaveBeenCalledTimes(1); }); }); @@ -52,11 +49,12 @@ describe('Data Fetching Utils', () => { describe('fetchChainData', () => { const chainId = '1234'; - it('should return mock data if API_URL is not set', async () => { - (getConfig as jest.Mock).mockReturnValue({ API_URL: '' }); + it('should throw an error if fetch fails', async () => { + (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); + (fetch as jest.Mock).mockRejectedValueOnce(new Error('Fetch failed')); - const result = await fetchChainData(chainId); - expect(result).toEqual(chainMockData); + await expect(fetchEcosystemData()).rejects.toThrow('ERROR_FETCHING_DATA'); + expect(fetch).toHaveBeenCalledTimes(1); }); it('should fetch chain data from the API if API_URL is set', async () => { @@ -77,7 +75,7 @@ describe('Data Fetching Utils', () => { (getConfig as jest.Mock).mockReturnValue({ API_URL: mockApiUrl }); (fetch as jest.Mock).mockRejectedValueOnce(new Error('Fetch failed')); - await expect(fetchChainData(chainId)).rejects.toThrow('Fetch failed'); + await expect(fetchChainData(chainId)).rejects.toThrow('ERROR_FETCHING_DATA'); expect(fetch).toHaveBeenCalledTimes(1); }); }); diff --git a/src/config/env.ts b/src/config/env.ts index 5aee8c3..9946606 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -4,10 +4,12 @@ export const getEnv = (): Env => { const NEXT_PUBLIC_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; const NEXT_PUBLIC_API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL; const NEXT_PUBLIC_TESTNET_MODE = process.env.NEXT_PUBLIC_TESTNET_MODE; + const NEXT_PUBLIC_TESTING_MODE = process.env.NEXT_PUBLIC_TESTING_MODE; return { PROJECT_ID: NEXT_PUBLIC_PROJECT_ID as string, API_URL: NEXT_PUBLIC_API_BASE_URL as string, TESTNET_MODE: NEXT_PUBLIC_TESTNET_MODE as string, + TESTING_MODE: NEXT_PUBLIC_TESTING_MODE as string, }; }; diff --git a/src/containers/ErrorContainer/index.tsx b/src/containers/ErrorContainer/index.tsx index 1ab8d59..e2a71a7 100644 --- a/src/containers/ErrorContainer/index.tsx +++ b/src/containers/ErrorContainer/index.tsx @@ -4,13 +4,28 @@ import { useTranslation } from 'next-i18next'; import { STitle } from '~/components'; -export const ErrorContainer = () => { +type ErrorContainerProps = { + errorCode?: string; +}; + +export const ErrorContainer = ({ errorCode }: ErrorContainerProps) => { const { t } = useTranslation(); + const getErrorMessage = () => { + switch (errorCode) { + case 'API_URL_NOT_SET': + return t('ERROR.noApiUrl'); + case 'NETWORK_ERROR': + return t('ERROR.networkError'); + default: + return t('ERROR.errorFetchingData'); + } + }; + return ( <ErrorPageContainer> <STitle>{t('ERROR.title')}</STitle> - <Typography>{t('ERROR.message')}</Typography> + <Typography>{getErrorMessage()}</Typography> </ErrorPageContainer> ); }; diff --git a/src/containers/Header/DesktopHeader.tsx b/src/containers/Header/DesktopHeader.tsx index ae3e0f1..178a1e1 100644 --- a/src/containers/Header/DesktopHeader.tsx +++ b/src/containers/Header/DesktopHeader.tsx @@ -26,9 +26,10 @@ export const DesktopHeader = ({ return ( <StyledHeader> <LogoContainer onClick={goToHome} role='button' aria-label='Navigate to home'> - <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' /> + <Logo src={theme === 'dark' ? LogoDark : LogoLight} alt='ZK Chain Hub' priority /> {TESTNET_MODE === 'true' && <Testnet>Testnet</Testnet>} </LogoContainer> + <SBox> <Gas /> <SearchBar /> @@ -37,6 +38,7 @@ export const DesktopHeader = ({ setValue={handleChangeLanguage} list={Object.values(localesMap)} /> + <SIconButton onClick={changeTheme}> <Icon icon='mode' alt='mode-icon' size={24} /> </SIconButton> diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index b46c96f..dc16fea 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -9,7 +9,7 @@ import { fetchEcosystemData } from '~/utils'; import { ChainDetail } from '~/containers'; import { getConfig } from '~/config'; -const { DEFAULT_LANG, SUPPORTED_LANGUAGES } = getConfig(); +const { DEFAULT_LANG, SUPPORTED_LANGUAGES, API_URL } = getConfig(); interface ChainProps { chain: EcosystemChainData; @@ -33,8 +33,26 @@ const Chain = ({ chain }: InferGetStaticPropsType<typeof getStaticProps>) => { }; export const getStaticPaths: GetStaticPaths = async () => { - const ecosystemData = await fetchEcosystemData(); - const chains = ecosystemData.zkChains; + if (!API_URL) { + console.warn('API URL not set, generating fallback paths.'); + return { + paths: [], + fallback: true, + }; + } + + let ecosystemData; + try { + ecosystemData = await fetchEcosystemData(); + } catch (error) { + console.error('Failed to fetch ecosystem data:', error); + return { + paths: [], + fallback: true, + }; + } + + const chains = ecosystemData.zkChains || []; const paths = SUPPORTED_LANGUAGES.flatMap((locale) => chains.map((chain: EcosystemChainData) => ({ diff --git a/src/pages/error.tsx b/src/pages/error.tsx index 228cef6..1f1013f 100644 --- a/src/pages/error.tsx +++ b/src/pages/error.tsx @@ -8,23 +8,31 @@ import { ErrorContainer } from '~/containers'; const { DEFAULT_LANG, SUPPORTED_LANGUAGES } = getConfig(); -const ErrorPage = () => { +type ErrorPageProps = { + errorCode: string; +}; + +const ErrorPage = ({ errorCode }: ErrorPageProps) => { const { t } = useTranslation(); return ( <> <CustomHead title={t('ERROR.title')} /> - <ErrorContainer /> + <ErrorContainer errorCode={errorCode} /> </> ); }; -export const getStaticProps: GetStaticProps = async ({ locale }) => { +export const getStaticProps: GetStaticProps = async ({ locale, params }) => { const i18Config = await serverSideTranslations(locale || DEFAULT_LANG, ['common'], null, SUPPORTED_LANGUAGES); + // Retrieve error code from params or context + const errorCode = params?.code || 'ERROR_FETCHING_DATA'; + return { props: { ...i18Config, + errorCode, }, }; }; diff --git a/src/providers/DataProvider.tsx b/src/providers/DataProvider.tsx index d6d2186..66a29f2 100644 --- a/src/providers/DataProvider.tsx +++ b/src/providers/DataProvider.tsx @@ -31,6 +31,7 @@ export const DataContext = createContext({} as ContextType); export const DataProvider = ({ children }: DataProps) => { const [selectedChainId, setSelectedChainId] = useState<string>(''); + const [errorCode, setErrorCode] = useState<string | null>(null); const [hasNavigatedToError, setHasNavigatedToError] = useState<boolean>(false); const router = useRouter(); @@ -38,6 +39,7 @@ export const DataProvider = ({ children }: DataProps) => { isLoading: isEcosystemLoading, data: ecosystemData, isError: isEcosystemError, + error: ecosystemError, } = useQuery({ queryKey: ['ecosystem'], queryFn: fetchEcosystemData, @@ -48,6 +50,7 @@ export const DataProvider = ({ children }: DataProps) => { isLoading: isChainLoading, data: chainData, isError: isChainError, + error: chainError, refetch: refetchChainData, } = useQuery({ queryKey: ['chainData', selectedChainId], @@ -58,12 +61,21 @@ export const DataProvider = ({ children }: DataProps) => { const hasError = useMemo(() => isEcosystemError || isChainError, [isEcosystemError, isChainError]); + useEffect(() => { + if (isEcosystemError) { + setErrorCode((ecosystemError as Error)?.message || 'UNKNOWN_ERROR'); + } + if (isChainError) { + setErrorCode((chainError as Error)?.message || 'UNKNOWN_ERROR'); + } + }, [isEcosystemError, isChainError, ecosystemError, chainError]); + const handleNavigationToError = useCallback(() => { - if (hasError && !hasNavigatedToError) { + if (hasError && !hasNavigatedToError && errorCode) { setHasNavigatedToError(true); - router.push('/error'); + router.push(`/error?code=${errorCode}`); } - }, [hasError, hasNavigatedToError, router]); + }, [hasError, hasNavigatedToError, router, errorCode]); useEffect(() => { handleNavigationToError(); diff --git a/src/types/Config.ts b/src/types/Config.ts index 876e3b1..b13339a 100644 --- a/src/types/Config.ts +++ b/src/types/Config.ts @@ -2,6 +2,7 @@ export interface Env { PROJECT_ID: string; API_URL: string; TESTNET_MODE: string; + TESTING_MODE: string; } export type SupportedLanguage = 'en' | 'es'; diff --git a/src/utils/services.ts b/src/utils/services.ts index f542264..bac2148 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -6,22 +6,30 @@ import { ChainData, EcosystemData } from '~/types'; /** * Fetch data from the API or return mock data if API_URL is not set. * @param endpoint - The API endpoint to fetch data from. - * @param mockData - The mock data to return if API_URL is not set. - * @returns The fetched data or mock data. + * @returns The fetched data. */ const fetchData = async (endpoint: string, mockData: EcosystemData | ChainData) => { - const { API_URL } = getConfig(); - const url = `${API_URL}${endpoint}`; + const { API_URL, TESTING_MODE } = getConfig(); + + if (TESTING_MODE) { + return mockData; + } - if (!API_URL) return mockData; + if (!API_URL) { + console.error('API URL is not set. Please set the NEXT_PUBLIC_API_BASE_URL environment variable.'); + throw new Error('API_URL_NOT_SET'); + } + + const url = `${API_URL}${endpoint}`; try { const response = await fetch(url); - if (!response.ok) throw new Error('Network response was not ok'); + if (!response.ok) throw new Error('NETWORK_ERROR'); + return await response.json(); } catch (error) { console.error(`Error fetching data from ${url}:`, error); - throw error; + throw new Error('ERROR_FETCHING_DATA'); } }; From 23139a1e5f0142f5704e6e22b340213c7d978152 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Fri, 6 Sep 2024 09:52:23 -0300 Subject: [PATCH 75/82] feat: docker deployment (#51) --- .dockerignore | 14 ++++++++++++++ Dockerfile | 51 +++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 28 +++++++++++++++++++++++++++ next.config.mjs | 1 + package.json | 4 +++- pnpm-lock.yaml | 3 +++ 6 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..2628355 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,14 @@ +# Ignore all .env files in any directory or subdirectory +**/.env + +# Ignore node_modules and dist directories in any directory or subdirectory +**/node_modules +**/dist + +**/.git +**/*.md +**/cypress +**/.github +.next +!.next/static +!.next/standalone \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..fb70be3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,51 @@ +# Use an official Node.js image as a parent image +FROM node:20 AS build +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable + +# # Install pnpm globally +# RUN npm install -g pnpm + + +# Set the working directory in the container +WORKDIR /app + +# Copy pnpm-lock.yaml and package.json files +COPY package.json pnpm-lock.yaml ./ + +# Install dependencies using pnpm +RUN CI=1 pnpm install --frozen-lockfile + +# Copy the rest of the application code +COPY . . + +# Build the application +RUN pnpm build + +# Use a lighter Node.js image for the final stage +FROM node:20-slim AS ui +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +ENV NODE_ENV=production +RUN corepack enable + +# Set the working directory in the container +WORKDIR /app + +# Copy only necessary files from the build stage +COPY --from=build /app/package.json /app/pnpm-lock.yaml ./ +COPY --from=build /app/public ./public +COPY --from=build /app/.next/standalone ./ +COPY --from=build /app/.next/static ./.next/static + + +# # Install only production dependencies with pnpm +# RUN CI=1 pnpm install --no-frozen-lockfile + +# Expose the port on which the application will run +EXPOSE 5173 +ENV PORT=5173 + +# Specify the command to run the application +CMD ["node", "server.js"] \ No newline at end of file diff --git a/README.md b/README.md index 7af5105..39612e2 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,34 @@ Vercel will automatically deploy your project and provide a live URL. - **[Vercel CLI Documentation](https://vercel.com/docs/cli)**: Find comprehensive information on using the Vercel CLI. - **[Vercel Documentation](https://vercel.com/docs)**: Access general Vercel documentation and guides. +## ๐Ÿณ Docker deployment + +## Prerequisites + +- **Docker**: Ensure that Docker is installed. + +## Deployment Steps + +1. **Build the Docker Image** + + From your project directory, build the Docker image by running the following command: + + ```bash + docker build -t <app-name> . + ``` + +2. **Run the Docker Container** + + After the image is built, run the Docker container with the environment variables. + + ```bash + docker run -p 5173:5173 --env-file .env <app-name> + ``` + +3. **Access your app:** + + http://localhost:5173 + ## Development ### ๐Ÿ’ป Conventional Commits diff --git a/next.config.mjs b/next.config.mjs index 404aa72..430c845 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -5,6 +5,7 @@ const nextConfig = { locales: ['en', 'es'], defaultLocale: 'en', }, + output: 'standalone', }; export default nextConfig; diff --git a/package.json b/package.json index a2ecdbd..5e70ddf 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "prettier:fix": "pnpm run prettier -- --write", "format": "pnpm run prettier:fix && yarn run lint:fix", "format:check": "pnpm run prettier && yarn run lint", - "prepare": "husky install && wonderland-crypto-husky-checks install", + "prepare": "husky install && (is-ci || wonderland-crypto-husky-checks install)", "cypress:open": "cypress open", "cypress:run": "cypress run", "test:e2e": "pnpm cypress run", @@ -42,6 +42,7 @@ "@tanstack/react-query": "5.28.0", "cypress": "13.14.1", "i18next": "23.7.6", + "is-ci": "3.0.1", "next": "14.2.5", "next-i18next": "15.2.0", "react": "18.2.0", @@ -64,6 +65,7 @@ "@types/react-dom": "18.2.7", "@typescript-eslint/eslint-plugin": "6.0.0", "@typescript-eslint/parser": "6.0.0", + "cypress": "13.14.1", "eslint": "8.45.0", "eslint-config-prettier": "9.0.0", "eslint-plugin-import": "2.28.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5314bb8..14fbd57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -44,6 +44,9 @@ importers: i18next: specifier: 23.7.6 version: 23.7.6 + is-ci: + specifier: 3.0.1 + version: 3.0.1 next: specifier: 14.2.5 version: 14.2.5(@babel/core@7.24.1)(babel-plugin-macros@3.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) From 02c23daf905f815ffac0970f6303da4f6ee145f2 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:39:23 -0300 Subject: [PATCH 76/82] fix: remove testing mode (#54) --- .github/workflows/test.yml | 1 - cypress/e2e/navigation.cy.ts | 25 +- cypress/fixtures/nextData.json | 258 ++++++++++++++ src/data/chainMockData.json | 574 ------------------------------- src/data/ecosystemMockData.json | 590 -------------------------------- src/pages/[chain]/index.tsx | 2 +- src/utils/services.ts | 15 +- 7 files changed, 287 insertions(+), 1178 deletions(-) create mode 100644 cypress/fixtures/nextData.json delete mode 100644 src/data/chainMockData.json delete mode 100644 src/data/ecosystemMockData.json diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a81cc28..8122a7f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,7 +20,6 @@ jobs: run: | touch .env echo "NEXT_PUBLIC_API_BASE_URL=${{ secrets.NEXT_PUBLIC_API_BASE_URL }}" >> .env - echo "NEXT_PUBLIC_TESTING_MODE=${{ secrets.NEXT_PUBLIC_TESTING_MODE }}" >> .env - name: run Cypress and Jest uses: cypress-io/github-action@v6 diff --git a/cypress/e2e/navigation.cy.ts b/cypress/e2e/navigation.cy.ts index 028f2d8..0f65967 100644 --- a/cypress/e2e/navigation.cy.ts +++ b/cypress/e2e/navigation.cy.ts @@ -1,6 +1,29 @@ describe('Navigation tests', () => { beforeEach(() => { - Cypress.env('NEXT_PUBLIC_API_BASE_URL', 'NEXT_PUBLIC_TESTING_MODE'); + // Intercept the ecosystem data API call and mock the response using a JSON fixture + cy.fixture('ecosystemMockData.json').then((ecosystemData) => { + cy.intercept('GET', '**/metrics/ecosystem', { + statusCode: 200, + body: ecosystemData, + }).as('fetchEcosystemData'); + }); + + // Intercept the chain data API call and mock the response using a JSON fixture for chainId 324 + cy.fixture('chainMockData.json').then((chainData) => { + cy.intercept('GET', '**/metrics/zkchain/*', { + statusCode: 200, + body: chainData, + }).as('fetchChainData'); + }); + + // Intercept the chain data API call and mock the response using a JSON fixture for chainId 324 + cy.fixture('nextData.json').then((nextData) => { + cy.intercept('GET', '**/_next/data/**/324.json?chain=324', { + statusCode: 200, + body: nextData, + }).as('fetchNextData'); + }); + cy.visit('/'); }); diff --git a/cypress/fixtures/nextData.json b/cypress/fixtures/nextData.json new file mode 100644 index 0000000..15c73f2 --- /dev/null +++ b/cypress/fixtures/nextData.json @@ -0,0 +1,258 @@ +{ + "pageProps": { + "chain": { + "chainId": "324", + "chainType": "Rollup", + "baseToken": { + "name": "Ether", + "symbol": "ETH", + "type": "native", + "contractAddress": null, + "decimals": 18, + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628" + }, + "tvl": "342284477.319083050366894310295", + "metadata": { + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "name": "ZKsyncERA", + "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], + "explorerUrl": "https://explorer.zksync.io/", + "launchDate": 1679626800 + }, + "rpc": false + }, + "_nextI18Next": { + "initialI18nStore": { + "en": { + "common": { + "HEADER": { + "lightMode": "Light mode", + "darkMode": "Dark mode", + "menu": "Menu", + "search": "Search", + "gasPrice": "L1 Gas Price", + "transfer": "ERC-20 Transfer" + }, + "HOME": { + "title": "ZKsync", + "subtitle": "Ecosystem", + "home": "Home", + "LOCKEDASSETS": { + "lockedAssets": "Locked assets", + "others": "Others", + "allTokens": "All tokens" + }, + "DASHBOARD": { + "title": "Chain list", + "chain": "Chain", + "chainId": "Chain ID", + "nativeToken": "Native token", + "tvl": "TVL (L1)", + "type": "Type", + "search": "Search (Chain)", + "noRPC": "No RPC", + "noMetadata": "No Metadata", + "searchResults": "Search results", + "enterSearchTerm": "Enter the name or chain ID", + "notFound": "No results found" + } + }, + "CHAIN": { + "website": "Website", + "explorer": "Explorer", + "launchDate": "Launch date", + "environment": "Environment", + "nativeToken": "Native token", + "addNetwork": "Add network", + "networkAdded": "Network added", + "chainId": "Chain ID", + "CHAININFORMATION": { + "title": "Chain information", + "chainType": "Chain type", + "lastBlock": "Last block", + "lastBlockVerified": "Last block verified", + "transactionsPerSecond": "Transactions per second", + "totalBatchesCommitted": "Total batches committed", + "totalBatchesExecuted": "Total batches executed", + "totalBatchesVerified": "Total batches verified", + "averageBlockTime": "Average block time", + "notAvailable": "Not available" + }, + "TVL": { + "title": "TVL", + "chain": "Chain", + "token": "Token", + "price": "Price", + "tvl": "TVL", + "address": "Contract Address" + }, + "RPC": { + "title": "RPCs", + "subtitle": "Statuses", + "status": "Status", + "statusActive": "Active", + "statusInactive": "Inactive", + "showMore": "Show more", + "showLess": "Show less" + }, + "FEEPARAMS": { + "title": "Fee params", + "batch": "Batch Overhead L1 Gas", + "maxPubData": "Max public data per batch", + "maxGasBatch": "Max Gas per Batch", + "priorityTxMaxPubdata": "Max priority data" + }, + "backButton": "Go back" + }, + "TOKENS": { + "title": "Tokens" + }, + "WALLET": { + "connection": "Connect Wallet", + "connectTooltip": "Connect your wallet to add this network" + }, + "FOOTER": { + "docs": "Documentation", + "github": "GitHub", + "madeWith": "Made with", + "by": "by" + }, + "ERROR": { + "title": "Error", + "noApiUrl": "API URL is missing. Please add it in the .env file.", + "networkError": "Network connection error. Please try again later.", + "errorFetchingData": "There was a problem retrieving the data. Please try again later." + }, + "LOCALES": { + "en": "English", + "es": "Spanish" + } + } + }, + "es": { + "common": { + "HEADER": { + "lightMode": "Modo claro", + "darkMode": "Modo oscuro", + "menu": "Menรบ", + "search": "Bรบsqueda", + "gasPrice": "Precio del gas L1", + "transfer": "Transferencia ERC-20" + }, + "HOME": { + "title": "ZKsync", + "subtitle": "Ecosistema", + "home": "Inicio", + "LOCKEDASSETS": { + "lockedAssets": "Activos bloqueados", + "others": "Otros", + "allTokens": "Todos los tokens" + }, + "DASHBOARD": { + "title": "Lista de cadenas", + "chain": "Cadena", + "chainId": "ID de cadena", + "nativeToken": "Token nativo", + "tvl": "TVL (L1)", + "type": "Tipo", + "search": "Buscar (Cadena)", + "noRPC": "Sin RPC", + "noMetadata": "Sin Metadata", + "searchResults": "Resultados de la bรบsqueda", + "enterSearchTerm": "Ingrese el nombre o ID de la cadena", + "notFound": "No se encontraron resultados" + } + }, + "CHAIN": { + "website": "Sitio web", + "explorer": "Explorador", + "launchDate": "Fecha de lanzamiento", + "environment": "Entorno", + "nativeToken": "Token nativo", + "addNetwork": "Agregar red", + "networkAdded": "Red agregada", + "chainId": "ID de cadena", + "CHAININFORMATION": { + "title": "Informaciรณn de la cadena", + "chainType": "Tipo de cadena", + "lastBlock": "รšltimo bloque", + "lastBlockVerified": "รšltimo bloque verificado", + "transactionsPerSecond": "Transacciones por segundo", + "totalBatchesCommitted": "Total de lotes comprometidos", + "totalBatchesExecuted": "Total de lotes ejecutados", + "totalBatchesVerified": "Total de lotes verificados", + "averageBlockTime": "Tiempo promedio de bloque", + "notAvailable": "No disponible" + }, + "TVL": { + "title": "TVL", + "chain": "Cadena", + "price": "Precio", + "token": "Token", + "tvl": "TVL", + "address": "Direcciรณn del contrato" + }, + "RPC": { + "title": "RPCs", + "subtitle": "Estados", + "status": "Estado", + "statusActive": "Activo", + "statusInactive": "Inactivo", + "showMore": "Mostrar mรกs", + "showLess": "Mostrar menos" + }, + "FEEPARAMS": { + "title": "Parรกmetros de gas", + "batch": "Sobrecarga de lote L1 Gas", + "maxPubData": "Mรกximos datos pรบblicos por lote", + "maxGasBatch": "Mรกximo gas por lote", + "priorityTxMaxPubdata": "Maximos datos de prioridad" + }, + "backButton": "Volver" + }, + "TOKENS": { + "title": "Tokens" + }, + "FOOTER": { + "docs": "Documentaciรณn", + "github": "GitHub", + "madeWithLove": "Hecho con", + "by": "por" + }, + "WALLET": { + "connection": "Conectar Wallet", + "connectTooltip": "Conecta tu wallet para agregar esta red" + }, + "ERROR": { + "title": "Error", + "noApiUrl": "No se encontrรณ la URL de la API. Por favor, agrรฉguela en el archivo .env.", + "networkError": "Error de conexiรณn de red. Por favor, intรฉntelo de nuevo mรกs tarde.", + "errorFetchingData": "Lo sentimos, algo saliรณ mal. Por favor, intรฉntelo de nuevo mรกs tarde." + }, + "LOCALES": { + "en": "Inglรฉs", + "es": "Espaรฑol" + } + } + } + }, + "initialLocale": "en", + "ns": ["common"], + "userConfig": { + "i18n": { + "locales": ["en", "es"], + "defaultLocale": "en" + }, + "localePath": "/*/public/locales", + "default": { + "i18n": { + "locales": ["en", "es"], + "defaultLocale": "en" + }, + "localePath": "/*/public/locales" + } + } + } + }, + "__N_SSG": true +} diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json deleted file mode 100644 index 1d3e857..0000000 --- a/src/data/chainMockData.json +++ /dev/null @@ -1,574 +0,0 @@ -{ - "chainType": "Rollup", - "tvl": [ - { - "amount": "117911.456355407359400867", - "amountUsd": "305202013.6303364090732041428", - "price": "2588.4", - "name": "Ethereum", - "symbol": "ETH", - "contractAddress": null, - "type": "native", - "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "decimals": 18 - }, - { - "amount": "55480856.378207", - "amountUsd": "55536337.234585207", - "price": "1.001", - "name": "USDC", - "symbol": "USDC", - "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", - "type": "erc20", - "decimals": 6 - }, - { - "amount": "998459864.823799773445941598", - "amountUsd": "10983058.513061797507905357578", - "price": "0.011", - "name": "Koi", - "symbol": "KOI", - "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", - "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "9472627.999218", - "amountUsd": "9482100.627217218", - "price": "1.001", - "name": "Tether USD", - "symbol": "USDT", - "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", - "type": "erc20", - "decimals": 6 - }, - { - "amount": "109.13401208", - "amountUsd": "6320997.7803987076", - "price": "57919.595", - "name": "Wrapped BTC", - "symbol": "WBTC", - "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", - "type": "erc20", - "decimals": 8 - }, - { - "amount": "132452368.754496583511107126", - "amountUsd": "1854333.162562952169155499764", - "price": "0.014", - "name": "HYCO", - "symbol": "HYCO", - "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "47964958.588748853386740337", - "amountUsd": "1007264.130363725921121547077", - "price": "0.021", - "name": "Idexo Token", - "symbol": "IDO", - "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", - "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "257.706060883787096756", - "amountUsd": "743295.406461645912283008656", - "price": "2884.276", - "name": "Rocket Pool ETH", - "symbol": "rETH", - "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", - "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "4597086.058830655172811988", - "amountUsd": "717145.425177582206958670128", - "price": "0.156", - "name": "DEXTF Token", - "symbol": "DEXTF", - "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "709393.663223743840780868", - "amountUsd": "709393.663223743840780868", - "price": "1", - "name": "Dai Stablecoin", - "symbol": "DAI", - "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "3611649.325725586386626848", - "amountUsd": "278096.998080870151770267296", - "price": "0.077", - "name": "GOVI", - "symbol": "GOVI", - "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "162910.961709234801235986", - "amountUsd": "162748.050747525566434750014", - "price": "0.999", - "name": "LUSD Stablecoin", - "symbol": "LUSD", - "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "769116.258069049173770643", - "amountUsd": "123058.60129104786780330288", - "price": "0.16", - "name": "Symbiosis", - "symbol": "SIS", - "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "34.07328120799622273", - "amountUsd": "94955.28377731904151907308", - "price": "2786.796", - "name": "Coinbase Wrapped Staked ETH", - "symbol": "cbETH", - "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", - "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1748294.875759738167409463", - "amountUsd": "52448.84627279214502228389", - "price": "0.03", - "name": "ZKBase", - "symbol": "ZKB", - "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "70230.481253590057712656", - "amountUsd": "42138.2887521540346275936", - "price": "0.6", - "name": "DeversiFi Token", - "symbol": "DVF", - "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", - "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "290.508016952", - "amountUsd": "41502.265809779672", - "price": "142.861", - "name": "Wrapped SOL (Wormhole)", - "symbol": "SOL", - "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", - "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", - "type": "erc20", - "decimals": 9 - }, - { - "amount": "4028.076528447", - "amountUsd": "26899.495056969066", - "price": "6.678", - "name": "Wrapped TON Coin", - "symbol": "TONCOIN", - "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", - "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", - "type": "erc20", - "decimals": 9 - }, - { - "amount": "23546.536039530998897252", - "amountUsd": "23570.082575570529896149252", - "price": "1.001", - "name": "Curve.Fi USD Stablecoin", - "symbol": "crvUSD", - "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", - "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "8.989236054015567327", - "amountUsd": "23241.957473210977822112964", - "price": "2585.532", - "name": "Wrapped Ether", - "symbol": "WETH", - "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "6450474.040573841973953155", - "amountUsd": "19351.422121721525921859465", - "price": "0.003", - "name": "LSD Coin", - "symbol": "LSD", - "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", - "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "5.423689884062204153", - "amountUsd": "16492.19348875982852231781", - "price": "3040.77", - "name": "Wrapped liquid staked Ether 2.0", - "symbol": "wstETH", - "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "34056.984148728150579544", - "amountUsd": "13248.166833855250575442616", - "price": "0.389", - "name": "Bella", - "symbol": "BEL", - "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "46220.536588230241212891", - "amountUsd": "11416.472537292869579584077", - "price": "0.247", - "name": "1INCH Token", - "symbol": "1INCH", - "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "563082.288758156473620986", - "amountUsd": "9572.398908888660051556762", - "price": "0.017", - "name": "Deri", - "symbol": "DERI", - "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "4974.854892108430805034", - "amountUsd": "7477.206902838971499966102", - "price": "1.503", - "name": "Worldcoin", - "symbol": "WLD", - "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", - "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "43034.765060388679856659", - "amountUsd": "7401.979590386852935345348", - "price": "0.172", - "name": "Maverick Token", - "symbol": "MAV", - "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", - "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1267111.79536025946087647", - "amountUsd": "6335.55897680129730438235", - "price": "0.005", - "name": "ZigZag", - "symbol": "ZZ", - "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", - "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.1", - "amountUsd": "5807.2618", - "price": "58072.618", - "name": "tBTC v2", - "symbol": "tBTC", - "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", - "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1.607308526702602644", - "amountUsd": "4229.765794625615173705452", - "price": "2631.583", - "name": "rsETH", - "symbol": "rsETH", - "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "35.167061181353626164", - "amountUsd": "3811.335756712743296401992", - "price": "108.378", - "name": "Aave Token", - "symbol": "AAVE", - "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "312.082999060002117307", - "amountUsd": "3186.679503401681619821777", - "price": "10.211", - "name": "ChainLink Token", - "symbol": "LINK", - "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", - "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "154.058620754243125866", - "amountUsd": "2913.402577083491753251926", - "price": "18.911", - "name": "Metaverse Index", - "symbol": "MVI", - "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", - "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "33", - "amountUsd": "1845.129", - "price": "55.913", - "name": "Tellor Tributes", - "symbol": "TRB", - "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.639944048220845643", - "amountUsd": "1680.494350516037100209286", - "price": "2626.002", - "name": "Renzo Restaked ETH", - "symbol": "Renzo Restaked ETH", - "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", - "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "4093.979328418030008295", - "amountUsd": "1637.591731367212003318", - "price": "0.4", - "name": "Matic Token", - "symbol": "MATIC", - "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1164511.592541489082720882", - "amountUsd": "1164.511592541489082720882", - "price": "0.001", - "name": "Fringe", - "symbol": "FRIN", - "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "132132.766491", - "amountUsd": "1057.062131928", - "price": "0.008", - "name": "Changer", - "symbol": "CNG", - "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", - "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "5985.542511355987510812", - "amountUsd": "885.860291680686151600176", - "price": "0.148", - "name": "WOO", - "symbol": "WOO", - "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "134908.179074505869136306", - "amountUsd": "674.54089537252934568153", - "price": "0.005", - "name": "Furucombo", - "symbol": "COMBO", - "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "51689.739780035047575291", - "amountUsd": "620.276877360420570903492", - "price": "0.012", - "name": "Beam", - "symbol": "BEAM", - "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", - "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.201", - "amountUsd": "540.892809", - "price": "2691.009", - "name": "mETH", - "symbol": "mETH", - "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "42.412842071038840242", - "amountUsd": "441.263208907088093877768", - "price": "10.404", - "name": "Rocket Pool", - "symbol": "RPL", - "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", - "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "97739", - "amountUsd": "293.217", - "price": "0.003", - "name": "Bonsai3", - "symbol": "SEED", - "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.000014104615563706", - "amountUsd": "0.000004922510831733394", - "price": "0.349", - "name": "Storj", - "symbol": "STORJ", - "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", - "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "15945307297.038027211009518403", - "amountUsd": "0", - "price": "0", - "name": "Pepe", - "symbol": "PEPE", - "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", - "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1073815923.25847686794945247", - "amountUsd": "0", - "price": "0", - "name": "SHIBA INU", - "symbol": "SHIB", - "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", - "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.048392888467075907", - "amountUsd": "0", - "price": "0", - "name": "Syncus", - "symbol": "SYNC", - "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "10000100", - "amountUsd": "0", - "price": "0", - "name": "XWG", - "symbol": "XWG", - "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", - "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", - "type": "erc20", - "decimals": 18 - } - ], - "baseToken": { - "name": "Ethereum", - "symbol": "ETH", - "contractAddress": null, - "coingeckoId": "ethereum", - "type": "native", - "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "decimals": 18 - }, - "batchesInfo": { "commited": "490885", "verified": "490883", "executed": "490839" }, - "feeParams": { - "batchOverheadL1Gas": 1000000, - "maxL2GasPerBatch": 80000000, - "maxPubdataPerBatch": 120000, - "minimalL2GasPrice": "250000000", - "priorityTxMaxPubdata": 99000 - }, - "metadata": { - "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", - "name": "ZKsyncERA", - "publicRpcs": [ - "https://mainnet.era.zksync.io", - "https://zksync.drpc.org", - "https://zksync.meowrpc.com", - "https://invalidRpc.com", - "https://extraRpc.com" - ], - "explorerUrl": "https://explorer.zksync.io/", - "launchDate": 1679626800 - } -} diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json deleted file mode 100644 index d2c7826..0000000 --- a/src/data/ecosystemMockData.json +++ /dev/null @@ -1,590 +0,0 @@ -{ - "l1Tvl": [ - { - "amount": "118306.55939191423985395", - "amountUsd": "300833113.49886311078510011665", - "price": "2542.827", - "name": "Ethereum", - "symbol": "ETH", - "contractAddress": null, - "type": "native", - "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "decimals": 18 - }, - { - "amount": "56310048.030096", - "amountUsd": "56366358.078126096", - "price": "1.001", - "name": "USDC", - "symbol": "USDC", - "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", - "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", - "type": "erc20", - "decimals": 6 - }, - { - "amount": "998459864.823799773445941598", - "amountUsd": "11981518.377885597281351299176", - "price": "0.012", - "name": "Koi", - "symbol": "KOI", - "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", - "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "9472627.999218", - "amountUsd": "9482100.627217218", - "price": "1.001", - "name": "Tether USD", - "symbol": "USDT", - "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", - "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", - "type": "erc20", - "decimals": 6 - }, - { - "amount": "113.67749192", - "amountUsd": "6457843.93470259472", - "price": "56808.466", - "name": "Wrapped BTC", - "symbol": "WBTC", - "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", - "type": "erc20", - "decimals": 8 - }, - { - "amount": "132452368.754496583511107126", - "amountUsd": "1721880.793808455585644392638", - "price": "0.013", - "name": "HYCO", - "symbol": "HYCO", - "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "47964958.588748853386740337", - "amountUsd": "1007264.130363725921121547077", - "price": "0.021", - "name": "Idexo Token", - "symbol": "IDO", - "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", - "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "257.706060883787096756", - "amountUsd": "730177.652550539381483934744", - "price": "2833.374", - "name": "Rocket Pool ETH", - "symbol": "rETH", - "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", - "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "4597086.058830655172811988", - "amountUsd": "717145.425177582206958670128", - "price": "0.156", - "name": "DEXTF Token", - "symbol": "DEXTF", - "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "709393.663223743840780868", - "amountUsd": "709393.663223743840780868", - "price": "1", - "name": "Dai Stablecoin", - "symbol": "DAI", - "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", - "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "3611649.325725586386626848", - "amountUsd": "274485.348755144565383640448", - "price": "0.076", - "name": "GOVI", - "symbol": "GOVI", - "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "162910.961709234801235986", - "amountUsd": "162585.139785816331633514028", - "price": "0.998", - "name": "LUSD Stablecoin", - "symbol": "LUSD", - "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "769116.258069049173770643", - "amountUsd": "123827.717549116916977073523", - "price": "0.161", - "name": "Symbiosis", - "symbol": "SIS", - "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "34.07328120799622273", - "amountUsd": "93326.64908213923806502454", - "price": "2738.998", - "name": "Coinbase Wrapped Staked ETH", - "symbol": "cbETH", - "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", - "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1748294.875759738167409463", - "amountUsd": "54197.141148551883189693353", - "price": "0.031", - "name": "ZKBase", - "symbol": "ZKB", - "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "70230.481253590057712656", - "amountUsd": "42138.2887521540346275936", - "price": "0.6", - "name": "DeversiFi Token", - "symbol": "DVF", - "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", - "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "290.508016952", - "amountUsd": "40900.62370667208", - "price": "140.79", - "name": "Wrapped SOL (Wormhole)", - "symbol": "SOL", - "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", - "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", - "type": "erc20", - "decimals": 9 - }, - { - "amount": "4028.076528447", - "amountUsd": "26339.592419514933", - "price": "6.539", - "name": "Wrapped TON Coin", - "symbol": "TONCOIN", - "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", - "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", - "type": "erc20", - "decimals": 9 - }, - { - "amount": "23546.536039530998897252", - "amountUsd": "23570.082575570529896149252", - "price": "1.001", - "name": "Curve.Fi USD Stablecoin", - "symbol": "crvUSD", - "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", - "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "8.989236054015567327", - "amountUsd": "22847.294053495478354188356", - "price": "2541.628", - "name": "Wrapped Ether", - "symbol": "WETH", - "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "6450474.040573841973953155", - "amountUsd": "19351.422121721525921859465", - "price": "0.003", - "name": "LSD Coin", - "symbol": "LSD", - "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", - "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "5.423689884062204153", - "amountUsd": "16213.876842359176516206615", - "price": "2989.455", - "name": "Wrapped liquid staked Ether 2.0", - "symbol": "wstETH", - "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "34056.984148728150579544", - "amountUsd": "13009.767944814153521385808", - "price": "0.382", - "name": "Bella", - "symbol": "BEL", - "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "46220.536588230241212891", - "amountUsd": "11324.031464116409097158295", - "price": "0.245", - "name": "1INCH Token", - "symbol": "1INCH", - "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "563082.288758156473620986", - "amountUsd": "9009.316620130503577935776", - "price": "0.016", - "name": "Deri", - "symbol": "DERI", - "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "43034.765060388679856659", - "amountUsd": "7315.91006026607557563203", - "price": "0.17", - "name": "Maverick Token", - "symbol": "MAV", - "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", - "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "4874.863543072452577322", - "amountUsd": "7244.047225005664529900492", - "price": "1.486", - "name": "Worldcoin", - "symbol": "WLD", - "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", - "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1267111.79536025946087647", - "amountUsd": "6335.55897680129730438235", - "price": "0.005", - "name": "ZigZag", - "symbol": "ZZ", - "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", - "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.1", - "amountUsd": "5675.4499", - "price": "56754.499", - "name": "tBTC v2", - "symbol": "tBTC", - "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", - "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1.607308526702602644", - "amountUsd": "4156.075520601880950285984", - "price": "2585.736", - "name": "rsETH", - "symbol": "rsETH", - "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "35.167061181353626164", - "amountUsd": "3755.806967107385920689036", - "price": "106.799", - "name": "Aave Token", - "symbol": "AAVE", - "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "312.082999060002117307", - "amountUsd": "3143.299966532341325516104", - "price": "10.072", - "name": "ChainLink Token", - "symbol": "LINK", - "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", - "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "154.058620754243125866", - "amountUsd": "2615.91538040704827720468", - "price": "16.98", - "name": "Metaverse Index", - "symbol": "MVI", - "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", - "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "33", - "amountUsd": "1821.369", - "price": "55.193", - "name": "Tellor Tributes", - "symbol": "TRB", - "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.639944048220845643", - "amountUsd": "1651.358977888638439774782", - "price": "2580.474", - "name": "Renzo Restaked ETH", - "symbol": "Renzo Restaked ETH", - "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", - "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "4093.979328418030008295", - "amountUsd": "1633.497752038793973309705", - "price": "0.399", - "name": "Matic Token", - "symbol": "MATIC", - "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "132132.766491", - "amountUsd": "1189.194898419", - "price": "0.009", - "name": "Changer", - "symbol": "CNG", - "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", - "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1164511.592541489082720882", - "amountUsd": "1164.511592541489082720882", - "price": "0.001", - "name": "Fringe", - "symbol": "FRIN", - "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "5985.542511355987510812", - "amountUsd": "867.90366414661818906774", - "price": "0.145", - "name": "WOO", - "symbol": "WOO", - "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", - "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "134908.179074505869136306", - "amountUsd": "674.54089537252934568153", - "price": "0.005", - "name": "Furucombo", - "symbol": "COMBO", - "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", - "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "51689.739780035047575291", - "amountUsd": "620.276877360420570903492", - "price": "0.012", - "name": "Beam", - "symbol": "BEAM", - "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", - "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.201", - "amountUsd": "532.432317", - "price": "2648.917", - "name": "mETH", - "symbol": "mETH", - "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "42.412842071038840242", - "amountUsd": "442.15387859057990952285", - "price": "10.425", - "name": "Rocket Pool", - "symbol": "RPL", - "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", - "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "97739", - "amountUsd": "293.217", - "price": "0.003", - "name": "Bonsai3", - "symbol": "SEED", - "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.000014104615563706", - "amountUsd": "0.000004950720062860806", - "price": "0.351", - "name": "Storj", - "symbol": "STORJ", - "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", - "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "15945307297.038027211009518403", - "amountUsd": "0", - "price": "0", - "name": "Pepe", - "symbol": "PEPE", - "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", - "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "1073815923.25847686794945247", - "amountUsd": "0", - "price": "0", - "name": "SHIBA INU", - "symbol": "SHIB", - "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", - "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "0.048392888467075907", - "amountUsd": "0", - "price": "0", - "name": "Syncus", - "symbol": "SYNC", - "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", - "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", - "type": "erc20", - "decimals": 18 - }, - { - "amount": "10000100", - "amountUsd": "0", - "price": "0", - "name": "XWG", - "symbol": "XWG", - "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", - "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", - "type": "erc20", - "decimals": 18 - } - ], - "ethGasInfo": { "gasPrice": "2811768091", "erc20Transfer": "34853", "ethTransfer": "21000", "ethPrice": "2609.988" }, - "zkChains": [ - { - "chainId": "324", - "chainType": "Rollup", - "baseToken": { - "name": "Ethereum", - "symbol": "ETH", - "contractAddress": null, - "coingeckoId": "ethereum", - "type": "native", - "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "decimals": 18 - }, - "tvl": "389188998.253667604685659703935", - "metadata": { - "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", - "name": "ZKsyncERA", - "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], - "explorerUrl": "https://explorer.zksync.io/", - "launchDate": 1679626800 - }, - "rpc": false - }, - { - "chainId": "388", - "chainType": "Rollup", - "baseToken": { - "name": "Ethereum", - "symbol": "ETH", - "contractAddress": null, - "coingeckoId": "ethereum", - "type": "native", - "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", - "decimals": 18 - }, - "tvl": "1802056.74192740728", - "metadata": { - "iconUrl": "https://s3.coinmarketcap.com/static-gravity/image/84e1ec1257dd4a6da6ee5584338a2460.jpeg", - "name": "Cronos", - "publicRpcs": ["https://mainnet.zkevm.cronos.org"], - "explorerUrl": "https://explorer.zkevm.cronos.org/", - "launchDate": 1679626800 - }, - "rpc": false - } - ] -} diff --git a/src/pages/[chain]/index.tsx b/src/pages/[chain]/index.tsx index dc16fea..4859491 100644 --- a/src/pages/[chain]/index.tsx +++ b/src/pages/[chain]/index.tsx @@ -19,7 +19,7 @@ const Chain = ({ chain }: InferGetStaticPropsType<typeof getStaticProps>) => { const { setSelectedChainId, refetchChainData } = useData(); useEffect(() => { - if (chain.chainId) { + if (chain?.chainId) { setSelectedChainId(chain.chainId); } }, [chain?.chainId, setSelectedChainId, refetchChainData]); diff --git a/src/utils/services.ts b/src/utils/services.ts index bac2148..4320011 100644 --- a/src/utils/services.ts +++ b/src/utils/services.ts @@ -1,19 +1,12 @@ import { getConfig } from '~/config'; -import ecosystemMockData from '~/data/ecosystemMockData.json'; -import chainMockData from '~/data/chainMockData.json'; -import { ChainData, EcosystemData } from '~/types'; /** * Fetch data from the API or return mock data if API_URL is not set. * @param endpoint - The API endpoint to fetch data from. * @returns The fetched data. */ -const fetchData = async (endpoint: string, mockData: EcosystemData | ChainData) => { - const { API_URL, TESTING_MODE } = getConfig(); - - if (TESTING_MODE) { - return mockData; - } +const fetchData = async (endpoint: string) => { + const { API_URL } = getConfig(); if (!API_URL) { console.error('API URL is not set. Please set the NEXT_PUBLIC_API_BASE_URL environment variable.'); @@ -38,7 +31,7 @@ const fetchData = async (endpoint: string, mockData: EcosystemData | ChainData) * @returns The ecosystem data. */ export const fetchEcosystemData = async () => { - return fetchData('/metrics/ecosystem', ecosystemMockData); + return fetchData('/metrics/ecosystem'); }; /** @@ -47,7 +40,7 @@ export const fetchEcosystemData = async () => { * @returns The chain data. */ export const fetchChainData = async (chainId: string) => { - return fetchData(`/metrics/zkchain/${chainId}`, chainMockData); + return fetchData(`/metrics/zkchain/${chainId}`); }; /** From 650ec314508fc4e1d3d876bee803cf385482f896 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:43:28 -0300 Subject: [PATCH 77/82] fix: footer styling height (#56) --- src/containers/ChainDetail/index.tsx | 2 -- src/containers/Dashboard/index.tsx | 3 --- src/containers/Landing/index.tsx | 2 -- src/containers/SearchPage/index.tsx | 26 ++++++++++++++++++++++++++ src/containers/Tokens/index.tsx | 2 -- src/containers/index.ts | 1 + src/pages/search/index.tsx | 4 ++-- 7 files changed, 29 insertions(+), 11 deletions(-) create mode 100644 src/containers/SearchPage/index.tsx diff --git a/src/containers/ChainDetail/index.tsx b/src/containers/ChainDetail/index.tsx index 05a7ad6..c843e44 100644 --- a/src/containers/ChainDetail/index.tsx +++ b/src/containers/ChainDetail/index.tsx @@ -34,9 +34,7 @@ export const ChainContainer = styled(Box)(({ theme }) => ({ gap: '4rem', marginTop: '4rem', marginBottom: '4rem', - minHeight: 'calc(100vh - 19rem)', [theme.breakpoints.down('md')]: { padding: '0 1rem', - minHeight: 'calc(100vh - 23rem)', }, })); diff --git a/src/containers/Dashboard/index.tsx b/src/containers/Dashboard/index.tsx index 5f7e2ad..0b16d10 100644 --- a/src/containers/Dashboard/index.tsx +++ b/src/containers/Dashboard/index.tsx @@ -49,13 +49,10 @@ const DashboardContainer = styled('section')(({ theme }) => { return { width: '100%', - minHeight: 'calc(100vh - 19rem)', ...(isSearch && { padding: '0 7rem', - minHeight: 'calc(100vh - 11rem)', [theme.breakpoints.down('md')]: { padding: '0 1rem', - minHeight: 'calc(100vh - 23rem)', }, }), }; diff --git a/src/containers/Landing/index.tsx b/src/containers/Landing/index.tsx index 564e8d6..bc9172a 100644 --- a/src/containers/Landing/index.tsx +++ b/src/containers/Landing/index.tsx @@ -32,9 +32,7 @@ const LandingContainer = styled('main')(({ theme }) => ({ gap: '4rem', marginTop: '4rem', marginBottom: '4rem', - minHeight: 'calc(100vh - 19rem)', [theme.breakpoints.down('md')]: { padding: '0 1rem', - minHeight: 'calc(100vh - 23rem)', }, })); diff --git a/src/containers/SearchPage/index.tsx b/src/containers/SearchPage/index.tsx new file mode 100644 index 0000000..62dbf03 --- /dev/null +++ b/src/containers/SearchPage/index.tsx @@ -0,0 +1,26 @@ +import { styled } from '@mui/material/styles'; + +import { Dashboard } from '~/containers'; + +export const SearchPage = () => { + return ( + <SearchContainer> + <Dashboard /> + </SearchContainer> + ); +}; + +const SearchContainer = styled('main')(({ theme }) => ({ + display: 'flex', + flexDirection: 'column', + padding: '0 7rem', + alignItems: 'center', + justifyContent: 'center', + width: '100%', + minHeight: 'calc(100vh - 15rem)', + marginBottom: '4rem', + [theme.breakpoints.down('md')]: { + padding: '0 1rem', + minHeight: 'calc(100vh - 23rem)', + }, +})); diff --git a/src/containers/Tokens/index.tsx b/src/containers/Tokens/index.tsx index 9aa1969..565a56a 100644 --- a/src/containers/Tokens/index.tsx +++ b/src/containers/Tokens/index.tsx @@ -29,9 +29,7 @@ const TokensContainer = styled('main')(({ theme }) => ({ gap: '4rem', marginTop: '4rem', marginBottom: '4rem', - minHeight: 'calc(100vh - 19rem)', [theme.breakpoints.down('md')]: { padding: '0 1rem', - minHeight: 'calc(100vh - 23rem)', }, })); diff --git a/src/containers/index.ts b/src/containers/index.ts index 93640e1..342d6c1 100644 --- a/src/containers/index.ts +++ b/src/containers/index.ts @@ -9,3 +9,4 @@ export * from './ChainDetail/ChainDescription'; export * from './ChainDetail/ChainMetadata'; export * from './Tokens'; export * from './ErrorContainer'; +export * from './SearchPage'; diff --git a/src/pages/search/index.tsx b/src/pages/search/index.tsx index 9ffc036..1c4e60e 100644 --- a/src/pages/search/index.tsx +++ b/src/pages/search/index.tsx @@ -4,7 +4,7 @@ import { GetStaticProps } from 'next'; import { useTranslation } from 'next-i18next'; import { CustomHead } from '~/components'; -import { Dashboard } from '~/containers'; +import { SearchPage } from '~/containers'; import { getConfig } from '~/config'; import { useSearchContext } from '~/hooks'; @@ -24,7 +24,7 @@ const Search = () => { return ( <> <CustomHead title={t('HEADER.search')} /> - <Dashboard /> + <SearchPage /> </> ); }; From 69e6438c0e98cd3cc9b5894a06681d138f9a7ed9 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:44:33 -0300 Subject: [PATCH 78/82] fix: tvl table row cursor (#55) --- src/components/ChainTable.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index 41af2ed..ca45ecb 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -59,7 +59,7 @@ export const ChainTable = ({ chains }: TableProps) => { <STableBody> {chains?.map((data, index) => { return ( - <STableBodyRow + <STableBodyRowLink key={index} onClick={() => handleChainNavigation(data.chainId)} onKeyDown={(event) => { @@ -96,7 +96,7 @@ export const ChainTable = ({ chains }: TableProps) => { <STableCell sx={{ width: '10%' }}>{formatDataNumber(data.tvl, 0, true)}</STableCell> <STableCell sx={{ width: '10%' }}>{data.chainType}</STableCell> - </STableBodyRow> + </STableBodyRowLink> ); })} </STableBody> @@ -150,7 +150,17 @@ export const STableRow = styled(TableRow)(() => { }; }); -export const STableBodyRow = styled(TableRow)(({ theme }) => { +export const STableBodyRow = styled(TableRow)(() => { + const { currentTheme } = useCustomTheme(); + return { + '&:not(:last-child)': { + border: currentTheme.border, + }, + transition: currentTheme.transition, + }; +}); + +export const STableBodyRowLink = styled(TableRow)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { cursor: 'pointer', From 4221914b28c46f61312c4269debff2eaf51ff85e Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 10 Sep 2024 15:23:25 -0300 Subject: [PATCH 79/82] docs: remove testing mode var (#57) --- .env.example | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.env.example b/.env.example index 89f0719..c0afc18 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,3 @@ NEXT_PUBLIC_API_BASE_URL= # Example: https://api.example.com NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect -NEXT_PUBLIC_TESTNET_MODE= # true or false -NEXT_PUBLIC_TESTING_MODE= # true or false \ No newline at end of file +NEXT_PUBLIC_TESTNET_MODE= # true or false \ No newline at end of file From 1d853a7786bbb2dfc3ace0873e84da51d57e5095 Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:00:57 -0300 Subject: [PATCH 80/82] fix: misc fixes (#58) - Copy to clipboard - RPC dynamic grid - remove testing_mode vars --- cypress/cypress.env.json | 3 +- public/locales/en/common.json | 2 + public/locales/es/common.json | 3 +- src/components/ChainTable.tsx | 5 +- src/components/RPC.tsx | 54 ++- src/components/Tooltip.tsx | 14 + src/components/index.ts | 1 + src/config/env.ts | 2 - src/containers/Tokens/TokensTable.tsx | 25 +- src/data/chainMockData.json | 574 +++++++++++++++++++++++++ src/data/ecosystemMockData.json | 590 ++++++++++++++++++++++++++ src/hooks/index.ts | 1 + src/hooks/useCopyToClipboard.ts | 47 ++ src/types/Config.ts | 1 - 14 files changed, 1297 insertions(+), 25 deletions(-) create mode 100644 src/components/Tooltip.tsx create mode 100644 src/data/chainMockData.json create mode 100644 src/data/ecosystemMockData.json create mode 100644 src/hooks/useCopyToClipboard.ts diff --git a/cypress/cypress.env.json b/cypress/cypress.env.json index f45bb1d..ac9e827 100644 --- a/cypress/cypress.env.json +++ b/cypress/cypress.env.json @@ -1,4 +1,3 @@ { - "NEXT_PUBLIC_API_BASE_URL": "http://mock-api:3000", - "NEXT_PUBLIC_TESTING_MODE": "true" + "NEXT_PUBLIC_API_BASE_URL": "http://mock-api:3000" } diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 15a9b28..464dd5e 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -11,6 +11,8 @@ "title": "ZKsync", "subtitle": "Ecosystem", "home": "Home", + "copy": "Copy", + "copied": "Copied!", "LOCKEDASSETS": { "lockedAssets": "Locked assets", "others": "Others", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 99d4d91..3e38891 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -10,8 +10,9 @@ "HOME": { "title": "ZKsync", "subtitle": "Ecosistema", - "home": "Inicio", + "copy": "Copiar", + "copied": "Copiado!", "LOCKEDASSETS": { "lockedAssets": "Activos bloqueados", "others": "Otros", diff --git a/src/components/ChainTable.tsx b/src/components/ChainTable.tsx index ca45ecb..b4d7c10 100644 --- a/src/components/ChainTable.tsx +++ b/src/components/ChainTable.tsx @@ -180,7 +180,7 @@ export const STableCellHead = styled(TableCell)(() => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textSecondary, - textAlign: 'left', + textAlign: 'center', borderBottom: 'none', }; }); @@ -204,7 +204,7 @@ export const STableCell = styled(TableCell)(({ theme }) => { const { currentTheme } = useCustomTheme(); return { color: currentTheme.textPrimary, - textAlign: 'left', + textAlign: 'center', border: 'none', fontSize: '1rem', [theme.breakpoints.down('md')]: { @@ -247,6 +247,7 @@ export const ContractCell = styled(Link)(() => { return { display: 'flex', alignItems: 'center', + justifyContent: 'center', gap: currentTheme.gap, color: currentTheme.textPrimary, }; diff --git a/src/components/RPC.tsx b/src/components/RPC.tsx index 96a52b2..3611cfb 100644 --- a/src/components/RPC.tsx +++ b/src/components/RPC.tsx @@ -2,16 +2,21 @@ import { useState, useEffect, useMemo } from 'react'; import { useTranslation } from 'next-i18next'; import { Box, Typography, Tooltip, styled, Skeleton, Button } from '@mui/material'; -import { useData, useCustomTheme } from '~/hooks'; -import { DataContainer, STitle, Icon, NotAvailable } from '~/components'; +import { useData, useCustomTheme, useCopyToClipboard } from '~/hooks'; +import { STitle, Icon, NotAvailable, STooltip } from '~/components'; import { checkRpcStatus } from '~/utils'; +interface RpcProps { + count: number; +} + export const RPC = () => { const { t } = useTranslation(); const { chainData } = useData(); const [rpcData, setRpcData] = useState<{ url: string; status: boolean }[]>([]); const [rpcIsLoading, setRpcIsLoading] = useState(true); const [showAll, setShowAll] = useState(false); + const [copiedState, copy] = useCopyToClipboard(); useEffect(() => { const updateRpcStatuses = async () => { @@ -40,6 +45,10 @@ export const RPC = () => { return rpcData.length > 4 && !rpcIsLoading; }, [rpcData, rpcIsLoading]); + const count = useMemo(() => { + return Math.min(rpcData.length, 4); + }, [rpcData.length]); + return ( <article> <RPCTitle> @@ -47,7 +56,7 @@ export const RPC = () => { <Subtitle>{t('CHAIN.RPC.subtitle')}</Subtitle> </RPCTitle> - <DataContainer aria-live='polite' aria-busy={rpcIsLoading}> + <RPCContainer aria-live='polite' aria-busy={rpcIsLoading} count={count}> {rpcIsLoading && Array.from({ length: 4 }).map((_, index) => ( <RPCBox key={index}> @@ -77,8 +86,9 @@ export const RPC = () => { </RPCIcon> </Tooltip> )} - - <RPCUrl>{rpc.url}</RPCUrl> + <STooltip title={rpc.url === copiedState[`${rpc.url}`] ? t('HOME.copied') : t('HOME.copy')}> + <RPCUrl onClick={() => copy(rpc.url, rpc.url)}>{rpc.url}</RPCUrl> + </STooltip> </RPCBox> ))} @@ -87,7 +97,7 @@ export const RPC = () => { <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable> </RPCBox> )} - </DataContainer> + </RPCContainer> {showMoreButton && ( <RPCButtonContainer> @@ -102,6 +112,22 @@ export const RPC = () => { ); }; +export const RPCContainer = styled(Box)<RpcProps>(({ theme: muiTheme, count }) => { + const { currentTheme, theme } = useCustomTheme(); + + return { + background: theme === 'dark' ? currentTheme.backgroundTertiary : currentTheme.backgroundSecondary, + borderRadius: currentTheme.borderRadius, + border: currentTheme.border, + display: 'grid', + gridTemplateColumns: `repeat(${count}, 1fr)`, + + [muiTheme.breakpoints.down('md')]: { + gridTemplateColumns: 'repeat(1, 1fr)', + }, + }; +}); + const RPCTitle = styled(Box)(() => { return { display: 'flex', @@ -121,9 +147,9 @@ const RPCBox = styled(Box)(() => { const { currentTheme } = useCustomTheme(); return { display: 'flex', - gap: currentTheme.gap, - height: '4.5rem', + minHeight: '4.5rem', alignItems: 'center', + width: '100%', padding: currentTheme.padding, }; }); @@ -132,21 +158,19 @@ const RPCIcon = styled(Box)(() => { return { display: 'flex', alignItems: 'center', + marginRight: '0.5rem', }; }); -const RPCUrl = styled(Typography)(({ theme }) => { +const RPCUrl = styled(Typography)(() => { const { currentTheme } = useCustomTheme(); return { textDecoration: 'underline', textUnderlineOffset: currentTheme.gap, overflow: 'hidden', - textOverflow: 'ellipsis', - whiteSpace: 'nowrap', - maxWidth: '15rem', - [theme.breakpoints.down('md')]: { - maxWidth: '25rem', - }, + wordBreak: 'break-all', + whiteSpace: 'normal', + cursor: 'pointer', }; }); diff --git a/src/components/Tooltip.tsx b/src/components/Tooltip.tsx new file mode 100644 index 0000000..97d5aab --- /dev/null +++ b/src/components/Tooltip.tsx @@ -0,0 +1,14 @@ +import { Tooltip, TooltipProps, styled } from '@mui/material'; + +export const STooltip = styled(({ className, placement = 'top', ...props }: TooltipProps) => ( + <Tooltip classes={{ popper: className }} placement={placement} disableInteractive arrow {...props} /> +))(() => { + return { + '& .MuiTooltip-tooltip': { + fontSize: '1rem', + borderRadius: '0.5rem', + padding: '0.25rem 0.5rem', + maxWidth: 'max-content', + }, + }; +}); diff --git a/src/components/index.ts b/src/components/index.ts index b549214..f55d4e2 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -18,3 +18,4 @@ export * from './TVLGraph/DesktopTVLGraph'; export * from './TVLGraph/MobileTVLGraph'; export * from './AddNetworkButton'; export * from './TVLGraph'; +export * from './Tooltip'; diff --git a/src/config/env.ts b/src/config/env.ts index 9946606..5aee8c3 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -4,12 +4,10 @@ export const getEnv = (): Env => { const NEXT_PUBLIC_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; const NEXT_PUBLIC_API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL; const NEXT_PUBLIC_TESTNET_MODE = process.env.NEXT_PUBLIC_TESTNET_MODE; - const NEXT_PUBLIC_TESTING_MODE = process.env.NEXT_PUBLIC_TESTING_MODE; return { PROJECT_ID: NEXT_PUBLIC_PROJECT_ID as string, API_URL: NEXT_PUBLIC_API_BASE_URL as string, TESTNET_MODE: NEXT_PUBLIC_TESTNET_MODE as string, - TESTING_MODE: NEXT_PUBLIC_TESTING_MODE as string, }; }; diff --git a/src/containers/Tokens/TokensTable.tsx b/src/containers/Tokens/TokensTable.tsx index f0f599d..b2138bf 100644 --- a/src/containers/Tokens/TokensTable.tsx +++ b/src/containers/Tokens/TokensTable.tsx @@ -1,5 +1,5 @@ import { useTranslation } from 'next-i18next'; -import { Table, Typography, Box } from '@mui/material'; +import { Table, Typography, Box, styled } from '@mui/material'; import { TotalValueLockedProps, TvlData } from '~/types'; import { @@ -15,11 +15,14 @@ import { FirstCellWithLogo, TableCellHeadFirst, NotAvailable, + STooltip, } from '~/components'; +import { useCopyToClipboard, useCustomTheme } from '~/hooks'; import { formatDataNumber, truncateAddress } from '~/utils'; export const TokensTable = ({ tvl }: TotalValueLockedProps) => { const { t } = useTranslation(); + const [copiedState, copy] = useCopyToClipboard(); return ( <Box> @@ -53,7 +56,17 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { </FirstCellWithLogo> <STableCell> - {token.contractAddress && <Typography>{truncateAddress(token.contractAddress || '')}</Typography>} + {token.contractAddress && ( + <STooltip + title={ + token.contractAddress === copiedState['token contract'] ? t('HOME.copied') : t('HOME.copy') + } + > + <CopyText onClick={() => copy('token contract', token.contractAddress || '')}> + {truncateAddress(token.contractAddress || '')} + </CopyText> + </STooltip> + )} {!token.contractAddress && <NotAvailable>{t('CHAIN.CHAININFORMATION.notAvailable')}</NotAvailable>} </STableCell> @@ -74,3 +87,11 @@ export const TokensTable = ({ tvl }: TotalValueLockedProps) => { </Box> ); }; + +const CopyText = styled(Typography)(() => { + const { currentTheme } = useCustomTheme(); + return { + color: currentTheme.textPrimary, + cursor: 'pointer', + }; +}); diff --git a/src/data/chainMockData.json b/src/data/chainMockData.json new file mode 100644 index 0000000..1d3e857 --- /dev/null +++ b/src/data/chainMockData.json @@ -0,0 +1,574 @@ +{ + "chainType": "Rollup", + "tvl": [ + { + "amount": "117911.456355407359400867", + "amountUsd": "305202013.6303364090732041428", + "price": "2588.4", + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + { + "amount": "55480856.378207", + "amountUsd": "55536337.234585207", + "price": "1.001", + "name": "USDC", + "symbol": "USDC", + "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "998459864.823799773445941598", + "amountUsd": "10983058.513061797507905357578", + "price": "0.011", + "name": "Koi", + "symbol": "KOI", + "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "9472627.999218", + "amountUsd": "9482100.627217218", + "price": "1.001", + "name": "Tether USD", + "symbol": "USDT", + "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "109.13401208", + "amountUsd": "6320997.7803987076", + "price": "57919.595", + "name": "Wrapped BTC", + "symbol": "WBTC", + "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", + "type": "erc20", + "decimals": 8 + }, + { + "amount": "132452368.754496583511107126", + "amountUsd": "1854333.162562952169155499764", + "price": "0.014", + "name": "HYCO", + "symbol": "HYCO", + "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "47964958.588748853386740337", + "amountUsd": "1007264.130363725921121547077", + "price": "0.021", + "name": "Idexo Token", + "symbol": "IDO", + "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "257.706060883787096756", + "amountUsd": "743295.406461645912283008656", + "price": "2884.276", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4597086.058830655172811988", + "amountUsd": "717145.425177582206958670128", + "price": "0.156", + "name": "DEXTF Token", + "symbol": "DEXTF", + "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "709393.663223743840780868", + "amountUsd": "709393.663223743840780868", + "price": "1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "3611649.325725586386626848", + "amountUsd": "278096.998080870151770267296", + "price": "0.077", + "name": "GOVI", + "symbol": "GOVI", + "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "162910.961709234801235986", + "amountUsd": "162748.050747525566434750014", + "price": "0.999", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "769116.258069049173770643", + "amountUsd": "123058.60129104786780330288", + "price": "0.16", + "name": "Symbiosis", + "symbol": "SIS", + "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34.07328120799622273", + "amountUsd": "94955.28377731904151907308", + "price": "2786.796", + "name": "Coinbase Wrapped Staked ETH", + "symbol": "cbETH", + "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1748294.875759738167409463", + "amountUsd": "52448.84627279214502228389", + "price": "0.03", + "name": "ZKBase", + "symbol": "ZKB", + "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "70230.481253590057712656", + "amountUsd": "42138.2887521540346275936", + "price": "0.6", + "name": "DeversiFi Token", + "symbol": "DVF", + "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", + "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "290.508016952", + "amountUsd": "41502.265809779672", + "price": "142.861", + "name": "Wrapped SOL (Wormhole)", + "symbol": "SOL", + "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", + "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "4028.076528447", + "amountUsd": "26899.495056969066", + "price": "6.678", + "name": "Wrapped TON Coin", + "symbol": "TONCOIN", + "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "23546.536039530998897252", + "amountUsd": "23570.082575570529896149252", + "price": "1.001", + "name": "Curve.Fi USD Stablecoin", + "symbol": "crvUSD", + "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "8.989236054015567327", + "amountUsd": "23241.957473210977822112964", + "price": "2585.532", + "name": "Wrapped Ether", + "symbol": "WETH", + "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "6450474.040573841973953155", + "amountUsd": "19351.422121721525921859465", + "price": "0.003", + "name": "LSD Coin", + "symbol": "LSD", + "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5.423689884062204153", + "amountUsd": "16492.19348875982852231781", + "price": "3040.77", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34056.984148728150579544", + "amountUsd": "13248.166833855250575442616", + "price": "0.389", + "name": "Bella", + "symbol": "BEL", + "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "46220.536588230241212891", + "amountUsd": "11416.472537292869579584077", + "price": "0.247", + "name": "1INCH Token", + "symbol": "1INCH", + "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "563082.288758156473620986", + "amountUsd": "9572.398908888660051556762", + "price": "0.017", + "name": "Deri", + "symbol": "DERI", + "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4974.854892108430805034", + "amountUsd": "7477.206902838971499966102", + "price": "1.503", + "name": "Worldcoin", + "symbol": "WLD", + "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", + "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "43034.765060388679856659", + "amountUsd": "7401.979590386852935345348", + "price": "0.172", + "name": "Maverick Token", + "symbol": "MAV", + "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1267111.79536025946087647", + "amountUsd": "6335.55897680129730438235", + "price": "0.005", + "name": "ZigZag", + "symbol": "ZZ", + "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", + "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.1", + "amountUsd": "5807.2618", + "price": "58072.618", + "name": "tBTC v2", + "symbol": "tBTC", + "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1.607308526702602644", + "amountUsd": "4229.765794625615173705452", + "price": "2631.583", + "name": "rsETH", + "symbol": "rsETH", + "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "35.167061181353626164", + "amountUsd": "3811.335756712743296401992", + "price": "108.378", + "name": "Aave Token", + "symbol": "AAVE", + "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "312.082999060002117307", + "amountUsd": "3186.679503401681619821777", + "price": "10.211", + "name": "ChainLink Token", + "symbol": "LINK", + "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "154.058620754243125866", + "amountUsd": "2913.402577083491753251926", + "price": "18.911", + "name": "Metaverse Index", + "symbol": "MVI", + "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "33", + "amountUsd": "1845.129", + "price": "55.913", + "name": "Tellor Tributes", + "symbol": "TRB", + "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.639944048220845643", + "amountUsd": "1680.494350516037100209286", + "price": "2626.002", + "name": "Renzo Restaked ETH", + "symbol": "Renzo Restaked ETH", + "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4093.979328418030008295", + "amountUsd": "1637.591731367212003318", + "price": "0.4", + "name": "Matic Token", + "symbol": "MATIC", + "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1164511.592541489082720882", + "amountUsd": "1164.511592541489082720882", + "price": "0.001", + "name": "Fringe", + "symbol": "FRIN", + "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "132132.766491", + "amountUsd": "1057.062131928", + "price": "0.008", + "name": "Changer", + "symbol": "CNG", + "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", + "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5985.542511355987510812", + "amountUsd": "885.860291680686151600176", + "price": "0.148", + "name": "WOO", + "symbol": "WOO", + "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "134908.179074505869136306", + "amountUsd": "674.54089537252934568153", + "price": "0.005", + "name": "Furucombo", + "symbol": "COMBO", + "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "51689.739780035047575291", + "amountUsd": "620.276877360420570903492", + "price": "0.012", + "name": "Beam", + "symbol": "BEAM", + "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.201", + "amountUsd": "540.892809", + "price": "2691.009", + "name": "mETH", + "symbol": "mETH", + "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "42.412842071038840242", + "amountUsd": "441.263208907088093877768", + "price": "10.404", + "name": "Rocket Pool", + "symbol": "RPL", + "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "97739", + "amountUsd": "293.217", + "price": "0.003", + "name": "Bonsai3", + "symbol": "SEED", + "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.000014104615563706", + "amountUsd": "0.000004922510831733394", + "price": "0.349", + "name": "Storj", + "symbol": "STORJ", + "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "15945307297.038027211009518403", + "amountUsd": "0", + "price": "0", + "name": "Pepe", + "symbol": "PEPE", + "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1073815923.25847686794945247", + "amountUsd": "0", + "price": "0", + "name": "SHIBA INU", + "symbol": "SHIB", + "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.048392888467075907", + "amountUsd": "0", + "price": "0", + "name": "Syncus", + "symbol": "SYNC", + "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "10000100", + "amountUsd": "0", + "price": "0", + "name": "XWG", + "symbol": "XWG", + "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", + "type": "erc20", + "decimals": 18 + } + ], + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "batchesInfo": { "commited": "490885", "verified": "490883", "executed": "490839" }, + "feeParams": { + "batchOverheadL1Gas": 1000000, + "maxL2GasPerBatch": 80000000, + "maxPubdataPerBatch": 120000, + "minimalL2GasPrice": "250000000", + "priorityTxMaxPubdata": 99000 + }, + "metadata": { + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "name": "ZKsyncERA", + "publicRpcs": [ + "https://mainnet.era.zksync.io", + "https://zksync.drpc.org", + "https://zksync.meowrpc.com", + "https://invalidRpc.com", + "https://extraRpc.com" + ], + "explorerUrl": "https://explorer.zksync.io/", + "launchDate": 1679626800 + } +} diff --git a/src/data/ecosystemMockData.json b/src/data/ecosystemMockData.json new file mode 100644 index 0000000..d2c7826 --- /dev/null +++ b/src/data/ecosystemMockData.json @@ -0,0 +1,590 @@ +{ + "l1Tvl": [ + { + "amount": "118306.55939191423985395", + "amountUsd": "300833113.49886311078510011665", + "price": "2542.827", + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + { + "amount": "56310048.030096", + "amountUsd": "56366358.078126096", + "price": "1.001", + "name": "USDC", + "symbol": "USDC", + "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", + "imageUrl": "https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "998459864.823799773445941598", + "amountUsd": "11981518.377885597281351299176", + "price": "0.012", + "name": "Koi", + "symbol": "KOI", + "contractAddress": "0x9D14BcE1dADdf408d77295BB1be9b343814f44DE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/35766/large/Koi_logo.png?1709782399", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "9472627.999218", + "amountUsd": "9482100.627217218", + "price": "1.001", + "name": "Tether USD", + "symbol": "USDT", + "contractAddress": "0xdAC17F958D2ee523a2206206994597C13D831ec7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661", + "type": "erc20", + "decimals": 6 + }, + { + "amount": "113.67749192", + "amountUsd": "6457843.93470259472", + "price": "56808.466", + "name": "Wrapped BTC", + "symbol": "WBTC", + "contractAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "imageUrl": "https://coin-images.coingecko.com/coins/images/7598/large/wrapped_bitcoin_wbtc.png?1696507857", + "type": "erc20", + "decimals": 8 + }, + { + "amount": "132452368.754496583511107126", + "amountUsd": "1721880.793808455585644392638", + "price": "0.013", + "name": "HYCO", + "symbol": "HYCO", + "contractAddress": "0x77F76483399Dc6328456105B1db23e2Aca455bf9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29407/large/coingecko_HYPERCOMIC_LOGO.png?1696528357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "47964958.588748853386740337", + "amountUsd": "1007264.130363725921121547077", + "price": "0.021", + "name": "Idexo Token", + "symbol": "IDO", + "contractAddress": "0xF9c53268e9de692AE1b2ea5216E24e1c3ad7CB1E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18523/large/qOiqm7T8_400x400.jpg?1696518004", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "257.706060883787096756", + "amountUsd": "730177.652550539381483934744", + "price": "2833.374", + "name": "Rocket Pool ETH", + "symbol": "rETH", + "contractAddress": "0xae78736Cd615f374D3085123A210448E74Fc6393", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20764/large/reth.png?1696520159", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4597086.058830655172811988", + "amountUsd": "717145.425177582206958670128", + "price": "0.156", + "name": "DEXTF Token", + "symbol": "DEXTF", + "contractAddress": "0x5F64Ab1544D28732F0A24F4713c2C8ec0dA089f0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12634/large/0qgT0aMu_400x400.jpg?1696512442", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "709393.663223743840780868", + "amountUsd": "709393.663223743840780868", + "price": "1", + "name": "Dai Stablecoin", + "symbol": "DAI", + "contractAddress": "0x6B175474E89094C44Da98b954EedeAC495271d0F", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9956/large/Badge_Dai.png?1696509996", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "3611649.325725586386626848", + "amountUsd": "274485.348755144565383640448", + "price": "0.076", + "name": "GOVI", + "symbol": "GOVI", + "contractAddress": "0xeEAA40B28A2d1b0B08f6f97bB1DD4B75316c6107", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13875/large/GOVI.png?1696513619", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "162910.961709234801235986", + "amountUsd": "162585.139785816331633514028", + "price": "0.998", + "name": "LUSD Stablecoin", + "symbol": "LUSD", + "contractAddress": "0x5f98805A4E8be255a32880FDeC7F6728C6568bA0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14666/large/Group_3.png?1696514341", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "769116.258069049173770643", + "amountUsd": "123827.717549116916977073523", + "price": "0.161", + "name": "Symbiosis", + "symbol": "SIS", + "contractAddress": "0xd38BB40815d2B0c2d2c866e0c72c5728ffC76dd9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/20805/large/SymbiosisFinance_logo-150x150.jpeg?1696520198", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34.07328120799622273", + "amountUsd": "93326.64908213923806502454", + "price": "2738.998", + "name": "Coinbase Wrapped Staked ETH", + "symbol": "cbETH", + "contractAddress": "0xBe9895146f7AF43049ca1c1AE358B0541Ea49704", + "imageUrl": "https://coin-images.coingecko.com/coins/images/27008/large/cbeth.png?1709186989", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1748294.875759738167409463", + "amountUsd": "54197.141148551883189693353", + "price": "0.031", + "name": "ZKBase", + "symbol": "ZKB", + "contractAddress": "0xBBBbbBBB46A1dA0F0C3F64522c275BAA4C332636", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13585/large/image_2024-01-16_172847810.png?1705397359", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "70230.481253590057712656", + "amountUsd": "42138.2887521540346275936", + "price": "0.6", + "name": "DeversiFi Token", + "symbol": "DVF", + "contractAddress": "0xDDdddd4301A082e62E84e43F474f044423921918", + "imageUrl": "https://coin-images.coingecko.com/coins/images/16414/large/rhinologo.png?1697736807", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "290.508016952", + "amountUsd": "40900.62370667208", + "price": "140.79", + "name": "Wrapped SOL (Wormhole)", + "symbol": "SOL", + "contractAddress": "0xD31a59c85aE9D8edEFeC411D448f90841571b89c", + "imageUrl": "https://coin-images.coingecko.com/coins/images/22876/large/SOL_wh_small.png?1696522175", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "4028.076528447", + "amountUsd": "26339.592419514933", + "price": "6.539", + "name": "Wrapped TON Coin", + "symbol": "TONCOIN", + "contractAddress": "0x582d872A1B094FC48F5DE31D3B73F2D9bE47def1", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17980/large/ton_symbol.png?1696517498", + "type": "erc20", + "decimals": 9 + }, + { + "amount": "23546.536039530998897252", + "amountUsd": "23570.082575570529896149252", + "price": "1.001", + "name": "Curve.Fi USD Stablecoin", + "symbol": "crvUSD", + "contractAddress": "0xf939E0A03FB07F59A73314E73794Be0E57ac1b4E", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30118/large/0xf939e0a03fb07f59a73314e73794be0e57ac1b4e.png?1721097561", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "8.989236054015567327", + "amountUsd": "22847.294053495478354188356", + "price": "2541.628", + "name": "Wrapped Ether", + "symbol": "WETH", + "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2518/large/weth.png?1696503332", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "6450474.040573841973953155", + "amountUsd": "19351.422121721525921859465", + "price": "0.003", + "name": "LSD Coin", + "symbol": "LSD", + "contractAddress": "0xfAC77A24E52B463bA9857d6b758ba41aE20e31FF", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29519/large/logo.png?1696528462", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5.423689884062204153", + "amountUsd": "16213.876842359176516206615", + "price": "2989.455", + "name": "Wrapped liquid staked Ether 2.0", + "symbol": "wstETH", + "contractAddress": "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/18834/large/wstETH.png?1696518295", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "34056.984148728150579544", + "amountUsd": "13009.767944814153521385808", + "price": "0.382", + "name": "Bella", + "symbol": "BEL", + "contractAddress": "0xA91ac63D040dEB1b7A5E4d4134aD23eb0ba07e14", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12478/large/Bella.png?1696512296", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "46220.536588230241212891", + "amountUsd": "11324.031464116409097158295", + "price": "0.245", + "name": "1INCH Token", + "symbol": "1INCH", + "contractAddress": "0x111111111117dC0aa78b770fA6A738034120C302", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13469/large/1inch-token.png?1696513230", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "563082.288758156473620986", + "amountUsd": "9009.316620130503577935776", + "price": "0.016", + "name": "Deri", + "symbol": "DERI", + "contractAddress": "0xA487bF43cF3b10dffc97A9A744cbB7036965d3b9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13931/large/200vs200.jpg?1696513670", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "43034.765060388679856659", + "amountUsd": "7315.91006026607557563203", + "price": "0.17", + "name": "Maverick Token", + "symbol": "MAV", + "contractAddress": "0x7448c7456a97769F6cD04F1E83A4a23cCdC46aBD", + "imageUrl": "https://coin-images.coingecko.com/coins/images/30850/large/MAV_Logo.png?1696529701", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4874.863543072452577322", + "amountUsd": "7244.047225005664529900492", + "price": "1.486", + "name": "Worldcoin", + "symbol": "WLD", + "contractAddress": "0x163f8C2467924be0ae7B5347228CABF260318753", + "imageUrl": "https://coin-images.coingecko.com/coins/images/31069/large/worldcoin.jpeg?1696529903", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1267111.79536025946087647", + "amountUsd": "6335.55897680129730438235", + "price": "0.005", + "name": "ZigZag", + "symbol": "ZZ", + "contractAddress": "0xC91a71A1fFA3d8B22ba615BA1B9c01b2BBBf55ad", + "imageUrl": "https://coin-images.coingecko.com/coins/images/26141/large/zig_zag.?1696525229", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.1", + "amountUsd": "5675.4499", + "price": "56754.499", + "name": "tBTC v2", + "symbol": "tBTC", + "contractAddress": "0x18084fbA666a33d37592fA2633fD49a74DD93a88", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11224/large/0x18084fba666a33d37592fa2633fd49a74dd93a88.png?1696511155", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1.607308526702602644", + "amountUsd": "4156.075520601880950285984", + "price": "2585.736", + "name": "rsETH", + "symbol": "rsETH", + "contractAddress": "0xA1290d69c65A6Fe4DF752f95823fae25cB99e5A7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "35.167061181353626164", + "amountUsd": "3755.806967107385920689036", + "price": "106.799", + "name": "Aave Token", + "symbol": "AAVE", + "contractAddress": "0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12645/large/aave-token-round.png?1720472354", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "312.082999060002117307", + "amountUsd": "3143.299966532341325516104", + "price": "10.072", + "name": "ChainLink Token", + "symbol": "LINK", + "contractAddress": "0x514910771AF9Ca656af840dff83E8264EcF986CA", + "imageUrl": "https://coin-images.coingecko.com/coins/images/877/large/chainlink-new-logo.png?1696502009", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "154.058620754243125866", + "amountUsd": "2615.91538040704827720468", + "price": "16.98", + "name": "Metaverse Index", + "symbol": "MVI", + "contractAddress": "0x72e364F2ABdC788b7E918bc238B21f109Cd634D7", + "imageUrl": "https://coin-images.coingecko.com/coins/images/14684/large/MVI_logo.png?1696514357", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "33", + "amountUsd": "1821.369", + "price": "55.193", + "name": "Tellor Tributes", + "symbol": "TRB", + "contractAddress": "0x88dF592F8eb5D7Bd38bFeF7dEb0fBc02cf3778a0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/9644/large/Blk_icon_current.png?1696509713", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.639944048220845643", + "amountUsd": "1651.358977888638439774782", + "price": "2580.474", + "name": "Renzo Restaked ETH", + "symbol": "Renzo Restaked ETH", + "contractAddress": "0xbf5495Efe5DB9ce00f80364C8B423567e58d2110", + "imageUrl": "https://coin-images.coingecko.com/coins/images/34753/large/Ezeth_logo_circle.png?1713496404", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "4093.979328418030008295", + "amountUsd": "1633.497752038793973309705", + "price": "0.399", + "name": "Matic Token", + "symbol": "MATIC", + "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/4713/large/polygon.png?1698233745", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "132132.766491", + "amountUsd": "1189.194898419", + "price": "0.009", + "name": "Changer", + "symbol": "CNG", + "contractAddress": "0x5C1d9aA868a30795F92fAe903eDc9eFF269044bf", + "imageUrl": "https://coin-images.coingecko.com/coins/images/21786/large/cng.png?1696521140", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1164511.592541489082720882", + "amountUsd": "1164.511592541489082720882", + "price": "0.001", + "name": "Fringe", + "symbol": "FRIN", + "contractAddress": "0xC9fE6E1C76210bE83DC1B5b20ec7FD010B0b1D15", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13222/large/frin.png?1696513001", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "5985.542511355987510812", + "amountUsd": "867.90366414661818906774", + "price": "0.145", + "name": "WOO", + "symbol": "WOO", + "contractAddress": "0x4691937a7508860F876c9c0a2a617E7d9E945D4B", + "imageUrl": "https://coin-images.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "134908.179074505869136306", + "amountUsd": "674.54089537252934568153", + "price": "0.005", + "name": "Furucombo", + "symbol": "COMBO", + "contractAddress": "0xfFffFffF2ba8F66D4e51811C5190992176930278", + "imageUrl": "https://coin-images.coingecko.com/coins/images/13629/large/COMBO_token_ol.png?1696513377", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "51689.739780035047575291", + "amountUsd": "620.276877360420570903492", + "price": "0.012", + "name": "Beam", + "symbol": "BEAM", + "contractAddress": "0x62D0A8458eD7719FDAF978fe5929C6D342B0bFcE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/32417/large/chain-logo.png?1698114384", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.201", + "amountUsd": "532.432317", + "price": "2648.917", + "name": "mETH", + "symbol": "mETH", + "contractAddress": "0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "42.412842071038840242", + "amountUsd": "442.15387859057990952285", + "price": "10.425", + "name": "Rocket Pool", + "symbol": "RPL", + "contractAddress": "0xD33526068D116cE69F19A9ee46F0bd304F21A51f", + "imageUrl": "https://coin-images.coingecko.com/coins/images/2090/large/rocket_pool_%28RPL%29.png?1696503058", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "97739", + "amountUsd": "293.217", + "price": "0.003", + "name": "Bonsai3", + "symbol": "SEED", + "contractAddress": "0xe2353069f71a27bBbe66eEabfF05dE109c7d5E19", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33162/large/logo-bonsai3200x200.png?1700830408", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.000014104615563706", + "amountUsd": "0.000004950720062860806", + "price": "0.351", + "name": "Storj", + "symbol": "STORJ", + "contractAddress": "0xB64ef51C888972c908CFacf59B47C1AfBC0Ab8aC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/949/large/storj.png?1696502065", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "15945307297.038027211009518403", + "amountUsd": "0", + "price": "0", + "name": "Pepe", + "symbol": "PEPE", + "contractAddress": "0x6982508145454Ce325dDbE47a25d4ec3d2311933", + "imageUrl": "https://coin-images.coingecko.com/coins/images/29850/large/pepe-token.jpeg?1696528776", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "1073815923.25847686794945247", + "amountUsd": "0", + "price": "0", + "name": "SHIBA INU", + "symbol": "SHIB", + "contractAddress": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE", + "imageUrl": "https://coin-images.coingecko.com/coins/images/11939/large/shiba.png?1696511800", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "0.048392888467075907", + "amountUsd": "0", + "price": "0", + "name": "Syncus", + "symbol": "SYNC", + "contractAddress": "0xa41d2f8Ee4F47D3B860A149765A7dF8c3287b7F0", + "imageUrl": "https://coin-images.coingecko.com/coins/images/33573/large/Syncus.png?1702450708", + "type": "erc20", + "decimals": 18 + }, + { + "amount": "10000100", + "amountUsd": "0", + "price": "0", + "name": "XWG", + "symbol": "XWG", + "contractAddress": "0x0a77eF9bf662D62Fbf9BA4cf861EaA83F9CC4FEC", + "imageUrl": "https://coin-images.coingecko.com/coins/images/17847/large/200_200_%281%29_%281%29.png?1696790226", + "type": "erc20", + "decimals": 18 + } + ], + "ethGasInfo": { "gasPrice": "2811768091", "erc20Transfer": "34853", "ethTransfer": "21000", "ethPrice": "2609.988" }, + "zkChains": [ + { + "chainId": "324", + "chainType": "Rollup", + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "tvl": "389188998.253667604685659703935", + "metadata": { + "iconUrl": "https://s2.coinmarketcap.com/static/img/coins/64x64/24091.png", + "name": "ZKsyncERA", + "publicRpcs": ["https://mainnet.era.zksync.io", "https://zksync.drpc.org", "https://zksync.meowrpc.com"], + "explorerUrl": "https://explorer.zksync.io/", + "launchDate": 1679626800 + }, + "rpc": false + }, + { + "chainId": "388", + "chainType": "Rollup", + "baseToken": { + "name": "Ethereum", + "symbol": "ETH", + "contractAddress": null, + "coingeckoId": "ethereum", + "type": "native", + "imageUrl": "https://coin-images.coingecko.com/coins/images/279/large/ethereum.png?1696501628", + "decimals": 18 + }, + "tvl": "1802056.74192740728", + "metadata": { + "iconUrl": "https://s3.coinmarketcap.com/static-gravity/image/84e1ec1257dd4a6da6ee5584338a2460.jpeg", + "name": "Cronos", + "publicRpcs": ["https://mainnet.zkevm.cronos.org"], + "explorerUrl": "https://explorer.zkevm.cronos.org/", + "launchDate": 1679626800 + }, + "rpc": false + } + ] +} diff --git a/src/hooks/index.ts b/src/hooks/index.ts index af3d0f4..8cdcec7 100644 --- a/src/hooks/index.ts +++ b/src/hooks/index.ts @@ -1 +1,2 @@ export * from './useContext'; +export * from './useCopyToClipboard'; diff --git a/src/hooks/useCopyToClipboard.ts b/src/hooks/useCopyToClipboard.ts new file mode 100644 index 0000000..d8eca50 --- /dev/null +++ b/src/hooks/useCopyToClipboard.ts @@ -0,0 +1,47 @@ +import { useCallback, useState } from 'react'; + +/** + * A map of item identifiers to the text copied. + * If nothing has been copied yet for a given identifier, the value is `null`. + */ + +type CopiedStates = { + [key: string]: string | null; +}; + +/** + * Function to copy text to the clipboard. + * @param text The text to copy to the clipboard. + * @param id The id assigned to the text to copy to the clipboard. + * @returns {Promise<boolean>} A promise that resolves to `true` if the text was copied successfully, or `false` otherwise. + */ + +type CopyFn = (id: string, text: string) => Promise<boolean>; + +export function useCopyToClipboard(): [CopiedStates, CopyFn] { + const [copiedStates, setCopiedStates] = useState<CopiedStates>({}); + const copiedTextTimeout = 800; + + const copy: CopyFn = useCallback(async (id, text) => { + if (!navigator?.clipboard) { + console.warn('Clipboard not supported'); + return false; + } + + // Try to save to clipboard then save it in the state if worked + try { + await navigator.clipboard.writeText(text); + setCopiedStates((prevStates) => ({ ...prevStates, [id]: text })); + setTimeout(() => { + setCopiedStates((prevStates) => ({ ...prevStates, [id]: null })); + }, copiedTextTimeout); + + return true; + } catch (error) { + console.warn('Copy failed', error); + return false; + } + }, []); + + return [copiedStates, copy]; +} diff --git a/src/types/Config.ts b/src/types/Config.ts index b13339a..876e3b1 100644 --- a/src/types/Config.ts +++ b/src/types/Config.ts @@ -2,7 +2,6 @@ export interface Env { PROJECT_ID: string; API_URL: string; TESTNET_MODE: string; - TESTING_MODE: string; } export type SupportedLanguage = 'en' | 'es'; From 4031984ed5127242926a2fbb9bab5d7850b05a4b Mon Sep 17 00:00:00 2001 From: TITI <162849030+0xtiti@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:41:46 -0300 Subject: [PATCH 81/82] style: rename PROJECT_ID to WALLETCONNECT_PROJECT_ID (#59) --- .env.example | 2 +- README.md | 2 +- src/config/env.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index c0afc18..79e89ff 100644 --- a/.env.example +++ b/.env.example @@ -1,3 +1,3 @@ NEXT_PUBLIC_API_BASE_URL= # Example: https://api.example.com -NEXT_PUBLIC_PROJECT_ID= # ProjectID from WalletConnect +NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID= # ProjectID from WalletConnect (Optional) NEXT_PUBLIC_TESTNET_MODE= # true or false \ No newline at end of file diff --git a/README.md b/README.md index 39612e2..365ee77 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ $ cp .env.example .env - Set up `NEXT_PUBLIC_API_BASE_URL` with ZKchainHub Backend API url. It will typically run on `http://localhost:3000` - (Optionally) - - Set `NEXT_PUBLIC_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID + - Set `NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID` with your [Wallet Connect](https://walletconnect.com/) ProjectID - Set `NEXT_PUBLIC_TESTNET_MODE ` with `true` to use testnet mode with testnet backend API URL set up in `NEXT_PUBLIC_API_BASE_URL` ## ๐Ÿƒ Running the app diff --git a/src/config/env.ts b/src/config/env.ts index 5aee8c3..d41cd71 100644 --- a/src/config/env.ts +++ b/src/config/env.ts @@ -1,12 +1,12 @@ import { Env } from '~/types'; export const getEnv = (): Env => { - const NEXT_PUBLIC_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; + const NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID = process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID; const NEXT_PUBLIC_API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL; const NEXT_PUBLIC_TESTNET_MODE = process.env.NEXT_PUBLIC_TESTNET_MODE; return { - PROJECT_ID: NEXT_PUBLIC_PROJECT_ID as string, + PROJECT_ID: NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID as string, API_URL: NEXT_PUBLIC_API_BASE_URL as string, TESTNET_MODE: NEXT_PUBLIC_TESTNET_MODE as string, }; From 0561e6b013dac780614deff1c0f3578ac98c368e Mon Sep 17 00:00:00 2001 From: Ardy <116569704+0xArdy@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:10:05 -0400 Subject: [PATCH 82/82] feat: add metadata (#60) --- public/banner.png | Bin 0 -> 28624 bytes src/pages/_document.tsx | 12 ++++++------ 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 public/banner.png diff --git a/public/banner.png b/public/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..60641cc280d06bfc776710a684150efa5739f77d GIT binary patch literal 28624 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 F{vQ>+{$v0E literal 0 HcmV?d00001 diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx index ca93ce9..dab10b2 100644 --- a/src/pages/_document.tsx +++ b/src/pages/_document.tsx @@ -3,8 +3,8 @@ import type { DocumentHeadTagsProps } from '@mui/material-nextjs/v13-pagesRouter import { DocumentContext, DocumentProps, Head, Html, Main, NextScript } from 'next/document'; export default function MyDocument(props: DocumentProps & DocumentHeadTagsProps) { - const descriptionText = 'Web3 Boilerplate by Wonderland.'; - const bannerImage = ''; + const descriptionText = 'ZKsync ecosystem live L1 & L2 metrics.'; + const bannerImage = 'https://mainnet-zkchainhub.vercel.app/banner.png'; return ( <Html lang='en'> @@ -13,14 +13,14 @@ export default function MyDocument(props: DocumentProps & DocumentHeadTagsProps) <link rel='icon' href='/favicon.png' type='image/x-icon' sizes='48x48' /> <meta name='description' content={descriptionText} /> - <meta property='og:title' content='Web3 Boilerplate' /> + <meta property='og:title' content='ZK Chain Hub' /> <meta property='og:description' content={descriptionText} /> <meta name='twitter:image' content={bannerImage} /> <meta name='twitter:card' content='summary_large_image' /> - <meta name='twitter:site' content='@DeFi_Wonderland' /> - <meta name='twitter:creator' content='@DeFi_Wonderland' /> - <meta name='twitter:title' content='Web3 Boilerplate' /> + <meta name='twitter:site' content='@zksync' /> + <meta name='twitter:creator' content='@zksync' /> + <meta name='twitter:title' content='ZK Chain Hub' /> <meta name='twitter:description' content={descriptionText} /> <meta name='twitter:image' content={bannerImage} />