Add React compiler (#11405)

This PR adds React Compiler to the dashboard
Read more about the compiler: https://github.com/reactwg/react-compiler/discussions/5

- This PR expects that these PRs are merged:
- #11380
- #11382

## Reasoning

On our codebase adding React compiler led to significant perf improvements across the whole app. But the most impact was on the AssetsTable (see video attachment). Adding React compiler reduced the rerender scope of the AssetsTable from the whole table to the certain elements that changed, and made the table much more usable.

Without compiler (page freezed):

https://github.com/user-attachments/assets/16505b40-123b-4153-9c22-880f5dfa211c


Compiler solves the issue:

https://github.com/user-attachments/assets/6a298876-f28d-4b3d-8247-50b0c7ecb7f8

This PR requires thorough testing of the dashboard for potential bugs introduced by the compiler
This commit is contained in:
Sergei Garin 2024-10-31 15:10:22 +03:00 committed by GitHub
parent c6e87c2a17
commit fdab2233ac
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 498 additions and 127 deletions

View File

@ -59,6 +59,7 @@
"react": "^18.3.1",
"react-aria": "^3.34.3",
"react-aria-components": "^1.3.3",
"react-compiler-runtime": "19.0.0-beta-8a03594-20241020",
"react-dom": "^18.3.1",
"react-error-boundary": "4.0.13",
"react-hook-form": "^7.51.4",
@ -79,6 +80,7 @@
"@ag-grid-enterprise/core": "^31.1.1",
"@ag-grid-enterprise/range-selection": "^31.1.1",
"@babel/parser": "^7.24.7",
"babel-plugin-react-compiler": "19.0.0-beta-9ee70a1-20241017",
"@codemirror/commands": "^6.6.0",
"@codemirror/language": "^6.10.2",
"@codemirror/lint": "^6.8.1",
@ -137,7 +139,7 @@
"@types/react": "^18.0.27",
"@types/react-dom": "^18.0.10",
"@types/validator": "^13.11.7",
"@vitejs/plugin-react": "^4.2.1",
"@vitejs/plugin-react": "^4.3.3",
"chalk": "^5.3.0",
"cross-env": "^7.0.3",
"enso-chat": "git://github.com/enso-org/enso-bot",
@ -151,7 +153,7 @@
"tailwindcss-animate": "1.0.7",
"tailwindcss-react-aria-components": "^1.1.1",
"typescript": "^5.5.3",
"vite": "^5.3.5",
"vite": "^5.4.10",
"vitest": "^1.3.1",
"@codemirror/theme-one-dark": "^6.1.2",
"@danmarshall/deckgl-typings": "^4.9.28",

View File

@ -136,11 +136,11 @@ export default function MenuEntry(props: MenuEntryProps) {
// at once.
if (isDisabled) {
return
} else {
return inputBindings.attach(sanitizedEventTargets.document.body, 'keydown', {
[action]: doAction,
})
}
return inputBindings.attach(sanitizedEventTargets.document.body, 'keydown', {
[action]: doAction,
})
}, [isDisabled, inputBindings, action, doAction])
return hidden ? null : (

View File

@ -174,6 +174,7 @@ export const AssetRow = React.memo(function AssetRow(props: AssetRowProps) {
useBackendMutationState(backend, 'undoDeleteAsset', {
predicate: ({ state: { variables: [assetId] = [] } }) => assetId === asset.id,
}).length !== 0
const isCloud = isCloudCategory(category)
const { data: projectState } = useQuery({

View File

@ -1,4 +1,5 @@
/** @file A component that renders the modal instance from the modal React Context. */
import { Pressable } from '#/components/aria'
import { DialogTrigger } from '#/components/AriaComponents'
import * as modalProvider from '#/providers/ModalProvider'
import { AnimatePresence, motion } from 'framer-motion'
@ -22,7 +23,11 @@ export default function TheModal() {
transition={{ duration: 0.2 }}
>
<DialogTrigger key={key} defaultOpen>
<></>
{/* This component suppresses the warning about the target not being pressable element. */}
<Pressable>
<></>
</Pressable>
{modal}
</DialogTrigger>
</motion.div>

View File

@ -41,8 +41,14 @@ export default function ModifiedColumnHeading(props: AssetColumnHeadingProps) {
variant="custom"
className="flex grow justify-start gap-icon-with-text"
onPress={() => {
if (!sortInfo) {
setSortInfo({ field: Column.modified, direction: SortDirection.ascending })
return
}
const nextDirection =
isSortActive ? nextSortDirection(sortInfo.direction) : SortDirection.ascending
if (nextDirection == null) {
setSortInfo(null)
} else {

View File

@ -27,6 +27,11 @@ export default function NameColumnHeading(props: AssetColumnHeadingProps) {
}
className="group flex h-table-row w-full items-center justify-start gap-icon-with-text px-name-column-x"
onPress={() => {
if (!sortInfo) {
setSortInfo({ field: Column.name, direction: SortDirection.ascending })
return
}
const nextDirection =
isSortActive ? nextSortDirection(sortInfo.direction) : SortDirection.ascending
if (nextDirection == null) {

View File

@ -19,7 +19,7 @@ import AssetListEventType from '#/events/AssetListEventType'
import * as eventListProvider from '#/layouts/AssetsTable/EventListProvider'
import * as categoryModule from '#/layouts/CategorySwitcher/Category'
import GlobalContextMenu from '#/layouts/GlobalContextMenu'
import { GlobalContextMenu } from '#/layouts/GlobalContextMenu'
import ContextMenu from '#/components/ContextMenu'
import ContextMenuEntry from '#/components/ContextMenuEntry'

View File

@ -362,7 +362,6 @@ export default function AssetsTable(props: AssetsTableProps) {
const inputBindings = useInputBindings()
const navigator2D = useNavigator2D()
const toastAndLog = useToastAndLog()
const previousCategoryRef = useRef(category)
const dispatchAssetEvent = eventListProvider.useDispatchAssetEvent()
const dispatchAssetListEvent = eventListProvider.useDispatchAssetListEvent()
const setCanCreateAssets = useSetCanCreateAssets()
@ -499,7 +498,8 @@ export default function AssetsTable(props: AssetsTableProps) {
// This reduces the amount of rerenders by batching them together, so they happen less often.
useQuery({
queryKey: [backend.type, 'refetchListDirectory'],
queryFn: () => queryClient.refetchQueries({ queryKey: [backend.type, 'listDirectory'] }),
queryFn: () =>
queryClient.refetchQueries({ queryKey: [backend.type, 'listDirectory'] }).then(() => null),
refetchInterval:
enableAssetsTableBackgroundRefresh ? assetsTableBackgroundRefreshInterval : false,
refetchOnMount: 'always',
@ -849,10 +849,6 @@ export default function AssetsTable(props: AssetsTableProps) {
true,
)
useEffect(() => {
previousCategoryRef.current = category
})
const setTargetDirectory = useEventCallback(
(targetDirectory: AssetTreeNode<DirectoryAsset> | null) => {
const targetDirectorySelfPermission =
@ -2056,6 +2052,7 @@ export default function AssetsTable(props: AssetsTableProps) {
const doCopy = useEventCallback(() => {
unsetModal()
const { selectedKeys } = driveStore.getState()
setPasteData({
type: 'copy',
data: { backendType: backend.type, category, ids: selectedKeys },
@ -2079,7 +2076,9 @@ export default function AssetsTable(props: AssetsTableProps) {
const cutAndPaste = useCutAndPaste(category)
const doPaste = useEventCallback((newParentKey: DirectoryId, newParentId: DirectoryId) => {
unsetModal()
const { pasteData } = driveStore.getState()
if (
pasteData?.data.backendType === backend.type &&
canTransferBetweenCategories(pasteData.data.category, category)

View File

@ -6,22 +6,16 @@ import * as React from 'react'
import { useStore } from 'zustand'
import { uniqueString } from 'enso-common/src/utilities/uniqueString'
import * as authProvider from '#/providers/AuthProvider'
import { useDriveStore, useSelectedKeys, useSetSelectedKeys } from '#/providers/DriveProvider'
import * as modalProvider from '#/providers/ModalProvider'
import * as textProvider from '#/providers/TextProvider'
import AssetEventType from '#/events/AssetEventType'
import * as eventListProvider from '#/layouts/AssetsTable/EventListProvider'
import {
canTransferBetweenCategories,
type Category,
isCloudCategory,
} from '#/layouts/CategorySwitcher/Category'
import GlobalContextMenu from '#/layouts/GlobalContextMenu'
import { GlobalContextMenu } from '#/layouts/GlobalContextMenu'
import ContextMenu from '#/components/ContextMenu'
import ContextMenuEntry from '#/components/ContextMenuEntry'
@ -32,6 +26,10 @@ import ConfirmDeleteModal from '#/modals/ConfirmDeleteModal'
import type Backend from '#/services/Backend'
import * as backendModule from '#/services/Backend'
import { useDispatchAssetEvent } from '#/layouts/AssetsTable/EventListProvider'
import { useFullUserSession } from '#/providers/AuthProvider'
import { useSetModal } from '#/providers/ModalProvider'
import { useText } from '#/providers/TextProvider'
import type * as assetTreeNode from '#/utilities/AssetTreeNode'
import * as permissions from '#/utilities/permissions'
import { EMPTY_SET } from '#/utilities/set'
@ -64,17 +62,22 @@ export interface AssetsTableContextMenuProps {
* are selected.
*/
export default function AssetsTableContextMenu(props: AssetsTableContextMenuProps) {
// eslint-disable-next-line react-compiler/react-compiler
'use no memo'
const { hidden = false, backend, category } = props
const { nodeMapRef, event, rootDirectoryId } = props
const { doCopy, doCut, doPaste, doDelete } = props
const { user } = authProvider.useFullUserSession()
const { setModal, unsetModal } = modalProvider.useSetModal()
const { getText } = textProvider.useText()
const { user } = useFullUserSession()
const { setModal, unsetModal } = useSetModal()
const { getText } = useText()
const isCloud = isCloudCategory(category)
const dispatchAssetEvent = eventListProvider.useDispatchAssetEvent()
const dispatchAssetEvent = useDispatchAssetEvent()
const selectedKeys = useSelectedKeys()
const setSelectedKeys = useSetSelectedKeys()
const driveStore = useDriveStore()
const hasPasteData = useStore(driveStore, ({ pasteData }) => {
const effectivePasteData =
(
@ -86,6 +89,8 @@ export default function AssetsTableContextMenu(props: AssetsTableContextMenuProp
return (effectivePasteData?.data.ids.size ?? 0) > 0
})
const id = React.useId()
// This works because all items are mutated, ensuring their value stays
// up to date.
const ownsAllSelectedAssets =
@ -140,6 +145,7 @@ export default function AssetsTableContextMenu(props: AssetsTableContextMenuProp
const [firstKey] = selectedKeys
const selectedNode =
selectedKeys.size === 1 && firstKey != null ? nodeMapRef.current.get(firstKey) : null
if (selectedNode?.type === backendModule.AssetType.directory) {
doPaste(selectedNode.key, selectedNode.item.id)
} else {
@ -152,7 +158,7 @@ export default function AssetsTableContextMenu(props: AssetsTableContextMenuProp
if (category.type === 'trash') {
return (
selectedKeys.size !== 0 && (
<ContextMenus key={uniqueString()} hidden={hidden} event={event}>
<ContextMenus key={id} hidden={hidden} event={event}>
<ContextMenu aria-label={getText('assetsTableContextMenuLabel')} hidden={hidden}>
<ContextMenuEntry
hidden={hidden}
@ -203,7 +209,7 @@ export default function AssetsTableContextMenu(props: AssetsTableContextMenuProp
return null
} else {
return (
<ContextMenus key={uniqueString()} hidden={hidden} event={event}>
<ContextMenus key={id} hidden={hidden} event={event}>
{(selectedKeys.size !== 0 || pasteAllMenuEntry !== false) && (
<ContextMenu aria-label={getText('assetsTableContextMenuLabel')} hidden={hidden}>
{selectedKeys.size !== 0 && ownsAllSelectedAssets && (

View File

@ -1,22 +1,21 @@
/** @file A context menu available everywhere in the directory. */
import { useStore } from 'zustand'
import * as modalProvider from '#/providers/ModalProvider'
import * as textProvider from '#/providers/TextProvider'
import AssetListEventType from '#/events/AssetListEventType'
import * as eventListProvider from '#/layouts/AssetsTable/EventListProvider'
import ContextMenu from '#/components/ContextMenu'
import ContextMenuEntry from '#/components/ContextMenuEntry'
import UpsertDatalinkModal from '#/modals/UpsertDatalinkModal'
import UpsertSecretModal from '#/modals/UpsertSecretModal'
import { useDispatchAssetListEvent } from '#/layouts/AssetsTable/EventListProvider'
import { useDriveStore } from '#/providers/DriveProvider'
import { useSetModal } from '#/providers/ModalProvider'
import { useText } from '#/providers/TextProvider'
import type * as backendModule from '#/services/Backend'
import type Backend from '#/services/Backend'
import * as backendModule from '#/services/Backend'
import { BackendType } from '#/services/Backend'
import { inputFiles } from '#/utilities/input'
/** Props for a {@link GlobalContextMenu}. */
@ -33,19 +32,32 @@ export interface GlobalContextMenuProps {
}
/** A context menu available everywhere in the directory. */
export default function GlobalContextMenu(props: GlobalContextMenuProps) {
const { hidden = false, backend, directoryKey, directoryId, rootDirectoryId } = props
export const GlobalContextMenu = function GlobalContextMenu(props: GlobalContextMenuProps) {
// For some reason, applying the ReactCompiler for this component breaks the copy-paste functionality
// eslint-disable-next-line react-compiler/react-compiler
'use no memo'
const {
hidden = false,
backend,
directoryKey = null,
directoryId = null,
rootDirectoryId,
} = props
const { doPaste } = props
const { setModal, unsetModal } = modalProvider.useSetModal()
const { getText } = textProvider.useText()
const dispatchAssetListEvent = eventListProvider.useDispatchAssetListEvent()
const isCloud = backend.type === backendModule.BackendType.remote
const { getText } = useText()
const { setModal, unsetModal } = useSetModal()
const dispatchAssetListEvent = useDispatchAssetListEvent()
const driveStore = useDriveStore()
const hasPasteData = useStore(
driveStore,
(storeState) => (storeState.pasteData?.data.ids.size ?? 0) > 0,
)
const isCloud = backend.type === BackendType.remote
return (
<ContextMenu aria-label={getText('globalContextMenuLabel')} hidden={hidden}>
<ContextMenuEntry

View File

@ -5,7 +5,7 @@ import * as z from 'zod'
import { Button, Checkbox, Dialog, Form, Text } from '#/components/AriaComponents'
import { useAuth } from '#/providers/AuthProvider'
import { useLocalStorage } from '#/providers/LocalStorageProvider'
import { useLocalStorage, useLocalStorageState } from '#/providers/LocalStorageProvider'
import { useText } from '#/providers/TextProvider'
import LocalStorage from '#/utilities/LocalStorage'
@ -74,43 +74,35 @@ export function AgreementsModal() {
const { localStorage } = useLocalStorage()
const { session } = useAuth()
const cachedTosHash = localStorage.get('termsOfService')?.versionHash
const [cachedTosHash] = useLocalStorageState('termsOfService')
const [cachedPrivacyPolicyHash] = useLocalStorageState('privacyPolicy')
const { data: tosHash } = useSuspenseQuery({
...latestTermsOfServiceQueryOptions,
// If the user has already accepted the EULA, we don't need to
// block user interaction with the app while we fetch the latest version.
// We can use the local version hash as the initial data.
// and refetch in the background to check for updates.
...(cachedTosHash != null && {
initialData: { hash: cachedTosHash },
...(cachedTosHash?.versionHash != null && {
initialData: { hash: cachedTosHash.versionHash },
}),
select: (data) => data.hash,
})
const cachedPrivacyPolicyHash = localStorage.get('privacyPolicy')?.versionHash
const { data: privacyPolicyHash } = useSuspenseQuery({
...latestPrivacyPolicyQueryOptions,
...(cachedPrivacyPolicyHash != null && {
initialData: { hash: cachedPrivacyPolicyHash },
...(cachedPrivacyPolicyHash?.versionHash != null && {
initialData: { hash: cachedPrivacyPolicyHash.versionHash },
}),
select: (data) => data.hash,
})
const isLatest = tosHash === cachedTosHash && privacyPolicyHash === cachedPrivacyPolicyHash
const isLatest =
tosHash === cachedTosHash?.versionHash &&
privacyPolicyHash === cachedPrivacyPolicyHash?.versionHash
const isAccepted = cachedTosHash != null
const shouldDisplay = !(isAccepted && isLatest)
const formSchema = Form.useFormSchema((schema) =>
schema.object({
// The user must agree to the ToS to proceed.
agreedToTos: schema
.array(schema.string())
.min(1, { message: getText('licenseAgreementCheckboxError') }),
agreedToPrivacyPolicy: schema
.array(schema.string())
.min(1, { message: getText('privacyPolicyCheckboxError') }),
}),
)
if (shouldDisplay) {
// Note that this produces warnings about missing a `<Heading slot="title">`, even though
// all `ariaComponents.Dialog`s contain one. This is likely caused by Suspense discarding
@ -126,10 +118,21 @@ export function AgreementsModal() {
id="agreements-modal"
>
<Form
schema={formSchema}
schema={(schema) =>
schema.object({
// The user must agree to the ToS to proceed.
agreedToTos: schema
.array(schema.string())
.min(1, { message: getText('licenseAgreementCheckboxError') }),
agreedToPrivacyPolicy: schema
.array(schema.string())
.min(1, { message: getText('privacyPolicyCheckboxError') }),
})
}
defaultValues={{
agreedToTos: tosHash === cachedTosHash ? ['agree'] : [],
agreedToPrivacyPolicy: privacyPolicyHash === cachedPrivacyPolicyHash ? ['agree'] : [],
agreedToTos: tosHash === cachedTosHash?.versionHash ? ['agree'] : [],
agreedToPrivacyPolicy:
privacyPolicyHash === cachedPrivacyPolicyHash?.versionHash ? ['agree'] : [],
}}
testId="agreements-form"
method="dialog"
@ -174,7 +177,7 @@ export function AgreementsModal() {
</Form>
</Dialog>
)
} else {
return <Outlet context={session} />
}
return <Outlet context={session} />
}

View File

@ -65,6 +65,7 @@ export default function ModalProvider(props: ModalProviderProps) {
),
[children, modalRef, setModalStableCallback],
)
return <ModalContext.Provider value={{ modal, key }}>{setModalProvider}</ModalContext.Provider>
}
@ -112,10 +113,13 @@ export function useModalRef() {
/** A React context hook exposing functions to set and unset the currently active modal. */
export function useSetModal() {
const { setModal: setModalRaw } = React.useContext(ModalStaticContext)
const setModal: (modal: Modal) => void = setModalRaw
const updateModal: (updater: (modal: Modal | null) => Modal | null) => void = setModalRaw
const unsetModal = React.useCallback(() => {
const setModal = useEventCallback(setModalRaw)
const updateModal = useEventCallback(setModalRaw)
const unsetModal = useEventCallback(() => {
setModalRaw(null)
}, [setModalRaw])
})
return { setModal, updateModal, unsetModal } as const
}

View File

@ -49,7 +49,12 @@ export default defineConfig({
}),
react({
include: fileURLToPath(new URL('./src/dashboard/**/*.tsx', import.meta.url)),
babel: { plugins: ['@babel/plugin-syntax-import-attributes'] },
babel: {
plugins: [
'@babel/plugin-syntax-import-attributes',
['babel-plugin-react-compiler', { target: '18' }],
],
},
}),
...(process.env.NODE_ENV === 'development' ? [await projectManagerShim()] : []),
],

View File

@ -229,6 +229,9 @@ importers:
amazon-cognito-identity-js:
specifier: 6.3.6
version: 6.3.6
babel-plugin-react-compiler:
specifier: 19.0.0-beta-9ee70a1-20241017
version: 19.0.0-beta-9ee70a1-20241017
clsx:
specifier: ^2.1.1
version: 2.1.1
@ -295,6 +298,9 @@ importers:
react-aria-components:
specifier: ^1.3.3
version: 1.3.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
react-compiler-runtime:
specifier: 19.0.0-beta-8a03594-20241020
version: 19.0.0-beta-8a03594-20241020(react@18.3.1)
react-dom:
specifier: ^18.3.1
version: 18.3.1(react@18.3.1)
@ -376,10 +382,10 @@ importers:
version: 4.9.28
'@histoire/plugin-vue':
specifier: ^0.17.12
version: 0.17.17(histoire@0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)))(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
version: 0.17.17(histoire@0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)))(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
'@modyfi/vite-plugin-yaml':
specifier: ^1.0.4
version: 1.1.0(rollup@4.18.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
version: 1.1.0(rollup@4.24.0)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@open-rpc/server-js':
specifier: ^1.9.4
version: 1.9.5
@ -438,11 +444,11 @@ importers:
specifier: ^8.5.5
version: 8.5.10
'@vitejs/plugin-react':
specifier: ^4.2.1
version: 4.3.1(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
specifier: ^4.3.3
version: 4.3.3(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@vitejs/plugin-vue':
specifier: ^5.0.4
version: 5.0.5(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
version: 5.0.5(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
'@vitest/coverage-v8':
specifier: ^1.3.1
version: 1.6.0(vitest@1.6.0(@types/node@20.11.21)(jsdom@24.1.0)(lightningcss@1.25.1))
@ -478,7 +484,7 @@ importers:
version: 4.11.0
histoire:
specifier: ^0.17.2
version: 0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
version: 0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
jsdom:
specifier: ^24.1.0
version: 24.1.0
@ -522,14 +528,14 @@ importers:
specifier: ^5.5.3
version: 5.5.3
vite:
specifier: ^5.3.5
version: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
specifier: ^5.4.10
version: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
vite-plugin-vue-devtools:
specifier: 7.3.7
version: 7.3.7(rollup@4.18.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
version: 7.3.7(rollup@4.24.0)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
vite-plugin-wasm:
specifier: ^3.3.0
version: 3.3.0(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
version: 3.3.0(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
vitest:
specifier: ^1.3.1
version: 1.6.0(@types/node@20.11.21)(jsdom@24.1.0)(lightningcss@1.25.1)
@ -710,7 +716,7 @@ importers:
version: 5.5.3
vite-plugin-wasm:
specifier: ^3.3.0
version: 3.3.0(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
version: 3.3.0(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
vitest:
specifier: ^1.3.1
version: 1.6.0(@types/node@20.11.21)(jsdom@24.1.0)(lightningcss@1.25.1)
@ -815,7 +821,7 @@ importers:
version: 2.0.4(@types/node@20.11.21)(lightningcss@1.25.1)
vite-plugin-wasm:
specifier: ^3.3.0
version: 3.3.0(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
version: 3.3.0(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
vitest:
specifier: ^1.3.1
version: 1.6.0(@types/node@20.11.21)(jsdom@24.1.0)(lightningcss@1.25.1)
@ -1088,6 +1094,9 @@ packages:
resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.2.0':
resolution: {integrity: sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==}
'@babel/generator@7.25.6':
resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
engines: {node: '>=6.9.0'}
@ -1940,6 +1949,10 @@ packages:
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
'@jest/types@24.9.0':
resolution: {integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==}
engines: {node: '>= 6'}
'@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
@ -2650,81 +2663,161 @@ packages:
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm-eabi@4.24.0':
resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.18.1':
resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==}
cpu: [arm64]
os: [android]
'@rollup/rollup-android-arm64@4.24.0':
resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.18.1':
resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-arm64@4.24.0':
resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.18.1':
resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.24.0':
resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-linux-arm-gnueabihf@4.18.1':
resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-gnueabihf@4.24.0':
resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.18.1':
resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.24.0':
resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.18.1':
resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.24.0':
resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.18.1':
resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.24.0':
resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.18.1':
resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.18.1':
resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.24.0':
resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.18.1':
resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.24.0':
resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.18.1':
resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.24.0':
resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.18.1':
resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.24.0':
resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.18.1':
resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-arm64-msvc@4.24.0':
resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.18.1':
resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.24.0':
resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.18.1':
resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==}
cpu: [x64]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.24.0':
resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==}
cpu: [x64]
os: [win32]
'@sapphire/async-queue@1.5.2':
resolution: {integrity: sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==}
engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
@ -3011,6 +3104,15 @@ packages:
'@types/http-cache-semantics@4.0.4':
resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==}
'@types/istanbul-lib-coverage@2.0.6':
resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
'@types/istanbul-lib-report@3.0.3':
resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
'@types/istanbul-reports@1.1.2':
resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==}
'@types/jsdom@21.1.7':
resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==}
@ -3104,6 +3206,9 @@ packages:
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
'@types/yargs@13.0.12':
resolution: {integrity: sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==}
'@types/yargs@17.0.32':
resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
@ -3167,8 +3272,8 @@ packages:
resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-react@4.3.1':
resolution: {integrity: sha512-m/V2syj5CuVnaxcUJOQRel/Wr31FFXRFlnOoq1TVtkCxsY5veGMTEmpWHndrhB2U8ScHtCQB1e+4hWYExQc6Lg==}
'@vitejs/plugin-react@4.3.3':
resolution: {integrity: sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
vite: ^4.2.0 || ^5.0.0
@ -3379,6 +3484,10 @@ packages:
amazon-cognito-identity-js@6.3.6:
resolution: {integrity: sha512-kBq+GE6OkLrxtFj3ZduIOlKBFYeOqZK3EhxbDBkv476UTvy+uwfR0tlriTq2QzNdnvlQAjBIXnXuOM7DwR1UEQ==}
ansi-regex@4.1.1:
resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
engines: {node: '>=6'}
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
@ -3518,6 +3627,9 @@ packages:
aws4@1.13.0:
resolution: {integrity: sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==}
babel-plugin-react-compiler@19.0.0-beta-9ee70a1-20241017:
resolution: {integrity: sha512-AkSce5YYHcreFtuvzI9xnP2kwoYkub8Go3yrz7cPbbCE6oIhFxESbPWJVgye7yZckXuzEZYO4JSE8tq/U0oVfA==}
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@ -5049,6 +5161,9 @@ packages:
intl-messageformat@10.5.14:
resolution: {integrity: sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==}
invariant@2.2.4:
resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==}
ip-regex@1.0.3:
resolution: {integrity: sha512-HjpCHTuxbR/6jWJroc/VN+npo5j0T4Vv2TAI5qdEHQx7hsL767MeccGFSsLtF694EiZKTSEqgoeU6DtGFCcuqQ==}
engines: {node: '>=0.10.0'}
@ -6298,6 +6413,10 @@ packages:
engines: {node: '>=14'}
hasBin: true
pretty-format@24.9.0:
resolution: {integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==}
engines: {node: '>= 6'}
pretty-format@29.7.0:
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@ -6408,6 +6527,11 @@ packages:
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0
react-compiler-runtime@19.0.0-beta-8a03594-20241020:
resolution: {integrity: sha512-YWl8SjxsWGU1dpxHvWS0vxTkpeLXTZ/Y7IVzwZGj6yAfXOEie1MduuAR0TFiGeV0RxFLp5jKUIWl+ZglN4dMQw==}
peerDependencies:
react: ^18.2.0 || ^19.0.0
react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
peerDependencies:
@ -6578,6 +6702,11 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
rollup@4.24.0:
resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
rrweb-cssom@0.6.0:
resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
@ -6752,6 +6881,10 @@ packages:
source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
source-map@0.5.7:
resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
engines: {node: '>=0.10.0'}
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@ -7053,6 +7186,10 @@ packages:
resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
engines: {node: '>=18'}
trim-right@1.0.1:
resolution: {integrity: sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==}
engines: {node: '>=0.10.0'}
truncate-utf8-bytes@1.0.2:
resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==}
@ -7329,6 +7466,37 @@ packages:
terser:
optional: true
vite@5.4.10:
resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || >=20.0.0
less: '*'
lightningcss: ^1.21.0
sass: '*'
sass-embedded: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
peerDependenciesMeta:
'@types/node':
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
vitest@1.6.0:
resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==}
engines: {node: ^18.0.0 || >=20.0.0}
@ -7604,6 +7772,12 @@ packages:
resolution: {integrity: sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==}
engines: {node: '>= 10'}
zod-validation-error@2.1.0:
resolution: {integrity: sha512-VJh93e2wb4c3tWtGgTa0OF/dTt/zoPCPzXq4V11ZjxmEAFaPi/Zss1xIZdEB5RD8GD00U0/iVXgqkF77RV7pdQ==}
engines: {node: '>=18.0.0'}
peerDependencies:
zod: ^3.18.0
zod-validation-error@3.4.0:
resolution: {integrity: sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==}
engines: {node: '>=18.0.0'}
@ -8045,6 +8219,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/generator@7.2.0':
dependencies:
'@babel/types': 7.25.6
jsesc: 2.5.2
lodash: 4.17.21
source-map: 0.5.7
trim-right: 1.0.1
'@babel/generator@7.25.6':
dependencies:
'@babel/types': 7.25.6
@ -8759,10 +8941,10 @@ snapshots:
dependencies:
tslib: 2.6.3
'@histoire/app@0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))':
'@histoire/app@0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))':
dependencies:
'@histoire/controls': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/shared': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/controls': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/shared': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/vendors': 0.17.17
'@types/flexsearch': 0.7.6
flexsearch: 0.7.21
@ -8770,7 +8952,7 @@ snapshots:
transitivePeerDependencies:
- vite
'@histoire/controls@0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))':
'@histoire/controls@0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))':
dependencies:
'@codemirror/commands': 6.6.0
'@codemirror/lang-json': 6.0.1
@ -8779,26 +8961,26 @@ snapshots:
'@codemirror/state': 6.4.1
'@codemirror/theme-one-dark': 6.1.2
'@codemirror/view': 6.28.3
'@histoire/shared': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/shared': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/vendors': 0.17.17
transitivePeerDependencies:
- vite
'@histoire/plugin-vue@0.17.17(histoire@0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)))(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))':
'@histoire/plugin-vue@0.17.17(histoire@0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)))(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))':
dependencies:
'@histoire/controls': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/shared': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/controls': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/shared': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/vendors': 0.17.17
change-case: 4.1.2
globby: 13.2.2
histoire: 0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
histoire: 0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
launch-editor: 2.8.0
pathe: 1.1.2
vue: 3.5.2(typescript@5.5.3)
transitivePeerDependencies:
- vite
'@histoire/shared@0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))':
'@histoire/shared@0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))':
dependencies:
'@histoire/vendors': 0.17.17
'@types/fs-extra': 9.0.13
@ -8806,7 +8988,7 @@ snapshots:
chokidar: 3.6.0
pathe: 1.1.2
picocolors: 1.1.0
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
'@histoire/vendors@0.17.17': {}
@ -8870,6 +9052,12 @@ snapshots:
dependencies:
'@sinclair/typebox': 0.27.8
'@jest/types@24.9.0':
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 1.1.2
'@types/yargs': 13.0.12
'@jridgewell/gen-mapping@0.3.5':
dependencies:
'@jridgewell/set-array': 1.2.1
@ -9011,12 +9199,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@modyfi/vite-plugin-yaml@1.1.0(rollup@4.18.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))':
'@modyfi/vite-plugin-yaml@1.1.0(rollup@4.24.0)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))':
dependencies:
'@rollup/pluginutils': 5.1.0(rollup@4.18.1)
'@rollup/pluginutils': 5.1.0(rollup@4.24.0)
js-yaml: 4.1.0
tosource: 2.0.0-alpha.3
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- rollup
@ -10069,62 +10257,110 @@ snapshots:
'@remix-run/router@1.17.0': {}
'@rollup/pluginutils@5.1.0(rollup@4.18.1)':
'@rollup/pluginutils@5.1.0(rollup@4.24.0)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
rollup: 4.18.1
rollup: 4.24.0
'@rollup/rollup-android-arm-eabi@4.18.1':
optional: true
'@rollup/rollup-android-arm-eabi@4.24.0':
optional: true
'@rollup/rollup-android-arm64@4.18.1':
optional: true
'@rollup/rollup-android-arm64@4.24.0':
optional: true
'@rollup/rollup-darwin-arm64@4.18.1':
optional: true
'@rollup/rollup-darwin-arm64@4.24.0':
optional: true
'@rollup/rollup-darwin-x64@4.18.1':
optional: true
'@rollup/rollup-darwin-x64@4.24.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.18.1':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.24.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.18.1':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.24.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.18.1':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.24.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.18.1':
optional: true
'@rollup/rollup-linux-arm64-musl@4.24.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.18.1':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.24.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.18.1':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.24.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.18.1':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.24.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.18.1':
optional: true
'@rollup/rollup-linux-x64-gnu@4.24.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.18.1':
optional: true
'@rollup/rollup-linux-x64-musl@4.24.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.18.1':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.24.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.18.1':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.24.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.18.1':
optional: true
'@rollup/rollup-win32-x64-msvc@4.24.0':
optional: true
'@sapphire/async-queue@1.5.2': {}
'@sapphire/shapeshift@3.9.7':
@ -10453,6 +10689,17 @@ snapshots:
'@types/http-cache-semantics@4.0.4': {}
'@types/istanbul-lib-coverage@2.0.6': {}
'@types/istanbul-lib-report@3.0.3':
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports@1.1.2':
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-lib-report': 3.0.3
'@types/jsdom@21.1.7':
dependencies:
'@types/node': 20.11.21
@ -10556,6 +10803,10 @@ snapshots:
'@types/yargs-parser@21.0.3': {}
'@types/yargs@13.0.12':
dependencies:
'@types/yargs-parser': 21.0.3
'@types/yargs@17.0.32':
dependencies:
'@types/yargs-parser': 21.0.3
@ -10646,20 +10897,20 @@ snapshots:
'@typescript-eslint/types': 8.11.0
eslint-visitor-keys: 3.4.3
'@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))':
'@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))':
dependencies:
'@babel/core': 7.25.2
'@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2)
'@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- supports-color
'@vitejs/plugin-vue@5.0.5(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))':
'@vitejs/plugin-vue@5.0.5(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))':
dependencies:
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
vue: 3.5.2(typescript@5.5.3)
'@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.11.21)(jsdom@24.1.0)(lightningcss@1.25.1))':
@ -10785,14 +11036,14 @@ snapshots:
'@vue/devtools-api@6.6.3': {}
'@vue/devtools-core@7.3.7(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))':
'@vue/devtools-core@7.3.7(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))':
dependencies:
'@vue/devtools-kit': 7.3.7
'@vue/devtools-shared': 7.3.7
mitt: 3.0.1
nanoid: 3.3.7
pathe: 1.1.2
vite-hot-client: 0.2.3(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
vite-hot-client: 0.2.3(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
vue: 3.5.2(typescript@5.5.3)
transitivePeerDependencies:
- vite
@ -10984,6 +11235,8 @@ snapshots:
transitivePeerDependencies:
- encoding
ansi-regex@4.1.1: {}
ansi-regex@5.0.1: {}
ansi-regex@6.0.1: {}
@ -11178,6 +11431,16 @@ snapshots:
aws4@1.13.0: {}
babel-plugin-react-compiler@19.0.0-beta-9ee70a1-20241017:
dependencies:
'@babel/generator': 7.2.0
'@babel/types': 7.25.6
chalk: 4.1.2
invariant: 2.2.4
pretty-format: 24.9.0
zod: 3.23.8
zod-validation-error: 2.1.0(zod@3.23.8)
balanced-match@1.0.2: {}
base64-js@1.5.1: {}
@ -12881,12 +13144,12 @@ snapshots:
dependencies:
hermes-estree: 0.20.1
histoire@0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)):
histoire@0.17.17(@types/node@20.11.21)(lightningcss@1.25.1)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)):
dependencies:
'@akryum/tinypool': 0.3.1
'@histoire/app': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/controls': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/shared': 0.17.17(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/app': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/controls': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/shared': 0.17.17(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
'@histoire/vendors': 0.17.17
'@types/flexsearch': 0.7.6
'@types/markdown-it': 12.2.3
@ -12913,7 +13176,7 @@ snapshots:
sade: 1.8.1
shiki-es: 0.2.0
sirv: 2.0.4
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
vite-node: 0.34.7(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- '@types/node'
@ -12922,6 +13185,7 @@ snapshots:
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
@ -13077,6 +13341,10 @@ snapshots:
'@formatjs/icu-messageformat-parser': 2.7.8
tslib: 2.6.3
invariant@2.2.4:
dependencies:
loose-envify: 1.4.0
ip-regex@1.0.3: {}
is-array-buffer@3.0.4:
@ -14239,6 +14507,13 @@ snapshots:
prettier@3.3.2: {}
pretty-format@24.9.0:
dependencies:
'@jest/types': 24.9.0
ansi-regex: 4.1.1
ansi-styles: 3.2.1
react-is: 16.13.1
pretty-format@29.7.0:
dependencies:
'@jest/schemas': 29.6.3
@ -14402,6 +14677,10 @@ snapshots:
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-compiler-runtime@19.0.0-beta-8a03594-20241020(react@18.3.1):
dependencies:
react: 18.3.1
react-dom@18.3.1(react@18.3.1):
dependencies:
loose-envify: 1.4.0
@ -14645,6 +14924,28 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.18.1
fsevents: 2.3.3
rollup@4.24.0:
dependencies:
'@types/estree': 1.0.6
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.24.0
'@rollup/rollup-android-arm64': 4.24.0
'@rollup/rollup-darwin-arm64': 4.24.0
'@rollup/rollup-darwin-x64': 4.24.0
'@rollup/rollup-linux-arm-gnueabihf': 4.24.0
'@rollup/rollup-linux-arm-musleabihf': 4.24.0
'@rollup/rollup-linux-arm64-gnu': 4.24.0
'@rollup/rollup-linux-arm64-musl': 4.24.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.24.0
'@rollup/rollup-linux-riscv64-gnu': 4.24.0
'@rollup/rollup-linux-s390x-gnu': 4.24.0
'@rollup/rollup-linux-x64-gnu': 4.24.0
'@rollup/rollup-linux-x64-musl': 4.24.0
'@rollup/rollup-win32-arm64-msvc': 4.24.0
'@rollup/rollup-win32-ia32-msvc': 4.24.0
'@rollup/rollup-win32-x64-msvc': 4.24.0
fsevents: 2.3.3
rrweb-cssom@0.6.0: {}
rrweb-cssom@0.7.1: {}
@ -14829,6 +15130,8 @@ snapshots:
buffer-from: 1.1.2
source-map: 0.6.1
source-map@0.5.7: {}
source-map@0.6.1: {}
spdx-correct@3.2.0:
@ -15178,6 +15481,8 @@ snapshots:
dependencies:
punycode: 2.3.1
trim-right@1.0.1: {}
truncate-utf8-bytes@1.0.2:
dependencies:
utf8-byte-length: 1.0.5
@ -15380,9 +15685,9 @@ snapshots:
extsprintf: 1.4.1
optional: true
vite-hot-client@0.2.3(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)):
vite-hot-client@0.2.3(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)):
dependencies:
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
vite-node@0.34.7(@types/node@20.11.21)(lightningcss@1.25.1):
dependencies:
@ -15391,12 +15696,13 @@ snapshots:
mlly: 1.7.1
pathe: 1.1.2
picocolors: 1.1.0
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
@ -15408,12 +15714,13 @@ snapshots:
debug: 4.3.7
pathe: 1.1.2
picocolors: 1.1.0
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
@ -15425,21 +15732,22 @@ snapshots:
debug: 4.3.7
pathe: 1.1.2
tinyrainbow: 1.2.0
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
vite-plugin-inspect@0.8.4(rollup@4.18.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)):
vite-plugin-inspect@0.8.4(rollup@4.24.0)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)):
dependencies:
'@antfu/utils': 0.7.10
'@rollup/pluginutils': 5.1.0(rollup@4.18.1)
'@rollup/pluginutils': 5.1.0(rollup@4.24.0)
debug: 4.3.7
error-stack-parser-es: 0.1.4
fs-extra: 11.2.0
@ -15447,28 +15755,28 @@ snapshots:
perfect-debounce: 1.0.0
picocolors: 1.1.0
sirv: 2.0.4
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- rollup
- supports-color
vite-plugin-vue-devtools@7.3.7(rollup@4.18.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3)):
vite-plugin-vue-devtools@7.3.7(rollup@4.24.0)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3)):
dependencies:
'@vue/devtools-core': 7.3.7(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
'@vue/devtools-core': 7.3.7(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))(vue@3.5.2(typescript@5.5.3))
'@vue/devtools-kit': 7.3.7
'@vue/devtools-shared': 7.3.7
execa: 8.0.1
sirv: 2.0.4
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite-plugin-inspect: 0.8.4(rollup@4.18.1)(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
vite-plugin-vue-inspector: 5.1.3(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1))
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
vite-plugin-inspect: 0.8.4(rollup@4.24.0)(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
vite-plugin-vue-inspector: 5.1.3(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1))
transitivePeerDependencies:
- '@nuxt/kit'
- rollup
- supports-color
- vue
vite-plugin-vue-inspector@5.1.3(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)):
vite-plugin-vue-inspector@5.1.3(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)):
dependencies:
'@babel/core': 7.25.2
'@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2)
@ -15479,13 +15787,13 @@ snapshots:
'@vue/compiler-dom': 3.5.2
kolorist: 1.8.0
magic-string: 0.30.11
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
transitivePeerDependencies:
- supports-color
vite-plugin-wasm@3.3.0(vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)):
vite-plugin-wasm@3.3.0(vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)):
dependencies:
vite: 5.3.5(@types/node@20.11.21)(lightningcss@1.25.1)
vite: 5.4.10(@types/node@20.11.21)(lightningcss@1.25.1)
vite@5.3.5(@types/node@20.11.21)(lightningcss@1.25.1):
dependencies:
@ -15497,6 +15805,16 @@ snapshots:
fsevents: 2.3.3
lightningcss: 1.25.1
vite@5.4.10(@types/node@20.11.21)(lightningcss@1.25.1):
dependencies:
esbuild: 0.21.5
postcss: 8.4.45
rollup: 4.24.0
optionalDependencies:
'@types/node': 20.11.21
fsevents: 2.3.3
lightningcss: 1.25.1
vitest@1.6.0(@types/node@20.11.21)(jsdom@24.1.0)(lightningcss@1.25.1):
dependencies:
'@vitest/expect': 1.6.0
@ -15526,6 +15844,7 @@ snapshots:
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
@ -15794,6 +16113,10 @@ snapshots:
compress-commons: 4.1.2
readable-stream: 3.6.2
zod-validation-error@2.1.0(zod@3.23.8):
dependencies:
zod: 3.23.8
zod-validation-error@3.4.0(zod@3.23.8):
dependencies:
zod: 3.23.8