feat: add support for react 19 (#264)

Co-authored-by: Valerio Ageno <valerioageno@yahoo.it>
This commit is contained in:
Marco Pasqualetti
2025-01-03 11:00:44 +01:00
committed by GitHub
parent 1dc77fc473
commit 592f402ffd
24 changed files with 329 additions and 426 deletions
+5 -5
View File
@@ -3,13 +3,13 @@
"description": "Basic tuono application",
"version": "0.0.1",
"dependencies": {
"react": "18.3.1",
"react-dom": "18.3.1",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"tuono": "link:../../packages/tuono"
},
"devDependencies": {
"@types/react": "^18.3.13",
"@types/react-dom": "^18.3.0",
"typescript": "^5.6.3"
"@types/react": "19.0.2",
"@types/react-dom": "19.0.2",
"typescript": "5.6.3"
}
}
+7 -1
View File
@@ -5,5 +5,11 @@ interface RootRouteProps {
}
export default function RootRoute({ children }: RootRouteProps): JSX.Element {
return <main className="main">{children}</main>
return (
<html>
<body>
<main>{children}</main>
</body>
</html>
)
}
+4 -4
View File
@@ -3,13 +3,13 @@
"description": "The basic tutorial for tuono applications",
"version": "0.0.1",
"dependencies": {
"react": "18.3.1",
"react-dom": "18.3.1",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"tuono": "link:../../packages/tuono"
},
"devDependencies": {
"@types/react": "^18.3.13",
"@types/react-dom": "^18.3.0",
"@types/react": "^19.0.2",
"@types/react-dom": "^19.0.2",
"typescript": "^5.6.3"
}
}
@@ -5,5 +5,11 @@ interface RootRouteProps {
}
export default function RootRoute({ children }: RootRouteProps): JSX.Element {
return <main className="main">{children}</main>
return (
<html>
<body>
<main>{children}</main>
</body>
</html>
)
}
+18 -12
View File
@@ -1,6 +1,6 @@
// src/routes/index.tsx
import type { JSX } from 'react'
import { Head, type TuonoProps } from 'tuono'
import type { TuonoProps } from 'tuono'
import PokemonLink from '@/components/PokemonLink'
@@ -15,20 +15,25 @@ interface IndexProps {
export default function IndexPage({
data,
}: TuonoProps<IndexProps>): JSX.Element | null {
if (!data?.results) {
return null
}
if (!data?.results) return null
return (
<>
<Head>
<title>Tuono tutorial</title>
</Head>
<title>Tuono tutorial</title>
<header className="header">
<a href="https://crates.io/crates/tuono" target="_blank">
<a
href="https://crates.io/crates/tuono"
target="_blank"
rel="noreferrer"
>
Crates
</a>
<a href="https://www.npmjs.com/package/tuono" target="_blank">
<a
href="https://www.npmjs.com/package/tuono"
target="_blank"
rel="noreferrer"
>
Npm
</a>
</header>
@@ -43,9 +48,10 @@ export default function IndexPage({
</div>
<ul style={{ flexWrap: 'wrap', display: 'flex', gap: 10 }}>
<PokemonLink pokemon={{ name: 'GOAT' }} id={0} />
{data.results.map((pokemon, i) => {
return <PokemonLink pokemon={pokemon} id={i + 1} key={i} />
})}
{data.results.map((pokemon, i) => (
<PokemonLink key={i} pokemon={pokemon} id={i + 1} />
))}
</ul>
</>
)
@@ -1,5 +1,5 @@
import type { JSX } from 'react'
import { Head, type TuonoProps } from 'tuono'
import type { TuonoProps } from 'tuono'
import PokemonView from '@/components/PokemonView'
@@ -15,9 +15,8 @@ export default function PokemonPage({
}: TuonoProps<Pokemon>): JSX.Element {
return (
<>
<Head>
<title>{`Pokemon: ${data?.name}`}</title>
</Head>
<title>{`Pokemon: ${data?.name ?? ''}`}</title>
<PokemonView pokemon={data} />
</>
)
@@ -4,6 +4,7 @@
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
+4 -4
View File
@@ -4,14 +4,14 @@
"version": "0.0.1",
"dependencies": {
"@mdx-js/react": "3.1.0",
"react": "18.3.1",
"react-dom": "18.3.1",
"react": "^19.0.0",
"react-dom": "^19.0.0",
"tuono": "link:../../packages/tuono"
},
"devDependencies": {
"@mdx-js/rollup": "3.1.0",
"@types/react": "18.3.18",
"@types/react-dom": "18.3.5",
"@types/react": "^19.0.2",
"@types/react-dom": "^19.0.2",
"typescript": "^5.6.3"
}
}
+7 -3
View File
@@ -7,8 +7,12 @@ interface RootRouteProps {
export default function RootRoute({ children }: RootRouteProps): JSX.Element {
return (
<main className="main">
<MDXProvider components={{}}>{children}</MDXProvider>
</main>
<html>
<body>
<main>
<MDXProvider components={{}}>{children}</MDXProvider>
</main>
</body>
</html>
)
}
+1 -1
View File
@@ -24,7 +24,7 @@
"license": "MIT",
"devDependencies": {
"@eslint/js": "9.15.0",
"@types/node": "22.10.0",
"@types/node": "22.10.3",
"eslint": "9.15.0",
"eslint-import-resolver-typescript": "3.6.3",
"eslint-plugin-import": "2.31.0",
@@ -52,6 +52,6 @@
"devDependencies": {
"@tanstack/config": "0.7.13",
"@types/babel__core": "^7.20.5",
"vitest": "^2.0.0"
"vitest": "2.1.8"
}
}
@@ -52,6 +52,6 @@
"@tanstack/config": "0.7.13",
"@types/babel__core": "^7.20.5",
"prettier": "^3.2.4",
"vitest": "^2.0.0"
"vitest": "2.1.8"
}
}
+7 -7
View File
@@ -44,20 +44,20 @@
"./package.json": "./package.json"
},
"peerDependencies": {
"react": ">=16.3.0"
"react": ">=19.0.0"
},
"dependencies": {
"react-intersection-observer": "^9.13.0"
},
"devDependencies": {
"@tanstack/config": "0.7.13",
"@testing-library/jest-dom": "^6.6.0",
"@testing-library/react": "^16.0.0",
"@types/react": "18.3.18",
"@testing-library/jest-dom": "6.6.3",
"@testing-library/react": "16.1.0",
"@types/react": "19.0.2",
"@vitejs/plugin-react-swc": "3.7.2",
"react": "18.3.1",
"jsdom": "^25.0.0",
"jsdom": "25.0.1",
"react": "19.0.0",
"vite": "5.4.11",
"vitest": "^2.0.0"
"vitest": "2.1.8"
}
}
@@ -25,7 +25,9 @@ export const RouteMatch = ({
return (
<TraverseRootComponents routes={routes} data={data} isLoading={isLoading}>
<route.component data={data} isLoading={isLoading} />
<React.Suspense>
<route.component data={data} isLoading={isLoading} />
</React.Suspense>
</TraverseRootComponents>
)
}
@@ -1,5 +1,4 @@
import type { JSX } from 'react'
import { Suspense } from 'react'
import type { ServerProps } from '../types'
import type { Router } from '../router'
@@ -20,13 +19,11 @@ export function RouterProvider({
serverProps,
}: RouterProviderProps): JSX.Element {
return (
<Suspense>
<RouterContextProvider
router={router}
serverSideProps={serverProps?.router}
>
<Matches serverSideProps={serverProps?.props} />
</RouterContextProvider>
</Suspense>
<RouterContextProvider
router={router}
serverSideProps={serverProps?.router}
>
<Matches serverSideProps={serverProps?.props} />
</RouterContextProvider>
)
}
+10 -18
View File
@@ -88,25 +88,16 @@
"bin/**"
],
"peerDependencies": {
"react": ">=16.3.0",
"react-dom": ">=16.3.0"
"react": ">=19.0.0",
"react-dom": ">=19.0.0"
},
"dependencies": {
"@babel/core": "^7.24.4",
"@babel/generator": "^7.23.6",
"@babel/plugin-syntax-jsx": "^7.24.1",
"@babel/plugin-syntax-typescript": "^7.24.1",
"@babel/plugin-transform-react-jsx": "^7.23.4",
"@babel/plugin-transform-typescript": "^7.24.1",
"@babel/template": "^7.24.0",
"@babel/traverse": "^7.24.1",
"@babel/types": "^7.24.0",
"@rollup/plugin-inject": "^5.0.5",
"@types/babel__core": "^7.20.5",
"@types/node": "^22.0.0",
"@vitejs/plugin-react-swc": "^3.7.0",
"fast-text-encoding": "^1.0.6",
"react-helmet-async": "^2.0.5",
"tuono-fs-router-vite-plugin": "workspace:*",
"tuono-lazy-fn-vite-plugin": "workspace:*",
"tuono-router": "workspace:*",
@@ -115,13 +106,14 @@
},
"devDependencies": {
"@tanstack/config": "0.7.13",
"@types/babel-traverse": "^6.25.10",
"@types/babel__traverse": "^7.20.6",
"@types/react": "18.3.18",
"@types/react-dom": "18.3.5",
"react": "18.3.1",
"react-dom": "18.3.1",
"vitest": "^2.0.0"
"@types/babel__core": "7.20.5",
"@types/babel__traverse": "7.20.6",
"@types/node": "22.10.3",
"@types/react": "19.0.2",
"@types/react-dom": "19.0.2",
"react": "19.0.0",
"react-dom": "19.0.0",
"vitest": "2.1.8"
},
"sideEffects": false,
"keywords": [
+2 -8
View File
@@ -2,7 +2,6 @@ import React from 'react'
import { hydrateRoot } from 'react-dom/client'
import { RouterProvider, createRouter } from 'tuono-router'
import type { createRoute } from 'tuono-router'
import { HelmetProvider } from 'react-helmet-async'
type RouteTree = ReturnType<typeof createRoute>
@@ -10,15 +9,10 @@ export function hydrate(routeTree: RouteTree): void {
// Create a new router instance
const router = createRouter({ routeTree })
// eslint-disable-next-line
const rootElement = document.getElementById('__tuono')!
hydrateRoot(
rootElement,
document,
<React.StrictMode>
<HelmetProvider>
<RouterProvider router={router} />
</HelmetProvider>
<RouterProvider router={router} />
</React.StrictMode>,
)
}
-2
View File
@@ -1,5 +1,3 @@
export { Helmet as Head } from 'react-helmet-async'
export {
createRoute,
createRootRoute,
-2
View File
@@ -1,2 +0,0 @@
declare module 'react-meta-tags'
declare module 'react-meta-tags/server'
@@ -0,0 +1,21 @@
import type { JSX } from 'react'
const TUONO_DEV_SERVER_PORT = 3000
const VITE_PROXY_PATH = '/vite-server'
const SCRIPT_BASE_URL = `http://localhost:${TUONO_DEV_SERVER_PORT}${VITE_PROXY_PATH}`
export const DevResources = (): JSX.Element => (
<>
<script type="module">
{[
`import RefreshRuntime from '${SCRIPT_BASE_URL}/@react-refresh'`,
'RefreshRuntime.injectIntoGlobalHook(window)',
'window.$RefreshReg$ = () => {}',
'window.$RefreshSig$ = () => (type) => type',
'window.__vite_plugin_react_preamble_installed__ = true',
].join('\n')}
</script>
<script type="module" src={`${SCRIPT_BASE_URL}/@vite/client`}></script>
<script type="module" src={`${SCRIPT_BASE_URL}/client-main.tsx`}></script>
</>
)
@@ -0,0 +1,26 @@
import type { JSX } from 'react'
interface ProdResourcesProps {
cssBundles: Array<string>
jsBundles: Array<string>
}
export const ProdResources = ({
cssBundles,
jsBundles,
}: ProdResourcesProps): JSX.Element => (
<>
{cssBundles.map((cssHref) => (
<link
key={cssHref}
rel="stylesheet"
type="text/css"
href={`/${cssHref}`}
/>
))}
{jsBundles.map((scriptSrc) => (
<script key={scriptSrc} type="module" src={`/${scriptSrc}`}></script>
))}
</>
)
+54 -63
View File
@@ -1,43 +1,55 @@
import 'fast-text-encoding' // Mandatory for React18
// #region POLYFILLS
/**
* Tuono internally uses a V8 JS engine that implements very few
* browser/node/deno APIs in order to make it super fast and
* share it within a multi thread runtime.
*
* While this is the reason of its speed, server side rendering
* requires some JS APIs that need to be polyfilled.
*
* We basically have three ways to polyfill APIs:
* 1. Create them with rust and expose them directly through the V8 engine to
* the JS source.
* 2. Polyfill them at the beginning of the JS source
* (what we are doing here)
* 3. Inject them via rollup-inject plugin, when needed
*
* Q: Why not all the libraries can be just injected with rollup-inject?
* A: Leaving to rollup the duty of linking them can cause to declare them after their usage.
* The following APIs are JS classes, and are not hoisted, hence this might
* cause ReferenceError(s).
*
* The best solution is to create these polyfills within the rust environment
* and share the classes in the JS scope by passing them through the V8 engine
* (best for speed and code quality).
*
* This function might be a good entry point for adding such polyfills
* https://docs.rs/ssr_rs/latest/ssr_rs/struct.Ssr.html#method.add_global_fn
*/
import 'fast-text-encoding'
/* eslint-disable import/order, import/newline-after-import */
import { MessageChannelPolyfill } from './polyfills/MessageChannel'
;(function (
scope: Partial<Pick<typeof globalThis, 'MessageChannel'>> = {},
): void {
scope['MessageChannel'] = scope['MessageChannel'] ?? MessageChannelPolyfill
})(this)
/* eslint-enable import/order, import/newline-after-import */
// #endregion POLYFILLS
import type { ReadableStream } from 'node:stream/web'
import { renderToStaticMarkup, renderToReadableStream } from 'react-dom/server'
import type { HelmetServerState } from 'react-helmet-async'
import { HelmetProvider } from 'react-helmet-async'
import { renderToReadableStream } from 'react-dom/server'
import { RouterProvider, createRouter } from 'tuono-router'
import type { createRoute } from 'tuono-router'
import { DevResources } from './components/DevResources'
import { ProdResources } from './components/ProdResources'
import type { Mode } from './types'
import { streamToString } from './utils'
type RouteTree = ReturnType<typeof createRoute>
type Mode = 'Dev' | 'Prod'
const TUONO_DEV_SERVER_PORT = 3000
const VITE_PROXY_PATH = '/vite-server'
const VITE_DEV_AND_HMR = `<script type="module">
import RefreshRuntime from 'http://localhost:${TUONO_DEV_SERVER_PORT}${VITE_PROXY_PATH}/@react-refresh'
RefreshRuntime.injectIntoGlobalHook(window)
window.$RefreshReg$ = () => {}
window.$RefreshSig$ = () => (type) => type
window.__vite_plugin_react_preamble_installed__ = true
</script>
<script type="module" src="http://localhost:${TUONO_DEV_SERVER_PORT}${VITE_PROXY_PATH}/@vite/client"></script>
<script type="module" src="http://localhost:${TUONO_DEV_SERVER_PORT}${VITE_PROXY_PATH}/client-main.tsx"></script>`
function generateCssLinks(cssBundles: Array<string>, mode: Mode): string {
if (mode === 'Dev') return ''
return cssBundles.reduce((acc, value) => {
return acc + `<link rel="stylesheet" type="text/css" href="/${value}" />`
}, '')
}
function generateJsScripts(jsBundles: Array<string>, mode: Mode): string {
if (mode === 'Dev') return ''
return jsBundles.reduce((acc, value) => {
return acc + `<script type="module" src="/${value}"></script>`
}, '')
}
export function serverSideRendering(routeTree: RouteTree) {
return async function render(payload: string | undefined): Promise<string> {
@@ -51,45 +63,24 @@ export function serverSideRendering(routeTree: RouteTree) {
const cssBundles = serverProps.cssBundles as Array<string>
const router = createRouter({ routeTree }) // Render the app
const helmetContext = {} as { helmet: HelmetServerState }
const stream = await renderToReadableStream(
<HelmetProvider context={helmetContext}>
<>
<RouterProvider router={router} serverProps={serverProps as never} />
</HelmetProvider>,
{mode === 'Dev' && <DevResources />}
{mode === 'Prod' && (
<ProdResources cssBundles={cssBundles} jsBundles={jsBundles} />
)}
<script>{`window.__TUONO_SSR_PROPS__=${payload as string}`}</script>
</>,
)
await stream.allReady
const { helmet } = helmetContext
const app = await streamToString(
return await streamToString(
// ReadableStream should be implemented in node)
stream as unknown as ReadableStream<Uint8Array>,
)
return `<!doctype html>
<html ${helmet.htmlAttributes.toString()}>
<head>
${helmet.title.toString()}
${helmet.priority.toString()}
${helmet.meta.toString()}
${helmet.link.toString()}
${helmet.script.toString()}
${generateCssLinks(cssBundles, mode)}
</head>
<body ${helmet.bodyAttributes.toString()}>
<div id="__tuono">${app}</div>
${renderToStaticMarkup(
<script
dangerouslySetInnerHTML={{
__html: `window.__TUONO_SSR_PROPS__=${payload as string}`,
}}
/>,
)}
${generateJsScripts(jsBundles, mode)}
${mode === 'Dev' ? VITE_DEV_AND_HMR : ''}
</body>
</html>
`
}
}
+1
View File
@@ -0,0 +1 @@
export type Mode = 'Dev' | 'Prod'
+140 -279
View File
@@ -12,8 +12,8 @@ importers:
specifier: 9.15.0
version: 9.15.0
'@types/node':
specifier: 22.10.0
version: 22.10.0
specifier: 22.10.3
version: 22.10.3
eslint:
specifier: 9.15.0
version: 9.15.0
@@ -94,43 +94,43 @@ importers:
examples/tuono-app:
dependencies:
react:
specifier: 18.3.1
version: 18.3.1
specifier: ^19.0.0
version: 19.0.0
react-dom:
specifier: 18.3.1
version: 18.3.1(react@18.3.1)
specifier: ^19.0.0
version: 19.0.0(react@19.0.0)
tuono:
specifier: link:../../packages/tuono
version: link:../../packages/tuono
devDependencies:
'@types/react':
specifier: ^18.3.13
version: 18.3.18
specifier: 19.0.2
version: 19.0.2
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.5(@types/react@18.3.18)
specifier: 19.0.2
version: 19.0.2(@types/react@19.0.2)
typescript:
specifier: ^5.6.3
specifier: 5.6.3
version: 5.6.3
examples/tuono-tutorial:
dependencies:
react:
specifier: 18.3.1
version: 18.3.1
specifier: ^19.0.0
version: 19.0.0
react-dom:
specifier: 18.3.1
version: 18.3.1(react@18.3.1)
specifier: ^19.0.0
version: 19.0.0(react@19.0.0)
tuono:
specifier: link:../../packages/tuono
version: link:../../packages/tuono
devDependencies:
'@types/react':
specifier: ^18.3.13
version: 18.3.18
specifier: ^19.0.2
version: 19.0.2
'@types/react-dom':
specifier: ^18.3.0
version: 18.3.5(@types/react@18.3.18)
specifier: ^19.0.2
version: 19.0.2(@types/react@19.0.2)
typescript:
specifier: ^5.6.3
version: 5.6.3
@@ -139,13 +139,13 @@ importers:
dependencies:
'@mdx-js/react':
specifier: 3.1.0
version: 3.1.0(@types/react@18.3.18)(react@18.3.1)
version: 3.1.0(@types/react@19.0.2)(react@19.0.0)
react:
specifier: 18.3.1
version: 18.3.1
specifier: ^19.0.0
version: 19.0.0
react-dom:
specifier: 18.3.1
version: 18.3.1(react@18.3.1)
specifier: ^19.0.0
version: 19.0.0(react@19.0.0)
tuono:
specifier: link:../../packages/tuono
version: link:../../packages/tuono
@@ -154,11 +154,11 @@ importers:
specifier: 3.1.0
version: 3.1.0(acorn@8.14.0)(rollup@4.25.0)
'@types/react':
specifier: 18.3.18
version: 18.3.18
specifier: ^19.0.2
version: 19.0.2
'@types/react-dom':
specifier: 18.3.5
version: 18.3.5(@types/react@18.3.18)
specifier: ^19.0.2
version: 19.0.2(@types/react@19.0.2)
typescript:
specifier: ^5.6.3
version: 5.6.3
@@ -168,48 +168,21 @@ importers:
'@babel/core':
specifier: ^7.24.4
version: 7.26.0
'@babel/generator':
specifier: ^7.23.6
version: 7.26.3
'@babel/plugin-syntax-jsx':
specifier: ^7.24.1
version: 7.25.9(@babel/core@7.26.0)
'@babel/plugin-syntax-typescript':
specifier: ^7.24.1
version: 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-react-jsx':
specifier: ^7.23.4
version: 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-typescript':
specifier: ^7.24.1
version: 7.26.3(@babel/core@7.26.0)
'@babel/template':
specifier: ^7.24.0
version: 7.25.9
'@babel/traverse':
specifier: ^7.24.1
version: 7.26.4
'@babel/types':
specifier: ^7.24.0
version: 7.26.3
'@rollup/plugin-inject':
specifier: ^5.0.5
version: 5.0.5(rollup@4.25.0)
'@types/babel__core':
specifier: ^7.20.5
version: 7.20.5
'@types/node':
specifier: ^22.0.0
version: 22.10.3
'@vitejs/plugin-react-swc':
specifier: ^3.7.0
version: 3.7.2(vite@5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)))
fast-text-encoding:
specifier: ^1.0.6
version: 1.0.6
react-helmet-async:
specifier: ^2.0.5
version: 2.0.5(react@18.3.1)
tuono-fs-router-vite-plugin:
specifier: workspace:*
version: link:../tuono-fs-router-vite-plugin
@@ -229,26 +202,29 @@ importers:
'@tanstack/config':
specifier: 0.7.13
version: 0.7.13(@types/node@22.10.3)(esbuild@0.21.5)(rollup@4.25.0)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)))
'@types/babel-traverse':
specifier: ^6.25.10
version: 6.25.10
'@types/babel__core':
specifier: 7.20.5
version: 7.20.5
'@types/babel__traverse':
specifier: ^7.20.6
specifier: 7.20.6
version: 7.20.6
'@types/node':
specifier: 22.10.3
version: 22.10.3
'@types/react':
specifier: 18.3.18
version: 18.3.18
specifier: 19.0.2
version: 19.0.2
'@types/react-dom':
specifier: 18.3.5
version: 18.3.5(@types/react@18.3.18)
specifier: 19.0.2
version: 19.0.2(@types/react@19.0.2)
react:
specifier: 18.3.1
version: 18.3.1
specifier: 19.0.0
version: 19.0.0
react-dom:
specifier: 18.3.1
version: 18.3.1(react@18.3.1)
specifier: 19.0.0
version: 19.0.0(react@19.0.0)
vitest:
specifier: ^2.0.0
specifier: 2.1.8
version: 2.1.8(@types/node@22.10.3)(jsdom@25.0.1)(sugarss@4.0.1(postcss@8.4.49))
packages/tuono-fs-router-vite-plugin:
@@ -261,7 +237,7 @@ importers:
version: 7.26.3
prettier:
specifier: ^3.2.4
version: 3.4.2
version: 3.4.1
vite:
specifier: ^5.2.11
version: 5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49))
@@ -273,7 +249,7 @@ importers:
specifier: ^7.20.5
version: 7.20.5
vitest:
specifier: ^2.0.0
specifier: 2.1.8
version: 2.1.8(@types/node@22.10.3)(jsdom@25.0.1)(sugarss@4.0.1(postcss@8.4.49))
packages/tuono-lazy-fn-vite-plugin:
@@ -296,43 +272,43 @@ importers:
version: 7.20.5
prettier:
specifier: ^3.2.4
version: 3.4.2
version: 3.4.1
vitest:
specifier: ^2.0.0
specifier: 2.1.8
version: 2.1.8(@types/node@22.10.3)(jsdom@25.0.1)(sugarss@4.0.1(postcss@8.4.49))
packages/tuono-router:
dependencies:
react-intersection-observer:
specifier: ^9.13.0
version: 9.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
version: 9.13.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
devDependencies:
'@tanstack/config':
specifier: 0.7.13
version: 0.7.13(@types/node@22.10.3)(esbuild@0.21.5)(rollup@4.25.0)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)))
'@testing-library/jest-dom':
specifier: ^6.6.0
specifier: 6.6.3
version: 6.6.3
'@testing-library/react':
specifier: ^16.0.0
version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
specifier: 16.1.0
version: 16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@types/react':
specifier: 18.3.18
version: 18.3.18
specifier: 19.0.2
version: 19.0.2
'@vitejs/plugin-react-swc':
specifier: 3.7.2
version: 3.7.2(vite@5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)))
jsdom:
specifier: ^25.0.0
specifier: 25.0.1
version: 25.0.1
react:
specifier: 18.3.1
version: 18.3.1
specifier: 19.0.0
version: 19.0.0
vite:
specifier: 5.4.11
version: 5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49))
vitest:
specifier: ^2.0.0
specifier: 2.1.8
version: 2.1.8(@types/node@22.10.3)(jsdom@25.0.1)(sugarss@4.0.1(postcss@8.4.49))
packages:
@@ -356,10 +332,6 @@ packages:
resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.26.2':
resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
engines: {node: '>=6.9.0'}
'@babel/generator@7.26.3':
resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==}
engines: {node: '>=6.9.0'}
@@ -426,11 +398,6 @@ packages:
resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.26.2':
resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/parser@7.26.3':
resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==}
engines: {node: '>=6.0.0'}
@@ -460,12 +427,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/plugin-transform-typescript@7.26.3':
resolution: {integrity: sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
'@babel/runtime@7.26.0':
resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
engines: {node: '>=6.9.0'}
@@ -474,18 +435,10 @@ packages:
resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.25.9':
resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.26.4':
resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==}
engines: {node: '>=6.9.0'}
'@babel/types@7.26.0':
resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
engines: {node: '>=6.9.0'}
'@babel/types@7.26.3':
resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==}
engines: {node: '>=6.9.0'}
@@ -711,10 +664,6 @@ packages:
resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
engines: {node: '>=18.18'}
'@jridgewell/gen-mapping@0.3.5':
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
engines: {node: '>=6.0.0'}
'@jridgewell/gen-mapping@0.3.8':
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
engines: {node: '>=6.0.0'}
@@ -1055,12 +1004,6 @@ packages:
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
'@types/babel-traverse@6.25.10':
resolution: {integrity: sha512-B3XitTFG8YeXb5lr7Nj62t1DikCDuAJ/4BDeK6GCuWREEmdunI9DWnv+81oHl2yQBQPWY/C1PmV3vaRZB4LQmw==}
'@types/babel-types@7.0.16':
resolution: {integrity: sha512-5QXs9GBFTNTmilLlWBhnsprqpjfrotyrnzUdwDrywEL/DA4LuCWQT300BTOXA3Y9ngT9F2uvmCoIxI6z8DlJEA==}
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -1103,9 +1046,6 @@ packages:
'@types/ms@0.7.34':
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
'@types/node@22.10.0':
resolution: {integrity: sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==}
'@types/node@22.10.3':
resolution: {integrity: sha512-DifAyw4BkrufCILvD3ucnuN8eydUfc/C1GlyrnI+LK6543w5/L3VeVgf05o3B4fqSXP1dKYLOZsKfutpxPzZrw==}
@@ -1117,9 +1057,17 @@ packages:
peerDependencies:
'@types/react': ^18.0.0
'@types/react-dom@19.0.2':
resolution: {integrity: sha512-c1s+7TKFaDRRxr1TxccIX2u7sfCnc3RxkVyBIUA2lCpyqCF+QoAwQ/CBg7bsMdVwP120HEH143VQezKtef5nCg==}
peerDependencies:
'@types/react': ^19.0.0
'@types/react@18.3.18':
resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==}
'@types/react@19.0.2':
resolution: {integrity: sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg==}
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -1328,10 +1276,6 @@ packages:
resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
engines: {node: '>= 0.4'}
array.prototype.flatmap@1.3.2:
resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==}
engines: {node: '>= 0.4'}
array.prototype.flatmap@1.3.3:
resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
engines: {node: '>= 0.4'}
@@ -1547,15 +1491,6 @@ packages:
supports-color:
optional: true
debug@4.3.7:
resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'}
@@ -2268,11 +2203,6 @@ packages:
canvas:
optional: true
jsesc@3.0.2:
resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
engines: {node: '>=6'}
hasBin: true
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
@@ -2364,9 +2294,6 @@ packages:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
magic-string@0.30.14:
resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==}
magic-string@0.30.17:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
@@ -2590,10 +2517,6 @@ packages:
resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
engines: {node: '>=0.10.0'}
object.values@1.2.0:
resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==}
engines: {node: '>= 0.4'}
object.values@1.2.1:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
@@ -2730,11 +2653,6 @@ packages:
engines: {node: '>=14'}
hasBin: true
prettier@3.4.2:
resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==}
engines: {node: '>=14'}
hasBin: true
pretty-format@27.5.1:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
@@ -2760,6 +2678,11 @@ packages:
peerDependencies:
react: ^18.3.1
react-dom@19.0.0:
resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==}
peerDependencies:
react: ^19.0.0
react-fast-compare@3.2.2:
resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
@@ -2829,6 +2752,10 @@ packages:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
react@19.0.0:
resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==}
engines: {node: '>=0.10.0'}
rechoir@0.8.0:
resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==}
engines: {node: '>= 10.13.0'}
@@ -2932,6 +2859,9 @@ packages:
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
scheduler@0.25.0:
resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==}
semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -3600,26 +3530,18 @@ snapshots:
'@babel/helper-compilation-targets': 7.25.9
'@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
'@babel/helpers': 7.26.0
'@babel/parser': 7.26.2
'@babel/parser': 7.26.3
'@babel/template': 7.25.9
'@babel/traverse': 7.26.4
'@babel/types': 7.26.3
convert-source-map: 2.0.0
debug: 4.3.7
debug: 4.4.0
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
'@babel/generator@7.26.2':
dependencies:
'@babel/parser': 7.26.2
'@babel/types': 7.26.0
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
jsesc: 3.0.2
'@babel/generator@7.26.3':
dependencies:
'@babel/parser': 7.26.3
@@ -3709,10 +3631,6 @@ snapshots:
'@babel/template': 7.25.9
'@babel/types': 7.26.3
'@babel/parser@7.26.2':
dependencies:
'@babel/types': 7.26.3
'@babel/parser@7.26.3':
dependencies:
'@babel/types': 7.26.3
@@ -3749,17 +3667,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/plugin-transform-typescript@7.26.3(@babel/core@7.26.0)':
dependencies:
'@babel/core': 7.26.0
'@babel/helper-annotate-as-pure': 7.25.9
'@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
'@babel/helper-plugin-utils': 7.25.9
'@babel/helper-skip-transparent-expression-wrappers': 7.25.9
'@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
transitivePeerDependencies:
- supports-color
'@babel/runtime@7.26.0':
dependencies:
regenerator-runtime: 0.14.1
@@ -3767,21 +3674,9 @@ snapshots:
'@babel/template@7.25.9':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/parser': 7.26.2
'@babel/parser': 7.26.3
'@babel/types': 7.26.3
'@babel/traverse@7.25.9':
dependencies:
'@babel/code-frame': 7.26.2
'@babel/generator': 7.26.2
'@babel/parser': 7.26.2
'@babel/template': 7.25.9
'@babel/types': 7.26.0
debug: 4.3.7
globals: 11.12.0
transitivePeerDependencies:
- supports-color
'@babel/traverse@7.26.4':
dependencies:
'@babel/code-frame': 7.26.2
@@ -3794,11 +3689,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@babel/types@7.26.0':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
'@babel/types@7.26.3':
dependencies:
'@babel/helper-string-parser': 7.25.9
@@ -3894,7 +3784,7 @@ snapshots:
'@eslint/config-array@0.19.0':
dependencies:
'@eslint/object-schema': 2.1.4
debug: 4.3.7
debug: 4.4.0
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -3904,7 +3794,7 @@ snapshots:
'@eslint/eslintrc@3.2.0':
dependencies:
ajv: 6.12.6
debug: 4.3.7
debug: 4.4.0
espree: 10.3.0
globals: 14.0.0
ignore: 5.3.2
@@ -3961,12 +3851,6 @@ snapshots:
'@humanwhocodes/retry@0.4.1': {}
'@jridgewell/gen-mapping@0.3.5':
dependencies:
'@jridgewell/set-array': 1.2.1
'@jridgewell/sourcemap-codec': 1.5.0
'@jridgewell/trace-mapping': 0.3.25
'@jridgewell/gen-mapping@0.3.8':
dependencies:
'@jridgewell/set-array': 1.2.1
@@ -4055,6 +3939,12 @@ snapshots:
'@types/react': 18.3.18
react: 18.3.1
'@mdx-js/react@3.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
'@types/mdx': 2.0.13
'@types/react': 19.0.2
react: 19.0.0
'@mdx-js/rollup@3.1.0(acorn@8.14.0)(rollup@4.25.0)':
dependencies:
'@mdx-js/mdx': 3.1.0(acorn@8.14.0)
@@ -4119,7 +4009,7 @@ snapshots:
dependencies:
'@rollup/pluginutils': 5.1.3(rollup@4.25.0)
estree-walker: 2.0.2
magic-string: 0.30.14
magic-string: 0.30.17
optionalDependencies:
rollup: 4.25.0
@@ -4324,15 +4214,15 @@ snapshots:
lodash: 4.17.21
redent: 3.0.0
'@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.5(@types/react@18.3.18))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
'@testing-library/react@16.1.0(@testing-library/dom@10.4.0)(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@babel/runtime': 7.26.0
'@testing-library/dom': 10.4.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
optionalDependencies:
'@types/react': 18.3.18
'@types/react-dom': 18.3.5(@types/react@18.3.18)
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
'@types/acorn@4.0.6':
dependencies:
@@ -4342,15 +4232,9 @@ snapshots:
'@types/aria-query@5.0.4': {}
'@types/babel-traverse@6.25.10':
dependencies:
'@types/babel-types': 7.0.16
'@types/babel-types@7.0.16': {}
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.26.2
'@babel/parser': 7.26.3
'@babel/types': 7.26.3
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
@@ -4362,7 +4246,7 @@ snapshots:
'@types/babel__template@7.4.4':
dependencies:
'@babel/parser': 7.26.2
'@babel/parser': 7.26.3
'@babel/types': 7.26.3
'@types/babel__traverse@7.20.6':
@@ -4399,10 +4283,6 @@ snapshots:
'@types/ms@0.7.34': {}
'@types/node@22.10.0':
dependencies:
undici-types: 6.20.0
'@types/node@22.10.3':
dependencies:
undici-types: 6.20.0
@@ -4413,11 +4293,19 @@ snapshots:
dependencies:
'@types/react': 18.3.18
'@types/react-dom@19.0.2(@types/react@19.0.2)':
dependencies:
'@types/react': 19.0.2
'@types/react@18.3.18':
dependencies:
'@types/prop-types': 15.7.14
csstype: 3.1.3
'@types/react@19.0.2':
dependencies:
csstype: 3.1.3
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
@@ -4506,13 +4394,6 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
'@vitejs/plugin-react-swc@3.7.2(vite@5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)))':
dependencies:
'@swc/core': 1.9.3
vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
transitivePeerDependencies:
- '@swc/helpers'
'@vitejs/plugin-react-swc@3.7.2(vite@5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)))':
dependencies:
'@swc/core': 1.9.3
@@ -4691,13 +4572,6 @@ snapshots:
es-abstract: 1.23.7
es-shim-unscopables: 1.0.2
array.prototype.flatmap@1.3.2:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
es-abstract: 1.23.7
es-shim-unscopables: 1.0.2
array.prototype.flatmap@1.3.3:
dependencies:
call-bind: 1.0.8
@@ -4916,10 +4790,6 @@ snapshots:
dependencies:
ms: 2.1.3
debug@4.3.7:
dependencies:
ms: 2.1.3
debug@4.4.0:
dependencies:
ms: 2.1.3
@@ -5142,7 +5012,7 @@ snapshots:
eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@9.15.0):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.3.7
debug: 4.4.0
enhanced-resolve: 5.17.1
eslint: 9.15.0
eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.15.0(eslint@9.15.0)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0)
@@ -5175,7 +5045,7 @@ snapshots:
array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5
array.prototype.flat: 1.3.2
array.prototype.flatmap: 1.3.2
array.prototype.flatmap: 1.3.3
debug: 3.2.7
doctrine: 2.1.0
eslint: 9.15.0
@@ -5187,7 +5057,7 @@ snapshots:
minimatch: 3.1.2
object.fromentries: 2.0.8
object.groupby: 1.0.3
object.values: 1.2.0
object.values: 1.2.1
semver: 6.3.1
string.prototype.trimend: 1.0.9
tsconfig-paths: 3.15.0
@@ -5250,7 +5120,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.5
debug: 4.3.7
debug: 4.4.0
escape-string-regexp: 4.0.0
eslint-scope: 8.2.0
eslint-visitor-keys: 4.2.0
@@ -5832,8 +5702,6 @@ snapshots:
- supports-color
- utf-8-validate
jsesc@3.0.2: {}
jsesc@3.1.0: {}
json-buffer@3.0.1: {}
@@ -5923,10 +5791,6 @@ snapshots:
lz-string@1.5.0: {}
magic-string@0.30.14:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
magic-string@0.30.17:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
@@ -6336,12 +6200,6 @@ snapshots:
dependencies:
isobject: 3.0.1
object.values@1.2.0:
dependencies:
call-bind: 1.0.8
define-properties: 1.2.1
es-object-atoms: 1.0.0
object.values@1.2.1:
dependencies:
call-bind: 1.0.8
@@ -6468,8 +6326,6 @@ snapshots:
prettier@3.4.1: {}
prettier@3.4.2: {}
pretty-format@27.5.1:
dependencies:
ansi-regex: 5.0.1
@@ -6496,6 +6352,11 @@ snapshots:
react: 18.3.1
scheduler: 0.23.2
react-dom@19.0.0(react@19.0.0):
dependencies:
react: 19.0.0
scheduler: 0.25.0
react-fast-compare@3.2.2: {}
react-helmet-async@2.0.5(react@18.3.1):
@@ -6511,6 +6372,12 @@ snapshots:
optionalDependencies:
react-dom: 18.3.1(react@18.3.1)
react-intersection-observer@9.13.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
dependencies:
react: 19.0.0
optionalDependencies:
react-dom: 19.0.0(react@19.0.0)
react-is@16.13.1: {}
react-is@17.0.2: {}
@@ -6561,6 +6428,8 @@ snapshots:
dependencies:
loose-envify: 1.4.0
react@19.0.0: {}
rechoir@0.8.0:
dependencies:
resolve: 1.22.8
@@ -6683,7 +6552,7 @@ snapshots:
rollup-plugin-preserve-directives@0.4.0(rollup@4.25.0):
dependencies:
'@rollup/pluginutils': 5.1.3(rollup@4.25.0)
magic-string: 0.30.14
magic-string: 0.30.17
rollup: 4.25.0
rollup@4.25.0:
@@ -6740,6 +6609,8 @@ snapshots:
dependencies:
loose-envify: 1.4.0
scheduler@0.25.0: {}
semver@6.3.1: {}
semver@7.5.4:
@@ -6976,12 +6847,12 @@ snapshots:
tslib@2.8.1: {}
tuono-fs-router-vite-plugin@0.16.9(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)):
tuono-fs-router-vite-plugin@0.16.9(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)):
dependencies:
'@babel/core': 7.26.0
'@babel/types': 7.26.0
'@babel/types': 7.26.3
prettier: 3.4.1
vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
vite: 5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49))
transitivePeerDependencies:
- '@types/node'
- less
@@ -6993,11 +6864,11 @@ snapshots:
- supports-color
- terser
tuono-lazy-fn-vite-plugin@0.16.9(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)):
tuono-lazy-fn-vite-plugin@0.16.9(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)):
dependencies:
'@babel/core': 7.26.0
'@babel/types': 7.26.0
vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
'@babel/types': 7.26.3
vite: 5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49))
transitivePeerDependencies:
- '@types/node'
- less
@@ -7019,26 +6890,26 @@ snapshots:
tuono@0.16.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.25.0)(sugarss@4.0.1(postcss@8.4.49)):
dependencies:
'@babel/core': 7.26.0
'@babel/generator': 7.26.2
'@babel/generator': 7.26.3
'@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
'@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0)
'@babel/template': 7.25.9
'@babel/traverse': 7.25.9
'@babel/types': 7.26.0
'@babel/traverse': 7.26.4
'@babel/types': 7.26.3
'@rollup/plugin-inject': 5.0.5(rollup@4.25.0)
'@types/babel__core': 7.20.5
'@types/node': 22.10.0
'@vitejs/plugin-react-swc': 3.7.2(vite@5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)))
'@types/node': 22.10.3
'@vitejs/plugin-react-swc': 3.7.2(vite@5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)))
fast-text-encoding: 1.0.6
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
react-helmet-async: 2.0.5(react@18.3.1)
tuono-fs-router-vite-plugin: 0.16.9(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
tuono-lazy-fn-vite-plugin: 0.16.9(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
tuono-fs-router-vite-plugin: 0.16.9(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49))
tuono-lazy-fn-vite-plugin: 0.16.9(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49))
tuono-router: 0.16.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
vite: 5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49))
vite: 5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49))
web-streams-polyfill: 4.0.0
transitivePeerDependencies:
- '@swc/helpers'
@@ -7270,7 +7141,7 @@ snapshots:
'@vue/language-core': 1.8.27(typescript@5.7.2)
debug: 4.4.0
kolorist: 1.8.0
magic-string: 0.30.14
magic-string: 0.30.17
typescript: 5.7.2
vue-tsc: 1.8.27(typescript@5.7.2)
optionalDependencies:
@@ -7295,16 +7166,6 @@ snapshots:
- supports-color
- typescript
vite@5.4.11(@types/node@22.10.0)(sugarss@4.0.1(postcss@8.4.49)):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
rollup: 4.25.0
optionalDependencies:
'@types/node': 22.10.0
fsevents: 2.3.3
sugarss: 4.0.1(postcss@8.4.49)
vite@5.4.11(@types/node@22.10.3)(sugarss@4.0.1(postcss@8.4.49)):
dependencies:
esbuild: 0.21.5