From 03acebb23e098fc50836cb07e59c51b1df1bba16 Mon Sep 17 00:00:00 2001 From: Aarnav Tale Date: Mon, 24 Mar 2025 13:20:54 -0400 Subject: [PATCH] fix: env variables did not resolve in prod --- app/server/config/env.ts | 41 +++++++---- app/server/index.ts | 8 +-- docs/Configuration.md | 3 + package.json | 13 ++-- pnpm-lock.yaml | 146 ++++++++++++++++++--------------------- 5 files changed, 106 insertions(+), 105 deletions(-) diff --git a/app/server/config/env.ts b/app/server/config/env.ts index 0ae42ca..9e147bf 100644 --- a/app/server/config/env.ts +++ b/app/server/config/env.ts @@ -38,27 +38,38 @@ export function configureLogger(env: string | undefined) { log.debug('config', 'It is recommended this be disabled in production'); } -interface Overrides { - loadEnv: string | undefined; - path: string | undefined; +export interface EnvOverrides { + loadEnv: boolean; + path: string; } -export type EnvOverrides = typeof schema.infer; -const schema = type({ - loadEnv: booleanEnv.default('false'), - path: 'string = "/etc/headplane/config.yaml"', -}); - -export function configureConfig(overrides: Overrides) { - const result = schema(overrides); - if (result instanceof type.errors) { +export function configureConfig( + overrides: Partial, +): EnvOverrides { + const loadResult = booleanEnv(overrides.loadEnv); + if (loadResult instanceof type.errors) { log.error( 'config', - 'HEADPLANE_LOAD_ENV_OVERRIDES or HEADPLANE_CONFIG_PATH value is invalid: %s', - result.summary, + 'HEADPLANE_LOAD_ENV_OVERRIDES value is invalid: %s', + loadResult.summary, ); + exit(1); } - return result; + const pathResult = type('string | undefined')(overrides.path); + if (pathResult instanceof type.errors) { + log.error( + 'config', + 'HEADPLANE_CONFIG_PATH value is invalid: %s', + pathResult.summary, + ); + + exit(1); + } + + return { + loadEnv: loadResult, + path: pathResult ?? '/etc/headplane/config.yaml', + }; } diff --git a/app/server/index.ts b/app/server/index.ts index 89fefcc..dcae9ac 100644 --- a/app/server/index.ts +++ b/app/server/index.ts @@ -1,4 +1,4 @@ -import { versions } from 'node:process'; +import { env, versions } from 'node:process'; import type { UpgradeWebSocket } from 'hono/ws'; import { createHonoServer } from 'react-router-hono-server/node'; import type { WebSocket } from 'ws'; @@ -20,11 +20,11 @@ declare global { // This module contains a side-effect because everything running here // exists for the lifetime of the process, making it appropriate. log.info('server', 'Running Node.js %s', versions.node); -configureLogger(process.env[envVariables.debugLog]); +configureLogger(env[envVariables.debugLog]); const config = await loadConfig( configureConfig({ - loadEnv: process.env[envVariables.envOverrides], - path: process.env[envVariables.configPath], + loadEnv: env[envVariables.envOverrides], + path: env[envVariables.configPath], }), ); diff --git a/docs/Configuration.md b/docs/Configuration.md index e26ce79..373542d 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -22,6 +22,9 @@ Here are a few more examples: **This functionality is NOT enabled by default!** To enable it, set the environment variable **`HEADPLANE_LOAD_ENV_OVERRIDES=true`**. Setting this also tells Headplane to load the relative `.env` file into the environment. +> Also note that this is **only** for configuration overrides, not for general +> environment variables meaning you cannot specify variables such as +> `HEADPLANE_DEBUG_LOG=true` or `HEADPLANE_CONFIG_PATH=/etc/headplane/config.yaml`. ## Debugging To enable debug logging, set the **`HEADPLANE_DEBUG_LOG=true`** environment variable. diff --git a/package.json b/package.json index 223190d..475a000 100644 --- a/package.json +++ b/package.json @@ -5,9 +5,9 @@ "version": "0.5.5", "type": "module", "scripts": { - "build": "react-router build && vite build -c server/vite.config.ts", - "dev": "HEADPLANE_LOAD_ENV_OVERRIDES=true vite-node -w -c server/vite.config.ts server/entry.ts", - "start": "node build/headplane/server.js", + "build": "react-router build", + "dev": "HEADPLANE_LOAD_ENV_OVERRIDES=true HEADPLANE_CONFIG_PATH=./config.example.yaml p react-router dev", + "start": "node build/server/index.js", "typecheck": "tsc" }, "dependencies": { @@ -16,6 +16,7 @@ "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@fontsource-variable/inter": "^5.1.1", + "@hono/node-server": "^1.14.0", "@kubernetes/client-node": "^0.22.3", "@primer/octicons-react": "^19.14.0", "@react-aria/toast": "3.0.0-beta.18", @@ -56,16 +57,16 @@ "@react-router/dev": "^7.4.0", "@types/websocket": "^1.0.10", "@types/ws": "^8.5.13", - "autoprefixer": "^10.4.20", + "autoprefixer": "^10.4.21", "babel-plugin-react-compiler": "19.0.0-beta-55955c9-20241229", "lefthook": "^1.10.9", - "postcss": "^8.4.49", + "postcss": "^8.5.3", "react-router-dom": "^7.4.0", "react-scan": "^0.1.0", "tailwindcss": "^3.4.17", "tailwindcss-animate": "^1.0.7", "tailwindcss-react-aria-components": "^2.0.0", - "typescript": "^5.7.2", + "typescript": "^5.8.2", "vite": "^6.2.2", "vite-node": "^3.0.8", "vite-plugin-babel": "^1.3.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d1be072..1847303 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,6 +28,9 @@ importers: '@fontsource-variable/inter': specifier: ^5.1.1 version: 5.1.1 + '@hono/node-server': + specifier: ^1.14.0 + version: 1.14.0(hono@4.7.5) '@kubernetes/client-node': specifier: ^0.22.3 version: 0.22.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) @@ -39,7 +42,7 @@ importers: version: 3.0.0-beta.18(react@19.0.0) '@react-router/node': specifier: ^7.4.0 - version: 7.4.0(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.2) + version: 7.4.0(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.8.2) '@react-stately/toast': specifier: 3.0.0-beta.7 version: 3.0.0-beta.7(react@19.0.0) @@ -102,7 +105,7 @@ importers: version: 7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-router-hono-server: specifier: ^2.11.0 - version: 2.11.0(@react-router/dev@7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.7.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0))(@types/react@19.0.2)(bufferutil@4.0.9)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(utf-8-validate@5.0.10)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 2.11.0(@react-router/dev@7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0))(@types/react@19.0.2)(bufferutil@4.0.9)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(utf-8-validate@5.0.10)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)) react-stately: specifier: ^3.35.0 version: 3.35.0(react@19.0.0) @@ -136,7 +139,7 @@ importers: version: 1.9.4 '@react-router/dev': specifier: ^7.4.0 - version: 7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.7.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0) + version: 7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0) '@types/websocket': specifier: ^1.0.10 version: 1.0.10 @@ -144,8 +147,8 @@ importers: specifier: ^8.5.13 version: 8.5.13 autoprefixer: - specifier: ^10.4.20 - version: 10.4.20(postcss@8.4.49) + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.3) babel-plugin-react-compiler: specifier: 19.0.0-beta-55955c9-20241229 version: 19.0.0-beta-55955c9-20241229 @@ -153,8 +156,8 @@ importers: specifier: ^1.10.9 version: 1.10.9 postcss: - specifier: ^8.4.49 - version: 8.4.49 + specifier: ^8.5.3 + version: 8.5.3 react-router-dom: specifier: ^7.4.0 version: 7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -171,8 +174,8 @@ importers: specifier: ^2.0.0 version: 2.0.0(tailwindcss@3.4.17) typescript: - specifier: ^5.7.2 - version: 5.7.2 + specifier: ^5.8.2 + version: 5.8.2 vite: specifier: ^6.2.2 version: 6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0) @@ -184,7 +187,7 @@ importers: version: 1.3.0(@babel/core@7.26.0)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)) + version: 5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)) packages: @@ -965,8 +968,8 @@ packages: '@formatjs/intl-localematcher@0.5.8': resolution: {integrity: sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg==} - '@hono/node-server@1.13.8': - resolution: {integrity: sha512-fsn8ucecsAXUoVxrUil0m13kOEq4mkX4/4QozCqmY+HpGfKl74OYSn8JcMA8GnG0ClfdRI4/ZSeG7zhFaVg+wg==} + '@hono/node-server@1.14.0': + resolution: {integrity: sha512-YUCxJwgHRKSqjrdTk9e4VMGKN27MK5r4+MGPyZTgKH+IYbK+KtYbHeOcPGJ91KGGD6RIQiz2dAHxvjauNhOS8g==} engines: {node: '>=18.14.1'} peerDependencies: hono: ^4 @@ -1934,8 +1937,8 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -2261,8 +2264,8 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hono@4.7.4: - resolution: {integrity: sha512-Pst8FuGqz3L7tFF+u9Pu70eI0xa5S3LPUmrNd5Jm8nTHze9FxLTK9Kaj5g/k4UcwuJSXTP65SyHOPLrffpcAJg==} + hono@4.7.5: + resolution: {integrity: sha512-fDOK5W2C1vZACsgLONigdZTRZxuBqFtcKh7bUQ5cVSbwI2RWjloJDcgFOVzbQrlI6pCmhlTsVYZ7zpLj4m4qMQ==} engines: {node: '>=16.9.0'} hosted-git-info@6.1.3: @@ -2517,11 +2520,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true @@ -2666,10 +2664,6 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.49: - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} @@ -3064,8 +3058,8 @@ packages: resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} engines: {node: '>=16'} - typescript@5.7.2: - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true @@ -4010,23 +4004,23 @@ snapshots: dependencies: tslib: 2.8.1 - '@hono/node-server@1.13.8(hono@4.7.4)': + '@hono/node-server@1.14.0(hono@4.7.5)': dependencies: - hono: 4.7.4 + hono: 4.7.5 - '@hono/node-ws@1.1.0(@hono/node-server@1.13.8(hono@4.7.4))(bufferutil@4.0.9)(hono@4.7.4)(utf-8-validate@5.0.10)': + '@hono/node-ws@1.1.0(@hono/node-server@1.14.0(hono@4.7.5))(bufferutil@4.0.9)(hono@4.7.5)(utf-8-validate@5.0.10)': dependencies: - '@hono/node-server': 1.13.8(hono@4.7.4) - hono: 4.7.4 + '@hono/node-server': 1.14.0(hono@4.7.5) + hono: 4.7.5 ws: 8.18.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - utf-8-validate - '@hono/vite-dev-server@0.17.0(hono@4.7.4)': + '@hono/vite-dev-server@0.17.0(hono@4.7.5)': dependencies: - '@hono/node-server': 1.13.8(hono@4.7.4) - hono: 4.7.4 + '@hono/node-server': 1.14.0(hono@4.7.5) + hono: 4.7.5 minimatch: 9.0.5 '@internationalized/date@3.6.0': @@ -4798,7 +4792,7 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@react-router/dev@7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.7.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0)': + '@react-router/dev@7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0)': dependencies: '@babel/core': 7.26.10 '@babel/generator': 7.26.10 @@ -4809,7 +4803,7 @@ snapshots: '@babel/traverse': 7.26.10 '@babel/types': 7.26.10 '@npmcli/package-json': 4.0.1 - '@react-router/node': 7.4.0(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.2) + '@react-router/node': 7.4.0(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.8.2) arg: 5.0.2 babel-dead-code-elimination: 1.0.9 chokidar: 4.0.3 @@ -4826,11 +4820,11 @@ snapshots: react-router: 7.4.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.2) + valibot: 0.41.0(typescript@5.8.2) vite: 6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0) vite-node: 3.0.0-beta.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0) optionalDependencies: - typescript: 5.7.2 + typescript: 5.8.2 transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -4847,7 +4841,7 @@ snapshots: - tsx - yaml - '@react-router/node@7.4.0(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.7.2)': + '@react-router/node@7.4.0(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(typescript@5.8.2)': dependencies: '@mjackson/node-fetch-server': 0.2.0 react-router: 7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -4855,7 +4849,7 @@ snapshots: stream-slice: 0.1.2 undici: 6.21.2 optionalDependencies: - typescript: 5.7.2 + typescript: 5.8.2 '@react-stately/calendar@3.7.0(react@19.0.0)': dependencies: @@ -5446,14 +5440,14 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.20(postcss@8.4.49): + autoprefixer@10.4.21(postcss@8.5.3): dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001677 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001706 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 aws-sign2@0.7.0: {} @@ -5816,7 +5810,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hono@4.7.4: {} + hono@4.7.5: {} hosted-git-info@6.1.3: dependencies: @@ -6021,8 +6015,6 @@ snapshots: nanoid@3.3.11: {} - nanoid@3.3.8: {} - node-gyp-build@4.8.4: optional: true @@ -6109,28 +6101,28 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - postcss-import@15.1.0(postcss@8.4.49): + postcss-import@15.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.4.49): + postcss-js@4.0.1(postcss@8.5.3): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.49 + postcss: 8.5.3 - postcss-load-config@4.0.2(postcss@8.4.49): + postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.3 yaml: 2.7.0 optionalDependencies: - postcss: 8.4.49 + postcss: 8.5.3 - postcss-nested@6.2.0(postcss@8.4.49): + postcss-nested@6.2.0(postcss@8.5.3): dependencies: - postcss: 8.4.49 + postcss: 8.5.3 postcss-selector-parser: 6.1.2 postcss-selector-parser@6.1.2: @@ -6140,12 +6132,6 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.49: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.3: dependencies: nanoid: 3.3.11 @@ -6254,15 +6240,15 @@ snapshots: react-dom: 19.0.0(react@19.0.0) react-router: 7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-router-hono-server@2.11.0(@react-router/dev@7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.7.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0))(@types/react@19.0.2)(bufferutil@4.0.9)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(utf-8-validate@5.0.10)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)): + react-router-hono-server@2.11.0(@react-router/dev@7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0))(@types/react@19.0.2)(bufferutil@4.0.9)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(utf-8-validate@5.0.10)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)): dependencies: '@drizzle-team/brocli': 0.11.0 - '@hono/node-server': 1.13.8(hono@4.7.4) - '@hono/node-ws': 1.1.0(@hono/node-server@1.13.8(hono@4.7.4))(bufferutil@4.0.9)(hono@4.7.4)(utf-8-validate@5.0.10) - '@hono/vite-dev-server': 0.17.0(hono@4.7.4) - '@react-router/dev': 7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.7.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0) + '@hono/node-server': 1.14.0(hono@4.7.5) + '@hono/node-ws': 1.1.0(@hono/node-server@1.14.0(hono@4.7.5))(bufferutil@4.0.9)(hono@4.7.5)(utf-8-validate@5.0.10) + '@hono/vite-dev-server': 0.17.0(hono@4.7.5) + '@react-router/dev': 7.4.0(@types/node@22.10.7)(jiti@1.21.7)(react-router@7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(terser@5.39.0)(tsx@4.19.2)(typescript@5.8.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0))(yaml@2.7.0) '@types/react': 19.0.2 - hono: 4.7.4 + hono: 4.7.5 react-router: 7.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) vite: 6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: @@ -6549,11 +6535,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.49 - postcss-import: 15.1.0(postcss@8.4.49) - postcss-js: 4.0.1(postcss@8.4.49) - postcss-load-config: 4.0.2(postcss@8.4.49) - postcss-nested: 6.2.0(postcss@8.4.49) + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3) + postcss-nested: 6.2.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 resolve: 1.22.10 sucrase: 3.35.0 @@ -6596,9 +6582,9 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.1.4(typescript@5.7.2): + tsconfck@3.1.4(typescript@5.8.2): optionalDependencies: - typescript: 5.7.2 + typescript: 5.8.2 tslib@2.6.2: {} @@ -6621,7 +6607,7 @@ snapshots: type-fest@4.31.0: {} - typescript@5.7.2: {} + typescript@5.8.2: {} undici-types@6.19.8: {} @@ -6673,9 +6659,9 @@ snapshots: uuid@3.4.0: {} - valibot@0.41.0(typescript@5.7.2): + valibot@0.41.0(typescript@5.8.2): optionalDependencies: - typescript: 5.7.2 + typescript: 5.8.2 validate-npm-package-license@3.0.4: dependencies: @@ -6737,11 +6723,11 @@ snapshots: '@babel/core': 7.26.0 vite: 6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0) - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0)): dependencies: debug: 4.4.0 globrex: 0.1.2 - tsconfck: 3.1.4(typescript@5.7.2) + tsconfck: 3.1.4(typescript@5.8.2) optionalDependencies: vite: 6.2.2(@types/node@22.10.7)(jiti@1.21.7)(terser@5.39.0)(tsx@4.19.2)(yaml@2.7.0) transitivePeerDependencies: