From f0b490453d369cce6fb44289b458ad4cab3ac8c9 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 5 Mar 2025 10:41:22 +0100 Subject: [PATCH 1/5] Added middleware to base-stack --- .vscode/settings.json | 3 + app/entry.server.tsx | 12 +- app/root.tsx | 26 ++++- app/routes/resource.locales.ts | 5 +- app/server/context.ts | 19 ++-- package.json | 17 ++- pnpm-lock.yaml | 196 +++++++-------------------------- react-router.config.ts | 6 + 8 files changed, 108 insertions(+), 176 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index edb107ed..eb3f6c99 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -42,5 +42,8 @@ }, "[typescriptreact]": { "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" } } diff --git a/app/entry.server.tsx b/app/entry.server.tsx index f09a7b9d..9c7f0421 100644 --- a/app/entry.server.tsx +++ b/app/entry.server.tsx @@ -4,10 +4,11 @@ import { createInstance } from "i18next" import { isbot } from "isbot" import { renderToPipeableStream } from "react-dom/server" import { I18nextProvider, initReactI18next } from "react-i18next" -import { type AppLoadContext, type EntryContext, ServerRouter } from "react-router" +import { type EntryContext, ServerRouter, type unstable_RouterContextProvider } from "react-router" import i18n from "./localization/i18n" // your i18n configuration file import i18nextOpts from "./localization/i18n.server" import { resources } from "./localization/resource" +import { globalAppContext } from "./server/context" // Reject all pending promises from handler functions after 10 seconds export const streamTimeout = 10000 @@ -17,11 +18,12 @@ export default async function handleRequest( responseStatusCode: number, responseHeaders: Headers, context: EntryContext, - appContext: AppLoadContext + appContext: unstable_RouterContextProvider ) { + const ctx = appContext.get(globalAppContext) const callbackName = isbot(request.headers.get("user-agent")) ? "onAllReady" : "onShellReady" const instance = createInstance() - const lng = appContext.lang + const lng = ctx.lang // biome-ignore lint/suspicious/noExplicitAny: const ns = i18nextOpts.getRouteNamespaces(context as any) @@ -48,8 +50,8 @@ export default async function handleRequest( responseHeaders.set("Content-Type", "text/html") resolve( - // @ts-expect-error - We purposely do not define the body as existent so it's not used inside loaders as it's injected there as well - appContext.body(stream, { + // @ts-expect-error + ctx.body(stream, { headers: responseHeaders, status: didError ? 500 : responseStatusCode, }) diff --git a/app/root.tsx b/app/root.tsx index 12a011b3..fc8dd583 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -4,11 +4,12 @@ import type { LinksFunction } from "react-router" import { useChangeLanguage } from "remix-i18next/react" import type { Route } from "./+types/root" import { LanguageSwitcher } from "./library/language-switcher" +import { globalAppContext } from "./server/context" import { ClientHintCheck, getHints } from "./services/client-hints" import tailwindcss from "./tailwind.css?url" export async function loader({ context, request }: Route.LoaderArgs) { - const { lang, clientEnv } = context + const { lang, clientEnv } = context.get(globalAppContext) const hints = getHints(request) return { lang, clientEnv, hints } } @@ -69,3 +70,26 @@ export const ErrorBoundary = () => { ) } + +const clientLogger: Route.unstable_ClientMiddlewareFunction = async ({ request }, next) => { + const start = performance.now() + + // Run the remaining middlewares and all route loaders + await next() + + const duration = performance.now() - start + // biome-ignore lint/suspicious/noConsole: + console.log(`Navigated to ${request.url} (${duration}ms)`) +} + +const serverLogger: Route.unstable_MiddlewareFunction = async (_, next) => { + // biome-ignore lint/suspicious/noConsole: + console.log("Going into the server middleware") + await next() + // biome-ignore lint/suspicious/noConsole: + console.log("Going out of the server middleware") +} + +export const unstable_middleware = [serverLogger] + +export const unstable_clientMiddleware = [clientLogger] diff --git a/app/routes/resource.locales.ts b/app/routes/resource.locales.ts index 1a05c377..3c9f7686 100644 --- a/app/routes/resource.locales.ts +++ b/app/routes/resource.locales.ts @@ -1,10 +1,13 @@ import { cacheHeader } from "pretty-cache-header" import { z } from "zod" import { resources } from "~/localization/resource" +import { globalAppContext } from "~/server/context" import type { Route } from "./+types/resource.locales" export async function loader({ request, context }: Route.LoaderArgs) { - const { env } = context + const ctx = context.get(globalAppContext) + const { env } = ctx + const url = new URL(request.url) const lng = z diff --git a/app/server/context.ts b/app/server/context.ts index e8ae48cf..d275df14 100644 --- a/app/server/context.ts +++ b/app/server/context.ts @@ -1,16 +1,17 @@ import type { Context } from "hono" +import { unstable_createContext } from "react-router" import { i18next } from "remix-hono/i18next" import { getClientEnv, initEnv } from "~/env.server" // Setup the .env vars const env = initEnv() +const globalAppContext = unstable_createContext() -export const getLoadContext = async (c: Context) => { +const generateContext = async (c: Context) => { // get the locale from the context const locale = i18next.getLocale(c) // get t function for the default namespace const t = await i18next.getFixedT(c) - const clientEnv = getClientEnv() return { lang: locale, @@ -22,11 +23,11 @@ export const getLoadContext = async (c: Context) => { } } -interface LoadContext extends Awaited> {} - -/** - * Declare our loaders and actions context type - */ -declare module "react-router" { - interface AppLoadContext extends Omit {} +export const getLoadContext = async (c: Context) => { + const ctx = await generateContext(c) + return new Map([[globalAppContext, ctx]]) } + +interface GlobalAppContext extends Awaited> {} + +export { globalAppContext } diff --git a/package.json b/package.json index 17ce928c..586948b3 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dependencies": { "@epic-web/client-hints": "1.3.5", "@forge42/seo-tools": "1.3.0", - "@react-router/node": "7.2.0", + "@react-router/node": "7.3.0-pre.0", "clsx": "2.1.1", "hono": "4.6.20", "i18next": "24.2.2", @@ -40,7 +40,7 @@ "react": "19.0.0", "react-dom": "19.0.0", "react-i18next": "15.4.0", - "react-router": "7.2.0", + "react-router": "7.3.0-pre.0", "react-router-hono-server": "2.10.0", "remix-hono": "0.0.18", "remix-i18next": "7.0.2", @@ -51,8 +51,8 @@ "@babel/preset-typescript": "7.26.0", "@biomejs/biome": "1.9.4", "@dotenvx/dotenvx": "1.34.0", - "@react-router/dev": "7.2.0", - "@react-router/fs-routes": "7.2.0", + "@react-router/dev": "7.3.0-pre.0", + "@react-router/fs-routes": "7.3.0-pre.0", "@tailwindcss/vite": "4.0.9", "@testing-library/react": "16.2.0", "@types/node": "22.13.1", @@ -89,6 +89,11 @@ "pnpm": ">=10.2.0" }, "pnpm": { - "onlyBuiltDependencies": ["@biomejs/biome", "esbuild", "lefthook", "msw"] + "onlyBuiltDependencies": [ + "@biomejs/biome", + "esbuild", + "lefthook", + "msw" + ] } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f3d0346..2887121d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: 1.3.0 version: 1.3.0(typescript@5.7.3) '@react-router/node': - specifier: 7.2.0 - version: 7.2.0(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) + specifier: 7.3.0-pre.0 + version: 7.3.0-pre.0(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) clsx: specifier: 2.1.1 version: 2.1.1 @@ -48,17 +48,17 @@ importers: specifier: 15.4.0 version: 15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-router: - specifier: 7.2.0 - version: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 7.3.0-pre.0 + version: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-router-hono-server: specifier: 2.10.0 - version: 2.10.0(@react-router/dev@7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + version: 2.10.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) remix-hono: specifier: 0.0.18 - version: 0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1) + version: 0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1) remix-i18next: specifier: 7.0.2 - version: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + version: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) tailwind-merge: specifier: 3.0.1 version: 3.0.1 @@ -76,11 +76,11 @@ importers: specifier: 1.34.0 version: 1.34.0 '@react-router/dev': - specifier: 7.2.0 - version: 7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + specifier: 7.3.0-pre.0 + version: 7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) '@react-router/fs-routes': - specifier: 7.2.0 - version: 7.2.0(@react-router/dev@7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3) + specifier: 7.3.0-pre.0 + version: 7.3.0-pre.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3) '@tailwindcss/vite': specifier: 4.0.9 version: 4.0.9(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) @@ -131,7 +131,7 @@ importers: version: 1.3.0 react-router-devtools: specifier: 1.1.5 - version: 1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + version: 1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) tailwindcss: specifier: 4.0.9 version: 4.0.9 @@ -1192,13 +1192,13 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@react-router/dev@7.2.0': - resolution: {integrity: sha512-GzSNGeWuhx6sMsnidCQAlCAephibUMC61xIAdsc6hBXWCJe/T9wUrvtnh2Xbcpr7BRZJtJN4UhI472ZURA6m9w==} + '@react-router/dev@7.3.0-pre.0': + resolution: {integrity: sha512-jVeyEM4HYxEUXZOLqhtIUtjF+q2OTA3OVEFudM7PfQTaszjaUO+K+O58dtNUIIz4sIQSYdVr3Hf4rvWk5dudXg==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@react-router/serve': ^7.2.0 - react-router: ^7.2.0 + '@react-router/serve': ^7.3.0-pre.0 + react-router: ^7.3.0-pre.0 typescript: ^5.1.0 vite: ^5.1.0 || ^6.0.0 wrangler: ^3.28.2 @@ -1210,21 +1210,21 @@ packages: wrangler: optional: true - '@react-router/fs-routes@7.2.0': - resolution: {integrity: sha512-vbXNCJ6Rd9ZhMpYzacz2bZjDi4UTgOtIktdcHG0oFUFS51DWvfzFo0h/7iyqT3r1QFKQ3wg+KhX5PEiksipeaQ==} + '@react-router/fs-routes@7.3.0-pre.0': + resolution: {integrity: sha512-tLwc4ubsGIQMwWfDnk5WmHGIGaxkkJBKwN8uesYI+8d4xqccLA1DSOfQQ4CqwSxPvyAtYsJqOcsLxTK9zMyTHw==} engines: {node: '>=20.0.0'} peerDependencies: - '@react-router/dev': ^7.2.0 + '@react-router/dev': ^7.3.0-pre.0 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/node@7.2.0': - resolution: {integrity: sha512-CqBHLwvvV4BB8htmaSwT+SOwX9B4RVOIiEdTlaIp12sNVCGSYDIEGbv3T4Wxeq8p5ynNfhNcdBeXtZ6ZPWVozA==} + '@react-router/node@7.3.0-pre.0': + resolution: {integrity: sha512-JYRL+TPlIKDMwCAKvFI8egtJUsqpVWj9AU2nk2Srm6jhReYu6T1AsgG81Pl9C3aWjw84kuMKAlgmj4MvfuyO9Q==} engines: {node: '>=20.0.0'} peerDependencies: - react-router: 7.2.0 + react-router: 7.3.0-pre.0 typescript: ^5.1.0 peerDependenciesMeta: typescript: @@ -1652,9 +1652,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserify-zlib@0.1.4: - resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} - browserslist@4.24.4: resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -1917,9 +1914,6 @@ packages: resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} - duplexify@3.7.1: - resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -1944,9 +1938,6 @@ packages: emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - end-of-stream@1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -2110,10 +2101,6 @@ packages: resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - gunzip-maybe@1.4.2: - resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} - hasBin: true - happy-dom@16.8.1: resolution: {integrity: sha512-n0QrmT9lD81rbpKsyhnlz3DgnMZlaOkJPpgi746doA+HvaMC79bdWkwjrNnGJRvDrWTI8iOcJiVTJ5CdT/AZRw==} engines: {node: '>=18.0.0'} @@ -2197,9 +2184,6 @@ packages: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} - is-deflate@1.0.0: - resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -2212,10 +2196,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-gzip@1.0.0: - resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} - engines: {node: '>=0.10.0'} - is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} @@ -2601,9 +2581,6 @@ packages: resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} engines: {node: '>= 10'} - once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -2618,9 +2595,6 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pako@0.2.9: - resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2665,9 +2639,6 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} - peek-stream@1.1.3: - resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2742,12 +2713,6 @@ packages: psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - pump@2.0.1: - resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} - - pumpify@1.5.1: - resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2856,8 +2821,8 @@ packages: wrangler: optional: true - react-router@7.2.0: - resolution: {integrity: sha512-fXyqzPgCPZbqhrk7k3hPcCpYIlQ2ugIXDboHUzhJISFVy2DEPsmHgN588MyGmkIOv3jDgNfUE3kJi83L28s/LQ==} + react-router@7.3.0-pre.0: + resolution: {integrity: sha512-0DGevPVMTNJ1Hu5RgPFZmcKSpwjV0j2MlzcNihmMV+WhBEWhxkpbRjtO4zAX+lNc3b0LIV4RxMXQmBsTErtJcw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -3058,9 +3023,6 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - stream-shift@1.0.3: - resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - stream-slice@0.1.2: resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} @@ -3122,9 +3084,6 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - through2@2.0.5: - resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - timestring@6.0.0: resolution: {integrity: sha512-wMctrWD2HZZLuIlchlkE2dfXJh7J2KDI9Dwl+2abPYg0mswQHfOAyQW3jJg1pY5VfttSINZuKcXoB3FGypVklA==} engines: {node: '>=8'} @@ -3446,9 +3405,6 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} - wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.1: resolution: {integrity: sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==} engines: {node: '>=10.0.0'} @@ -3461,10 +3417,6 @@ packages: utf-8-validate: optional: true - xtend@4.0.2: - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} - engines: {node: '>=0.4'} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -4445,7 +4397,7 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@react-router/dev@7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2))': + '@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2))': dependencies: '@babel/core': 7.26.9 '@babel/generator': 7.26.9 @@ -4456,7 +4408,7 @@ snapshots: '@babel/traverse': 7.26.9 '@babel/types': 7.26.9 '@npmcli/package-json': 4.0.1 - '@react-router/node': 7.2.0(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) + '@react-router/node': 7.3.0-pre.0(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) arg: 5.0.2 babel-dead-code-elimination: 1.0.9 chokidar: 4.0.3 @@ -4464,15 +4416,13 @@ snapshots: es-module-lexer: 1.6.0 exit-hook: 2.2.1 fs-extra: 10.1.0 - gunzip-maybe: 1.4.2 jsesc: 3.0.2 lodash: 4.17.21 pathe: 1.1.2 picocolors: 1.1.1 - picomatch: 2.3.1 prettier: 2.8.8 react-refresh: 0.14.2 - react-router: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) semver: 7.7.1 set-cookie-parser: 2.7.1 valibot: 0.41.0(typescript@5.7.3) @@ -4496,17 +4446,17 @@ snapshots: - tsx - yaml - '@react-router/fs-routes@7.2.0(@react-router/dev@7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3)': + '@react-router/fs-routes@7.3.0-pre.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3)': dependencies: - '@react-router/dev': 7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + '@react-router/dev': 7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) minimatch: 9.0.5 optionalDependencies: typescript: 5.7.3 - '@react-router/node@7.2.0(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3)': + '@react-router/node@7.3.0-pre.0(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3)': dependencies: '@mjackson/node-fetch-server': 0.2.0 - react-router: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) source-map-support: 0.5.21 stream-slice: 0.1.2 undici: 6.21.1 @@ -4909,10 +4859,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserify-zlib@0.1.4: - dependencies: - pako: 0.2.9 - browserslist@4.24.4: dependencies: caniuse-lite: 1.0.30001701 @@ -5140,13 +5086,6 @@ snapshots: dotenv@16.4.7: {} - duplexify@3.7.1: - dependencies: - end-of-stream: 1.4.4 - inherits: 2.0.4 - readable-stream: 2.3.8 - stream-shift: 1.0.3 - eastasianwidth@0.2.0: {} easy-table@1.2.0: @@ -5175,10 +5114,6 @@ snapshots: emoji-regex@9.2.2: {} - end-of-stream@1.4.4: - dependencies: - once: 1.4.0 - enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -5371,15 +5306,6 @@ snapshots: graphql@16.10.0: {} - gunzip-maybe@1.4.2: - dependencies: - browserify-zlib: 0.1.4 - is-deflate: 1.0.0 - is-gzip: 1.0.0 - peek-stream: 1.1.3 - pumpify: 1.5.1 - through2: 2.0.5 - happy-dom@16.8.1: dependencies: webidl-conversions: 7.0.0 @@ -5452,8 +5378,6 @@ snapshots: dependencies: hasown: 2.0.2 - is-deflate@1.0.0: {} - is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -5462,8 +5386,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-gzip@1.0.0: {} - is-node-process@1.2.0: {} is-number@7.0.0: {} @@ -5812,10 +5734,6 @@ snapshots: object-treeify@1.1.33: {} - once@1.4.0: - dependencies: - wrappy: 1.0.2 - onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -5828,8 +5746,6 @@ snapshots: package-json-from-dist@1.0.1: {} - pako@0.2.9: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -5867,12 +5783,6 @@ snapshots: pathval@2.0.0: {} - peek-stream@1.1.3: - dependencies: - buffer-from: 1.1.2 - duplexify: 3.7.1 - through2: 2.0.5 - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -5940,17 +5850,6 @@ snapshots: dependencies: punycode: 2.3.1 - pump@2.0.1: - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - pumpify@1.5.1: - dependencies: - duplexify: 3.7.1 - inherits: 2.0.4 - pump: 2.0.1 - punycode@2.3.1: {} querystringify@2.2.0: {} @@ -6029,7 +5928,7 @@ snapshots: optionalDependencies: '@types/react': 19.0.8 - react-router-devtools@1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): + react-router-devtools@1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): dependencies: '@babel/core': 7.26.9 '@babel/generator': 7.26.9 @@ -6049,7 +5948,7 @@ snapshots: react-diff-viewer-continued: 4.0.5(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-dom: 19.0.0(react@19.0.0) react-hotkeys-hook: 4.6.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-router: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-tooltip: 5.28.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite: 6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2) optionalDependencies: @@ -6062,22 +5961,22 @@ snapshots: - '@types/react-dom' - supports-color - react-router-hono-server@2.10.0(@react-router/dev@7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): + react-router-hono-server@2.10.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): dependencies: '@drizzle-team/brocli': 0.11.0 '@hono/node-server': 1.13.8(hono@4.6.20) '@hono/node-ws': 1.1.0(@hono/node-server@1.13.8(hono@4.6.20))(hono@4.6.20) '@hono/vite-dev-server': 0.17.0(hono@4.6.20) - '@react-router/dev': 7.2.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + '@react-router/dev': 7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) '@types/react': 19.0.8 hono: 4.6.20 - react-router: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite: 6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2) transitivePeerDependencies: - bufferutil - utf-8-validate - react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@types/cookie': 0.6.0 cookie: 1.0.2 @@ -6122,22 +6021,22 @@ snapshots: regenerator-runtime@0.14.1: {} - remix-hono@0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1): + remix-hono@0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1): dependencies: hono: 4.6.20 pretty-cache-header: 1.0.0 optionalDependencies: i18next: 24.2.2(typescript@5.7.3) - react-router: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - remix-i18next: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + remix-i18next: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) zod: 3.24.1 - remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): + remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: i18next: 24.2.2(typescript@5.7.3) react: 19.0.0 react-i18next: 15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-router: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) require-directory@2.1.1: {} @@ -6254,8 +6153,6 @@ snapshots: std-env@3.8.0: {} - stream-shift@1.0.3: {} - stream-slice@0.1.2: {} strict-event-emitter@0.5.1: {} @@ -6310,11 +6207,6 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - through2@2.0.5: - dependencies: - readable-stream: 2.3.8 - xtend: 4.0.2 - timestring@6.0.0: {} tinybench@2.9.0: {} @@ -6616,12 +6508,8 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 - wrappy@1.0.2: {} - ws@8.18.1: {} - xtend@4.0.2: {} - y18n@5.0.8: {} yallist@3.1.1: {} diff --git a/react-router.config.ts b/react-router.config.ts index 117b8d5e..6d2bfbf2 100644 --- a/react-router.config.ts +++ b/react-router.config.ts @@ -1,9 +1,15 @@ import type { Config } from "@react-router/dev/config" +declare module "react-router" { + interface Future { + unstable_middleware: true // 👈 Enable middleware types + } +} export default { future: { unstable_viteEnvironmentApi: true, unstable_splitRouteModules: true, unstable_optimizeDeps: true, + unstable_middleware: true, }, } satisfies Config From 767a848ae94a7519ae62a023287ab4f0dfaa8577 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 5 Mar 2025 10:43:20 +0100 Subject: [PATCH 2/5] fix --- app/routes/resource.locales.ts | 3 +-- package.json | 9 ++------- 2 files changed, 3 insertions(+), 9 deletions(-) diff --git a/app/routes/resource.locales.ts b/app/routes/resource.locales.ts index 3c9f7686..e79988da 100644 --- a/app/routes/resource.locales.ts +++ b/app/routes/resource.locales.ts @@ -5,8 +5,7 @@ import { globalAppContext } from "~/server/context" import type { Route } from "./+types/resource.locales" export async function loader({ request, context }: Route.LoaderArgs) { - const ctx = context.get(globalAppContext) - const { env } = ctx + const { env } = context.get(globalAppContext) const url = new URL(request.url) diff --git a/package.json b/package.json index 586948b3..ebcef11c 100644 --- a/package.json +++ b/package.json @@ -89,11 +89,6 @@ "pnpm": ">=10.2.0" }, "pnpm": { - "onlyBuiltDependencies": [ - "@biomejs/biome", - "esbuild", - "lefthook", - "msw" - ] + "onlyBuiltDependencies": ["@biomejs/biome", "esbuild", "lefthook", "msw"] } -} \ No newline at end of file +} From 458d6219327b596829ef536aaf4276897d0aa107 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 5 Mar 2025 10:45:40 +0100 Subject: [PATCH 3/5] fix --- app/server/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/server/index.ts b/app/server/index.ts index a81ff3d2..170a7023 100644 --- a/app/server/index.ts +++ b/app/server/index.ts @@ -8,5 +8,6 @@ export default await createHonoServer({ server.use("*", i18next(i18nextOpts)) }, defaultLogger: false, + // @ts-expect-error getLoadContext, }) From 9d1a647acfd2494217c28416d8fe146114707de6 Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 5 Mar 2025 10:47:34 +0100 Subject: [PATCH 4/5] fix --- app/routes/robots[.]txt.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/routes/robots[.]txt.ts b/app/routes/robots[.]txt.ts index b78c674d..02d63320 100644 --- a/app/routes/robots[.]txt.ts +++ b/app/routes/robots[.]txt.ts @@ -1,10 +1,11 @@ import { generateRobotsTxt } from "@forge42/seo-tools/robots" +import { globalAppContext } from "~/server/context" import { createDomain } from "~/utils/http" import type { Route } from "./+types/robots[.]txt" export async function loader({ request, context }: Route.LoaderArgs) { - const { env } = context + const { env } = context.get(globalAppContext) const isProductionDeployment = env.APP_DEPLOYMENT_ENV === "production" const domain = createDomain(request) const robotsTxt = generateRobotsTxt([ From dd2ba50e0890f13c1e60a64bb84b744b47acb42c Mon Sep 17 00:00:00 2001 From: Alem Tuzlak Date: Wed, 12 Mar 2025 13:13:38 +0100 Subject: [PATCH 5/5] update --- app/root.tsx | 23 -------------- package.json | 17 ++++++---- pnpm-lock.yaml | 84 +++++++++++++++++++++++++------------------------- 3 files changed, 53 insertions(+), 71 deletions(-) diff --git a/app/root.tsx b/app/root.tsx index fc8dd583..8324126a 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -70,26 +70,3 @@ export const ErrorBoundary = () => { ) } - -const clientLogger: Route.unstable_ClientMiddlewareFunction = async ({ request }, next) => { - const start = performance.now() - - // Run the remaining middlewares and all route loaders - await next() - - const duration = performance.now() - start - // biome-ignore lint/suspicious/noConsole: - console.log(`Navigated to ${request.url} (${duration}ms)`) -} - -const serverLogger: Route.unstable_MiddlewareFunction = async (_, next) => { - // biome-ignore lint/suspicious/noConsole: - console.log("Going into the server middleware") - await next() - // biome-ignore lint/suspicious/noConsole: - console.log("Going out of the server middleware") -} - -export const unstable_middleware = [serverLogger] - -export const unstable_clientMiddleware = [clientLogger] diff --git a/package.json b/package.json index ebcef11c..7c647290 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dependencies": { "@epic-web/client-hints": "1.3.5", "@forge42/seo-tools": "1.3.0", - "@react-router/node": "7.3.0-pre.0", + "@react-router/node": "7.3.0", "clsx": "2.1.1", "hono": "4.6.20", "i18next": "24.2.2", @@ -40,7 +40,7 @@ "react": "19.0.0", "react-dom": "19.0.0", "react-i18next": "15.4.0", - "react-router": "7.3.0-pre.0", + "react-router": "7.3.0", "react-router-hono-server": "2.10.0", "remix-hono": "0.0.18", "remix-i18next": "7.0.2", @@ -51,8 +51,8 @@ "@babel/preset-typescript": "7.26.0", "@biomejs/biome": "1.9.4", "@dotenvx/dotenvx": "1.34.0", - "@react-router/dev": "7.3.0-pre.0", - "@react-router/fs-routes": "7.3.0-pre.0", + "@react-router/dev": "7.3.0", + "@react-router/fs-routes": "7.3.0", "@tailwindcss/vite": "4.0.9", "@testing-library/react": "16.2.0", "@types/node": "22.13.1", @@ -89,6 +89,11 @@ "pnpm": ">=10.2.0" }, "pnpm": { - "onlyBuiltDependencies": ["@biomejs/biome", "esbuild", "lefthook", "msw"] + "onlyBuiltDependencies": [ + "@biomejs/biome", + "esbuild", + "lefthook", + "msw" + ] } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2887121d..eab0dd0e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -15,8 +15,8 @@ importers: specifier: 1.3.0 version: 1.3.0(typescript@5.7.3) '@react-router/node': - specifier: 7.3.0-pre.0 - version: 7.3.0-pre.0(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) + specifier: 7.3.0 + version: 7.3.0(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) clsx: specifier: 2.1.1 version: 2.1.1 @@ -48,17 +48,17 @@ importers: specifier: 15.4.0 version: 15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-router: - specifier: 7.3.0-pre.0 - version: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: 7.3.0 + version: 7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-router-hono-server: specifier: 2.10.0 - version: 2.10.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + version: 2.10.0(@react-router/dev@7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) remix-hono: specifier: 0.0.18 - version: 0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1) + version: 0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1) remix-i18next: specifier: 7.0.2 - version: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + version: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) tailwind-merge: specifier: 3.0.1 version: 3.0.1 @@ -76,11 +76,11 @@ importers: specifier: 1.34.0 version: 1.34.0 '@react-router/dev': - specifier: 7.3.0-pre.0 - version: 7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + specifier: 7.3.0 + version: 7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) '@react-router/fs-routes': - specifier: 7.3.0-pre.0 - version: 7.3.0-pre.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3) + specifier: 7.3.0 + version: 7.3.0(@react-router/dev@7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3) '@tailwindcss/vite': specifier: 4.0.9 version: 4.0.9(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) @@ -131,7 +131,7 @@ importers: version: 1.3.0 react-router-devtools: specifier: 1.1.5 - version: 1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + version: 1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) tailwindcss: specifier: 4.0.9 version: 4.0.9 @@ -1192,13 +1192,13 @@ packages: '@radix-ui/rect@1.1.0': resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - '@react-router/dev@7.3.0-pre.0': - resolution: {integrity: sha512-jVeyEM4HYxEUXZOLqhtIUtjF+q2OTA3OVEFudM7PfQTaszjaUO+K+O58dtNUIIz4sIQSYdVr3Hf4rvWk5dudXg==} + '@react-router/dev@7.3.0': + resolution: {integrity: sha512-k9eWulu3FyJ2swN/RftgFAQviaRT4vMwE4COQ6WUCVQryQsru/ZK/dhw5YjZLPp1V+QieijigPxK4e7Pz4cOrg==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@react-router/serve': ^7.3.0-pre.0 - react-router: ^7.3.0-pre.0 + '@react-router/serve': ^7.3.0 + react-router: ^7.3.0 typescript: ^5.1.0 vite: ^5.1.0 || ^6.0.0 wrangler: ^3.28.2 @@ -1210,21 +1210,21 @@ packages: wrangler: optional: true - '@react-router/fs-routes@7.3.0-pre.0': - resolution: {integrity: sha512-tLwc4ubsGIQMwWfDnk5WmHGIGaxkkJBKwN8uesYI+8d4xqccLA1DSOfQQ4CqwSxPvyAtYsJqOcsLxTK9zMyTHw==} + '@react-router/fs-routes@7.3.0': + resolution: {integrity: sha512-GJiNer1o8qg3me1bSLUQV4jQPtL6d429qPLzEZEvC9W8Vcvgv+v3svzdVDgiXrZ4l2loUZy4sooyPJ/U3Oyfkw==} engines: {node: '>=20.0.0'} peerDependencies: - '@react-router/dev': ^7.3.0-pre.0 + '@react-router/dev': ^7.3.0 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/node@7.3.0-pre.0': - resolution: {integrity: sha512-JYRL+TPlIKDMwCAKvFI8egtJUsqpVWj9AU2nk2Srm6jhReYu6T1AsgG81Pl9C3aWjw84kuMKAlgmj4MvfuyO9Q==} + '@react-router/node@7.3.0': + resolution: {integrity: sha512-Vhww6DH0cVusO2yGhZuKmboGvFHuYOeIYEW0gpf0gFshbU0tR7MNAnOZS2Cud48hxVUSrEtgl0Kbs5BN+RQKJg==} engines: {node: '>=20.0.0'} peerDependencies: - react-router: 7.3.0-pre.0 + react-router: 7.3.0 typescript: ^5.1.0 peerDependenciesMeta: typescript: @@ -2821,8 +2821,8 @@ packages: wrangler: optional: true - react-router@7.3.0-pre.0: - resolution: {integrity: sha512-0DGevPVMTNJ1Hu5RgPFZmcKSpwjV0j2MlzcNihmMV+WhBEWhxkpbRjtO4zAX+lNc3b0LIV4RxMXQmBsTErtJcw==} + react-router@7.3.0: + resolution: {integrity: sha512-466f2W7HIWaNXTKM5nHTqNxLrHTyXybm7R0eBlVSt0k/u55tTCDO194OIx/NrYD4TS5SXKTNekXfT37kMKUjgw==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -4397,7 +4397,7 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2))': + '@react-router/dev@7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2))': dependencies: '@babel/core': 7.26.9 '@babel/generator': 7.26.9 @@ -4408,7 +4408,7 @@ snapshots: '@babel/traverse': 7.26.9 '@babel/types': 7.26.9 '@npmcli/package-json': 4.0.1 - '@react-router/node': 7.3.0-pre.0(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) + '@react-router/node': 7.3.0(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3) arg: 5.0.2 babel-dead-code-elimination: 1.0.9 chokidar: 4.0.3 @@ -4422,7 +4422,7 @@ snapshots: picocolors: 1.1.1 prettier: 2.8.8 react-refresh: 0.14.2 - react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) semver: 7.7.1 set-cookie-parser: 2.7.1 valibot: 0.41.0(typescript@5.7.3) @@ -4446,17 +4446,17 @@ snapshots: - tsx - yaml - '@react-router/fs-routes@7.3.0-pre.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3)': + '@react-router/fs-routes@7.3.0(@react-router/dev@7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(typescript@5.7.3)': dependencies: - '@react-router/dev': 7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + '@react-router/dev': 7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) minimatch: 9.0.5 optionalDependencies: typescript: 5.7.3 - '@react-router/node@7.3.0-pre.0(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3)': + '@react-router/node@7.3.0(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.3)': dependencies: '@mjackson/node-fetch-server': 0.2.0 - react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) source-map-support: 0.5.21 stream-slice: 0.1.2 undici: 6.21.1 @@ -5928,7 +5928,7 @@ snapshots: optionalDependencies: '@types/react': 19.0.8 - react-router-devtools@1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): + react-router-devtools@1.1.5(@types/react-dom@19.0.3(@types/react@19.0.8))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): dependencies: '@babel/core': 7.26.9 '@babel/generator': 7.26.9 @@ -5948,7 +5948,7 @@ snapshots: react-diff-viewer-continued: 4.0.5(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-dom: 19.0.0(react@19.0.0) react-hotkeys-hook: 4.6.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-tooltip: 5.28.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite: 6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2) optionalDependencies: @@ -5961,22 +5961,22 @@ snapshots: - '@types/react-dom' - supports-color - react-router-hono-server@2.10.0(@react-router/dev@7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): + react-router-hono-server@2.10.0(@react-router/dev@7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)))(@types/react@19.0.8)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)): dependencies: '@drizzle-team/brocli': 0.11.0 '@hono/node-server': 1.13.8(hono@4.6.20) '@hono/node-ws': 1.1.0(@hono/node-server@1.13.8(hono@4.6.20))(hono@4.6.20) '@hono/vite-dev-server': 0.17.0(hono@4.6.20) - '@react-router/dev': 7.3.0-pre.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) + '@react-router/dev': 7.3.0(@types/node@22.13.1)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(lightningcss@1.29.1)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(tsx@4.19.2)(typescript@5.7.3)(vite@6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2)) '@types/react': 19.0.8 hono: 4.6.20 - react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite: 6.2.0(@types/node@22.13.1)(jiti@2.4.2)(lightningcss@1.29.1)(tsx@4.19.2) transitivePeerDependencies: - bufferutil - utf-8-validate - react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@types/cookie': 0.6.0 cookie: 1.0.2 @@ -6021,22 +6021,22 @@ snapshots: regenerator-runtime@0.14.1: {} - remix-hono@0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1): + remix-hono@0.0.18(hono@4.6.20)(i18next@24.2.2(typescript@5.7.3))(pretty-cache-header@1.0.0)(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0))(zod@3.24.1): dependencies: hono: 4.6.20 pretty-cache-header: 1.0.0 optionalDependencies: i18next: 24.2.2(typescript@5.7.3) - react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - remix-i18next: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) + react-router: 7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + remix-i18next: 7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) zod: 3.24.1 - remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): + remix-i18next@7.0.2(i18next@24.2.2(typescript@5.7.3))(react-i18next@15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-router@7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0): dependencies: i18next: 24.2.2(typescript@5.7.3) react: 19.0.0 react-i18next: 15.4.0(i18next@24.2.2(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-router: 7.3.0-pre.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react-router: 7.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) require-directory@2.1.1: {}