diff --git a/.changeset/spotty-cooks-march.md b/.changeset/spotty-cooks-march.md new file mode 100644 index 00000000000..efe67c9914d --- /dev/null +++ b/.changeset/spotty-cooks-march.md @@ -0,0 +1,70 @@ +--- +"@clerk/tanstack-react-start": minor +--- + +Added support for [TanStack Start v1 RC](https://tanstack.com/blog/announcing-tanstack-start-v1)! Includes a new `clerkMiddleware()` global middleware replacing the custom server handler. + +Usage: + +1. Create a `src/start.ts` file and add `clerkMiddleware()` to the list of request middlewares: + +```ts +// src/start.ts +import { clerkMiddleware } from '@clerk/tanstack-react-start/server' +import { createStart } from '@tanstack/react-start' + +export const startInstance = createStart(() => { + return { + requestMiddleware: [clerkMiddleware()], + } +}) +``` + +2. Add `` to your root route + +```tsx +// src/routes/__root.tsx +import { ClerkProvider } from '@clerk/tanstack-react-start' + +export const Route = createRootRoute({...}) + +function RootDocument({ children }: { children: React.ReactNode }) { + return ( + + + + + + + {children} + + + + + ) +} +``` + +The `getAuth()` helper can now be called within server routes and functions, without passing a Request object: + +```ts +const authStateFn = createServerFn().handler(async () => { + const { userId } = await getAuth() + + if (!userId) { + throw redirect({ + to: '/sign-in', + }) + } + + return { userId } +}) + +export const Route = createFileRoute('/')({ + component: Home, + beforeLoad: async () => await authStateFn(), + loader: async ({ context }) => { + return { userId: context.userId } + }, +}) +``` \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b7fec1f7de..5b14d83bd02 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -292,7 +292,7 @@ jobs: 'astro', 'expo-web', 'tanstack-react-start', - 'tanstack-react-router', + # 'tanstack-react-router', 'vue', 'nuxt', 'react-router', diff --git a/integration/templates/tanstack-react-start/package.json b/integration/templates/tanstack-react-start/package.json index cae4bc234ee..45f452ea75a 100644 --- a/integration/templates/tanstack-react-start/package.json +++ b/integration/templates/tanstack-react-start/package.json @@ -8,9 +8,9 @@ "start": "vite start --port=$PORT" }, "dependencies": { - "@tanstack/react-router": "1.131.27", - "@tanstack/react-router-devtools": "1.131.27", - "@tanstack/react-start": "1.131.27", + "@tanstack/react-router": "1.132.31", + "@tanstack/react-router-devtools": "1.132.31", + "@tanstack/react-start": "1.132.31", "react": "18.3.1", "react-dom": "18.3.1", "tailwind-merge": "^2.5.4" @@ -20,9 +20,10 @@ "@types/node": "^22.5.4", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", + "@vitejs/plugin-react": "^4.3.4", "tailwindcss": "^4.0.8", "typescript": "^5.7.2", - "vite": "^6.0.11", + "vite": "^7.1.7", "vite-tsconfig-paths": "^5.1.4" } } diff --git a/integration/templates/tanstack-react-start/src/router.tsx b/integration/templates/tanstack-react-start/src/router.tsx index 5664a8f649b..998658822da 100644 --- a/integration/templates/tanstack-react-start/src/router.tsx +++ b/integration/templates/tanstack-react-start/src/router.tsx @@ -1,8 +1,8 @@ -import { createRouter as createTanStackRouter } from '@tanstack/react-router'; +import { createRouter } from '@tanstack/react-router'; import { routeTree } from './routeTree.gen'; -export function createRouter() { - const router = createTanStackRouter({ +export function getRouter() { + const router = createRouter({ routeTree, defaultPreload: 'intent', defaultErrorComponent: err =>

{err.error.stack}

, @@ -15,6 +15,6 @@ export function createRouter() { declare module '@tanstack/react-router' { interface Register { - router: ReturnType; + router: ReturnType; } } diff --git a/integration/templates/tanstack-react-start/src/routes/user.tsx b/integration/templates/tanstack-react-start/src/routes/user.tsx index 4fd5f6ccf2c..51ff8e51ec3 100644 --- a/integration/templates/tanstack-react-start/src/routes/user.tsx +++ b/integration/templates/tanstack-react-start/src/routes/user.tsx @@ -1,13 +1,9 @@ import { createFileRoute, redirect } from '@tanstack/react-router'; import { createServerFn } from '@tanstack/react-start'; import { getAuth } from '@clerk/tanstack-react-start/server'; -import { getWebRequest } from '@tanstack/react-start/server'; const fetchClerkAuth = createServerFn({ method: 'GET' }).handler(async () => { - const request = getWebRequest(); - if (!request) throw new Error('No request found'); - - const { userId } = await getAuth(request); + const { userId } = await getAuth(); return { userId, diff --git a/integration/templates/tanstack-react-start/src/server.tsx b/integration/templates/tanstack-react-start/src/server.tsx deleted file mode 100644 index 1f4daa692e3..00000000000 --- a/integration/templates/tanstack-react-start/src/server.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { createStartHandler, defineHandlerCallback, defaultStreamHandler } from '@tanstack/react-start/server'; -import { createRouter } from './router'; -import { createClerkHandler } from '@clerk/tanstack-react-start/server'; - -const handlerFactory = createClerkHandler( - createStartHandler({ - createRouter, - }), -); - -export default defineHandlerCallback(async event => { - const startHandler = await handlerFactory(defaultStreamHandler); - return startHandler(event); -}); diff --git a/integration/templates/tanstack-react-start/src/start.ts b/integration/templates/tanstack-react-start/src/start.ts new file mode 100644 index 00000000000..6f0d68a73f1 --- /dev/null +++ b/integration/templates/tanstack-react-start/src/start.ts @@ -0,0 +1,8 @@ +import { clerkMiddleware } from '@clerk/tanstack-react-start/server'; +import { createStart } from '@tanstack/react-start'; + +export const startInstance = createStart(() => { + return { + requestMiddleware: [clerkMiddleware()], + }; +}); diff --git a/integration/templates/tanstack-react-start/vite.config.ts b/integration/templates/tanstack-react-start/vite.config.ts index 09afa5c1d2f..bce0dc21dd9 100644 --- a/integration/templates/tanstack-react-start/vite.config.ts +++ b/integration/templates/tanstack-react-start/vite.config.ts @@ -2,6 +2,7 @@ import { tanstackStart } from '@tanstack/react-start/plugin/vite'; import { defineConfig } from 'vite'; import tsConfigPaths from 'vite-tsconfig-paths'; import tailwindcss from '@tailwindcss/vite'; +import viteReact from '@vitejs/plugin-react'; export default defineConfig({ plugins: [ @@ -10,5 +11,6 @@ export default defineConfig({ }), tanstackStart(), tailwindcss(), + viteReact(), ], }); diff --git a/packages/tanstack-react-start/package.json b/packages/tanstack-react-start/package.json index 233df0199cf..2bd4fffc3d7 100644 --- a/packages/tanstack-react-start/package.json +++ b/packages/tanstack-react-start/package.json @@ -76,13 +76,13 @@ "tslib": "catalog:repo" }, "devDependencies": { - "@tanstack/react-router": "1.131.49", - "@tanstack/react-start": "1.131.49", + "@tanstack/react-router": "1.132.0", + "@tanstack/react-start": "1.132.0", "esbuild-plugin-file-path-extensions": "^2.1.4" }, "peerDependencies": { - "@tanstack/react-router": "^1.131.0 <1.132.0", - "@tanstack/react-start": "^1.131.0 <1.132.0", + "@tanstack/react-router": "^1.132.0", + "@tanstack/react-start": "^1.132.0", "react": "catalog:peer-react", "react-dom": "catalog:peer-react" }, diff --git a/packages/tanstack-react-start/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/tanstack-react-start/src/__tests__/__snapshots__/exports.test.ts.snap index f49dd011405..7cf8f38656e 100644 --- a/packages/tanstack-react-start/src/__tests__/__snapshots__/exports.test.ts.snap +++ b/packages/tanstack-react-start/src/__tests__/__snapshots__/exports.test.ts.snap @@ -69,7 +69,7 @@ exports[`root public exports > should not change unexpectedly 1`] = ` exports[`server public exports > should not change unexpectedly 1`] = ` [ "clerkClient", - "createClerkHandler", + "clerkMiddleware", "getAuth", ] `; diff --git a/packages/tanstack-react-start/src/client/ClerkProvider.tsx b/packages/tanstack-react-start/src/client/ClerkProvider.tsx index 7e420ff81af..e93fc7366c5 100644 --- a/packages/tanstack-react-start/src/client/ClerkProvider.tsx +++ b/packages/tanstack-react-start/src/client/ClerkProvider.tsx @@ -1,5 +1,6 @@ import { ClerkProvider as ReactClerkProvider } from '@clerk/clerk-react'; -import { ScriptOnce, useRouteContext } from '@tanstack/react-router'; +import { ScriptOnce } from '@tanstack/react-router'; +import { getGlobalStartContext } from '@tanstack/react-start'; import { useEffect } from 'react'; import { isClient } from '../utils'; @@ -19,15 +20,14 @@ const awaitableNavigateRef: { current: ReturnType | export function ClerkProvider({ children, ...providerProps }: TanstackStartClerkProviderProps): JSX.Element { const awaitableNavigate = useAwaitableNavigate(); - const routerContext = useRouteContext({ - strict: false, - }); + // @ts-expect-error: Untyped internal Clerk initial state + const clerkInitialState = getGlobalStartContext()?.clerkInitialState ?? {}; useEffect(() => { awaitableNavigateRef.current = awaitableNavigate; }, [awaitableNavigate]); - const clerkInitState = isClient() ? (window as any).__clerk_init_state : routerContext?.clerkInitialState; + const clerkInitState = isClient() ? (window as any).__clerk_init_state : clerkInitialState; const { clerkSsrState, ...restInitState } = pickFromClerkInitState(clerkInitState?.__internal_clerk_state); @@ -38,7 +38,7 @@ export function ClerkProvider({ children, ...providerProps }: TanstackStartClerk return ( <> - {`window.__clerk_init_state = ${JSON.stringify(routerContext?.clerkInitialState)};`} + {`window.__clerk_init_state = ${JSON.stringify(clerkInitialState)};`} { - const { audience, authorizedParties } = opts; - - const { apiUrl, secretKey, jwtKey, proxyUrl, isSatellite, domain, publishableKey, acceptsToken, machineSecretKey } = - opts; - const { signInUrl, signUpUrl, afterSignInUrl, afterSignUpUrl } = opts; - - const requestState = await createClerkClient({ - apiUrl, - secretKey, - machineSecretKey, - jwtKey, - proxyUrl, - isSatellite, - domain, - publishableKey, - userAgent: `${PACKAGE_NAME}@${PACKAGE_VERSION}`, - }).authenticateRequest(patchRequest(request), { - audience, - authorizedParties, - signInUrl, - signUpUrl, - afterSignInUrl, - afterSignUpUrl, - acceptsToken, - }); - - return requestState; -} diff --git a/packages/tanstack-react-start/src/server/clerkMiddleware.ts b/packages/tanstack-react-start/src/server/clerkMiddleware.ts new file mode 100644 index 00000000000..ecd6d140200 --- /dev/null +++ b/packages/tanstack-react-start/src/server/clerkMiddleware.ts @@ -0,0 +1,54 @@ +import type { RequestState } from '@clerk/backend/internal'; +import { AuthStatus, constants } from '@clerk/backend/internal'; +import { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler'; +import type { PendingSessionOptions } from '@clerk/types'; +import type { AnyRequestMiddleware } from '@tanstack/react-start'; +import { createMiddleware, json } from '@tanstack/react-start'; + +import { clerkClient } from './clerkClient'; +import { loadOptions } from './loadOptions'; +import type { ClerkMiddlewareOptions } from './types'; +import { getResponseClerkState } from './utils'; + +export const clerkMiddleware = (options?: ClerkMiddlewareOptions): AnyRequestMiddleware => { + return createMiddleware().server(async args => { + const loadedOptions = loadOptions(args.request, options); + const requestState = await clerkClient().authenticateRequest(args.request, { + ...loadedOptions, + acceptsToken: 'any', + }); + + const locationHeader = requestState.headers.get(constants.Headers.Location); + if (locationHeader) { + handleNetlifyCacheInDevInstance({ + locationHeader, + requestStateHeaders: requestState.headers, + publishableKey: requestState.publishableKey, + }); + // Trigger a handshake redirect + // eslint-disable-next-line @typescript-eslint/only-throw-error + throw json(null, { status: 307, headers: requestState.headers }); + } + + if (requestState.status === AuthStatus.Handshake) { + throw new Error('Clerk: handshake status without redirect'); + } + + const clerkInitialState = getResponseClerkState(requestState as RequestState, loadedOptions); + + const result = await args.next({ + context: { + clerkInitialState, + auth: (opts?: PendingSessionOptions) => requestState.toAuth(opts), + }, + }); + + if (requestState.headers) { + requestState.headers.forEach((value, key) => { + result.response.headers.append(key, value); + }); + } + + return result; + }); +}; diff --git a/packages/tanstack-react-start/src/server/errors.ts b/packages/tanstack-react-start/src/server/errors.ts deleted file mode 100644 index 4843add9e8a..00000000000 --- a/packages/tanstack-react-start/src/server/errors.ts +++ /dev/null @@ -1,11 +0,0 @@ -export class ClerkHandshakeRedirect extends Error { - constructor( - public status: number, - public headers: Headers, - ) { - super('Clerk handshake redirect required'); - this.name = 'ClerkHandshakeRedirect'; - this.status = status; - this.headers = headers; - } -} diff --git a/packages/tanstack-react-start/src/server/getAuth.ts b/packages/tanstack-react-start/src/server/getAuth.ts index 9001e588fd1..e8074cf35c6 100644 --- a/packages/tanstack-react-start/src/server/getAuth.ts +++ b/packages/tanstack-react-start/src/server/getAuth.ts @@ -1,23 +1,21 @@ -import type { AuthOptions, GetAuthFn } from '@clerk/backend/internal'; +import type { SessionAuthObject } from '@clerk/backend'; +import type { AuthOptions, GetAuthFnNoRequest } from '@clerk/backend/internal'; import { getAuthObjectForAcceptedToken } from '@clerk/backend/internal'; -import { getContext } from '@tanstack/react-start/server'; +import { getGlobalStartContext } from '@tanstack/react-start'; import { errorThrower } from '../utils'; -import { clerkHandlerNotConfigured, noFetchFnCtxPassedInGetAuth } from '../utils/errors'; +import { clerkMiddlewareNotConfigured } from '../utils/errors'; -export const getAuth: GetAuthFn = (async (request: Request, opts?: AuthOptions) => { - if (!request) { - return errorThrower.throw(noFetchFnCtxPassedInGetAuth); - } - - const authObjectFn = getContext('auth'); +export const getAuth: GetAuthFnNoRequest = (async (opts?: AuthOptions) => { + // @ts-expect-error: Untyped internal Clerk start context + const authObjectFn = getGlobalStartContext().auth; if (!authObjectFn) { - return errorThrower.throw(clerkHandlerNotConfigured); + return errorThrower.throw(clerkMiddlewareNotConfigured); } - // We're keeping it a promise for now to minimize breaking changes + // We're keeping it a promise for now for future changes const authObject = await Promise.resolve(authObjectFn({ treatPendingAsSignedOut: opts?.treatPendingAsSignedOut })); return getAuthObjectForAcceptedToken({ authObject, acceptsToken: opts?.acceptsToken }); -}) as GetAuthFn; +}) as GetAuthFnNoRequest; diff --git a/packages/tanstack-react-start/src/server/index.ts b/packages/tanstack-react-start/src/server/index.ts index 4a56c1e5c15..9fc8b681d2d 100644 --- a/packages/tanstack-react-start/src/server/index.ts +++ b/packages/tanstack-react-start/src/server/index.ts @@ -1,7 +1,6 @@ -export * from './middlewareHandler'; - export * from './getAuth'; export { clerkClient } from './clerkClient'; +export { clerkMiddleware } from './clerkMiddleware'; /** * Re-export resource types from @clerk/backend diff --git a/packages/tanstack-react-start/src/server/middlewareHandler.ts b/packages/tanstack-react-start/src/server/middlewareHandler.ts deleted file mode 100644 index 42adec5b26d..00000000000 --- a/packages/tanstack-react-start/src/server/middlewareHandler.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { AuthStatus, constants } from '@clerk/backend/internal'; -import { handleNetlifyCacheInDevInstance } from '@clerk/shared/netlifyCacheHandler'; -import type { PendingSessionOptions } from '@clerk/types'; -import type { AnyRouter } from '@tanstack/react-router'; -import { - type CustomizeStartHandler, - getEvent, - getWebRequest, - type HandlerCallback, - type RequestHandler, -} from '@tanstack/react-start/server'; - -import { errorThrower } from '../utils'; -import { authenticateRequest } from './authenticateRequest'; -import { loadOptions } from './loadOptions'; -import type { LoaderOptions } from './types'; -import { getResponseClerkState } from './utils'; - -export function createClerkHandler( - eventHandler: CustomizeStartHandler, - clerkOptions: LoaderOptions = {}, -) { - return async (cb: HandlerCallback): Promise => { - const request = getWebRequest(); - const event = getEvent(); - const loadedOptions = loadOptions(request, clerkOptions); - - const requestState = await authenticateRequest(request, { - ...loadedOptions, - acceptsToken: 'any', - }); - - // Set auth object here so it is available immediately in server functions via getAuth() - event.context.auth = (options?: PendingSessionOptions) => requestState.toAuth(options); - - return eventHandler(async ({ request, router, responseHeaders }) => { - const locationHeader = requestState.headers.get(constants.Headers.Location); - if (locationHeader) { - handleNetlifyCacheInDevInstance({ - locationHeader, - requestStateHeaders: requestState.headers, - publishableKey: requestState.publishableKey, - }); - - return new Response(null, { - status: 307, - headers: requestState.headers, - }); - } - - if (requestState.status === AuthStatus.Handshake) { - // eslint-disable-next-line @typescript-eslint/only-throw-error - throw errorThrower.throw('Clerk: unexpected handshake without redirect'); - } - - const { clerkInitialState, headers } = getResponseClerkState(requestState, loadedOptions); - - // Merging the TanStack router context with the Clerk context and loading the router - router.update({ - context: { ...router.options.context, clerkInitialState }, - }); - - headers.forEach((value, key) => { - responseHeaders.set(key, value); - }); - - await router.load(); - - return cb({ request, router, responseHeaders }); - }); - }; -} diff --git a/packages/tanstack-react-start/src/server/types.ts b/packages/tanstack-react-start/src/server/types.ts index b289b865e9a..4a3d43c2e35 100644 --- a/packages/tanstack-react-start/src/server/types.ts +++ b/packages/tanstack-react-start/src/server/types.ts @@ -8,7 +8,7 @@ import type { SignUpForceRedirectUrl, } from '@clerk/types'; -export type LoaderOptions = { +export type ClerkMiddlewareOptions = { publishableKey?: string; jwtKey?: string; secretKey?: string; @@ -23,6 +23,8 @@ export type LoaderOptions = { SignUpFallbackRedirectUrl & LegacyRedirectProps; +export type LoaderOptions = ClerkMiddlewareOptions; + export type AdditionalStateOptions = SignInFallbackRedirectUrl & SignUpFallbackRedirectUrl & SignInForceRedirectUrl & diff --git a/packages/tanstack-react-start/src/server/utils/index.ts b/packages/tanstack-react-start/src/server/utils/index.ts index f7657e12eb5..e5c5d3f6786 100644 --- a/packages/tanstack-react-start/src/server/utils/index.ts +++ b/packages/tanstack-react-start/src/server/utils/index.ts @@ -48,10 +48,7 @@ export function getResponseClerkState(requestState: RequestState, additionalStat additionalStateOptions.signUpFallbackRedirectUrl || getEnvVariable('CLERK_SIGN_UP_FALLBACK_REDIRECT_URL') || '', }); - return { - clerkInitialState, - headers: requestState.headers, - }; + return clerkInitialState; } /** diff --git a/packages/tanstack-react-start/src/utils/env.ts b/packages/tanstack-react-start/src/utils/env.ts index d7161c3f6fb..51a00406b2d 100644 --- a/packages/tanstack-react-start/src/utils/env.ts +++ b/packages/tanstack-react-start/src/utils/env.ts @@ -1,10 +1,9 @@ import { getEnvVariable } from '@clerk/shared/getEnvVariable'; import { isTruthy } from '@clerk/shared/underscore'; -import type { H3EventContext } from '@tanstack/react-start/server'; -export const getPublicEnvVariables = (context?: H3EventContext) => { +export const getPublicEnvVariables = () => { const getValue = (name: string): string => { - return getEnvVariable(`VITE_${name}`, context) || getEnvVariable(name, context); + return getEnvVariable(`VITE_${name}`) || getEnvVariable(name); }; return { diff --git a/packages/tanstack-react-start/src/utils/errors.ts b/packages/tanstack-react-start/src/utils/errors.ts index 30f2da1f814..c813fb23e09 100644 --- a/packages/tanstack-react-start/src/utils/errors.ts +++ b/packages/tanstack-react-start/src/utils/errors.ts @@ -18,10 +18,7 @@ export const noFetchFnCtxPassedInGetAuth = createErrorMessage(` }); `); -export const clerkHandlerNotConfigured = createErrorMessage(` -It looks like you're trying to use Clerk without configuring the Clerk handler. +export const clerkMiddlewareNotConfigured = createErrorMessage(` +It looks like you're trying to use Clerk without configuring the middleware. -To fix this, make sure you have the \`createClerkHandler()\` configured in you custom server handler file (example: src/server.ts). - -For more info, check out the docs: https://clerk.com/docs/references/tanstack-react-start/create-clerk-handler, - `); +To fix this, make sure you have the \`clerkMiddleware()\` configured in your \`createStart()\` function in your \`src/start.ts\` file.`); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9278a72b8f4..f323ce9a4af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -988,11 +988,11 @@ importers: version: 2.8.1 devDependencies: '@tanstack/react-router': - specifier: 1.131.49 - version: 1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 1.132.0 + version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-start': - specifier: 1.131.49 - version: 1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@vitejs/plugin-react@4.5.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17))) + specifier: 1.132.0 + version: 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17))) esbuild-plugin-file-path-extensions: specifier: ^2.1.4 version: 2.1.4 @@ -4694,6 +4694,9 @@ packages: '@stablelib/base64@1.0.1': resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@statelyai/inspect@0.4.0': resolution: {integrity: sha512-VxQldRlKYcu6rzLY83RSXVwMYexkH6hNx85B89YWYyXYWtNGaWHFCwV7a/Kz8FFPeUz8EKVAnyMOg2kNpn07wQ==} peerDependencies: @@ -4873,52 +4876,44 @@ packages: '@swc/types@0.1.24': resolution: {integrity: sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==} - '@tanstack/directive-functions-plugin@1.131.2': - resolution: {integrity: sha512-5Pz6aVPS0BW+0bLvMzWsoajfjI6ZeWqkbVBaQfIbSTm4DOBO05JuQ/pb7W7m3GbCb5TK1a/SKDhuTX6Ag5I7UQ==} + '@tanstack/directive-functions-plugin@1.132.0': + resolution: {integrity: sha512-5+K3msIpSYkiDE0PTIAT2HzZRps/M2uQsDEA5HApXxOhIAWykQ/yyO1umgkMwYpgJqnT96AVHb0E559Dfvhj0A==} engines: {node: '>=12'} peerDependencies: - vite: '>=6.0.0' + vite: '>=6.0.0 || >=7.0.0' - '@tanstack/history@1.131.2': - resolution: {integrity: sha512-cs1WKawpXIe+vSTeiZUuSBy8JFjEuDgdMKZFRLKwQysKo8y2q6Q1HvS74Yw+m5IhOW1nTZooa6rlgdfXcgFAaw==} + '@tanstack/history@1.132.0': + resolution: {integrity: sha512-GG2R9I6QSlbNR9fEuX2sQCigY6K28w51h2634TWmkaHXlzQw+rWuIWr4nAGM9doA+kWRi1LFSFMvAiG3cOqjXQ==} engines: {node: '>=12'} - '@tanstack/react-router@1.131.49': - resolution: {integrity: sha512-WHgWJ053W8VU8lUYh8abSHVPeQdpaCpfaUAbV+3uYXbip2G+qlmI/Gsbh/BBV3bYtIi6l3t5dqx3ffCXNTzB5Q==} + '@tanstack/react-router@1.132.0': + resolution: {integrity: sha512-tGNmQrFc4zWQZvjqYnC8ib84H/9QokRl73hr0P2XlxCY2KAgPTk2QjdzW03LqXgQZRXg7++vKznJt4LS9/M3iA==} engines: {node: '>=12'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-start-client@1.131.49': - resolution: {integrity: sha512-Fv/UsoFZ/F34z1j0A7tpVG4Sl1ATSpP5dYoEjiwyvfGcTrdrEQuFCAnIr+mqHRdeH/LelfIiYYhvkiT+NFrwzw==} - engines: {node: '>=12'} + '@tanstack/react-start-client@1.132.0': + resolution: {integrity: sha512-j76SOnplxlk4OrQR0hZHD/+xceUw75PUUBEyCWTgz9TK92o9WuN+zrSJLV0ZCby3Lgj19wrbbtohNEu7HUVMXQ==} + engines: {node: '>=22.12.0'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-start-plugin@1.131.49': - resolution: {integrity: sha512-4vs/O90ln7TRVGOCK34rRUCpf1J2wHyfBLCyuSg48+SvnyIln2ggW6xlDrTf3YTut3gR1qON9+21BPqvlEa2LQ==} - engines: {node: '>=12'} - peerDependencies: - '@vitejs/plugin-react': '>=4.3.4' - vite: '>=6.0.0' - - '@tanstack/react-start-server@1.131.49': - resolution: {integrity: sha512-nZNWFjqaNzg+garioVg4ZrihglDlUiDHbr5lRz3VqmSc+uqAsw0Ur51knAB3cLS+dRposkTMLLQfyLMiS5En2w==} - engines: {node: '>=12'} + '@tanstack/react-start-server@1.132.0': + resolution: {integrity: sha512-kuucNaq3ik1EYQgn3eSmSgMCR1DXWPs6zIK7Q2mmGtV65BHdWe1AD96VSYmXt3cDycLtJM5iB9uem5sT1Mqfrg==} + engines: {node: '>=22.12.0'} peerDependencies: react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - '@tanstack/react-start@1.131.49': - resolution: {integrity: sha512-huDwMHSVu0su41eJjyws104TI03JhauaQXp/iuF/xW99DvugcfqY+X+NEBJf2BLlceTwZIhLzEx/2y8erCdUnQ==} - engines: {node: '>=12'} + '@tanstack/react-start@1.132.0': + resolution: {integrity: sha512-DqafNGJq2Yerk8KwUyGdvSayfrHsR92M1V89RZFYsVkfCvMBNBrU+Pa37b76jFDY8uYXZDN3ZTX0vPf+mIdhkw==} + engines: {node: '>=22.12.0'} peerDependencies: - '@vitejs/plugin-react': '>=4.3.4' react: '>=18.0.0 || >=19.0.0' react-dom: '>=18.0.0 || >=19.0.0' - vite: '>=6.0.0' + vite: '>=7.0.0' '@tanstack/react-store@0.7.0': resolution: {integrity: sha512-S/Rq17HaGOk+tQHV/yrePMnG1xbsKZIl/VsNWnNXt4XW+tTY8dTlvpJH2ZQ3GRALsusG5K6Q3unAGJ2pd9W/Ng==} @@ -4926,22 +4921,22 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@tanstack/router-core@1.131.48': - resolution: {integrity: sha512-Zw024eJECTLn57bR8oncR4YUTvQ8P41pDnVEXevWPuR6wdKRsIUmhfJowzgf4ppF9Lgl5DUWEhOcj4Awr4tTOQ==} + '@tanstack/router-core@1.132.0': + resolution: {integrity: sha512-Iy33xln3oICuifgs4ltukWQLkd2F8ysUxalBFYZ8rs7N8EUfL2xIKnv4kEyffGDMwAxnNzSq/jS7XKy00KmC8Q==} engines: {node: '>=12'} - '@tanstack/router-generator@1.131.48': - resolution: {integrity: sha512-spLqLJ1pD6y8wTxdKSRUS7fMINbuqsTEk1Ot0wxdrD1lKwJT8F7yKovSfl+h2WcifFN84B1gc5F3ZRmcp7fTeA==} + '@tanstack/router-generator@1.132.0': + resolution: {integrity: sha512-3N1rHNzxLzvFXO9iLguz/J4GTr1I6uCPkr5R13kP15jGCZ/AQIDeZjT8jQPZA9gAUAl9+yOyUIRXeL09a6RVVg==} engines: {node: '>=12'} - '@tanstack/router-plugin@1.131.49': - resolution: {integrity: sha512-npL9wqKGMAqaTPqZyZIp1k+omo5Imwvlg/gqQdnphZYIhCJGoxe8CBGQT2zrVnRtL5D7BD9vvpRh2moEDaJF8A==} + '@tanstack/router-plugin@1.132.0': + resolution: {integrity: sha512-ycAhaxf871tmAfmDOxzXOMu9yXM/4PVDOi2/IrcHdqZx3Lgh0l3tBVVdz5P9LY+jxy2spZW1E8GSKbMCNcGdGA==} engines: {node: '>=12'} peerDependencies: '@rsbuild/core': '>=1.0.2' - '@tanstack/react-router': ^1.131.49 - vite: '>=5.0.0 || >=6.0.0' - vite-plugin-solid: ^2.11.2 + '@tanstack/react-router': ^1.132.0 + vite: '>=5.0.0 || >=6.0.0 || >=7.0.0' + vite-plugin-solid: ^2.11.8 webpack: '>=5.92.0' peerDependenciesMeta: '@rsbuild/core': @@ -4955,49 +4950,37 @@ packages: webpack: optional: true - '@tanstack/router-utils@1.131.2': - resolution: {integrity: sha512-sr3x0d2sx9YIJoVth0QnfEcAcl+39sQYaNQxThtHmRpyeFYNyM2TTH+Ud3TNEnI3bbzmLYEUD+7YqB987GzhDA==} + '@tanstack/router-utils@1.132.0': + resolution: {integrity: sha512-WDnvAi9kO20joLDzlsTvfgXNv+FgQ4G98xAD8r4jKWoTdTTG05DU2sRYimtbdq4Q7E3uVdvyvPdhRy45wan7bw==} engines: {node: '>=12'} - '@tanstack/server-functions-plugin@1.131.2': - resolution: {integrity: sha512-hWsaSgEZAVyzHg8+IcJWCEtfI9ZSlNELErfLiGHG9XCHEXMegFWsrESsKHlASzJqef9RsuOLDl+1IMPIskwdDw==} + '@tanstack/server-functions-plugin@1.132.0': + resolution: {integrity: sha512-0a5NVOfiWWdkHI+ZO63tdUF4n8Qksts76pxYd+PUf0+fx6ENsOjeAF9NJS8RAYfNnjtB/aiyAbElvOxcL756Hw==} engines: {node: '>=12'} - '@tanstack/start-client-core@1.131.48': - resolution: {integrity: sha512-lPnDGdLdRrKTELRkaxNXUjv5nhbf5zudq0aq9GzrB1ly6byIdu0YH0EmRo8xcb7wBnlVNa+woN2BeDcfF+/Q0w==} - engines: {node: '>=12'} + '@tanstack/start-client-core@1.132.0': + resolution: {integrity: sha512-7hhH6eLC2He2BRRobmnk/MRINueBgMT1LiesA1kuEWSHkklilOe77r53+3VPIuRwd94wYdxq+5R+H31l0HgPcw==} + engines: {node: '>=22.12.0'} - '@tanstack/start-plugin-core@1.131.49': - resolution: {integrity: sha512-Xe5+PSNj+dTGl86mkwb1Dh/d8kr0kjrzBQvVMfb0KxfVW09TtDeLme6L/JrU98+zpvOCnsIYFoCPYF040XRjHw==} - engines: {node: '>=12'} + '@tanstack/start-plugin-core@1.132.0': + resolution: {integrity: sha512-ZnbTDzbTo7aYt7/id1IaPkCcISy3gz/q9C3qbjgb2JYGzZHOwwvA4OzRS7PfcxAVzu/bqE6QHuuG096ai11DOw==} + engines: {node: '>=22.12.0'} peerDependencies: - vite: '>=6.0.0' + vite: '>=7.0.0' - '@tanstack/start-server-core@1.131.48': - resolution: {integrity: sha512-kWvvjRGprW8QWodOjVQchVqOEVjNl6ZFwNMp/UdbVuUNry5lDwEJvS859EI54YQYm1ijtzyLVekbvz6sdNt1LA==} - engines: {node: '>=12'} + '@tanstack/start-server-core@1.132.0': + resolution: {integrity: sha512-0WJtlCxh1Eo5k77StWfMDc19TxMH7ojdaiRc22a+c32OezYXRt5GAV7PmzHq8bGRVnGy4pudAMKX2nS6uNRgzQ==} + engines: {node: '>=22.12.0'} - '@tanstack/start-server-functions-client@1.131.48': - resolution: {integrity: sha512-WeR537FatdDX3j3CHNvWWxjkfGBuf9QVCjfq34M6pMDOT7kux+AOAkRDXUeQkfT44UhgYygH5BEPd8W5ecCb7w==} - engines: {node: '>=12'} - - '@tanstack/start-server-functions-fetcher@1.131.48': - resolution: {integrity: sha512-mmguzV+Icd8tEcZ9IazaIzqt2BGKwvsvys8DDpMwzoltSzTCnOKiB6GyeGqIz6qMb+L7Lk7d62MhMo8a1BIiuQ==} - engines: {node: '>=12'} - - '@tanstack/start-server-functions-server@1.131.2': - resolution: {integrity: sha512-u67d6XspczlC/dYki/Id28oWsTjkZMJhDqO4E23U3rHs8eYgxvMBHKqdeqWgOyC+QWT9k6ze1pJmbv+rmc3wOQ==} - engines: {node: '>=12'} - - '@tanstack/start-storage-context@1.131.48': - resolution: {integrity: sha512-bvI0KejHxzGFWHRH3fZ/jNdGVJuTstlzk/RIC8c0qiBk7Hf7DP72s1rA3hNLmOYlM4qloQK/i+HuFrfu8cHoRA==} - engines: {node: '>=12'} + '@tanstack/start-storage-context@1.132.0': + resolution: {integrity: sha512-RGzyNVqSe3cJ+ajjKOQ62elr1jR8quBX6lniBElDC2P66MMvESSwi5Lr+tvSuq7DsVLRWJKexJsIemJt0MARKA==} + engines: {node: '>=22.12.0'} '@tanstack/store@0.7.0': resolution: {integrity: sha512-CNIhdoUsmD2NolYuaIs8VfWM467RK6oIBAW4nPEKZhg1smZ+/CwtCdpURgp7nxSqOaV9oKkzdWD80+bC66F/Jg==} - '@tanstack/virtual-file-routes@1.131.2': - resolution: {integrity: sha512-VEEOxc4mvyu67O+Bl0APtYjwcNRcL9it9B4HKbNgcBTIOEalhk+ufBl4kiqc8WP1sx1+NAaiS+3CcJBhrqaSRg==} + '@tanstack/virtual-file-routes@1.132.0': + resolution: {integrity: sha512-d3do4ih9IdLPBVY4Gb8x7Ho7z0oFDLpxoao7uNVkfWtYU7nc3B+rnnVejXIgprmI5gt1hNzyNDJFr8G/W926GA==} engines: {node: '>=12'} '@testing-library/dom@10.1.0': @@ -5086,9 +5069,6 @@ packages: '@types/aria-query@5.0.1': resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} - '@types/babel__code-frame@7.0.6': - resolution: {integrity: sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -8498,6 +8478,9 @@ packages: fetch-retry@4.1.1: resolution: {integrity: sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==} + fetchdts@0.1.7: + resolution: {integrity: sha512-YoZjBdafyLIop9lSxXVI33oLD5kN31q4Td+CasofLLYeLXRFeOsuOw0Uo+XNRi9PZlbfdlN2GmRtm4tCEQ9/KA==} + fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} @@ -8912,12 +8895,18 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - h3@1.13.0: - resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} - h3@1.15.4: resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} + h3@2.0.0-beta.4: + resolution: {integrity: sha512-/JdwHUGuHjbBXAVxQN7T7QeI9cVlhsqMKVNFHebZVs9RoEYH85Ogh9O1DEy/1ZiJkmMwa1gNg6bBcGhc1Itjdg==} + engines: {node: '>=20.11.1'} + peerDependencies: + crossws: ^0.4.1 + peerDependenciesMeta: + crossws: + optional: true + handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} @@ -11258,9 +11247,6 @@ packages: ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} - ohash@1.1.6: - resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==} - ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} @@ -12636,6 +12622,9 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rou3@0.7.5: + resolution: {integrity: sha512-bwUHDHw1HSARty7TWNV71R0NZs5fOt74OM+hcMdJyPfchfRktEmxLoMSNa7PwEp6WqJ0a3feKztsIfTUEYhskw==} + router@2.1.0: resolution: {integrity: sha512-/m/NSLxeYEgWNtyC+WtNHCF7jbGxOibVWKnn+1Psff4dJGOfoXP+MuC/f2CwSmyiHdOIzYnYFp4W6GxWfekaLA==} engines: {node: '>= 18'} @@ -13070,6 +13059,11 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + srvx@0.8.7: + resolution: {integrity: sha512-g3+15LlwVOGL2QpoTPZlvRjg+9a5Tx/69CatXjFP6txvhIaW2FmGyzJfb8yft5wyfGddvJmP/Yx+e/uNDMRSLQ==} + engines: {node: '>=20.16.0'} + hasBin: true + sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -13951,9 +13945,6 @@ packages: resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} engines: {node: '>=20.18.1'} - unenv@1.10.0: - resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - unenv@2.0.0-rc.21: resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} @@ -19460,6 +19451,8 @@ snapshots: '@stablelib/base64@1.0.1': {} + '@standard-schema/spec@1.0.0': {} + '@statelyai/inspect@0.4.0(ws@8.18.3)(xstate@5.20.2)': dependencies: fast-safe-stringify: 2.1.1 @@ -19634,138 +19627,73 @@ snapshots: '@swc/counter': 0.1.3 optional: true - '@tanstack/directive-functions-plugin@1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))': + '@tanstack/directive-functions-plugin@1.132.0(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.28.4 '@babel/traverse': 7.28.4 '@babel/types': 7.28.4 - '@tanstack/router-utils': 1.131.2 + '@tanstack/router-utils': 1.132.0 babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@tanstack/history@1.131.2': {} + '@tanstack/history@1.132.0': {} - '@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/history': 1.131.2 + '@tanstack/history': 1.132.0 '@tanstack/react-store': 0.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-core': 1.131.48 + '@tanstack/router-core': 1.132.0 isbot: 5.1.23 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-start-client@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-start-client@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/react-router': 1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-core': 1.131.48 - '@tanstack/start-client-core': 1.131.48 + '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/router-core': 1.132.0 + '@tanstack/start-client-core': 1.132.0 cookie-es: 1.2.2 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-start-plugin@1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@vitejs/plugin-react@4.5.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)))': - dependencies: - '@tanstack/start-plugin-core': 1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@vitejs/plugin-react': 4.5.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) - pathe: 2.0.3 - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1) - zod: 3.24.2 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - - '@rsbuild/core' - - '@tanstack/react-router' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - better-sqlite3 - - drizzle-orm - - encoding - - idb-keyval - - mysql2 - - rolldown - - sqlite3 - - supports-color - - uploadthing - - vite-plugin-solid - - webpack - - xml2js - - '@tanstack/react-start-server@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@tanstack/react-start-server@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@tanstack/history': 1.131.2 - '@tanstack/react-router': 1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/router-core': 1.131.48 - '@tanstack/start-client-core': 1.131.48 - '@tanstack/start-server-core': 1.131.48 - h3: 1.13.0 - isbot: 5.1.23 + '@tanstack/history': 1.132.0 + '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/router-core': 1.132.0 + '@tanstack/start-client-core': 1.132.0 + '@tanstack/start-server-core': 1.132.0 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - crossws - '@tanstack/react-start@1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@vitejs/plugin-react@4.5.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)))': + '@tanstack/react-start@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)))': dependencies: - '@tanstack/react-start-client': 1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/react-start-plugin': 1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@vitejs/plugin-react@4.5.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@tanstack/react-start-server': 1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tanstack/start-server-functions-client': 1.131.48(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) - '@tanstack/start-server-functions-server': 1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) - '@vitejs/plugin-react': 4.5.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) + '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-start-client': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-start-server': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/router-utils': 1.132.0 + '@tanstack/start-client-core': 1.132.0 + '@tanstack/start-plugin-core': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17))) + pathe: 2.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1) transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - '@rsbuild/core' - - '@tanstack/react-router' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - better-sqlite3 - - drizzle-orm - - encoding - - idb-keyval - - mysql2 - - rolldown - - sqlite3 + - crossws - supports-color - - uploadthing - vite-plugin-solid - webpack - - xml2js '@tanstack/react-store@0.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -19774,9 +19702,9 @@ snapshots: react-dom: 18.3.1(react@18.3.1) use-sync-external-store: 1.5.0(react@18.3.1) - '@tanstack/router-core@1.131.48': + '@tanstack/router-core@1.132.0': dependencies: - '@tanstack/history': 1.131.2 + '@tanstack/history': 1.132.0 '@tanstack/store': 0.7.0 cookie-es: 1.2.2 seroval: 1.3.2 @@ -19784,11 +19712,11 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/router-generator@1.131.48': + '@tanstack/router-generator@1.132.0': dependencies: - '@tanstack/router-core': 1.131.48 - '@tanstack/router-utils': 1.131.2 - '@tanstack/virtual-file-routes': 1.131.2 + '@tanstack/router-core': 1.132.0 + '@tanstack/router-utils': 1.132.0 + '@tanstack/virtual-file-routes': 1.132.0 prettier: 3.5.3 recast: 0.23.11 source-map: 0.7.6 @@ -19797,7 +19725,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)))': + '@tanstack/router-plugin@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) @@ -19805,22 +19733,22 @@ snapshots: '@babel/template': 7.27.2 '@babel/traverse': 7.28.4 '@babel/types': 7.28.4 - '@tanstack/router-core': 1.131.48 - '@tanstack/router-generator': 1.131.48 - '@tanstack/router-utils': 1.131.2 - '@tanstack/virtual-file-routes': 1.131.2 + '@tanstack/router-core': 1.132.0 + '@tanstack/router-generator': 1.132.0 + '@tanstack/router-utils': 1.132.0 + '@tanstack/virtual-file-routes': 1.132.0 babel-dead-code-elimination: 1.0.10 chokidar: 3.6.0 unplugin: 2.3.10 zod: 3.24.2 optionalDependencies: - '@tanstack/react-router': 1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@tanstack/react-router': 1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1) webpack: 5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)) transitivePeerDependencies: - supports-color - '@tanstack/router-utils@1.131.2': + '@tanstack/router-utils@1.132.0': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.3 @@ -19828,10 +19756,12 @@ snapshots: '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) ansis: 4.1.0 diff: 8.0.2 + fast-glob: 3.3.3 + pathe: 2.0.3 transitivePeerDependencies: - supports-color - '@tanstack/server-functions-plugin@1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))': + '@tanstack/server-functions-plugin@1.132.0(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))': dependencies: '@babel/code-frame': 7.27.1 '@babel/core': 7.28.4 @@ -19840,117 +19770,73 @@ snapshots: '@babel/template': 7.27.2 '@babel/traverse': 7.28.4 '@babel/types': 7.28.4 - '@tanstack/directive-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) + '@tanstack/directive-functions-plugin': 1.132.0(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color - vite - '@tanstack/start-client-core@1.131.48': + '@tanstack/start-client-core@1.132.0': dependencies: - '@tanstack/router-core': 1.131.48 - '@tanstack/start-storage-context': 1.131.48 + '@tanstack/router-core': 1.132.0 + '@tanstack/start-storage-context': 1.132.0 cookie-es: 1.2.2 + seroval: 1.3.2 tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/start-plugin-core@1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)))': + '@tanstack/start-plugin-core@1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17)))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.28.4 '@babel/types': 7.28.4 - '@tanstack/router-core': 1.131.48 - '@tanstack/router-generator': 1.131.48 - '@tanstack/router-plugin': 1.131.49(@tanstack/react-router@1.131.49(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17))) - '@tanstack/router-utils': 1.131.2 - '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) - '@tanstack/start-server-core': 1.131.48 - '@types/babel__code-frame': 7.0.6 - '@types/babel__core': 7.20.5 + '@tanstack/router-core': 1.132.0 + '@tanstack/router-generator': 1.132.0 + '@tanstack/router-plugin': 1.132.0(@tanstack/react-router@1.132.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(webpack@5.94.0(@swc/core@1.11.29(@swc/helpers@0.5.17))) + '@tanstack/router-utils': 1.132.0 + '@tanstack/server-functions-plugin': 1.132.0(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) + '@tanstack/start-server-core': 1.132.0 babel-dead-code-elimination: 1.0.10 cheerio: 1.1.0 - h3: 1.13.0 - nitropack: 2.12.6(@netlify/blobs@9.1.2)(idb-keyval@6.2.1) + exsolve: 1.0.7 pathe: 2.0.3 + srvx: 0.8.7 ufo: 1.6.1 vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1) vitefu: 1.1.1(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) xmlbuilder2: 3.1.1 zod: 3.24.2 transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@electric-sql/pglite' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - '@rsbuild/core' - '@tanstack/react-router' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - aws4fetch - - better-sqlite3 - - drizzle-orm - - encoding - - idb-keyval - - mysql2 - - rolldown - - sqlite3 + - crossws - supports-color - - uploadthing - vite-plugin-solid - webpack - - xml2js - - '@tanstack/start-server-core@1.131.48': - dependencies: - '@tanstack/history': 1.131.2 - '@tanstack/router-core': 1.131.48 - '@tanstack/start-client-core': 1.131.48 - '@tanstack/start-storage-context': 1.131.48 - h3: 1.13.0 - isbot: 5.1.23 - tiny-invariant: 1.3.3 - tiny-warning: 1.0.3 - unctx: 2.4.1 - - '@tanstack/start-server-functions-client@1.131.48(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))': - dependencies: - '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) - '@tanstack/start-server-functions-fetcher': 1.131.48 - transitivePeerDependencies: - - supports-color - - vite - - '@tanstack/start-server-functions-fetcher@1.131.48': - dependencies: - '@tanstack/router-core': 1.131.48 - '@tanstack/start-client-core': 1.131.48 - '@tanstack/start-server-functions-server@1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))': + '@tanstack/start-server-core@1.132.0': dependencies: - '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1)) + '@standard-schema/spec': 1.0.0 + '@tanstack/history': 1.132.0 + '@tanstack/router-core': 1.132.0 + '@tanstack/start-client-core': 1.132.0 + '@tanstack/start-storage-context': 1.132.0 + cookie-es: 2.0.0 + fetchdts: 0.1.7 + h3: 2.0.0-beta.4 + seroval: 1.3.2 tiny-invariant: 1.3.3 transitivePeerDependencies: - - supports-color - - vite + - crossws - '@tanstack/start-storage-context@1.131.48': + '@tanstack/start-storage-context@1.132.0': dependencies: - '@tanstack/router-core': 1.131.48 + '@tanstack/router-core': 1.132.0 '@tanstack/store@0.7.0': {} - '@tanstack/virtual-file-routes@1.131.2': {} + '@tanstack/virtual-file-routes@1.132.0': {} '@testing-library/dom@10.1.0': dependencies: @@ -20036,8 +19922,6 @@ snapshots: '@types/aria-query@5.0.1': {} - '@types/babel__code-frame@7.0.6': {} - '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.4 @@ -20689,18 +20573,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.5.2(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))': - dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) - '@rolldown/pluginutils': 1.0.0-beta.11 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1) - transitivePeerDependencies: - - supports-color - '@vitejs/plugin-vue-jsx@5.1.1(vite@7.1.5(@types/node@24.3.1)(jiti@2.5.1)(lightningcss@1.27.0)(terser@5.44.0)(tsx@4.19.2)(yaml@2.8.1))(vue@3.5.21(typescript@5.8.3))': dependencies: '@babel/core': 7.28.4 @@ -24340,6 +24212,8 @@ snapshots: fetch-retry@4.1.1: {} + fetchdts@0.1.7: {} + fflate@0.8.2: {} figures@3.2.0: @@ -24823,19 +24697,6 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.13.0: - dependencies: - cookie-es: 1.2.2 - crossws: 0.3.5 - defu: 6.1.4 - destr: 2.0.5 - iron-webcrypto: 1.2.1 - ohash: 1.1.6 - radix3: 1.1.2 - ufo: 1.6.1 - uncrypto: 0.1.3 - unenv: 1.10.0 - h3@1.15.4: dependencies: cookie-es: 1.2.2 @@ -24848,6 +24709,13 @@ snapshots: ufo: 1.6.1 uncrypto: 0.1.3 + h3@2.0.0-beta.4: + dependencies: + cookie-es: 2.0.0 + fetchdts: 0.1.7 + rou3: 0.7.5 + srvx: 0.8.7 + handle-thing@2.0.1: {} handlebars@4.7.8: @@ -28034,8 +27902,6 @@ snapshots: node-fetch-native: 1.6.7 ufo: 1.6.1 - ohash@1.1.6: {} - ohash@2.0.11: {} on-change@5.0.1: {} @@ -29512,6 +29378,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.50.1 fsevents: 2.3.3 + rou3@0.7.5: {} + router@2.1.0: dependencies: is-promise: 4.0.0 @@ -30067,6 +29935,10 @@ snapshots: sprintf-js@1.0.3: {} + srvx@0.8.7: + dependencies: + cookie-es: 2.0.0 + sshpk@1.18.0: dependencies: asn1: 0.2.6 @@ -30941,14 +30813,6 @@ snapshots: undici@7.10.0: {} - unenv@1.10.0: - dependencies: - consola: 3.4.2 - defu: 6.1.4 - mime: 3.0.0 - node-fetch-native: 1.6.7 - pathe: 1.1.2 - unenv@2.0.0-rc.21: dependencies: defu: 6.1.4