From 59f570db55fc2ebf4ee85b582a9eeecd2750eb5f Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:32:34 -0500 Subject: [PATCH 01/35] Remove App Directory --- app/create/page.tsx | 66 ----- .../[daoAddress]/edit/governance/page.tsx | 68 ----- app/daos/[daoAddress]/hierarchy/page.tsx | 46 ---- app/daos/[daoAddress]/layout.tsx | 146 ---------- app/daos/[daoAddress]/new/page.tsx | 42 --- app/daos/[daoAddress]/page.tsx | 23 -- .../proposal-templates/new/page.tsx | 218 --------------- .../[daoAddress]/proposal-templates/page.tsx | 44 --- .../proposals/[proposalId]/page.tsx | 88 ------ app/daos/[daoAddress]/proposals/new/page.tsx | 166 ------------ app/daos/[daoAddress]/proposals/page.tsx | 109 -------- app/daos/[daoAddress]/settings/page.tsx | 42 --- app/daos/[daoAddress]/treasury/page.tsx | 67 ----- app/layout.tsx | 75 ------ app/page.tsx | 253 ------------------ 15 files changed, 1453 deletions(-) delete mode 100644 app/create/page.tsx delete mode 100644 app/daos/[daoAddress]/edit/governance/page.tsx delete mode 100644 app/daos/[daoAddress]/hierarchy/page.tsx delete mode 100644 app/daos/[daoAddress]/layout.tsx delete mode 100644 app/daos/[daoAddress]/new/page.tsx delete mode 100644 app/daos/[daoAddress]/page.tsx delete mode 100644 app/daos/[daoAddress]/proposal-templates/new/page.tsx delete mode 100644 app/daos/[daoAddress]/proposal-templates/page.tsx delete mode 100644 app/daos/[daoAddress]/proposals/[proposalId]/page.tsx delete mode 100644 app/daos/[daoAddress]/proposals/new/page.tsx delete mode 100644 app/daos/[daoAddress]/proposals/page.tsx delete mode 100644 app/daos/[daoAddress]/settings/page.tsx delete mode 100644 app/daos/[daoAddress]/treasury/page.tsx delete mode 100644 app/layout.tsx delete mode 100644 app/page.tsx diff --git a/app/create/page.tsx b/app/create/page.tsx deleted file mode 100644 index 2fe1bd9925..0000000000 --- a/app/create/page.tsx +++ /dev/null @@ -1,66 +0,0 @@ -'use client'; - -import { ethers } from 'ethers'; -import { useRouter } from 'next/navigation'; -import { useCallback, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { toast } from 'react-toastify'; -import DaoCreator from '../../src/components/DaoCreator'; -import { DAOCreateMode } from '../../src/components/DaoCreator/formComponents/EstablishEssentials'; -import ClientOnly from '../../src/components/ui/utils/ClientOnly'; -import { BASE_ROUTES, DAO_ROUTES } from '../../src/constants/routes'; -import { useAccountFavorites } from '../../src/hooks/DAO/loaders/useFavorites'; -import useDeployDAO from '../../src/hooks/DAO/useDeployDAO'; -import { useAsyncRetry } from '../../src/hooks/utils/useAsyncRetry'; -import { useSafeAPI } from '../../src/providers/App/hooks/useSafeAPI'; -import { SafeMultisigDAO, AzoriusERC20DAO, AzoriusERC721DAO } from '../../src/types'; - -export default function DaoCreatePage() { - const { push } = useRouter(); - const { requestWithRetries } = useAsyncRetry(); - const { toggleFavorite } = useAccountFavorites(); - const [redirectPending, setRedirectPending] = useState(false); - const { t } = useTranslation('transaction'); - const safeAPI = useSafeAPI(); - - const successCallback = useCallback( - async (daoAddress: string) => { - setRedirectPending(true); - const { getAddress } = ethers.utils; - const daoFound = await requestWithRetries( - () => safeAPI.getSafeCreationInfo(getAddress(daoAddress)), - 8 - ); - toggleFavorite(daoAddress); - if (daoFound) { - push(DAO_ROUTES.dao.relative(daoAddress)); - } else { - toast(t('failedIndexSafe'), { - autoClose: false, - closeOnClick: true, - draggable: false, - closeButton: false, - progress: 1, - }); - push(BASE_ROUTES.landing); - } - }, - [safeAPI, requestWithRetries, toggleFavorite, push, t] - ); - - const [deploy, pending] = useDeployDAO(); - - const deployDAO = (daoData: SafeMultisigDAO | AzoriusERC20DAO | AzoriusERC721DAO) => { - deploy(daoData, successCallback); - }; - - return ( - - - - ); -} diff --git a/app/daos/[daoAddress]/edit/governance/page.tsx b/app/daos/[daoAddress]/edit/governance/page.tsx deleted file mode 100644 index d712090f23..0000000000 --- a/app/daos/[daoAddress]/edit/governance/page.tsx +++ /dev/null @@ -1,68 +0,0 @@ -'use client'; - -import { Box } from '@chakra-ui/react'; -import { CloseX } from '@decent-org/fractal-ui'; -import { useRouter } from 'next/navigation'; -import { useTranslation } from 'react-i18next'; -import DaoCreator from '../../../../../src/components/DaoCreator'; -import { DAOCreateMode } from '../../../../../src/components/DaoCreator/formComponents/EstablishEssentials'; -import { EmptyBox } from '../../../../../src/components/ui/containers/EmptyBox'; -import PageHeader from '../../../../../src/components/ui/page/Header/PageHeader'; -import { DAO_ROUTES } from '../../../../../src/constants/routes'; -import useDeployAzorius from '../../../../../src/hooks/DAO/useDeployAzorius'; -import { createAccountSubstring } from '../../../../../src/hooks/utils/useDisplayName'; -import { useFractal } from '../../../../../src/providers/App/AppProvider'; -import { - DAOTrigger, - AzoriusERC20DAO, - AzoriusERC721DAO, - GovernanceType, -} from '../../../../../src/types'; - -export default function ModifyGovernancePage() { - const { - node: { daoAddress, safe, daoName, daoSnapshotURL }, - governance: { type }, - readOnly: { user }, - } = useFractal(); - const { t } = useTranslation(['daoEdit', 'common', 'breadcrumbs']); - const { push } = useRouter(); - const isMultisig = type === GovernanceType.MULTISIG; - const isSigner = user.address && safe?.owners.includes(user.address); - const deployAzorius = useDeployAzorius(); - - const handleDeployAzorius: DAOTrigger = daoData => { - deployAzorius( - daoData as AzoriusERC20DAO | AzoriusERC721DAO, - !daoName || createAccountSubstring(daoAddress!) === daoName, - !daoSnapshotURL && !!daoData.snapshotURL - ); - }; - - return ( - - push(DAO_ROUTES.dao.relative(daoAddress))} - isButtonDisabled={false} - breadcrumbs={[ - { - terminus: t('modifyGovernance', { ns: 'breadcrumbs' }), - path: '', - }, - ]} - /> - {isMultisig && isSigner ? ( - - ) : ( - - )} - - ); -} diff --git a/app/daos/[daoAddress]/hierarchy/page.tsx b/app/daos/[daoAddress]/hierarchy/page.tsx deleted file mode 100644 index c148044bcb..0000000000 --- a/app/daos/[daoAddress]/hierarchy/page.tsx +++ /dev/null @@ -1,46 +0,0 @@ -'use client'; - -import { Center } from '@chakra-ui/react'; -import { useTranslation } from 'react-i18next'; -import { DaoNode } from '../../../../src/components/pages/DaoHierarchy/DaoNode'; -import { BarLoader } from '../../../../src/components/ui/loaders/BarLoader'; -import PageHeader from '../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../src/components/ui/utils/ClientOnly'; -import { HEADER_HEIGHT } from '../../../../src/constants/common'; -import { useFractal } from '../../../../src/providers/App/AppProvider'; - -export default function HierarchyPage() { - const { - node: { daoAddress, daoName, nodeHierarchy }, - } = useFractal(); - const { t } = useTranslation('breadcrumbs'); - - if (!daoAddress) { - return ( -
- -
- ); - } - - return ( - - - - - ); -} diff --git a/app/daos/[daoAddress]/layout.tsx b/app/daos/[daoAddress]/layout.tsx deleted file mode 100644 index d41156d4dc..0000000000 --- a/app/daos/[daoAddress]/layout.tsx +++ /dev/null @@ -1,146 +0,0 @@ -'use client'; - -import { Button, Center, Text, VStack, ChakraProvider, extendTheme } from '@chakra-ui/react'; -import { theme } from '@decent-org/fractal-ui'; -import Script from 'next/script'; -import { ReactNode, useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { useNetwork } from 'wagmi'; -import ClientOnly from '../../../src/components/ui/utils/ClientOnly'; -import { APP_NAME } from '../../../src/constants/common'; -import useDAOController from '../../../src/hooks/DAO/useDAOController'; -import useDAOMetadata from '../../../src/hooks/DAO/useDAOMetadata'; -import { useFractal } from '../../../src/providers/App/AppProvider'; -import { - disconnectedChain, - supportedChains, -} from '../../../src/providers/NetworkConfig/NetworkConfigProvider'; - -function InvalidSafe() { - const { chain } = useNetwork(); - const { t } = useTranslation('common'); - return ( -
- - - {t('errorSentryFallbackTitle')} - - {t('invalidSafe1', { chain: chain ? chain.name : disconnectedChain.name })} - {t('invalidSafe2')} - - -
- ); -} - -function InvalidChain() { - const { t } = useTranslation(['common', 'menu']); - const supportedChainNames = supportedChains.map(c => c.name).join(', '); - return ( -
- - - {t('errorSentryFallbackTitle')} - - {t('invalidChain')} - - {t('toastSwitchChain', { ns: 'menu', chainNames: supportedChainNames })} - - -
- ); -} - -export default function DaoPageLayout({ - children, - params: { daoAddress }, -}: { - children: ReactNode; - params: { daoAddress?: string }; -}) { - const { node } = useFractal(); - const { nodeLoading, reloadingDAO, errorLoading } = useDAOController({ daoAddress }); - const daoMetadata = useDAOMetadata(); - const { chain } = useNetwork(); - const activeTheme = useMemo(() => { - if (daoMetadata && daoMetadata.bodyBackground) { - return extendTheme({ - ...theme, - styles: { - ...theme.styles, - global: { - ...theme.styles.global, - html: { - ...theme.styles.global.html, - background: daoMetadata.bodyBackground, - }, - body: { - ...theme.styles.global.body, - background: 'none', - }, - }, - }, - }); - } - return theme; - }, [daoMetadata]); - - const validSafe = node.safe; - let display; - const childrenDisplay = {children}; - - if (process.env.NEXT_PUBLIC_TESTING_ENVIRONMENT) { - display = childrenDisplay; - } else if (!chain) { - // if we're disconnected - if (nodeLoading || reloadingDAO || validSafe || !errorLoading) { - display = children; - } else { - display = ; - } - } else { - // if we're connected - const invalidChain = !supportedChains.map(c => c.chainId).includes(chain.id); - if (invalidChain) { - display = ; - } else if (nodeLoading || reloadingDAO || validSafe || !errorLoading) { - display = children; - } else { - display = ; - } - } - - return ( - - {node?.daoName ? `${node.daoName} | ${APP_NAME}` : APP_NAME} - {node && node.daoAddress === '0x167bE4073f52aD2Aa0D6d6FeddF0F1f79a82B98e' && ( - - )} - {display} - - ); -} diff --git a/app/daos/[daoAddress]/new/page.tsx b/app/daos/[daoAddress]/new/page.tsx deleted file mode 100644 index 3ad9324976..0000000000 --- a/app/daos/[daoAddress]/new/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -'use client'; - -import { useRouter } from 'next/navigation'; -import { useState } from 'react'; -import DaoCreator from '../../../../src/components/DaoCreator'; -import { DAOCreateMode } from '../../../../src/components/DaoCreator/formComponents/EstablishEssentials'; -import ClientOnly from '../../../../src/components/ui/utils/ClientOnly'; -import { DAO_ROUTES } from '../../../../src/constants/routes'; -import { useCreateSubDAOProposal } from '../../../../src/hooks/DAO/useCreateSubDAOProposal'; -import { useFractal } from '../../../../src/providers/App/AppProvider'; -import { SafeMultisigDAO, AzoriusGovernanceDAO, SubDAO } from '../../../../src/types'; - -export default function SubDaoCreate() { - const { push } = useRouter(); - const [redirectPending, setRedirectPending] = useState(false); - const { - node: { safe }, - } = useFractal(); - - const successCallback = async (daoAddress: string) => { - setRedirectPending(true); - push(DAO_ROUTES.dao.relative(daoAddress)); - }; - - const { proposeDao, pendingCreateTx } = useCreateSubDAOProposal(); - - const proposeSubDAO = (daoData: SafeMultisigDAO | AzoriusGovernanceDAO | SubDAO) => { - const subDAOData = daoData as SubDAO; - proposeDao(subDAOData, subDAOData.customNonce || safe?.nonce, successCallback); - }; - - return ( - - - - ); -} diff --git a/app/daos/[daoAddress]/page.tsx b/app/daos/[daoAddress]/page.tsx deleted file mode 100644 index e1054d30d3..0000000000 --- a/app/daos/[daoAddress]/page.tsx +++ /dev/null @@ -1,23 +0,0 @@ -'use client'; - -import { Activities } from '../../../src/components/pages/DaoDashboard/Activities'; -import { ERCO20Claim } from '../../../src/components/pages/DaoDashboard/ERC20Claim'; -import { Info } from '../../../src/components/pages/DaoDashboard/Info'; -import InfoHeader from '../../../src/components/pages/DaoDashboard/Info/InfoHeader'; -import ClientOnly from '../../../src/components/ui/utils/ClientOnly'; -import useDAOMetadata from '../../../src/hooks/DAO/useDAOMetadata'; - -export default function DaoDashboardPage() { - const daoMetadata = useDAOMetadata(); - - return ( - <> - - - - - - - - ); -} diff --git a/app/daos/[daoAddress]/proposal-templates/new/page.tsx b/app/daos/[daoAddress]/proposal-templates/new/page.tsx deleted file mode 100644 index 87bfd7d7b8..0000000000 --- a/app/daos/[daoAddress]/proposal-templates/new/page.tsx +++ /dev/null @@ -1,218 +0,0 @@ -'use client'; - -import { Box, Flex, Grid, GridItem, Text } from '@chakra-ui/react'; -import { Trash } from '@decent-org/fractal-ui'; -import { BigNumber } from 'ethers'; -import { Formik, FormikProps } from 'formik'; -import { useRouter, useSearchParams } from 'next/navigation'; -import { useEffect, useState, useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import ProposalTemplateDetails from '../../../../../src/components/CreateProposalTemplate/ProposalTemplateDetails'; -import ProposalTemplateMetadata from '../../../../../src/components/CreateProposalTemplate/ProposalTemplateMetadata'; -import ProposalTemplateTransactionsForm from '../../../../../src/components/CreateProposalTemplate/ProposalTemplateTransactionsForm'; -import { DEFAULT_PROPOSAL_TEMPLATE } from '../../../../../src/components/CreateProposalTemplate/constants'; -import { CustomNonceInput } from '../../../../../src/components/ui/forms/CustomNonceInput'; -import PageHeader from '../../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../../src/components/ui/utils/ClientOnly'; -import { BACKGROUND_SEMI_TRANSPARENT } from '../../../../../src/constants/common'; -import { BASE_ROUTES, DAO_ROUTES } from '../../../../../src/constants/routes'; -import { logError } from '../../../../../src/helpers/errorLogging'; -import useCreateProposalTemplate from '../../../../../src/hooks/DAO/proposal/useCreateProposalTemplate'; -import useSubmitProposal from '../../../../../src/hooks/DAO/proposal/useSubmitProposal'; -import useCreateProposalTemplateSchema from '../../../../../src/hooks/schemas/createProposalTemplate/useCreateProposalTemplateSchema'; -import { useFractal } from '../../../../../src/providers/App/AppProvider'; -import useIPFSClient from '../../../../../src/providers/App/hooks/useIPFSClient'; -import { - CreateProposalTemplateForm, - CreateProposalTemplateFormState, - ProposalTemplate, -} from '../../../../../src/types/createProposalTemplate'; - -const templateAreaTwoCol = '"content details"'; -const templateAreaSingleCol = `"content" - "details"`; - -export default function CreateProposalTemplatePage() { - const [formState, setFormState] = useState(CreateProposalTemplateFormState.METADATA_FORM); - const [initialProposalTemplate, setInitialProposalTemplate] = useState(DEFAULT_PROPOSAL_TEMPLATE); - const { t } = useTranslation(['proposalTemplate', 'proposal']); - - const { push } = useRouter(); - const searchParams = useSearchParams(); - const defaultProposalTemplatesHash = useMemo( - () => searchParams?.get('templatesHash'), - [searchParams] - ); - const defaultProposalTemplateIndex = useMemo( - () => searchParams?.get('templateIndex'), - [searchParams] - ); - - const { - node: { daoAddress, safe }, - } = useFractal(); - - const { prepareProposalTemplateProposal } = useCreateProposalTemplate(); - const { submitProposal, pendingCreateTx, canUserCreateProposal } = useSubmitProposal(); - const { createProposalTemplateValidation } = useCreateProposalTemplateSchema(); - const ipfsClient = useIPFSClient(); - - const successCallback = () => { - if (daoAddress) { - // Redirecting to proposals page so that user will see Proposal for Proposal Template creation - push(DAO_ROUTES.proposals.relative(daoAddress)); - } - }; - - useEffect(() => { - const loadInitialTemplate = async () => { - if (defaultProposalTemplatesHash && defaultProposalTemplateIndex) { - try { - const proposalTemplates = await ipfsClient.cat(defaultProposalTemplatesHash); - const initialTemplate: ProposalTemplate = proposalTemplates[defaultProposalTemplateIndex]; - if (initialTemplate) { - const newInitialValue = { - nonce: undefined, - proposalTemplateMetadata: { - title: initialTemplate.title, - description: initialTemplate.description || '', - }, - transactions: initialTemplate.transactions.map(tx => ({ - ...tx, - ethValue: { - value: tx.ethValue.value, - bigNumerValue: BigNumber.from(tx.ethValue.value || 0), - }, - })), - }; - setInitialProposalTemplate(newInitialValue); - } - } catch (e) { - logError('Error while fetching initial template values', e); - } - } - }; - loadInitialTemplate(); - }, [defaultProposalTemplatesHash, defaultProposalTemplateIndex, ipfsClient]); - - return ( - - - validationSchema={createProposalTemplateValidation} - initialValues={initialProposalTemplate} - enableReinitialize - onSubmit={async values => { - if (canUserCreateProposal) { - const proposalData = await prepareProposalTemplateProposal(values); - if (proposalData) { - submitProposal({ - proposalData, - nonce: values?.nonce, - pendingToastMessage: t('proposalCreatePendingToastMessage', { ns: 'proposal' }), - successToastMessage: t('proposalCreateSuccessToastMessage', { ns: 'proposal' }), - failedToastMessage: t('proposalCreateFailureToastMessage', { ns: 'proposal' }), - successCallback, - }); - } - } - }} - > - {(formikProps: FormikProps) => { - const { handleSubmit } = formikProps; - - return ( -
- - - push( - daoAddress - ? DAO_ROUTES.proposalTemplates.relative(daoAddress) - : BASE_ROUTES.landing - ) - } - isButtonDisabled={pendingCreateTx} - /> - - - - - {formState === CreateProposalTemplateFormState.METADATA_FORM ? ( - - ) : ( - <> - - - {formikProps.values.proposalTemplateMetadata.title} - - formikProps.setFieldValue('nonce', newNonce)} - align="end" - /> - - - - )} - - - - - - - - -
- ); - }} - -
- ); -} diff --git a/app/daos/[daoAddress]/proposal-templates/page.tsx b/app/daos/[daoAddress]/proposal-templates/page.tsx deleted file mode 100644 index 963221cd99..0000000000 --- a/app/daos/[daoAddress]/proposal-templates/page.tsx +++ /dev/null @@ -1,44 +0,0 @@ -'use client'; - -import { Button, Show } from '@chakra-ui/react'; -import { AddPlus } from '@decent-org/fractal-ui'; -import Link from 'next/link'; -import { useTranslation } from 'react-i18next'; -import ProposalTemplates from '../../../../src/components/ProposalTemplates'; -import PageHeader from '../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../src/components/ui/utils/ClientOnly'; -import { DAO_ROUTES } from '../../../../src/constants/routes'; -import useSubmitProposal from '../../../../src/hooks/DAO/proposal/useSubmitProposal'; -import { useFractal } from '../../../../src/providers/App/AppProvider'; - -export default function ProposalTemplatesPage() { - const { t } = useTranslation(); - const { - node: { daoAddress }, - } = useFractal(); - const { canUserCreateProposal } = useSubmitProposal(); - - return ( - - - {canUserCreateProposal && ( - - - - )} - - - - ); -} diff --git a/app/daos/[daoAddress]/proposals/[proposalId]/page.tsx b/app/daos/[daoAddress]/proposals/[proposalId]/page.tsx deleted file mode 100644 index 3a86f14b33..0000000000 --- a/app/daos/[daoAddress]/proposals/[proposalId]/page.tsx +++ /dev/null @@ -1,88 +0,0 @@ -'use client'; - -import { useEffect, useState } from 'react'; -import { useTranslation } from 'react-i18next'; -import { AzoriusProposalDetails } from '../../../../../src/components/Proposals/AzoriusDetails'; -import { MultisigProposalDetails } from '../../../../../src/components/Proposals/MultisigProposalDetails'; -import SnapshotProposalDetails from '../../../../../src/components/Proposals/SnapshotProposalDetails'; -import { EmptyBox } from '../../../../../src/components/ui/containers/EmptyBox'; -import { InfoBoxLoader } from '../../../../../src/components/ui/loaders/InfoBoxLoader'; -import PageHeader from '../../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../../src/components/ui/utils/ClientOnly'; -import { DAO_ROUTES } from '../../../../../src/constants/routes'; -import useSnapshotProposal from '../../../../../src/hooks/DAO/loaders/snapshot/useSnapshotProposal'; -import { useGetMetadata } from '../../../../../src/hooks/DAO/proposal/useGetMetadata'; -import { useFractal } from '../../../../../src/providers/App/AppProvider'; -import { FractalProposal, AzoriusProposal, SnapshotProposal } from '../../../../../src/types'; - -export default function ProposalDetailsPage({ - params: { proposalId }, -}: { - params: { proposalId: string }; -}) { - const { - node: { daoAddress }, - governance: { proposals }, - readOnly: { dao }, - } = useFractal(); - - const [proposal, setProposal] = useState(); - const { isSnapshotProposal, snapshotProposal } = useSnapshotProposal(proposal); - const metaData = useGetMetadata(proposal); - const { t } = useTranslation(['proposal', 'navigation', 'breadcrumbs', 'dashboard']); - - const azoriusProposal = proposal as AzoriusProposal; - - useEffect(() => { - if (!proposals || !proposals.length || !proposalId) { - setProposal(undefined); - return; - } - - const foundProposal = proposals.find(p => { - const currentSnapshotProposal = p as SnapshotProposal; - if (!!currentSnapshotProposal.snapshotProposalId) { - return currentSnapshotProposal.snapshotProposalId === proposalId; - } - return p.proposalId === proposalId; - }); - if (!foundProposal) { - setProposal(null); - return; - } - setProposal(foundProposal); - }, [proposals, proposalId, isSnapshotProposal]); - - return ( - - - {proposal === undefined ? ( - - ) : proposal === null ? ( - - ) : isSnapshotProposal ? ( - - ) : dao?.isAzorius ? ( - - ) : ( - - )} - - ); -} diff --git a/app/daos/[daoAddress]/proposals/new/page.tsx b/app/daos/[daoAddress]/proposals/new/page.tsx deleted file mode 100644 index dc79b44ba5..0000000000 --- a/app/daos/[daoAddress]/proposals/new/page.tsx +++ /dev/null @@ -1,166 +0,0 @@ -'use client'; - -import { Grid, GridItem, Box, Flex, Center } from '@chakra-ui/react'; -import { Trash } from '@decent-org/fractal-ui'; -import { Formik, FormikProps } from 'formik'; -import { useRouter } from 'next/navigation'; -import { useState, useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import { ProposalDetails } from '../../../../../src/components/ProposalCreate/ProposalDetails'; -import { ProposalHeader } from '../../../../../src/components/ProposalCreate/ProposalHeader'; -import ProposalMetadata from '../../../../../src/components/ProposalCreate/ProposalMetadata'; -import TransactionsForm from '../../../../../src/components/ProposalCreate/TransactionsForm'; -import { DEFAULT_PROPOSAL } from '../../../../../src/components/ProposalCreate/constants'; -import { BarLoader } from '../../../../../src/components/ui/loaders/BarLoader'; -import PageHeader from '../../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../../src/components/ui/utils/ClientOnly'; -import { BACKGROUND_SEMI_TRANSPARENT, HEADER_HEIGHT } from '../../../../../src/constants/common'; -import { DAO_ROUTES } from '../../../../../src/constants/routes'; -import { usePrepareProposal } from '../../../../../src/hooks/DAO/proposal/usePrepareProposal'; -import useSubmitProposal from '../../../../../src/hooks/DAO/proposal/useSubmitProposal'; -import { useCreateProposalSchema } from '../../../../../src/hooks/schemas/proposalCreate/useCreateProposalSchema'; -import { useFractal } from '../../../../../src/providers/App/AppProvider'; -import { CreateProposalForm, CreateProposalState, GovernanceType } from '../../../../../src/types'; - -const templateAreaTwoCol = '"content details"'; -const templateAreaSingleCol = `"content" - "details"`; - -export default function ProposalCreatePage() { - const { - node: { daoAddress, safe }, - governance: { type }, - } = useFractal(); - const { createProposalValidation } = useCreateProposalSchema(); - const { prepareProposal } = usePrepareProposal(); - const { submitProposal, pendingCreateTx, canUserCreateProposal } = useSubmitProposal(); - - const { push } = useRouter(); - const { t } = useTranslation(['proposal', 'common', 'breadcrumbs']); - - const [formState, setFormState] = useState(CreateProposalState.METADATA_FORM); - const isAzorius = useMemo( - () => type === GovernanceType.AZORIUS_ERC20 || type === GovernanceType.AZORIUS_ERC721, - [type] - ); - - const successCallback = () => { - if (daoAddress) { - push(DAO_ROUTES.proposals.relative(daoAddress)); - } - }; - - if (!type || !daoAddress || !safe) { - return ( -
- -
- ); - } - - return ( - - - validationSchema={createProposalValidation} - initialValues={{ ...DEFAULT_PROPOSAL, nonce: safe.nonce }} - onSubmit={async values => { - const { nonce } = values; - const proposalData = await prepareProposal(values); - submitProposal({ - proposalData, - nonce, - pendingToastMessage: t('proposalCreatePendingToastMessage'), - successToastMessage: t('proposalCreateSuccessToastMessage'), - failedToastMessage: t('proposalCreateFailureToastMessage'), - successCallback, - }); - }} - validateOnMount - isInitialValid={false} - > - {(formikProps: FormikProps) => { - const { handleSubmit, setFieldValue, values } = formikProps; - return ( -
- - push(DAO_ROUTES.proposals.relative(daoAddress))} - isButtonDisabled={pendingCreateTx} - /> - - - - - { - setFieldValue('nonce', nonce); - }} - /> - - - - - - - - - - - -
- ); - }} - -
- ); -} diff --git a/app/daos/[daoAddress]/proposals/page.tsx b/app/daos/[daoAddress]/proposals/page.tsx deleted file mode 100644 index a62a32f0f9..0000000000 --- a/app/daos/[daoAddress]/proposals/page.tsx +++ /dev/null @@ -1,109 +0,0 @@ -'use client'; - -import { Button, Flex, Show, Text } from '@chakra-ui/react'; -import { AddPlus, TokenPlaceholder } from '@decent-org/fractal-ui'; -import Link from 'next/link'; -import { useMemo } from 'react'; -import { useTranslation } from 'react-i18next'; -import Proposals from '../../../../src/components/Proposals'; -import { ModalType } from '../../../../src/components/ui/modals/ModalProvider'; -import { useFractalModal } from '../../../../src/components/ui/modals/useFractalModal'; -import PageHeader from '../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../src/components/ui/utils/ClientOnly'; -import { DAO_ROUTES } from '../../../../src/constants/routes'; -import useSubmitProposal from '../../../../src/hooks/DAO/proposal/useSubmitProposal'; -import { useFractal } from '../../../../src/providers/App/AppProvider'; -import { AzoriusGovernance, DecentGovernance, GovernanceType } from '../../../../src/types'; - -export default function ProposalsPage() { - const { t } = useTranslation(['common', 'proposal', 'breadcrumbs']); - const { - governance, - node: { daoAddress }, - } = useFractal(); - const azoriusGovernance = governance as AzoriusGovernance; - const delegate = useFractalModal(ModalType.DELEGATE); - const wrapTokenOpen = useFractalModal(ModalType.WRAP_TOKEN); - const unwrapTokenOpen = useFractalModal(ModalType.UNWRAP_TOKEN); - const canDelegate = useMemo(() => { - if (azoriusGovernance.type === GovernanceType.AZORIUS_ERC20) { - const decentGovernance = azoriusGovernance as DecentGovernance; - const hasLockedTokenBalance = decentGovernance?.lockedVotesToken?.balance?.gt(0); - const hasVotesTokenBalance = azoriusGovernance?.votesToken?.balance?.gt(0); - return hasVotesTokenBalance || hasLockedTokenBalance; - } - return false; - }, [azoriusGovernance]); - const { canUserCreateProposal } = useSubmitProposal(); - - const showWrapTokenButton = !!azoriusGovernance.votesToken?.underlyingTokenData; - const showUnWrapTokenButton = - showWrapTokenButton && - !!azoriusGovernance.votesToken?.balance && - !azoriusGovernance.votesToken.balance.isZero(); - - return ( - - - {showWrapTokenButton && ( - - )} - {showUnWrapTokenButton && ( - - )} - {canUserCreateProposal && ( - - - - )} - - - - ); -} diff --git a/app/daos/[daoAddress]/settings/page.tsx b/app/daos/[daoAddress]/settings/page.tsx deleted file mode 100644 index cc21aafe32..0000000000 --- a/app/daos/[daoAddress]/settings/page.tsx +++ /dev/null @@ -1,42 +0,0 @@ -'use client'; - -import { Center } from '@chakra-ui/react'; -import { useTranslation } from 'react-i18next'; -import { Settings } from '../../../../src/components/pages/DaoSettings'; -import { BarLoader } from '../../../../src/components/ui/loaders/BarLoader'; -import PageHeader from '../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../src/components/ui/utils/ClientOnly'; -import { HEADER_HEIGHT } from '../../../../src/constants/common'; -import { useFractal } from '../../../../src/providers/App/AppProvider'; - -export default function SettingsPage() { - const { t } = useTranslation('breadcrumbs'); - const { - node: { daoAddress, daoName }, - } = useFractal(); - - if (!daoAddress) { - return ( -
- -
- ); - } - return ( - - - - - ); -} diff --git a/app/daos/[daoAddress]/treasury/page.tsx b/app/daos/[daoAddress]/treasury/page.tsx deleted file mode 100644 index 12450364bc..0000000000 --- a/app/daos/[daoAddress]/treasury/page.tsx +++ /dev/null @@ -1,67 +0,0 @@ -'use client'; - -import { Flex } from '@chakra-ui/react'; -import { useTranslation } from 'react-i18next'; -import { Assets } from '../../../../src/components/pages/DAOTreasury/components/Assets'; -import { Transactions } from '../../../../src/components/pages/DAOTreasury/components/Transactions'; -import { useTreasuryTotalBN } from '../../../../src/components/pages/DAOTreasury/hooks/useTreasuryTotalBN'; -import { TitledInfoBox } from '../../../../src/components/ui/containers/TitledInfoBox'; -import { ModalType } from '../../../../src/components/ui/modals/ModalProvider'; -import { useFractalModal } from '../../../../src/components/ui/modals/useFractalModal'; -import PageHeader from '../../../../src/components/ui/page/Header/PageHeader'; -import ClientOnly from '../../../../src/components/ui/utils/ClientOnly'; -import useSubmitProposal from '../../../../src/hooks/DAO/proposal/useSubmitProposal'; -import { useFractal } from '../../../../src/providers/App/AppProvider'; - -export default function Treasury() { - const { - node: { daoName, daoAddress }, - } = useFractal(); - const { t } = useTranslation('treasury'); - const treasuryTotal = useTreasuryTotalBN(); - const { canUserCreateProposal } = useSubmitProposal(); - const showButton = canUserCreateProposal && !treasuryTotal.isZero(); - - return ( - - - - - - - - - - - - ); -} diff --git a/app/layout.tsx b/app/layout.tsx deleted file mode 100644 index 51970ce0bf..0000000000 --- a/app/layout.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import 'i18next'; -import { ReactNode } from 'react'; -import { APP_NAME } from '../src/constants/common'; -import Providers from '../src/providers/Providers'; - -export default function RootLayout({ children }: { children: ReactNode }) { - return ( - - - - - - - - - - - - - - - - - - - {APP_NAME} - - - {children} - - - ); -} diff --git a/app/page.tsx b/app/page.tsx deleted file mode 100644 index 9cba45c4cd..0000000000 --- a/app/page.tsx +++ /dev/null @@ -1,253 +0,0 @@ -'use client'; - -import { Center, VStack, Text, Button, Flex, Box } from '@chakra-ui/react'; -import { useRouter } from 'next/navigation'; -import { useEffect } from 'react'; -import { useTranslation } from 'react-i18next'; -import { useNetwork } from 'wagmi'; -import { mainnet, sepolia } from 'wagmi/chains'; -import { AppFooter } from '../src/components/pages/AppHome/AppFooter'; -import { CTABox } from '../src/components/pages/AppHome/CTABox'; -import FeaturedDAOCard from '../src/components/pages/AppHome/FeaturedDAOCard'; -import ValueProposition from '../src/components/pages/AppHome/ValueProposition'; -import ExternalLink from '../src/components/ui/links/ExternalLink'; -import ClientOnly from '../src/components/ui/utils/ClientOnly'; -import { BASE_ROUTES } from '../src/constants/routes'; -import { URL_DOCS } from '../src/constants/url'; -import { useFractal } from '../src/providers/App/AppProvider'; -import { disconnectedChain } from '../src/providers/NetworkConfig/NetworkConfigProvider'; - -const VALUE_PROPS = [ - { - iconSrc: '/images/icon-structure.svg', - titleKey: 'structure', - descKey: 'structureDesc', - }, - { - iconSrc: '/images/icon-operate.svg', - titleKey: 'operate', - descKey: 'operateDesc', - }, - { - iconSrc: '/images/icon-govern.svg', - titleKey: 'govern', - descKey: 'governDesc', - }, -]; - -interface Feature { - iconSrc: string; - titleKey: string; - descKey: string; - address: string; -} - -// featured DAOs are dependent on the connected chain -const FEATURED_DAOS = new Map([ - [ - mainnet.id, - [ - { - iconSrc: '/images/shutter-icon-only-logo.svg', - titleKey: 'shutterTitle', - descKey: 'shutterDesc', - address: '0x36bD3044ab68f600f6d3e081056F34f2a58432c4', - }, - { - iconSrc: '/images/icon-decent.svg', - titleKey: 'decentTitle', - descKey: 'decentDesc', - address: '0xD26c85D435F02DaB8B220cd4D2d398f6f646e235', - }, - { - iconSrc: '/images/icon-awakevc.svg', - titleKey: 'awakeTitle', - descKey: 'awakeDesc', - address: '0xdD6CeFA62239272f1eDf755ba6471eacb7DF2Fa5', - }, - ], - ], - [ - sepolia.id, - [ - { - iconSrc: '/images/icon-myosin.svg', - titleKey: 'myosinTitle', - descKey: 'myosinDesc', - address: '0xdef90A94273a1A1A72B33D39129fa41E6C08Be3a', - }, - ], - ], -]); - -export default function HomePage() { - const { t } = useTranslation('home'); - const { push } = useRouter(); - const createDAO = () => { - push(BASE_ROUTES.create); - }; - const { - node: { daoAddress }, - action, - } = useFractal(); - - useEffect(() => { - if (daoAddress) { - action.resetDAO(); - } - }, [daoAddress, action]); - - const { chain } = useNetwork(); - const features = FEATURED_DAOS.get(chain ? chain.id : disconnectedChain.id); - - return ( - -
- - - {t('homeTitle')} - -
- - - {t('homeDesc')} - - - -
- - {VALUE_PROPS.map((daoAction, index) => { - return ( - - ); - })} - - - - - } - rightSlot={ - - {t('learnCTA')} - - } - /> - {features && features.length > 0 ? ( - <> - - {t('featuredTitle')} - - - {t('featuredDesc')} - - - {features.map((feature, index) => { - if ( - typeof location !== 'undefined' && - location.pathname === 'app.fractalframework.xyz' - ) { - return null; - } - return ( - - ); - })} - - - ) : ( - // if there are no features just show padding - - )} - - {t('readyCTA')} - - } - rightSlot={ - - } - /> - -
-
-
- ); -} From 215d2be30cb4372a0ad62e3cbb103f2616aa889a Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:32:46 -0500 Subject: [PATCH 02/35] updates to next config --- next-env.d.ts | 1 - next.config.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/next-env.d.ts b/next-env.d.ts index fd36f9494e..4f11a03dc6 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,5 @@ /// /// -/// // NOTE: This file should not be edited // see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js index c8095e7756..2a9c5cdef9 100644 --- a/next.config.js +++ b/next.config.js @@ -7,6 +7,7 @@ module.exports = { return config; }, + output: 'export', images: { dangerouslyAllowSVG: true, contentDispositionType: 'attachment', @@ -15,6 +16,5 @@ module.exports = { }, experimental: { esmExternals: false, - appDir: true, }, }; From 46104dc93474729c8a8a28b3748ce954838867cb Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:33:26 -0500 Subject: [PATCH 03/35] refactor AppRouter pages for use in Page Router --- src/pages/_app.tsx | 81 ++++++ src/pages/create/index.tsx | 66 +++++ .../[daoAddress]/edit/governance/index.tsx | 68 +++++ .../daos/[daoAddress]/hierarchy/index.tsx | 46 ++++ src/pages/daos/[daoAddress]/index.tsx | 23 ++ src/pages/daos/[daoAddress]/new/index.tsx | 42 +++ .../[daoAddress]/proposal-templates/index.tsx | 44 ++++ .../proposal-templates/new/index.tsx | 218 +++++++++++++++ .../proposals/[proposalId]/index.tsx | 86 ++++++ .../daos/[daoAddress]/proposals/index.tsx | 109 ++++++++ .../daos/[daoAddress]/proposals/new/index.tsx | 166 ++++++++++++ .../daos/[daoAddress]/settings/index.tsx | 42 +++ .../daos/[daoAddress]/treasury/index.tsx | 67 +++++ src/pages/index.tsx | 248 ++++++++++++++++++ 14 files changed, 1306 insertions(+) create mode 100644 src/pages/_app.tsx create mode 100644 src/pages/create/index.tsx create mode 100644 src/pages/daos/[daoAddress]/edit/governance/index.tsx create mode 100644 src/pages/daos/[daoAddress]/hierarchy/index.tsx create mode 100644 src/pages/daos/[daoAddress]/index.tsx create mode 100644 src/pages/daos/[daoAddress]/new/index.tsx create mode 100644 src/pages/daos/[daoAddress]/proposal-templates/index.tsx create mode 100644 src/pages/daos/[daoAddress]/proposal-templates/new/index.tsx create mode 100644 src/pages/daos/[daoAddress]/proposals/[proposalId]/index.tsx create mode 100644 src/pages/daos/[daoAddress]/proposals/index.tsx create mode 100644 src/pages/daos/[daoAddress]/proposals/new/index.tsx create mode 100644 src/pages/daos/[daoAddress]/settings/index.tsx create mode 100644 src/pages/daos/[daoAddress]/treasury/index.tsx create mode 100644 src/pages/index.tsx diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx new file mode 100644 index 0000000000..b16d5d904c --- /dev/null +++ b/src/pages/_app.tsx @@ -0,0 +1,81 @@ +import { AppProps } from 'next/app'; +import Head from 'next/head'; +import { APP_NAME } from '../constants/common'; +import Providers from '../providers/Providers'; +import '@fontsource/ibm-plex-mono'; +import '@fontsource/ibm-plex-sans'; +import 'react-toastify/dist/ReactToastify.min.css'; +import '../assets/css/SnapshotProposalMarkdown.css'; +import DAOController from './DAOController'; +export default function AppRoot({ Component, pageProps }: AppProps) { + return ( +
+ + + + + + + + + + + + + + + + + + {APP_NAME} + + + + + + +
+ ); +} diff --git a/src/pages/create/index.tsx b/src/pages/create/index.tsx new file mode 100644 index 0000000000..487865e979 --- /dev/null +++ b/src/pages/create/index.tsx @@ -0,0 +1,66 @@ +'use client'; + +import { ethers } from 'ethers'; +import { useRouter } from 'next/navigation'; +import { useCallback, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { toast } from 'react-toastify'; +import DaoCreator from '../../components/DaoCreator'; +import { DAOCreateMode } from '../../components/DaoCreator/formComponents/EstablishEssentials'; +import ClientOnly from '../../components/ui/utils/ClientOnly'; +import { BASE_ROUTES, DAO_ROUTES } from '../../constants/routes'; +import { useAccountFavorites } from '../../hooks/DAO/loaders/useFavorites'; +import useDeployDAO from '../../hooks/DAO/useDeployDAO'; +import { useAsyncRetry } from '../../hooks/utils/useAsyncRetry'; +import { useSafeAPI } from '../../providers/App/hooks/useSafeAPI'; +import { SafeMultisigDAO, AzoriusERC20DAO, AzoriusERC721DAO } from '../../types'; + +export default function DaoCreatePage() { + const { push } = useRouter(); + const { requestWithRetries } = useAsyncRetry(); + const { toggleFavorite } = useAccountFavorites(); + const [redirectPending, setRedirectPending] = useState(false); + const { t } = useTranslation('transaction'); + const safeAPI = useSafeAPI(); + + const successCallback = useCallback( + async (daoAddress: string) => { + setRedirectPending(true); + const { getAddress } = ethers.utils; + const daoFound = await requestWithRetries( + () => safeAPI.getSafeCreationInfo(getAddress(daoAddress)), + 8 + ); + toggleFavorite(daoAddress); + if (daoFound) { + push(DAO_ROUTES.dao.relative(daoAddress)); + } else { + toast(t('failedIndexSafe'), { + autoClose: false, + closeOnClick: true, + draggable: false, + closeButton: false, + progress: 1, + }); + push(BASE_ROUTES.landing); + } + }, + [safeAPI, requestWithRetries, toggleFavorite, push, t] + ); + + const [deploy, pending] = useDeployDAO(); + + const deployDAO = (daoData: SafeMultisigDAO | AzoriusERC20DAO | AzoriusERC721DAO) => { + deploy(daoData, successCallback); + }; + + return ( + + + + ); +} diff --git a/src/pages/daos/[daoAddress]/edit/governance/index.tsx b/src/pages/daos/[daoAddress]/edit/governance/index.tsx new file mode 100644 index 0000000000..55ad6e766f --- /dev/null +++ b/src/pages/daos/[daoAddress]/edit/governance/index.tsx @@ -0,0 +1,68 @@ +'use client'; + +import { Box } from '@chakra-ui/react'; +import { CloseX } from '@decent-org/fractal-ui'; +import { useRouter } from 'next/navigation'; +import { useTranslation } from 'react-i18next'; +import DaoCreator from '../../../../../components/DaoCreator'; +import { DAOCreateMode } from '../../../../../components/DaoCreator/formComponents/EstablishEssentials'; +import { EmptyBox } from '../../../../../components/ui/containers/EmptyBox'; +import PageHeader from '../../../../../components/ui/page/Header/PageHeader'; +import { DAO_ROUTES } from '../../../../../constants/routes'; +import useDeployAzorius from '../../../../../hooks/DAO/useDeployAzorius'; +import { createAccountSubstring } from '../../../../../hooks/utils/useDisplayName'; +import { useFractal } from '../../../../../providers/App/AppProvider'; +import { + DAOTrigger, + AzoriusERC20DAO, + AzoriusERC721DAO, + GovernanceType, +} from '../../../../../types'; + +export default function ModifyGovernancePage() { + const { + node: { daoAddress, safe, daoName, daoSnapshotURL }, + governance: { type }, + readOnly: { user }, + } = useFractal(); + const { t } = useTranslation(['daoEdit', 'common', 'breadcrumbs']); + const { push } = useRouter(); + const isMultisig = type === GovernanceType.MULTISIG; + const isSigner = user.address && safe?.owners.includes(user.address); + const deployAzorius = useDeployAzorius(); + + const handleDeployAzorius: DAOTrigger = daoData => { + deployAzorius( + daoData as AzoriusERC20DAO | AzoriusERC721DAO, + !daoName || createAccountSubstring(daoAddress!) === daoName, + !daoSnapshotURL && !!daoData.snapshotURL + ); + }; + + return ( + + push(DAO_ROUTES.dao.relative(daoAddress))} + isButtonDisabled={false} + breadcrumbs={[ + { + terminus: t('modifyGovernance', { ns: 'breadcrumbs' }), + path: '', + }, + ]} + /> + {isMultisig && isSigner ? ( + + ) : ( + + )} + + ); +} diff --git a/src/pages/daos/[daoAddress]/hierarchy/index.tsx b/src/pages/daos/[daoAddress]/hierarchy/index.tsx new file mode 100644 index 0000000000..77ac73f156 --- /dev/null +++ b/src/pages/daos/[daoAddress]/hierarchy/index.tsx @@ -0,0 +1,46 @@ +'use client'; + +import { Center } from '@chakra-ui/react'; +import { useTranslation } from 'react-i18next'; +import { DaoNode } from '../../../../components/pages/DaoHierarchy/DaoNode'; +import { BarLoader } from '../../../../components/ui/loaders/BarLoader'; +import PageHeader from '../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../components/ui/utils/ClientOnly'; +import { HEADER_HEIGHT } from '../../../../constants/common'; +import { useFractal } from '../../../../providers/App/AppProvider'; + +export default function HierarchyPage() { + const { + node: { daoAddress, daoName, nodeHierarchy }, + } = useFractal(); + const { t } = useTranslation('breadcrumbs'); + + if (!daoAddress) { + return ( +
+ +
+ ); + } + + return ( + + + + + ); +} diff --git a/src/pages/daos/[daoAddress]/index.tsx b/src/pages/daos/[daoAddress]/index.tsx new file mode 100644 index 0000000000..760f9baa20 --- /dev/null +++ b/src/pages/daos/[daoAddress]/index.tsx @@ -0,0 +1,23 @@ +'use client'; + +import { Box } from '@chakra-ui/react'; +import { Activities } from '../../../components/pages/DaoDashboard/Activities'; +import { ERCO20Claim } from '../../../components/pages/DaoDashboard/ERC20Claim'; +import { Info } from '../../../components/pages/DaoDashboard/Info'; +import InfoHeader from '../../../components/pages/DaoDashboard/Info/InfoHeader'; +import useDAOMetadata from '../../../hooks/DAO/useDAOMetadata'; + +export default function DaoDashboardPage() { + const daoMetadata = useDAOMetadata(); + + return ( + <> + + + + + + + + ); +} diff --git a/src/pages/daos/[daoAddress]/new/index.tsx b/src/pages/daos/[daoAddress]/new/index.tsx new file mode 100644 index 0000000000..786063c669 --- /dev/null +++ b/src/pages/daos/[daoAddress]/new/index.tsx @@ -0,0 +1,42 @@ +'use client'; + +import { useRouter } from 'next/navigation'; +import { useState } from 'react'; +import DaoCreator from '../../../../components/DaoCreator'; +import { DAOCreateMode } from '../../../../components/DaoCreator/formComponents/EstablishEssentials'; +import ClientOnly from '../../../../components/ui/utils/ClientOnly'; +import { DAO_ROUTES } from '../../../../constants/routes'; +import { useCreateSubDAOProposal } from '../../../../hooks/DAO/useCreateSubDAOProposal'; +import { useFractal } from '../../../../providers/App/AppProvider'; +import { SafeMultisigDAO, AzoriusGovernanceDAO, SubDAO } from '../../../../types'; + +export default function SubDaoCreate() { + const { push } = useRouter(); + const [redirectPending, setRedirectPending] = useState(false); + const { + node: { safe }, + } = useFractal(); + + const successCallback = async (daoAddress: string) => { + setRedirectPending(true); + push(DAO_ROUTES.dao.relative(daoAddress)); + }; + + const { proposeDao, pendingCreateTx } = useCreateSubDAOProposal(); + + const proposeSubDAO = (daoData: SafeMultisigDAO | AzoriusGovernanceDAO | SubDAO) => { + const subDAOData = daoData as SubDAO; + proposeDao(subDAOData, subDAOData.customNonce || safe?.nonce, successCallback); + }; + + return ( + + + + ); +} diff --git a/src/pages/daos/[daoAddress]/proposal-templates/index.tsx b/src/pages/daos/[daoAddress]/proposal-templates/index.tsx new file mode 100644 index 0000000000..6885b67bcc --- /dev/null +++ b/src/pages/daos/[daoAddress]/proposal-templates/index.tsx @@ -0,0 +1,44 @@ +'use client'; + +import { Button, Show } from '@chakra-ui/react'; +import { AddPlus } from '@decent-org/fractal-ui'; +import Link from 'next/link'; +import { useTranslation } from 'react-i18next'; +import ProposalTemplates from '../../../../components/ProposalTemplates'; +import PageHeader from '../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../components/ui/utils/ClientOnly'; +import { DAO_ROUTES } from '../../../../constants/routes'; +import useSubmitProposal from '../../../../hooks/DAO/proposal/useSubmitProposal'; +import { useFractal } from '../../../../providers/App/AppProvider'; + +export default function ProposalTemplatesPage() { + const { t } = useTranslation(); + const { + node: { daoAddress }, + } = useFractal(); + const { canUserCreateProposal } = useSubmitProposal(); + + return ( + + + {canUserCreateProposal && ( + + + + )} + + + + ); +} diff --git a/src/pages/daos/[daoAddress]/proposal-templates/new/index.tsx b/src/pages/daos/[daoAddress]/proposal-templates/new/index.tsx new file mode 100644 index 0000000000..ba0ff307e2 --- /dev/null +++ b/src/pages/daos/[daoAddress]/proposal-templates/new/index.tsx @@ -0,0 +1,218 @@ +'use client'; + +import { Box, Flex, Grid, GridItem, Text } from '@chakra-ui/react'; +import { Trash } from '@decent-org/fractal-ui'; +import { BigNumber } from 'ethers'; +import { Formik, FormikProps } from 'formik'; +import { useRouter, useSearchParams } from 'next/navigation'; +import { useEffect, useState, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import ProposalTemplateDetails from '../../../../../components/CreateProposalTemplate/ProposalTemplateDetails'; +import ProposalTemplateMetadata from '../../../../../components/CreateProposalTemplate/ProposalTemplateMetadata'; +import ProposalTemplateTransactionsForm from '../../../../../components/CreateProposalTemplate/ProposalTemplateTransactionsForm'; +import { DEFAULT_PROPOSAL_TEMPLATE } from '../../../../../components/CreateProposalTemplate/constants'; +import { CustomNonceInput } from '../../../../../components/ui/forms/CustomNonceInput'; +import PageHeader from '../../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../../components/ui/utils/ClientOnly'; +import { BACKGROUND_SEMI_TRANSPARENT } from '../../../../../constants/common'; +import { BASE_ROUTES, DAO_ROUTES } from '../../../../../constants/routes'; +import { logError } from '../../../../../helpers/errorLogging'; +import useCreateProposalTemplate from '../../../../../hooks/DAO/proposal/useCreateProposalTemplate'; +import useSubmitProposal from '../../../../../hooks/DAO/proposal/useSubmitProposal'; +import useCreateProposalTemplateSchema from '../../../../../hooks/schemas/createProposalTemplate/useCreateProposalTemplateSchema'; +import { useFractal } from '../../../../../providers/App/AppProvider'; +import useIPFSClient from '../../../../../providers/App/hooks/useIPFSClient'; +import { + CreateProposalTemplateForm, + CreateProposalTemplateFormState, + ProposalTemplate, +} from '../../../../../types/createProposalTemplate'; + +const templateAreaTwoCol = '"content details"'; +const templateAreaSingleCol = `"content" + "details"`; + +export default function CreateProposalTemplatePage() { + const [formState, setFormState] = useState(CreateProposalTemplateFormState.METADATA_FORM); + const [initialProposalTemplate, setInitialProposalTemplate] = useState(DEFAULT_PROPOSAL_TEMPLATE); + const { t } = useTranslation(['proposalTemplate', 'proposal']); + + const { push } = useRouter(); + const searchParams = useSearchParams(); + const defaultProposalTemplatesHash = useMemo( + () => searchParams?.get('templatesHash'), + [searchParams] + ); + const defaultProposalTemplateIndex = useMemo( + () => searchParams?.get('templateIndex'), + [searchParams] + ); + + const { + node: { daoAddress, safe }, + } = useFractal(); + + const { prepareProposalTemplateProposal } = useCreateProposalTemplate(); + const { submitProposal, pendingCreateTx, canUserCreateProposal } = useSubmitProposal(); + const { createProposalTemplateValidation } = useCreateProposalTemplateSchema(); + const ipfsClient = useIPFSClient(); + + const successCallback = () => { + if (daoAddress) { + // Redirecting to proposals page so that user will see Proposal for Proposal Template creation + push(DAO_ROUTES.proposals.relative(daoAddress)); + } + }; + + useEffect(() => { + const loadInitialTemplate = async () => { + if (defaultProposalTemplatesHash && defaultProposalTemplateIndex) { + try { + const proposalTemplates = await ipfsClient.cat(defaultProposalTemplatesHash); + const initialTemplate: ProposalTemplate = proposalTemplates[defaultProposalTemplateIndex]; + if (initialTemplate) { + const newInitialValue = { + nonce: undefined, + proposalTemplateMetadata: { + title: initialTemplate.title, + description: initialTemplate.description || '', + }, + transactions: initialTemplate.transactions.map(tx => ({ + ...tx, + ethValue: { + value: tx.ethValue.value, + bigNumerValue: BigNumber.from(tx.ethValue.value || 0), + }, + })), + }; + setInitialProposalTemplate(newInitialValue); + } + } catch (e) { + logError('Error while fetching initial template values', e); + } + } + }; + loadInitialTemplate(); + }, [defaultProposalTemplatesHash, defaultProposalTemplateIndex, ipfsClient]); + + return ( + + + validationSchema={createProposalTemplateValidation} + initialValues={initialProposalTemplate} + enableReinitialize + onSubmit={async values => { + if (canUserCreateProposal) { + const proposalData = await prepareProposalTemplateProposal(values); + if (proposalData) { + submitProposal({ + proposalData, + nonce: values?.nonce, + pendingToastMessage: t('proposalCreatePendingToastMessage', { ns: 'proposal' }), + successToastMessage: t('proposalCreateSuccessToastMessage', { ns: 'proposal' }), + failedToastMessage: t('proposalCreateFailureToastMessage', { ns: 'proposal' }), + successCallback, + }); + } + } + }} + > + {(formikProps: FormikProps) => { + const { handleSubmit } = formikProps; + + return ( +
+ + + push( + daoAddress + ? DAO_ROUTES.proposalTemplates.relative(daoAddress) + : BASE_ROUTES.landing + ) + } + isButtonDisabled={pendingCreateTx} + /> + + + + + {formState === CreateProposalTemplateFormState.METADATA_FORM ? ( + + ) : ( + <> + + + {formikProps.values.proposalTemplateMetadata.title} + + formikProps.setFieldValue('nonce', newNonce)} + align="end" + /> + + + + )} + + + + + + + + +
+ ); + }} + +
+ ); +} diff --git a/src/pages/daos/[daoAddress]/proposals/[proposalId]/index.tsx b/src/pages/daos/[daoAddress]/proposals/[proposalId]/index.tsx new file mode 100644 index 0000000000..31cb863ab0 --- /dev/null +++ b/src/pages/daos/[daoAddress]/proposals/[proposalId]/index.tsx @@ -0,0 +1,86 @@ +'use client'; + +import { useRouter } from 'next/router'; +import { useEffect, useState } from 'react'; +import { useTranslation } from 'react-i18next'; +import { AzoriusProposalDetails } from '../../../../../components/Proposals/AzoriusDetails'; +import { MultisigProposalDetails } from '../../../../../components/Proposals/MultisigProposalDetails'; +import SnapshotProposalDetails from '../../../../../components/Proposals/SnapshotProposalDetails'; +import { EmptyBox } from '../../../../../components/ui/containers/EmptyBox'; +import { InfoBoxLoader } from '../../../../../components/ui/loaders/InfoBoxLoader'; +import PageHeader from '../../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../../components/ui/utils/ClientOnly'; +import { DAO_ROUTES } from '../../../../../constants/routes'; +import useSnapshotProposal from '../../../../../hooks/DAO/loaders/snapshot/useSnapshotProposal'; +import { useGetMetadata } from '../../../../../hooks/DAO/proposal/useGetMetadata'; +import { useFractal } from '../../../../../providers/App/AppProvider'; +import { FractalProposal, AzoriusProposal, SnapshotProposal } from '../../../../../types'; + +export default function ProposalDetailsPage() { + const { + node: { daoAddress }, + governance: { proposals }, + readOnly: { dao }, + } = useFractal(); + const router = useRouter(); + const proposalId = router.query.proposalId; + const [proposal, setProposal] = useState(); + const { isSnapshotProposal, snapshotProposal } = useSnapshotProposal(proposal); + const metaData = useGetMetadata(proposal); + const { t } = useTranslation(['proposal', 'navigation', 'breadcrumbs', 'dashboard']); + + const azoriusProposal = proposal as AzoriusProposal; + + useEffect(() => { + if (!proposals || !proposals.length || !proposalId) { + setProposal(undefined); + return; + } + + const foundProposal = proposals.find(p => { + const currentSnapshotProposal = p as SnapshotProposal; + if (!!currentSnapshotProposal.snapshotProposalId) { + return currentSnapshotProposal.snapshotProposalId === proposalId; + } + return p.proposalId === proposalId; + }); + if (!foundProposal) { + setProposal(null); + return; + } + setProposal(foundProposal); + }, [proposals, proposalId, isSnapshotProposal]); + + return ( + + + {proposal === undefined ? ( + + ) : proposal === null ? ( + + ) : isSnapshotProposal ? ( + + ) : dao?.isAzorius ? ( + + ) : ( + + )} + + ); +} diff --git a/src/pages/daos/[daoAddress]/proposals/index.tsx b/src/pages/daos/[daoAddress]/proposals/index.tsx new file mode 100644 index 0000000000..cf29135591 --- /dev/null +++ b/src/pages/daos/[daoAddress]/proposals/index.tsx @@ -0,0 +1,109 @@ +'use client'; + +import { Button, Flex, Show, Text } from '@chakra-ui/react'; +import { AddPlus, TokenPlaceholder } from '@decent-org/fractal-ui'; +import Link from 'next/link'; +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import Proposals from '../../../../components/Proposals'; +import { ModalType } from '../../../../components/ui/modals/ModalProvider'; +import { useFractalModal } from '../../../../components/ui/modals/useFractalModal'; +import PageHeader from '../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../components/ui/utils/ClientOnly'; +import { DAO_ROUTES } from '../../../../constants/routes'; +import useSubmitProposal from '../../../../hooks/DAO/proposal/useSubmitProposal'; +import { useFractal } from '../../../../providers/App/AppProvider'; +import { AzoriusGovernance, DecentGovernance, GovernanceType } from '../../../../types'; + +export default function ProposalsPage() { + const { t } = useTranslation(['common', 'proposal', 'breadcrumbs']); + const { + governance, + node: { daoAddress }, + } = useFractal(); + const azoriusGovernance = governance as AzoriusGovernance; + const delegate = useFractalModal(ModalType.DELEGATE); + const wrapTokenOpen = useFractalModal(ModalType.WRAP_TOKEN); + const unwrapTokenOpen = useFractalModal(ModalType.UNWRAP_TOKEN); + const canDelegate = useMemo(() => { + if (azoriusGovernance.type === GovernanceType.AZORIUS_ERC20) { + const decentGovernance = azoriusGovernance as DecentGovernance; + const hasLockedTokenBalance = decentGovernance?.lockedVotesToken?.balance?.gt(0); + const hasVotesTokenBalance = azoriusGovernance?.votesToken?.balance?.gt(0); + return hasVotesTokenBalance || hasLockedTokenBalance; + } + return false; + }, [azoriusGovernance]); + const { canUserCreateProposal } = useSubmitProposal(); + + const showWrapTokenButton = !!azoriusGovernance.votesToken?.underlyingTokenData; + const showUnWrapTokenButton = + showWrapTokenButton && + !!azoriusGovernance.votesToken?.balance && + !azoriusGovernance.votesToken.balance.isZero(); + + return ( + + + {showWrapTokenButton && ( + + )} + {showUnWrapTokenButton && ( + + )} + {canUserCreateProposal && ( + + + + )} + + + + ); +} diff --git a/src/pages/daos/[daoAddress]/proposals/new/index.tsx b/src/pages/daos/[daoAddress]/proposals/new/index.tsx new file mode 100644 index 0000000000..2ff7b666db --- /dev/null +++ b/src/pages/daos/[daoAddress]/proposals/new/index.tsx @@ -0,0 +1,166 @@ +'use client'; + +import { Grid, GridItem, Box, Flex, Center } from '@chakra-ui/react'; +import { Trash } from '@decent-org/fractal-ui'; +import { Formik, FormikProps } from 'formik'; +import { useRouter } from 'next/navigation'; +import { useState, useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { ProposalDetails } from '../../../../../components/ProposalCreate/ProposalDetails'; +import { ProposalHeader } from '../../../../../components/ProposalCreate/ProposalHeader'; +import ProposalMetadata from '../../../../../components/ProposalCreate/ProposalMetadata'; +import TransactionsForm from '../../../../../components/ProposalCreate/TransactionsForm'; +import { DEFAULT_PROPOSAL } from '../../../../../components/ProposalCreate/constants'; +import { BarLoader } from '../../../../../components/ui/loaders/BarLoader'; +import PageHeader from '../../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../../components/ui/utils/ClientOnly'; +import { BACKGROUND_SEMI_TRANSPARENT, HEADER_HEIGHT } from '../../../../../constants/common'; +import { DAO_ROUTES } from '../../../../../constants/routes'; +import { usePrepareProposal } from '../../../../../hooks/DAO/proposal/usePrepareProposal'; +import useSubmitProposal from '../../../../../hooks/DAO/proposal/useSubmitProposal'; +import { useCreateProposalSchema } from '../../../../../hooks/schemas/proposalCreate/useCreateProposalSchema'; +import { useFractal } from '../../../../../providers/App/AppProvider'; +import { CreateProposalForm, CreateProposalState, GovernanceType } from '../../../../../types'; + +const templateAreaTwoCol = '"content details"'; +const templateAreaSingleCol = `"content" + "details"`; + +export default function ProposalCreatePage() { + const { + node: { daoAddress, safe }, + governance: { type }, + } = useFractal(); + const { createProposalValidation } = useCreateProposalSchema(); + const { prepareProposal } = usePrepareProposal(); + const { submitProposal, pendingCreateTx, canUserCreateProposal } = useSubmitProposal(); + + const { push } = useRouter(); + const { t } = useTranslation(['proposal', 'common', 'breadcrumbs']); + + const [formState, setFormState] = useState(CreateProposalState.METADATA_FORM); + const isAzorius = useMemo( + () => type === GovernanceType.AZORIUS_ERC20 || type === GovernanceType.AZORIUS_ERC721, + [type] + ); + + const successCallback = () => { + if (daoAddress) { + push(DAO_ROUTES.proposals.relative(daoAddress)); + } + }; + + if (!type || !daoAddress || !safe) { + return ( +
+ +
+ ); + } + + return ( + + + validationSchema={createProposalValidation} + initialValues={{ ...DEFAULT_PROPOSAL, nonce: safe.nonce }} + onSubmit={async values => { + const { nonce } = values; + const proposalData = await prepareProposal(values); + submitProposal({ + proposalData, + nonce, + pendingToastMessage: t('proposalCreatePendingToastMessage'), + successToastMessage: t('proposalCreateSuccessToastMessage'), + failedToastMessage: t('proposalCreateFailureToastMessage'), + successCallback, + }); + }} + validateOnMount + isInitialValid={false} + > + {(formikProps: FormikProps) => { + const { handleSubmit, setFieldValue, values } = formikProps; + return ( +
+ + push(DAO_ROUTES.proposals.relative(daoAddress))} + isButtonDisabled={pendingCreateTx} + /> + + + + + { + setFieldValue('nonce', nonce); + }} + /> + + + + + + + + + + + +
+ ); + }} + +
+ ); +} diff --git a/src/pages/daos/[daoAddress]/settings/index.tsx b/src/pages/daos/[daoAddress]/settings/index.tsx new file mode 100644 index 0000000000..5f9ad3a8bc --- /dev/null +++ b/src/pages/daos/[daoAddress]/settings/index.tsx @@ -0,0 +1,42 @@ +'use client'; + +import { Center } from '@chakra-ui/react'; +import { useTranslation } from 'react-i18next'; +import { Settings } from '../../../../components/pages/DaoSettings'; +import { BarLoader } from '../../../../components/ui/loaders/BarLoader'; +import PageHeader from '../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../components/ui/utils/ClientOnly'; +import { HEADER_HEIGHT } from '../../../../constants/common'; +import { useFractal } from '../../../../providers/App/AppProvider'; + +export default function SettingsPage() { + const { t } = useTranslation('breadcrumbs'); + const { + node: { daoAddress, daoName }, + } = useFractal(); + + if (!daoAddress) { + return ( +
+ +
+ ); + } + return ( + + + + + ); +} diff --git a/src/pages/daos/[daoAddress]/treasury/index.tsx b/src/pages/daos/[daoAddress]/treasury/index.tsx new file mode 100644 index 0000000000..0758ba1424 --- /dev/null +++ b/src/pages/daos/[daoAddress]/treasury/index.tsx @@ -0,0 +1,67 @@ +'use client'; + +import { Flex } from '@chakra-ui/react'; +import { useTranslation } from 'react-i18next'; +import { Assets } from '../../../../components/pages/DAOTreasury/components/Assets'; +import { Transactions } from '../../../../components/pages/DAOTreasury/components/Transactions'; +import { useTreasuryTotalBN } from '../../../../components/pages/DAOTreasury/hooks/useTreasuryTotalBN'; +import { TitledInfoBox } from '../../../../components/ui/containers/TitledInfoBox'; +import { ModalType } from '../../../../components/ui/modals/ModalProvider'; +import { useFractalModal } from '../../../../components/ui/modals/useFractalModal'; +import PageHeader from '../../../../components/ui/page/Header/PageHeader'; +import ClientOnly from '../../../../components/ui/utils/ClientOnly'; +import useSubmitProposal from '../../../../hooks/DAO/proposal/useSubmitProposal'; +import { useFractal } from '../../../../providers/App/AppProvider'; + +export default function Treasury() { + const { + node: { daoName, daoAddress }, + } = useFractal(); + const { t } = useTranslation('treasury'); + const treasuryTotal = useTreasuryTotalBN(); + const { canUserCreateProposal } = useSubmitProposal(); + const showButton = canUserCreateProposal && !treasuryTotal.isZero(); + + return ( + + + + + + + + + + + + ); +} diff --git a/src/pages/index.tsx b/src/pages/index.tsx new file mode 100644 index 0000000000..644b427f4a --- /dev/null +++ b/src/pages/index.tsx @@ -0,0 +1,248 @@ +import { Center, VStack, Text, Button, Flex, Box } from '@chakra-ui/react'; +import { useRouter } from 'next/navigation'; +import { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useNetwork } from 'wagmi'; +import { mainnet, sepolia } from 'wagmi/chains'; +import { AppFooter } from '../components/pages/AppHome/AppFooter'; +import { CTABox } from '../components/pages/AppHome/CTABox'; +import FeaturedDAOCard from '../components/pages/AppHome/FeaturedDAOCard'; +import ValueProposition from '../components/pages/AppHome/ValueProposition'; +import ExternalLink from '../components/ui/links/ExternalLink'; +import { BASE_ROUTES } from '../constants/routes'; +import { URL_DOCS } from '../constants/url'; +import { useFractal } from '../providers/App/AppProvider'; +import { disconnectedChain } from '../providers/NetworkConfig/NetworkConfigProvider'; + +const VALUE_PROPS = [ + { + iconSrc: '/images/icon-structure.svg', + titleKey: 'structure', + descKey: 'structureDesc', + }, + { + iconSrc: '/images/icon-operate.svg', + titleKey: 'operate', + descKey: 'operateDesc', + }, + { + iconSrc: '/images/icon-govern.svg', + titleKey: 'govern', + descKey: 'governDesc', + }, +]; + +interface Feature { + iconSrc: string; + titleKey: string; + descKey: string; + address: string; +} + +// featured DAOs are dependent on the connected chain +const FEATURED_DAOS = new Map([ + [ + mainnet.id, + [ + { + iconSrc: '/images/shutter-icon-only-logo.svg', + titleKey: 'shutterTitle', + descKey: 'shutterDesc', + address: '0x36bD3044ab68f600f6d3e081056F34f2a58432c4', + }, + { + iconSrc: '/images/icon-decent.svg', + titleKey: 'decentTitle', + descKey: 'decentDesc', + address: '0xD26c85D435F02DaB8B220cd4D2d398f6f646e235', + }, + { + iconSrc: '/images/icon-awakevc.svg', + titleKey: 'awakeTitle', + descKey: 'awakeDesc', + address: '0xdD6CeFA62239272f1eDf755ba6471eacb7DF2Fa5', + }, + ], + ], + [ + sepolia.id, + [ + { + iconSrc: '/images/icon-myosin.svg', + titleKey: 'myosinTitle', + descKey: 'myosinDesc', + address: '0xdef90A94273a1A1A72B33D39129fa41E6C08Be3a', + }, + ], + ], +]); + +export default function HomePage() { + const { t } = useTranslation('home'); + const { push } = useRouter(); + const createDAO = () => { + push(BASE_ROUTES.create); + }; + const { + node: { daoAddress }, + action, + } = useFractal(); + + useEffect(() => { + if (daoAddress) { + action.resetDAO(); + } + }, [daoAddress, action]); + + const { chain } = useNetwork(); + const features = FEATURED_DAOS.get(chain ? chain.id : disconnectedChain.id); + + return ( +
+ + + {t('homeTitle')} + +
+ + + {t('homeDesc')} + + + +
+ + {VALUE_PROPS.map((daoAction, index) => { + return ( + + ); + })} + + + + + } + rightSlot={ + + {t('learnCTA')} + + } + /> + {features && features.length > 0 ? ( + <> + + {t('featuredTitle')} + + + {t('featuredDesc')} + + + {features.map((feature, index) => { + if ( + typeof location !== 'undefined' && + location.pathname === 'app.fractalframework.xyz' + ) { + return null; + } + return ( + + ); + })} + + + ) : ( + // if there are no features just show padding + + )} + + {t('readyCTA')} + + } + rightSlot={ + + } + /> + +
+
+ ); +} From 3a6c1d89d9d485dd8c22262872ab5f8f7e3220a1 Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:34:03 -0500 Subject: [PATCH 04/35] refactor DAO Layout into Compontent that wraps apps (needed for new setup) --- src/pages/DAOController.tsx | 139 ++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 src/pages/DAOController.tsx diff --git a/src/pages/DAOController.tsx b/src/pages/DAOController.tsx new file mode 100644 index 0000000000..02630a9791 --- /dev/null +++ b/src/pages/DAOController.tsx @@ -0,0 +1,139 @@ +'use client'; + +import { Button, Center, Text, VStack, ChakraProvider, extendTheme } from '@chakra-ui/react'; +import { theme } from '@decent-org/fractal-ui'; +import Script from 'next/script'; +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useNetwork } from 'wagmi'; +import { APP_NAME } from '../constants/common'; +import useDAOController from '../hooks/DAO/useDAOController'; +import useDAOMetadata from '../hooks/DAO/useDAOMetadata'; +import { useFractal } from '../providers/App/AppProvider'; +import { + disconnectedChain, + supportedChains, +} from '../providers/NetworkConfig/NetworkConfigProvider'; + +function InvalidSafe() { + const { chain } = useNetwork(); + const { t } = useTranslation('common'); + return ( +
+ + + {t('errorSentryFallbackTitle')} + + {t('invalidSafe1', { chain: chain ? chain.name : disconnectedChain.name })} + {t('invalidSafe2')} + + +
+ ); +} + +function InvalidChain() { + const { t } = useTranslation(['common', 'menu']); + const supportedChainNames = supportedChains.map(c => c.name).join(', '); + return ( +
+ + + {t('errorSentryFallbackTitle')} + + {t('invalidChain')} + + {t('toastSwitchChain', { ns: 'menu', chainNames: supportedChainNames })} + + +
+ ); +} + +export default function DAOController({ children }: { children: React.ReactNode }) { + const { node } = useFractal(); + const { nodeLoading, errorLoading } = useDAOController(); + const daoMetadata = useDAOMetadata(); + const { chain } = useNetwork(); + const activeTheme = useMemo(() => { + if (daoMetadata && daoMetadata.bodyBackground) { + return extendTheme({ + ...theme, + styles: { + ...theme.styles, + global: { + ...theme.styles.global, + html: { + ...theme.styles.global.html, + background: daoMetadata.bodyBackground, + }, + body: { + ...theme.styles.global.body, + background: 'none', + }, + }, + }, + }); + } + return theme; + }, [daoMetadata]); + + const validSafe = node.safe; + let display; + const childrenDisplay = {children}; + + if (process.env.NEXT_PUBLIC_TESTING_ENVIRONMENT) { + display = childrenDisplay; + } else if (!chain) { + // if we're disconnected + if (nodeLoading || validSafe || !errorLoading) { + display = children; + } else { + display = ; + } + } else { + // if we're connected + const invalidChain = !supportedChains.map(c => c.chainId).includes(chain.id); + if (invalidChain) { + display = ; + } else if (nodeLoading || validSafe || !errorLoading) { + display = children; + } else { + display = ; + } + } + + return ( + <> + {node?.daoName ? `${node.daoName} | ${APP_NAME}` : APP_NAME} + {node && node.daoAddress === '0x167bE4073f52aD2Aa0D6d6FeddF0F1f79a82B98e' && ( + + )} + {display} + + ); +} From 06e0067224428057b477f1befe6e37c90d090ae8 Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:34:37 -0500 Subject: [PATCH 05/35] addresses issues with items loading now that component isn't remounted --- src/hooks/DAO/loaders/governance/useERC20Claim.ts | 7 +++++-- src/hooks/DAO/loaders/useFractalFreeze.ts | 3 +++ src/hooks/DAO/loaders/useFractalGovernance.ts | 4 ++++ src/hooks/DAO/loaders/useFractalGuardContracts.ts | 3 +++ src/hooks/DAO/loaders/useFractalNode.ts | 8 +++++++- src/hooks/DAO/loaders/useFractalTreasury.ts | 8 ++++++-- src/hooks/DAO/loaders/useGovernanceContracts.ts | 3 +++ 7 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/hooks/DAO/loaders/governance/useERC20Claim.ts b/src/hooks/DAO/loaders/governance/useERC20Claim.ts index a9fc4e0424..580b8c445c 100644 --- a/src/hooks/DAO/loaders/governance/useERC20Claim.ts +++ b/src/hooks/DAO/loaders/governance/useERC20Claim.ts @@ -8,6 +8,7 @@ import { FractalGovernanceAction } from '../../../../providers/App/governance/ac export function useERC20Claim() { const { + node: { daoAddress }, governanceContracts: { tokenContract }, baseContracts: { claimingMasterCopyContract }, action, @@ -41,7 +42,9 @@ export function useERC20Claim() { }, [claimingMasterCopyContract, tokenContract, action]); useEffect(() => { - loadTokenClaimContract(); - }, [loadTokenClaimContract]); + if (daoAddress) { + loadTokenClaimContract(); + } + }, [loadTokenClaimContract, daoAddress]); return; } diff --git a/src/hooks/DAO/loaders/useFractalFreeze.ts b/src/hooks/DAO/loaders/useFractalFreeze.ts index 4f8bdff7a9..4ec3e70eb5 100644 --- a/src/hooks/DAO/loaders/useFractalFreeze.ts +++ b/src/hooks/DAO/loaders/useFractalFreeze.ts @@ -161,6 +161,9 @@ export const useFractalFreeze = ({ loadKey.current = guardContracts.freezeVotingContract.asProvider.address; setFractalFreezeGuard(guardContracts); } + if (!daoAddress) { + loadKey.current = undefined; + } }, [setFractalFreezeGuard, guardContracts, daoAddress, loadOnMount]); useEffect(() => { diff --git a/src/hooks/DAO/loaders/useFractalGovernance.ts b/src/hooks/DAO/loaders/useFractalGovernance.ts index c5fbc0796f..4a3b86ff3e 100644 --- a/src/hooks/DAO/loaders/useFractalGovernance.ts +++ b/src/hooks/DAO/loaders/useFractalGovernance.ts @@ -115,6 +115,9 @@ export const useFractalGovernance = () => { }); } } + if (!daoAddress) { + loadKey.current = undefined; + } }, [ governanceContracts, loadDAOProposals, @@ -127,6 +130,7 @@ export const useFractalGovernance = () => { loadERC721Strategy, loadERC721Tokens, action, + daoAddress, ]); useEffect(() => { diff --git a/src/hooks/DAO/loaders/useFractalGuardContracts.ts b/src/hooks/DAO/loaders/useFractalGuardContracts.ts index bf4281ab94..c0c393e116 100644 --- a/src/hooks/DAO/loaders/useFractalGuardContracts.ts +++ b/src/hooks/DAO/loaders/useFractalGuardContracts.ts @@ -126,6 +126,9 @@ export const useFractalGuardContracts = ({ loadOnMount = true }: { loadOnMount?: loadKey.current = chainId + daoAddress; setGuardContracts(); } + if (!daoAddress) { + loadKey.current = undefined; + } }, [setGuardContracts, isModulesLoaded, daoAddress, loadOnMount, chainId]); return loadFractalGuardContracts; }; diff --git a/src/hooks/DAO/loaders/useFractalNode.ts b/src/hooks/DAO/loaders/useFractalNode.ts index 5bd8cd4b9c..4a497e2726 100644 --- a/src/hooks/DAO/loaders/useFractalNode.ts +++ b/src/hooks/DAO/loaders/useFractalNode.ts @@ -16,7 +16,7 @@ import { useFractalModules } from './useFractalModules'; const ONE_MINUTE = 60 * 1000; -export const useFractalNode = ({ daoAddress }: { daoAddress?: string }) => { +export const useFractalNode = ({ daoAddress }: { daoAddress: string | null }) => { // tracks the current valid Safe address and chain id; helps prevent unnecessary calls const currentValidSafe = useRef(); const [nodeLoading, setNodeLoading] = useState(true); @@ -128,10 +128,16 @@ export const useFractalNode = ({ daoAddress }: { daoAddress?: string }) => { const { chain } = useNetwork(); const chainId = chain ? chain.id : disconnectedChain.id; useEffect(() => { + console.log('🚀 ~ daoAddress:', daoAddress); + if (daoAddress && chainId + daoAddress !== currentValidSafe.current) { setNodeLoading(true); setDAO(chainId, daoAddress); } + if (!daoAddress) { + currentValidSafe.current = undefined; + setNodeLoading(false); + } }, [daoAddress, setDAO, currentValidSafe, chainId]); return { nodeLoading, errorLoading }; diff --git a/src/hooks/DAO/loaders/useFractalTreasury.ts b/src/hooks/DAO/loaders/useFractalTreasury.ts index 92c56f66aa..29d9305baf 100644 --- a/src/hooks/DAO/loaders/useFractalTreasury.ts +++ b/src/hooks/DAO/loaders/useFractalTreasury.ts @@ -24,7 +24,7 @@ export const useFractalTreasury = () => { const { safeBaseURL } = useNetworkConfig(); - const { setMethodOnInterval } = useUpdateTimer(daoAddress); + const { setMethodOnInterval, clearIntervals } = useUpdateTimer(daoAddress); const loadTreasury = useCallback(async () => { if (!daoAddress) { @@ -60,7 +60,11 @@ export const useFractalTreasury = () => { loadKey.current = chainId + daoAddress; setMethodOnInterval(loadTreasury); } - }, [chainId, daoAddress, loadTreasury, setMethodOnInterval]); + if (!daoAddress) { + loadKey.current = null; + clearIntervals(); + } + }, [chainId, daoAddress, loadTreasury, setMethodOnInterval, clearIntervals]); return; }; diff --git a/src/hooks/DAO/loaders/useGovernanceContracts.ts b/src/hooks/DAO/loaders/useGovernanceContracts.ts index cc8999e124..b2e9f23943 100644 --- a/src/hooks/DAO/loaders/useGovernanceContracts.ts +++ b/src/hooks/DAO/loaders/useGovernanceContracts.ts @@ -209,5 +209,8 @@ export const useGovernanceContracts = () => { loadGovernanceContracts(); currentValidAddress.current = daoAddress; } + if (!daoAddress) { + currentValidAddress.current = null; + } }, [isModulesLoaded, loadGovernanceContracts, daoAddress]); }; From 6f17b189c43a89e04825caf78096bf34a5e65bb7 Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:34:55 -0500 Subject: [PATCH 06/35] move imports to _app.tsx (top of tree) --- .../SnapshotProposalDescription.tsx | 1 - src/hooks/DAO/useDAOController.ts | 23 ++++++++----------- src/providers/Providers.tsx | 5 +--- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/src/components/Proposals/SnapshotProposalDetails/SnapshotProposalDescription.tsx b/src/components/Proposals/SnapshotProposalDetails/SnapshotProposalDescription.tsx index a45cb4a7f1..a97a866ebc 100644 --- a/src/components/Proposals/SnapshotProposalDetails/SnapshotProposalDescription.tsx +++ b/src/components/Proposals/SnapshotProposalDetails/SnapshotProposalDescription.tsx @@ -5,7 +5,6 @@ import { useTranslation } from 'react-i18next'; import Markdown, { Components } from 'react-markdown'; import remarkGfm from 'remark-gfm'; import { SnapshotProposal } from '../../../types'; -import '../../../assets/css/SnapshotProposalMarkdown.css'; function CustomMarkdownImage({ src, alt }: { src?: string; alt?: string }) { const [error, setError] = useState(false); diff --git a/src/hooks/DAO/useDAOController.ts b/src/hooks/DAO/useDAOController.ts index 7735b6937a..ba075b1d18 100644 --- a/src/hooks/DAO/useDAOController.ts +++ b/src/hooks/DAO/useDAOController.ts @@ -1,6 +1,7 @@ 'use client'; -import { useEffect, useState } from 'react'; +import { useSearchParams } from 'next/navigation'; +import { useEffect } from 'react'; import { useFractal } from '../../providers/App/AppProvider'; import { useERC20Claim } from './loaders/governance/useERC20Claim'; import { useSnapshotProposals } from './loaders/snapshot/useSnapshotProposals'; @@ -11,9 +12,9 @@ import { useFractalNode } from './loaders/useFractalNode'; import { useFractalTreasury } from './loaders/useFractalTreasury'; import { useGovernanceContracts } from './loaders/useGovernanceContracts'; -export default function useDAOController({ daoAddress }: { daoAddress?: string }) { - const [currentDAOAddress, setCurrentDAOAddress] = useState(); - const [reloadingDAO, setReloadingDAO] = useState(false); +export default function useDAOController() { + const params = useSearchParams(); + const daoAddress = params.get('daoAddress'); const { node: { nodeHierarchy: { parentAddress }, @@ -21,16 +22,12 @@ export default function useDAOController({ daoAddress }: { daoAddress?: string } action, } = useFractal(); useEffect(() => { - if (daoAddress && currentDAOAddress !== daoAddress) { - setReloadingDAO(true); - action.resetDAO().then(() => { - setCurrentDAOAddress(daoAddress); - setReloadingDAO(false); - }); + if (!daoAddress) { + action.resetDAO(); } - }, [daoAddress, currentDAOAddress, action]); + }, [action, daoAddress]); - const { nodeLoading, errorLoading } = useFractalNode({ daoAddress: currentDAOAddress }); + const { nodeLoading, errorLoading } = useFractalNode({ daoAddress }); useGovernanceContracts(); useFractalGuardContracts({}); useFractalFreeze({ parentSafeAddress: parentAddress }); @@ -38,5 +35,5 @@ export default function useDAOController({ daoAddress }: { daoAddress?: string } useFractalTreasury(); useERC20Claim(); useSnapshotProposals(); - return { nodeLoading, reloadingDAO, errorLoading }; + return { nodeLoading, errorLoading }; } diff --git a/src/providers/Providers.tsx b/src/providers/Providers.tsx index 2968441281..1f453b7f8c 100644 --- a/src/providers/Providers.tsx +++ b/src/providers/Providers.tsx @@ -1,4 +1,3 @@ -'use client'; import { ApolloProvider } from '@apollo/client'; import { ChakraProvider } from '@chakra-ui/react'; import { theme } from '@decent-org/fractal-ui'; @@ -14,9 +13,7 @@ import { FractalErrorBoundary, initErrorLogging } from '../helpers/errorLogging' import { AppProvider } from './App/AppProvider'; import { NetworkConfigProvider } from './NetworkConfig/NetworkConfigProvider'; import { wagmiConfig, chains } from './NetworkConfig/rainbow-kit.config'; -import '@fontsource/ibm-plex-mono'; -import '@fontsource/ibm-plex-sans'; -import 'react-toastify/dist/ReactToastify.min.css'; + export default function Providers({ children }: { children: ReactNode }) { useEffect(() => { initErrorLogging(); From 29c045c894ca9c3c17fc39391d04c46c9082a11e Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Fri, 8 Mar 2024 07:49:22 -0500 Subject: [PATCH 07/35] remove console log --- src/hooks/DAO/loaders/useFractalNode.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/hooks/DAO/loaders/useFractalNode.ts b/src/hooks/DAO/loaders/useFractalNode.ts index 60fe2f474c..49c09b3e96 100644 --- a/src/hooks/DAO/loaders/useFractalNode.ts +++ b/src/hooks/DAO/loaders/useFractalNode.ts @@ -128,8 +128,6 @@ export const useFractalNode = ({ daoAddress }: { daoAddress: string | null }) => const { chain } = useNetwork(); const chainId = chain ? chain.id : disconnectedChain.id; useEffect(() => { - console.log('🚀 ~ daoAddress:', daoAddress); - if (daoAddress && chainId + daoAddress !== currentValidSafe.current) { setNodeLoading(true); setDAO(chainId, daoAddress); From 8b400d0d14471da25dd07978634180111af8b890 Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Fri, 8 Mar 2024 07:50:06 -0500 Subject: [PATCH 08/35] remove export config property (for now) --- next.config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/next.config.js b/next.config.js index 2a9c5cdef9..0cc30c8923 100644 --- a/next.config.js +++ b/next.config.js @@ -7,7 +7,6 @@ module.exports = { return config; }, - output: 'export', images: { dangerouslyAllowSVG: true, contentDispositionType: 'attachment', From 40cf01b1eb4bdf35ae2d4f5025cf09f28ce40b94 Mon Sep 17 00:00:00 2001 From: David Colon <38386583+Da-Colon@users.noreply.github.com> Date: Mon, 11 Mar 2024 12:34:14 -0400 Subject: [PATCH 09/35] Replace NextJS with Vite and React-Router-Dom - remove next config and types - Add vite and react-router-dom - Add vite config - Create index.html (update with metadata from next/head) - Create main.tsx (entry point) - Add CSS imports, providers to entry point - Create router.tsx to handle page router - Add DAOController and Layout element to Router - Add Pages to Router (A few index -> default component name file changes) - Replace next's Script with custom hook - Replace next Link Component with React Router Link - Replace process.env -> import.meta with update ENV names - Replace next/image component with Chakra Image component - Replace next/router push instances with `useNavigate` - Replace package.json next scripts with vite runner --- .env | 21 +- .gitignore | 2 + docker/blockchain/hardhat.config.js | 2 +- global.d.ts | 10 + index.html | 68 + next-env.d.ts | 5 - next.config.js | 19 - package-lock.json | 3049 ++++++++--------- package.json | 14 +- .../Activity/ActivityGovernance.tsx | 4 +- src/components/DaoCreator/StepWrapper.tsx | 6 +- .../ProposalTemplateCard.tsx | 8 +- src/components/ProposalTemplates/index.tsx | 4 +- src/components/Proposals/ProposalsList.tsx | 4 +- .../SnapshotProposalDescription.tsx | 3 +- src/components/pages/AppHome/AppFooter.tsx | 6 +- .../pages/DaoDashboard/Info/ParentLink.tsx | 2 +- .../DaoSettings/components/Metadata/index.tsx | 6 +- src/components/ui/cards/DAOInfoCard.tsx | 2 +- src/components/ui/containers/InfoBox.tsx | 6 +- src/components/ui/forms/ABISelector.tsx | 2 +- src/components/ui/icons/IconWithText.tsx | 2 +- .../ui/menus/DAOSearch/SearchDisplay.tsx | 6 +- .../ui/menus/FavoritesMenu/Favorite.tsx | 6 +- .../ui/menus/ManageDAO/ManageDAOMenu.tsx | 12 +- .../modals/ConfirmModifyGovernanceModal.tsx | 4 +- .../ui/modals/ForkProposalTemplateModal.tsx | 6 +- .../ui/modals/ProposalTemplateModal.tsx | 6 +- src/components/ui/modals/Stake.tsx | 6 +- src/components/ui/page/Header/Breadcrumbs.tsx | 2 +- src/components/ui/page/Layout/index.tsx | 6 +- .../ui/page/Navigation/NavigationLink.tsx | 8 +- src/components/ui/page/Navigation/index.tsx | 4 +- src/components/ui/utils/ErrorFallback.tsx | 3 +- src/helpers/errorLogging.ts | 4 +- src/hooks/DAO/loaders/useFractalNode.ts | 2 +- src/hooks/DAO/useDAOController.ts | 5 +- src/hooks/DAO/useDeployAzorius.ts | 8 +- src/hooks/utils/useETHLizardsScript.tsx | 32 + src/hooks/utils/useUpdateTimer.tsx | 2 +- src/main.tsx | 22 + src/metadata/lizzardsDAO/index.ts | 4 +- src/pages/404.tsx | 12 +- src/pages/DAOController.tsx | 30 +- src/pages/{index.tsx => HomePage.tsx} | 7 +- src/pages/_app.tsx | 81 - src/pages/create/index.tsx | 10 +- .../{index.tsx => DaoDashboardPage.tsx} | 0 .../[daoAddress]/edit/governance/index.tsx | 7 +- src/pages/daos/[daoAddress]/new/index.tsx | 6 +- .../[daoAddress]/proposal-templates/index.tsx | 4 +- .../proposal-templates/new/index.tsx | 10 +- .../proposals/[proposalId]/index.tsx | 5 +- .../daos/[daoAddress]/proposals/index.tsx | 4 +- .../daos/[daoAddress]/proposals/new/index.tsx | 8 +- src/providers/App/hooks/useIPFSClient.ts | 2 +- .../NetworkConfig/rainbow-kit.config.ts | 18 +- src/providers/Providers.tsx | 2 +- src/router.tsx | 97 + src/utils/dev.ts | 2 +- src/utils/shutter.ts | 2 +- src/vite-env.d.ts | 10 + tsconfig.json | 10 +- vite.config.ts | 10 + 64 files changed, 1895 insertions(+), 1835 deletions(-) create mode 100644 global.d.ts create mode 100644 index.html delete mode 100644 next-env.d.ts delete mode 100644 next.config.js create mode 100644 src/hooks/utils/useETHLizardsScript.tsx create mode 100644 src/main.tsx rename src/pages/{index.tsx => HomePage.tsx} (98%) delete mode 100644 src/pages/_app.tsx rename src/pages/daos/[daoAddress]/{index.tsx => DaoDashboardPage.tsx} (100%) create mode 100644 src/router.tsx create mode 100644 src/vite-env.d.ts create mode 100644 vite.config.ts diff --git a/.env b/.env index 2745aac863..97ed71ba14 100644 --- a/.env +++ b/.env @@ -1,24 +1,25 @@ # CoinGecko API key COINGECKO_API_KEY="" +VITE_APP_NAME=Fractal # Alchemy provider API key, used on Mainnet -NEXT_PUBLIC_ALCHEMY_MAINNET_API_KEY="" +VITE_APP_ALCHEMY_MAINNET_API_KEY="" # Alchemy provider API key, used on Sepolia -NEXT_PUBLIC_ALCHEMY_SEPOLIA_API_KEY="" +VITE_APP_ALCHEMY_SEPOLIA_API_KEY="" # automated testing workflows -NEXT_PUBLIC_ALCHEMY_TESTING_API_KEY="" +VITE_APP_ALCHEMY_TESTING_API_KEY="" # ABI selector (*) -NEXT_PUBLIC_ETHERSCAN_API_KEY="" +VITE_APP_ETHERSCAN_API_KEY="" # IPFS pinning (*) -NEXT_PUBLIC_INFURA_IPFS_API_KEY="" +VITE_APP_INFURA_IPFS_API_KEY="" # IPFS pinning (*) -NEXT_PUBLIC_INFURA_IPFS_API_SECRET="" +VITE_APP_INFURA_IPFS_API_SECRET="" # Sentry DSN URL, not used locally -NEXT_PUBLIC_SENTRY_DSN_URL="" +VITE_APP_SENTRY_DSN_URL="" # Shutter Public Key -NEXT_PUBLIC_SHUTTER_EON_PUBKEY=0x0e6493bbb4ee8b19aa9b70367685049ff01dc9382c46aed83f8bc07d2a5ba3e6030bd83b942c1fd3dff5b79bef3b40bf6b666e51e7f0be14ed62daaffad47435265f5c9403b1a801921981f7d8659a9bd91fe92fb1cf9afdb16178a532adfaf51a237103874bb03afafe9cab2118dae1be5f08a0a28bf488c1581e9db4bc23ca +VITE_APP_SHUTTER_EON_PUBKEY=0x0e6493bbb4ee8b19aa9b70367685049ff01dc9382c46aed83f8bc07d2a5ba3e6030bd83b942c1fd3dff5b79bef3b40bf6b666e51e7f0be14ed62daaffad47435265f5c9403b1a801921981f7d8659a9bd91fe92fb1cf9afdb16178a532adfaf51a237103874bb03afafe9cab2118dae1be5f08a0a28bf488c1581e9db4bc23ca # site preview links -NEXT_PUBLIC_SITE_URL="https://app.dev.fractalframework.xyz/" +VITE_APP_SITE_URL="https://app.dev.fractalframework.xyz/" # WalletConnect Cloud Project ID -NEXT_PUBLIC_WALLET_CONNECT_PROJECT_ID="" +VITE_APP_WALLET_CONNECT_PROJECT_ID="" # Minutes to cache prices for token addresses TOKEN_PRICE_CACHE_INTERVAL_MINUTES="" diff --git a/.gitignore b/.gitignore index 888bc818a6..92bd7ee706 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,5 @@ yarn-error.log* # Local Netlify folder .netlify + +./dist diff --git a/docker/blockchain/hardhat.config.js b/docker/blockchain/hardhat.config.js index 39702cac26..e07a987373 100644 --- a/docker/blockchain/hardhat.config.js +++ b/docker/blockchain/hardhat.config.js @@ -9,7 +9,7 @@ module.exports = { hardhat: { chainId: 31337, forking: { - url: `https://eth-sepolia.g.alchemy.com/v2/${process.env.NEXT_PUBLIC_ALCHEMY_TESTING_API_KEY}`, + url: `https://eth-sepolia.g.alchemy.com/v2/${import.meta.env.VITE_APP_ALCHEMY_TESTING_API_KEY}`, }, }, }, diff --git a/global.d.ts b/global.d.ts new file mode 100644 index 0000000000..2361dd89e7 --- /dev/null +++ b/global.d.ts @@ -0,0 +1,10 @@ +// global.d.ts +export {}; + +// @dev for ethlizards script +declare global { + interface Window { + hj: ((...params: any[]) => void) & { q: [string, any[]][] }; + _hjSettings: { hjid: number; hjsv: number; }; + } +} diff --git a/index.html b/index.html new file mode 100644 index 0000000000..112606380a --- /dev/null +++ b/index.html @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + %VITE_APP_NAME% + + +
+ + + diff --git a/next-env.d.ts b/next-env.d.ts deleted file mode 100644 index 4f11a03dc6..0000000000 --- a/next-env.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/// -/// - -// NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/next.config.js b/next.config.js deleted file mode 100644 index 0cc30c8923..0000000000 --- a/next.config.js +++ /dev/null @@ -1,19 +0,0 @@ -/** @type {import('next').NextConfig} */ -module.exports = { - webpack(config) { - config.resolve.fallback = { - fs: false, - }; - - return config; - }, - images: { - dangerouslyAllowSVG: true, - contentDispositionType: 'attachment', - contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;", - unoptimized: true, - }, - experimental: { - esmExternals: false, - }, -}; diff --git a/package-lock.json b/package-lock.json index 825913bcf9..57d26bfc5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,6 @@ "name": "fractal-interface", "dependencies": { "@apollo/client": "^3.7.10", - "@chakra-ui/next-js": "^2.2.0", "@chakra-ui/react": "^2.8.2", "@decent-org/fractal-ui": "^0.1.23", "@emotion/react": "^11.10.6", @@ -30,6 +29,7 @@ "@shutter-network/shutter-crypto": "^1.0.1", "@snapshot-labs/snapshot.js": "^0.7.3", "@ukstv/jazzicon-react": "^1.0.0", + "@vitejs/plugin-react-swc": "^3.5.0", "@walletconnect/ethereum-provider": "^2.11.0", "axios": "^0.27.2", "classnames": "^2.3.1", @@ -42,16 +42,17 @@ "i18next": "^21.9.2", "i18next-browser-languagedetector": "^6.1.5", "js-big-decimal": "^1.3.12", - "next": "^13.3.0", "react": "latest", "react-dom": "latest", "react-i18next": "^11.18.6", "react-idle-timer": "^5.5.3", "react-image": "^4.0.3", "react-markdown": "^9.0.0", + "react-router-dom": "^6.22.0", "react-toastify": "^9.0.8", "remark-gfm": "^4.0.0", "viem": "^1.21", + "vite": "^5.1.0", "wagmi": "^1.4.11", "yup": "^1" }, @@ -68,7 +69,6 @@ "encoding": "^0.1.13", "eslint": "^8.22.0", "eslint-config-airbnb-typescript": "^17.1.0", - "eslint-config-next": "^13.2.4", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.26.0", "jsdom": "^24.0.0", @@ -76,6 +76,7 @@ "prettier": "^3.2.5", "typescript": "^5.0.4", "url": "^0.11.0", + "vite-plugin-node-polyfills": "^0.21.0", "vitest": "^1.2.2" }, "engines": { @@ -2629,20 +2630,6 @@ "react-dom": ">=18" } }, - "node_modules/@chakra-ui/next-js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/next-js/-/next-js-2.2.0.tgz", - "integrity": "sha512-brCz0UEOlImX4Np2jDIaljZJkW6kiDSuXG5erxvYjZlklLhmti1zj0o1sSjt5yff1xndfgHoOJb+BYG5wx+vDg==", - "dependencies": { - "@emotion/cache": "^11.11.0" - }, - "peerDependencies": { - "@chakra-ui/react": ">=2.4.0", - "@emotion/react": ">=11", - "next": ">=13", - "react": ">=18" - } - }, "node_modules/@chakra-ui/number-input": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.1.2.tgz", @@ -3672,7 +3659,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "aix" @@ -3688,7 +3674,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "android" @@ -3704,7 +3689,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -3720,7 +3704,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "android" @@ -3736,7 +3719,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -3752,7 +3734,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -3768,7 +3749,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -3784,7 +3764,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "freebsd" @@ -3800,7 +3779,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3816,7 +3794,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3832,7 +3809,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3848,7 +3824,6 @@ "cpu": [ "loong64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3864,7 +3839,6 @@ "cpu": [ "mips64el" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3880,7 +3854,6 @@ "cpu": [ "ppc64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3896,7 +3869,6 @@ "cpu": [ "riscv64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3912,7 +3884,6 @@ "cpu": [ "s390x" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3928,7 +3899,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -3944,7 +3914,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "netbsd" @@ -3960,7 +3929,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "openbsd" @@ -3976,7 +3944,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "sunos" @@ -3992,7 +3959,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -4008,7 +3974,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -4024,7 +3989,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -8144,175 +8108,6 @@ "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz", "integrity": "sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==" }, - "node_modules/@next/env": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.0.tgz", - "integrity": "sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==" - }, - "node_modules/@next/eslint-plugin-next": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.2.4.tgz", - "integrity": "sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==", - "dev": true, - "dependencies": { - "glob": "7.1.7" - } - }, - "node_modules/@next/eslint-plugin-next/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz", - "integrity": "sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz", - "integrity": "sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz", - "integrity": "sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz", - "integrity": "sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz", - "integrity": "sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz", - "integrity": "sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz", - "integrity": "sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz", - "integrity": "sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz", - "integrity": "sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", @@ -9112,26 +8907,6 @@ "node": ">=10.12.0" } }, - "node_modules/@pkgr/utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", - "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, "node_modules/@playwright/test": { "version": "1.32.3", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.32.3.tgz", @@ -9640,11 +9415,75 @@ "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", "peer": true }, + "node_modules/@remix-run/router": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", + "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@repeaterjs/repeater": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==" }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz", @@ -9652,7 +9491,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "android" @@ -9665,7 +9503,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "android" @@ -9678,7 +9515,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -9691,7 +9527,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "darwin" @@ -9704,7 +9539,6 @@ "cpu": [ "arm" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9717,7 +9551,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9730,7 +9563,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9743,7 +9575,6 @@ "cpu": [ "riscv64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9756,7 +9587,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9769,7 +9599,6 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "linux" @@ -9782,7 +9611,6 @@ "cpu": [ "arm64" ], - "dev": true, "optional": true, "os": [ "win32" @@ -9795,7 +9623,6 @@ "cpu": [ "ia32" ], - "dev": true, "optional": true, "os": [ "win32" @@ -9808,18 +9635,11 @@ "cpu": [ "x64" ], - "dev": true, "optional": true, "os": [ "win32" ] }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", - "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", - "dev": true - }, "node_modules/@safe-global/safe-apps-provider": { "version": "0.18.2", "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.2.tgz", @@ -10677,14 +10497,166 @@ "@stablelib/wipe": "^1.0.1" } }, - "node_modules/@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "dependencies": { - "tslib": "^2.4.0" + "node_modules/@swc/core-darwin-arm64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.6.tgz", + "integrity": "sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" } }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.6.tgz", + "integrity": "sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.6.tgz", + "integrity": "sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.6.tgz", + "integrity": "sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.6.tgz", + "integrity": "sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.6.tgz", + "integrity": "sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.6.tgz", + "integrity": "sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.6.tgz", + "integrity": "sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.6.tgz", + "integrity": "sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.6.tgz", + "integrity": "sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==" + }, "node_modules/@tanstack/query-core": { "version": "4.36.1", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", @@ -10955,8 +10927,7 @@ "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/hast": { "version": "3.0.1", @@ -11489,6 +11460,64 @@ "vite": "^4.2.0 || ^5.0.0" } }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", + "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", + "dependencies": { + "@swc/core": "^1.3.107" + }, + "peerDependencies": { + "vite": "^4 || ^5" + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/core": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.6.tgz", + "integrity": "sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==", + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.2", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.4.6", + "@swc/core-darwin-x64": "1.4.6", + "@swc/core-linux-arm-gnueabihf": "1.4.6", + "@swc/core-linux-arm64-gnu": "1.4.6", + "@swc/core-linux-arm64-musl": "1.4.6", + "@swc/core-linux-x64-gnu": "1.4.6", + "@swc/core-linux-x64-musl": "1.4.6", + "@swc/core-win32-arm64-msvc": "1.4.6", + "@swc/core-win32-ia32-msvc": "1.4.6", + "@swc/core-win32-x64-msvc": "1.4.6" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@vitejs/plugin-react-swc/node_modules/@swc/helpers": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", + "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@vitejs/plugin-react/node_modules/react-refresh": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", @@ -12881,42 +12910,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, "node_modules/asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, + "node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/asn1js": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", @@ -12930,6 +12939,19 @@ "node": ">=12.0.0" } }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -12960,12 +12982,6 @@ "node": ">=4" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, "node_modules/astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -13043,15 +13059,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axe-core": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz", - "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/axios": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", @@ -13061,15 +13068,6 @@ "form-data": "^4.0.0" } }, - "node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", @@ -13357,8 +13355,7 @@ "node_modules/bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "peer": true + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, "node_modules/borsh": { "version": "0.7.0", @@ -13417,6 +13414,15 @@ "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "dependencies": { + "resolve": "^1.17.0" + } + }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -13436,6 +13442,157 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-rsa/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/browserify-sign/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/elliptic": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { "version": "4.22.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", @@ -13539,6 +13696,12 @@ "node": ">=6.14.2" } }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -14024,11 +14187,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, "node_modules/clipboardy": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", @@ -14436,6 +14594,12 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, "node_modules/constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -14447,6 +14611,12 @@ "upper-case": "^2.0.2" } }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -14507,8 +14677,7 @@ "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "peer": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cosmiconfig": { "version": "7.1.0", @@ -14537,6 +14706,16 @@ "node": ">=0.8" } }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -14589,6 +14768,28 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, "node_modules/css-box-model": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", @@ -14651,12 +14852,6 @@ "type": "^1.0.1" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, "node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", @@ -14847,15 +15042,6 @@ "node": ">=0.8" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -14959,6 +15145,16 @@ "node": ">=6" } }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "node_modules/destr": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", @@ -15025,6 +15221,17 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, "node_modules/dijkstrajs": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", @@ -15070,6 +15277,18 @@ "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", "dev": true }, + "node_modules/domain-browser": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -15138,12 +15357,6 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, "node_modules/encode-utf8": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", @@ -15175,19 +15388,6 @@ "once": "^1.4.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -15421,7 +15621,6 @@ "version": "0.19.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -15579,133 +15778,6 @@ "eslint-plugin-import": "^2.25.3" } }, - "node_modules/eslint-config-next": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.2.4.tgz", - "integrity": "sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg==", - "dev": true, - "dependencies": { - "@next/eslint-plugin-next": "13.2.4", - "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.42.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.31.7", - "eslint-plugin-react-hooks": "^4.5.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-next/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", @@ -15737,62 +15809,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz", - "integrity": "sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.10.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.4" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/eslint-module-utils": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", @@ -15873,124 +15889,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", @@ -17357,15 +17255,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz", - "integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -17436,12 +17325,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -17462,12 +17345,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -18018,6 +17895,12 @@ "node": ">= 0.12.0" } }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -18601,6 +18484,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -18895,6 +18794,15 @@ "node": ">=0.10.0" } }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/isomorphic-unfetch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", @@ -19865,19 +19773,6 @@ "node": "*" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" - } - }, "node_modules/keccak": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", @@ -19924,21 +19819,6 @@ "node": ">=6" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dev": true, - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, "node_modules/level": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", @@ -21847,6 +21727,19 @@ "node": ">=8.6" } }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -22301,86 +22194,11 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/next": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.0.tgz", - "integrity": "sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==", - "dependencies": { - "@next/env": "13.3.0", - "@swc/helpers": "0.4.14", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=14.6.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.3.0", - "@next/swc-darwin-x64": "13.3.0", - "@next/swc-linux-arm64-gnu": "13.3.0", - "@next/swc-linux-arm64-musl": "13.3.0", - "@next/swc-linux-x64-gnu": "13.3.0", - "@next/swc-linux-x64-musl": "13.3.0", - "@next/swc-win32-arm64-msvc": "13.3.0", - "@next/swc-win32-ia32-msvc": "13.3.0", - "@next/swc-win32-x64-msvc": "13.3.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, "node_modules/next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -22475,6 +22293,86 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, + "node_modules/node-stdlib-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", + "dev": true, + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "^4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/node-stdlib-browser/node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, "node_modules/node-stream-zip": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", @@ -22722,36 +22620,6 @@ "node": ">= 0.4" } }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -22854,23 +22722,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/optimism": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", @@ -22920,6 +22771,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -22994,6 +22851,12 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -23015,6 +22878,36 @@ "node": ">=6" } }, + "node_modules/parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dev": true, + "dependencies": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-asn1/node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -23408,7 +23301,6 @@ "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -23505,11 +23397,19 @@ "@types/yargs-parser": "*" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "peer": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-warning": { "version": "1.0.0", @@ -23578,6 +23478,20 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -23670,6 +23584,15 @@ "node": ">=0.4.x" } }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -23713,6 +23636,16 @@ "safe-buffer": "^5.1.0" } }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -24076,6 +24009,36 @@ } } }, + "node_modules/react-router": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", + "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "dependencies": { + "@remix-run/router": "1.15.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", + "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "dependencies": { + "@remix-run/router": "1.15.3", + "react-router": "6.22.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-shallow-renderer": { "version": "16.15.0", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", @@ -24568,7 +24531,6 @@ "version": "4.10.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz", "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==", - "dev": true, "dependencies": { "@types/estree": "1.0.5" }, @@ -25753,6 +25715,18 @@ "readable-stream": "^3.5.0" } }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", @@ -25808,25 +25782,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -25982,28 +25937,6 @@ "tslib": "^2.1.0" } }, - "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, "node_modules/stylis": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", @@ -26065,22 +25998,6 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", - "dev": true, - "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, "node_modules/system-architecture": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", @@ -26092,15 +26009,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/temp": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", @@ -26223,21 +26131,23 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, "node_modules/tiny-invariant": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", @@ -26532,25 +26442,10 @@ "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", "peer": true }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", "dev": true }, "node_modules/tweetnacl": { @@ -27301,15 +27196,14 @@ "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", "which-typed-array": "^1.1.2" } }, @@ -27487,7 +27381,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz", "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==", - "dev": true, "dependencies": { "esbuild": "^0.19.3", "postcss": "^8.4.35", @@ -27560,11 +27453,26 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/vite-plugin-node-polyfills": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", + "dev": true, + "dependencies": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, "node_modules/vite/node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -27759,6 +27667,12 @@ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "peer": true }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", @@ -30341,14 +30255,6 @@ "react-remove-scroll": "^2.5.6" } }, - "@chakra-ui/next-js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@chakra-ui/next-js/-/next-js-2.2.0.tgz", - "integrity": "sha512-brCz0UEOlImX4Np2jDIaljZJkW6kiDSuXG5erxvYjZlklLhmti1zj0o1sSjt5yff1xndfgHoOJb+BYG5wx+vDg==", - "requires": { - "@emotion/cache": "^11.11.0" - } - }, "@chakra-ui/number-input": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@chakra-ui/number-input/-/number-input-2.1.2.tgz", @@ -31166,161 +31072,138 @@ "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "dev": true, "optional": true }, "@esbuild/android-arm": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "dev": true, "optional": true }, "@esbuild/android-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "dev": true, "optional": true }, "@esbuild/android-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "dev": true, "optional": true }, "@esbuild/darwin-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "dev": true, "optional": true }, "@esbuild/darwin-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "dev": true, "optional": true }, "@esbuild/freebsd-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "dev": true, "optional": true }, "@esbuild/linux-arm": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "dev": true, "optional": true }, "@esbuild/linux-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "dev": true, "optional": true }, "@esbuild/linux-ia32": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "dev": true, "optional": true }, "@esbuild/linux-loong64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "dev": true, "optional": true }, "@esbuild/linux-mips64el": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "dev": true, "optional": true }, "@esbuild/linux-ppc64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "dev": true, "optional": true }, "@esbuild/linux-riscv64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "dev": true, "optional": true }, "@esbuild/linux-s390x": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "dev": true, "optional": true }, "@esbuild/linux-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "dev": true, "optional": true }, "@esbuild/netbsd-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "dev": true, "optional": true }, "@esbuild/openbsd-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "dev": true, "optional": true }, "@esbuild/sunos-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "dev": true, "optional": true }, "@esbuild/win32-arm64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "dev": true, "optional": true }, "@esbuild/win32-ia32": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "dev": true, "optional": true }, "@esbuild/win32-x64": { "version": "0.19.12", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", - "dev": true, "optional": true }, "@eslint-community/eslint-utils": { @@ -34469,90 +34352,6 @@ } } }, - "@next/env": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.0.tgz", - "integrity": "sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==" - }, - "@next/eslint-plugin-next": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.2.4.tgz", - "integrity": "sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==", - "dev": true, - "requires": { - "glob": "7.1.7" - }, - "dependencies": { - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "@next/swc-darwin-arm64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.0.tgz", - "integrity": "sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==", - "optional": true - }, - "@next/swc-darwin-x64": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.0.tgz", - "integrity": "sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==", - "optional": true - }, - "@next/swc-linux-arm64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.0.tgz", - "integrity": "sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==", - "optional": true - }, - "@next/swc-linux-arm64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.0.tgz", - "integrity": "sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==", - "optional": true - }, - "@next/swc-linux-x64-gnu": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.0.tgz", - "integrity": "sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==", - "optional": true - }, - "@next/swc-linux-x64-musl": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.0.tgz", - "integrity": "sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==", - "optional": true - }, - "@next/swc-win32-arm64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.0.tgz", - "integrity": "sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.0.tgz", - "integrity": "sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==", - "optional": true - }, - "@next/swc-win32-x64-msvc": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.0.tgz", - "integrity": "sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==", - "optional": true - }, "@noble/curves": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", @@ -35027,20 +34826,6 @@ "webcrypto-core": "^1.7.7" } }, - "@pkgr/utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", - "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" - } - }, "@playwright/test": { "version": "1.32.3", "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.32.3.tgz", @@ -35458,108 +35243,132 @@ "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==", "peer": true }, + "@remix-run/router": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", + "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==" + }, "@repeaterjs/repeater": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==" }, + "@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, + "@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "dependencies": { + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + } + } + }, "@rollup/rollup-android-arm-eabi": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz", "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==", - "dev": true, "optional": true }, "@rollup/rollup-android-arm64": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz", "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==", - "dev": true, "optional": true }, "@rollup/rollup-darwin-arm64": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz", "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==", - "dev": true, "optional": true }, "@rollup/rollup-darwin-x64": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz", "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==", - "dev": true, "optional": true }, "@rollup/rollup-linux-arm-gnueabihf": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz", "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==", - "dev": true, "optional": true }, "@rollup/rollup-linux-arm64-gnu": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz", "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==", - "dev": true, "optional": true }, "@rollup/rollup-linux-arm64-musl": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz", "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==", - "dev": true, "optional": true }, "@rollup/rollup-linux-riscv64-gnu": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz", "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==", - "dev": true, "optional": true }, "@rollup/rollup-linux-x64-gnu": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz", "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==", - "dev": true, "optional": true }, "@rollup/rollup-linux-x64-musl": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz", "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==", - "dev": true, "optional": true }, "@rollup/rollup-win32-arm64-msvc": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz", "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==", - "dev": true, "optional": true }, "@rollup/rollup-win32-ia32-msvc": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz", "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==", - "dev": true, "optional": true }, "@rollup/rollup-win32-x64-msvc": { "version": "4.10.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz", "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==", - "dev": true, "optional": true }, - "@rushstack/eslint-patch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", - "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", - "dev": true - }, "@safe-global/safe-apps-provider": { "version": "0.18.2", "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.2.tgz", @@ -36300,13 +36109,75 @@ "@stablelib/wipe": "^1.0.1" } }, - "@swc/helpers": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.14.tgz", - "integrity": "sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==", - "requires": { - "tslib": "^2.4.0" - } + "@swc/core-darwin-arm64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.6.tgz", + "integrity": "sha512-bpggpx/BfLFyy48aUKq1PsNUxb7J6CINlpAUk0V4yXfmGnpZH80Gp1pM3GkFDQyCfq7L7IpjPrIjWQwCrL4hYw==", + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.4.6.tgz", + "integrity": "sha512-vJn+/ZuBTg+vtNkcmgZdH6FQpa0hFVdnB9bAeqYwKkyqP15zaPe6jfC+qL2y/cIeC7ASvHXEKrnCZgBLxfVQ9w==", + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.4.6.tgz", + "integrity": "sha512-hEmYcB/9XBAl02MtuVHszhNjQpjBzhk/NFulnU33tBMbNZpy2TN5yTsitezMq090QXdDz8sKIALApDyg07ZR8g==", + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.4.6.tgz", + "integrity": "sha512-/UCYIVoGpm2YVvGHZM2QOA3dexa28BjcpLAIYnoCbgH5f7ulDhE8FAIO/9pasj+kixDBsdqewHfsNXFYlgGJjQ==", + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.4.6.tgz", + "integrity": "sha512-LGQsKJ8MA9zZ8xHCkbGkcPSmpkZL2O7drvwsGKynyCttHhpwVjj9lguhD4DWU3+FWIsjvho5Vu0Ggei8OYi/Lw==", + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.4.6.tgz", + "integrity": "sha512-10JL2nLIreMQDKvq2TECnQe5fCuoqBHu1yW8aChqgHUyg9d7gfZX/kppUsuimqcgRBnS0AjTDAA+JF6UsG/2Yg==", + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.4.6.tgz", + "integrity": "sha512-EGyjFVzVY6Do89x8sfah7I3cuP4MwtwzmA6OlfD/KASqfCFf5eIaEBMbajgR41bVfMV7lK72lwAIea5xEyq1AQ==", + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.4.6.tgz", + "integrity": "sha512-gfW9AuXvwSyK07Vb8Y8E9m2oJZk21WqcD+X4BZhkbKB0TCZK0zk1j/HpS2UFlr1JB2zPKPpSWLU3ll0GEHRG2A==", + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.4.6.tgz", + "integrity": "sha512-ZuQm81FhhvNVYtVb9GfZ+Du6e7fZlkisWvuCeBeRiyseNt1tcrQ8J3V67jD2nxje8CVXrwG3oUIbPcybv2rxfQ==", + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.4.6.tgz", + "integrity": "sha512-UagPb7w5V0uzWSjrXwOavGa7s9iv3wrVdEgWy+/inm0OwY4lj3zpK9qDnMWAwYLuFwkI3UG4Q3dH8wD+CUUcjw==", + "optional": true + }, + "@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + }, + "@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==" }, "@tanstack/query-core": { "version": "4.36.1", @@ -36519,8 +36390,7 @@ "@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "@types/hast": { "version": "3.0.1", @@ -36949,6 +36819,45 @@ } } }, + "@vitejs/plugin-react-swc": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.6.0.tgz", + "integrity": "sha512-XFRbsGgpGxGzEV5i5+vRiro1bwcIaZDIdBRP16qwm+jP68ue/S8FJTBEgOeojtVDYrbSua3XFp71kC8VJE6v+g==", + "requires": { + "@swc/core": "^1.3.107" + }, + "dependencies": { + "@swc/core": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.6.tgz", + "integrity": "sha512-A7iK9+1qzTCIuc3IYcS8gPHCm9bZVKUJrfNnwveZYyo6OFp3jLno4WOM2yBy5uqedgYATEiWgBYHKq37KrU6IA==", + "requires": { + "@swc/core-darwin-arm64": "1.4.6", + "@swc/core-darwin-x64": "1.4.6", + "@swc/core-linux-arm-gnueabihf": "1.4.6", + "@swc/core-linux-arm64-gnu": "1.4.6", + "@swc/core-linux-arm64-musl": "1.4.6", + "@swc/core-linux-x64-gnu": "1.4.6", + "@swc/core-linux-x64-musl": "1.4.6", + "@swc/core-win32-arm64-msvc": "1.4.6", + "@swc/core-win32-ia32-msvc": "1.4.6", + "@swc/core-win32-x64-msvc": "1.4.6", + "@swc/counter": "^0.1.2", + "@swc/types": "^0.1.5" + } + }, + "@swc/helpers": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.6.tgz", + "integrity": "sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==", + "optional": true, + "peer": true, + "requires": { + "tslib": "^2.4.0" + } + } + } + }, "@vitest/expect": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.2.tgz", @@ -38103,36 +38012,22 @@ "es-shim-unscopables": "^1.0.0" } }, - "array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - } - }, - "array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" - } - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "asn1js": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", @@ -38143,6 +38038,19 @@ "tslib": "^2.4.0" } }, + "assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -38164,12 +38072,6 @@ "tslib": "^2.0.1" } }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", - "dev": true - }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -38223,12 +38125,6 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" }, - "axe-core": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz", - "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==", - "dev": true - }, "axios": { "version": "0.27.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", @@ -38238,15 +38134,6 @@ "form-data": "^4.0.0" } }, - "axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", - "dev": true, - "requires": { - "deep-equal": "^2.0.5" - } - }, "babel-core": { "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", @@ -38468,8 +38355,7 @@ "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "peer": true + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, "borsh": { "version": "0.7.0", @@ -38527,6 +38413,15 @@ "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==" }, + "browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dev": true, + "requires": { + "resolve": "^1.17.0" + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -38546,6 +38441,161 @@ "safe-buffer": "^5.0.1" } }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { "version": "4.22.3", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", @@ -38611,6 +38661,12 @@ "node-gyp-build": "^4.3.0" } }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, "busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -38979,11 +39035,6 @@ "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", "peer": true }, - "client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, "clipboardy": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", @@ -39299,6 +39350,12 @@ "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==" }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, "constant-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", @@ -39310,6 +39367,12 @@ "upper-case": "^2.0.2" } }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", @@ -39362,8 +39425,7 @@ "core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "peer": true + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cosmiconfig": { "version": "7.1.0", @@ -39383,6 +39445,16 @@ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "peer": true }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -39432,6 +39504,25 @@ "which": "^2.0.1" } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, "css-box-model": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", @@ -39479,12 +39570,6 @@ "type": "^1.0.1" } }, - "damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true - }, "data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", @@ -39630,12 +39715,6 @@ } } }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -39709,6 +39788,16 @@ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" }, + "des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destr": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", @@ -39755,6 +39844,17 @@ "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, "dijkstrajs": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", @@ -39794,6 +39894,12 @@ "integrity": "sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==", "dev": true }, + "domain-browser": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", + "dev": true + }, "dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -39858,12 +39964,6 @@ } } }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, "encode-utf8": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", @@ -39892,16 +39992,6 @@ "once": "^1.4.0" } }, - "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -40092,7 +40182,6 @@ "version": "0.19.12", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "dev": true, "requires": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", @@ -40223,78 +40312,6 @@ "eslint-config-airbnb-base": "^15.0.0" } }, - "eslint-config-next": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.2.4.tgz", - "integrity": "sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg==", - "dev": true, - "requires": { - "@next/eslint-plugin-next": "13.2.4", - "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.42.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.31.7", - "eslint-plugin-react-hooks": "^4.5.0" - }, - "dependencies": { - "@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - } - }, - "@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "requires": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - } - } - } - }, "eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", @@ -40323,42 +40340,6 @@ } } }, - "eslint-import-resolver-typescript": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz", - "integrity": "sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==", - "dev": true, - "requires": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.10.0", - "get-tsconfig": "^4.2.0", - "globby": "^13.1.2", - "is-core-module": "^2.10.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.4" - }, - "dependencies": { - "globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - } - } - }, "eslint-module-utils": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", @@ -40426,96 +40407,6 @@ } } }, - "eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dev": true, - "requires": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "dependencies": { - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "dev": true, - "requires": {} - }, "eslint-utils": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", @@ -41603,12 +41494,6 @@ "get-intrinsic": "^1.1.1" } }, - "get-tsconfig": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz", - "integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==", - "dev": true - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -41655,12 +41540,6 @@ "define-properties": "^1.1.3" } }, - "globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "dev": true - }, "globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -41675,12 +41554,6 @@ "slash": "^3.0.0" } }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "dev": true - }, "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -42118,6 +41991,12 @@ "resolved": "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz", "integrity": "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==" }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -42517,6 +42396,16 @@ "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true }, + "is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -42721,6 +42610,12 @@ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "peer": true }, + "isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "dev": true + }, "isomorphic-unfetch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", @@ -43501,16 +43396,6 @@ "through": ">=2.2.7 <3" } }, - "jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dev": true, - "requires": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - } - }, "keccak": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", @@ -43547,21 +43432,6 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "peer": true }, - "language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true - }, - "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dev": true, - "requires": { - "language-subtag-registry": "~0.3.2" - } - }, "level": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", @@ -45014,6 +44884,16 @@ "picomatch": "^2.3.1" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, "mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -45363,40 +45243,6 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "next": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.0.tgz", - "integrity": "sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==", - "requires": { - "@next/env": "13.3.0", - "@next/swc-darwin-arm64": "13.3.0", - "@next/swc-darwin-x64": "13.3.0", - "@next/swc-linux-arm64-gnu": "13.3.0", - "@next/swc-linux-arm64-musl": "13.3.0", - "@next/swc-linux-x64-gnu": "13.3.0", - "@next/swc-linux-x64-musl": "13.3.0", - "@next/swc-win32-arm64-msvc": "13.3.0", - "@next/swc-win32-ia32-msvc": "13.3.0", - "@next/swc-win32-x64-msvc": "13.3.0", - "@swc/helpers": "0.4.14", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1" - }, - "dependencies": { - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - } - } - }, "next-tick": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", @@ -45471,6 +45317,68 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, + "node-stdlib-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", + "dev": true, + "requires": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "^4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dev": true, + "requires": { + "find-up": "^5.0.0" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + } + } + }, "node-stream-zip": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", @@ -45658,27 +45566,6 @@ "es-abstract": "^1.20.4" } }, - "object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, - "object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dev": true, - "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - } - }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -45760,17 +45647,6 @@ "mimic-fn": "^2.1.0" } }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, "optimism": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.2.tgz", @@ -45811,6 +45687,12 @@ "wcwidth": "^1.0.1" } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -45858,6 +45740,12 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", @@ -45876,6 +45764,32 @@ "callsites": "^3.0.0" } }, + "parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dev": true, + "requires": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + } + } + }, "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", @@ -46176,7 +46090,6 @@ "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", - "dev": true, "requires": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -46236,11 +46149,16 @@ } } }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "peer": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "process-warning": { "version": "1.0.0", @@ -46304,6 +46222,20 @@ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", "dev": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -46368,6 +46300,12 @@ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", "dev": true }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, "querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -46397,6 +46335,16 @@ "safe-buffer": "^5.1.0" } }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -46659,6 +46607,23 @@ "tslib": "^2.0.0" } }, + "react-router": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", + "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "requires": { + "@remix-run/router": "1.15.3" + } + }, + "react-router-dom": { + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", + "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "requires": { + "@remix-run/router": "1.15.3", + "react-router": "6.22.3" + } + }, "react-shallow-renderer": { "version": "16.15.0", "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", @@ -47027,7 +46992,6 @@ "version": "4.10.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz", "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==", - "dev": true, "requires": { "@rollup/rollup-android-arm-eabi": "4.10.0", "@rollup/rollup-android-arm64": "4.10.0", @@ -47976,6 +47940,18 @@ "readable-stream": "^3.5.0" } }, + "stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, "stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", @@ -48021,22 +47997,6 @@ } } }, - "string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" - } - }, "string.prototype.trim": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", @@ -48149,14 +48109,6 @@ "tslib": "^2.1.0" } }, - "styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", - "requires": { - "client-only": "0.0.1" - } - }, "stylis": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz", @@ -48206,27 +48158,11 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, - "synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", - "dev": true, - "requires": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" - } - }, "system-architecture": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==" }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, "temp": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", @@ -48343,21 +48279,20 @@ } } }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, "tiny-case": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==" }, - "tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dev": true, - "requires": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, "tiny-invariant": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", @@ -48581,22 +48516,11 @@ "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", "peer": true }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } + "tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", + "dev": true }, "tweetnacl": { "version": "1.0.3", @@ -49114,15 +49038,14 @@ "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", "which-typed-array": "^1.1.2" } }, @@ -49233,7 +49156,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz", "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==", - "dev": true, "requires": { "esbuild": "^0.19.3", "fsevents": "~2.3.3", @@ -49245,7 +49167,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "optional": true } } @@ -49263,6 +49184,16 @@ "vite": "^5.0.0" } }, + "vite-plugin-node-polyfills": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", + "dev": true, + "requires": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + } + }, "vitest": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.2.tgz", @@ -49365,6 +49296,12 @@ "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "peer": true }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, "void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", diff --git a/package.json b/package.json index dcff7f09e4..3ff5ff10e1 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,6 @@ "private": true, "dependencies": { "@apollo/client": "^3.7.10", - "@chakra-ui/next-js": "^2.2.0", "@chakra-ui/react": "^2.8.2", "@decent-org/fractal-ui": "^0.1.23", "@emotion/react": "^11.10.6", @@ -25,6 +24,7 @@ "@shutter-network/shutter-crypto": "^1.0.1", "@snapshot-labs/snapshot.js": "^0.7.3", "@ukstv/jazzicon-react": "^1.0.0", + "@vitejs/plugin-react-swc": "^3.5.0", "@walletconnect/ethereum-provider": "^2.11.0", "axios": "^0.27.2", "classnames": "^2.3.1", @@ -37,16 +37,17 @@ "i18next": "^21.9.2", "i18next-browser-languagedetector": "^6.1.5", "js-big-decimal": "^1.3.12", - "next": "^13.3.0", "react": "latest", "react-dom": "latest", "react-i18next": "^11.18.6", "react-idle-timer": "^5.5.3", "react-image": "^4.0.3", "react-markdown": "^9.0.0", + "react-router-dom": "^6.22.0", "react-toastify": "^9.0.8", "remark-gfm": "^4.0.0", "viem": "^1.21", + "vite": "^5.1.0", "wagmi": "^1.4.11", "yup": "^1" }, @@ -54,9 +55,10 @@ "lint": "eslint . --ext .ts,.tsx", "pretty": "prettier . --write", "pretty:check": "prettier . --check", - "dev": "npm run graphql:build && NEXT_PUBLIC_GIT_HASH=`git rev-parse HEAD` next dev", - "start": "next start", - "build": "npm run graphql:build && NEXT_PUBLIC_GIT_HASH=`git rev-parse HEAD` next build", + "dev": "npm run graphql:build && NEXT_PUBLIC_GIT_HASH=`git rev-parse HEAD` vite", + "start": "vite start", + "preview": "vite preview", + "build": "npm run graphql:build && NEXT_PUBLIC_GIT_HASH=`git rev-parse HEAD` vite build", "graphql:build": "graphclient build", "graphql:dev-server": "graphclient serve-dev", "test": "vitest --dir=test", @@ -91,7 +93,6 @@ "encoding": "^0.1.13", "eslint": "^8.22.0", "eslint-config-airbnb-typescript": "^17.1.0", - "eslint-config-next": "^13.2.4", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.26.0", "jsdom": "^24.0.0", @@ -99,6 +100,7 @@ "prettier": "^3.2.5", "typescript": "^5.0.4", "url": "^0.11.0", + "vite-plugin-node-polyfills": "^0.21.0", "vitest": "^1.2.2" } } diff --git a/src/components/Activity/ActivityGovernance.tsx b/src/components/Activity/ActivityGovernance.tsx index 1d166b4e6d..657643ebb6 100644 --- a/src/components/Activity/ActivityGovernance.tsx +++ b/src/components/Activity/ActivityGovernance.tsx @@ -1,7 +1,7 @@ import { Flex } from '@chakra-ui/react'; import { format } from 'date-fns'; -import Link from 'next/link'; import { useTranslation } from 'react-i18next'; +import { Link } from "react-router-dom"; import { DAO_ROUTES } from '../../constants/routes'; import { useFractal } from '../../providers/App/AppProvider'; import { FractalProposal, ActivityEventType, SnapshotProposal } from '../../types'; @@ -33,7 +33,7 @@ export function ActivityGovernance({ activity }: { activity: FractalProposal }) } = useFractal(); return ( - + - push( + navigate( !isSubDAO || !daoAddress ? BASE_ROUTES.landing : DAO_ROUTES.dao.relative(daoAddress), ) } diff --git a/src/components/ProposalTemplates/ProposalTemplateCard.tsx b/src/components/ProposalTemplates/ProposalTemplateCard.tsx index b9693b4a3b..68cbb58c7d 100644 --- a/src/components/ProposalTemplates/ProposalTemplateCard.tsx +++ b/src/components/ProposalTemplates/ProposalTemplateCard.tsx @@ -1,6 +1,5 @@ import { Avatar, Flex, Text } from '@chakra-ui/react'; import { VEllipsis } from '@decent-org/fractal-ui'; -import { useRouter } from 'next/navigation'; import { useMemo, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { DAO_ROUTES } from '../../constants/routes'; @@ -12,6 +11,7 @@ import ContentBox from '../ui/containers/ContentBox'; import { OptionMenu } from '../ui/menus/OptionMenu'; import { ModalType } from '../ui/modals/ModalProvider'; import { useFractalModal } from '../ui/modals/useFractalModal'; +import { useNavigate } from 'react-router-dom'; type ProposalTemplateCardProps = { proposalTemplate: ProposalTemplate; @@ -22,7 +22,7 @@ export default function ProposalTemplateCard({ proposalTemplate, templateIndex, }: ProposalTemplateCardProps) { - const { push } = useRouter(); + const navigate = useNavigate(); const { t } = useTranslation('proposalTemplate'); const { node: { safe, daoAddress }, @@ -43,9 +43,9 @@ export default function ProposalTemplateCard({ const successCallback = useCallback(() => { if (daoAddress) { // Redirecting to proposals page so that user will see Proposal for Proposal Template creation - push(DAO_ROUTES.proposals.relative(daoAddress)); + navigate(DAO_ROUTES.proposals.relative(daoAddress)); } - }, [push, daoAddress]); + }, [navigate, daoAddress]); const nonce = safe?.nonce; const handleRemoveTemplate = useCallback(async () => { diff --git a/src/components/ProposalTemplates/index.tsx b/src/components/ProposalTemplates/index.tsx index 17e5cca25b..16b5c57143 100644 --- a/src/components/ProposalTemplates/index.tsx +++ b/src/components/ProposalTemplates/index.tsx @@ -1,6 +1,6 @@ import { Flex, Box, Button } from '@chakra-ui/react'; -import Link from 'next/link'; import { useTranslation } from 'react-i18next'; +import { Link } from "react-router-dom"; import { DAO_ROUTES } from '../../constants/routes'; import useSubmitProposal from '../../hooks/DAO/proposal/useSubmitProposal'; import { useFractal } from '../../providers/App/AppProvider'; @@ -37,7 +37,7 @@ export default function ProposalTemplates() { ) : ( {canUserCreateProposal && ( - + )} {canUserCreateProposal && ( - +