diff --git a/app/entry.server.tsx b/app/entry.server.tsx index f6c9843..a882c08 100644 --- a/app/entry.server.tsx +++ b/app/entry.server.tsx @@ -10,6 +10,7 @@ import { loadContext } from './utils/config/headplane' await loadContext() +export const streamTimeout = 5000 export default function handleRequest( request: Request, responseStatusCode: number, @@ -27,7 +28,6 @@ export default function handleRequest( , { [isBot ? 'onAllReady' : 'onShellReady']() { @@ -57,6 +57,6 @@ export default function handleRequest( }, ) - setTimeout(abort, 5000) + setTimeout(abort, streamTimeout + 1000) }) } diff --git a/app/routes.ts b/app/routes.ts new file mode 100644 index 0000000..1185cfe --- /dev/null +++ b/app/routes.ts @@ -0,0 +1,3 @@ +import { flatRoutes } from '@remix-run/fs-routes' + +export default flatRoutes() diff --git a/app/routes/_data.acls._index/route.tsx b/app/routes/_data.acls._index/route.tsx index 6108640..31376e5 100644 --- a/app/routes/_data.acls._index/route.tsx +++ b/app/routes/_data.acls._index/route.tsx @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import { BeakerIcon, EyeIcon, IssueDraftIcon, PencilIcon } from '@primer/octicons-react' -import { ActionFunctionArgs, json, LoaderFunctionArgs } from '@remix-run/node' +import { ActionFunctionArgs, LoaderFunctionArgs } from '@remix-run/node' import { useLoaderData, useRevalidator } from '@remix-run/react' import { useDebounceFetcher } from 'remix-utils/use-debounce-fetcher' import { useEffect, useState, useMemo } from 'react' @@ -18,6 +18,7 @@ import { loadContext } from '~/utils/config/headplane' import { loadConfig } from '~/utils/config/headscale' import { HeadscaleError, pull, put } from '~/utils/headscale' import { getSession } from '~/utils/sessions' +import { send } from '~/utils/res' import log from '~/utils/log' import { Editor, Differ } from './cm.client' @@ -116,9 +117,7 @@ export async function loader({ request }: LoaderFunctionArgs) { export async function action({ request }: ActionFunctionArgs) { const session = await getSession(request.headers.get('Cookie')) if (!session.has('hsApiKey')) { - return json({ success: false, error: null }, { - status: 401, - }) + return send({ success: false, error: null }, 401) } try { @@ -131,18 +130,18 @@ export async function action({ request }: ActionFunctionArgs) { } ) - return json({ success: true, policy, error: null }) + return { success: true, policy, error: null } } catch (error) { log.debug('APIC', 'Failed to update ACL policy with error %s', error) // @ts-ignore: Shut UP we know it's a string most of the time const text = JSON.parse(error.message) - return json({ success: false, error: text.message }, { + return send({ success: false, error: text.message }, { status: error instanceof HeadscaleError ? error.status : 500, }) } - return json({ success: true, error: null }) + return { success: true, error: null } } export default function Page() { diff --git a/app/routes/_data.dns._index/route.tsx b/app/routes/_data.dns._index/route.tsx index 8c7a92a..808edbe 100644 --- a/app/routes/_data.dns._index/route.tsx +++ b/app/routes/_data.dns._index/route.tsx @@ -43,16 +43,12 @@ export async function loader() { export async function action({ request }: ActionFunctionArgs) { const session = await getSession(request.headers.get('Cookie')) if (!session.has('hsApiKey')) { - return json({ success: false }, { - status: 401, - }) + return send({ success: false }, 401) } const context = await loadContext() if (!context.config.write) { - return json({ success: false }, { - status: 403, - }) + return send({ success: false }, 403) } const data = await request.json() as Record @@ -62,7 +58,7 @@ export async function action({ request }: ActionFunctionArgs) { await context.integration.onConfigChange(context.integration.context) } - return json({ success: true }) + return { success: true } } export default function Page() { diff --git a/app/routes/_data.machines._index/action.tsx b/app/routes/_data.machines._index/action.tsx index 2053760..1144d92 100644 --- a/app/routes/_data.machines._index/action.tsx +++ b/app/routes/_data.machines._index/action.tsx @@ -1,21 +1,20 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { ActionFunctionArgs, json } from '@remix-run/node' - +import { ActionFunctionArgs } from '@remix-run/node' import { del, post } from '~/utils/headscale' import { getSession } from '~/utils/sessions' +import { send } from '~/utils/res' import log from '~/utils/log' export async function menuAction(request: ActionFunctionArgs['request']) { const session = await getSession(request.headers.get('Cookie')) if (!session.has('hsApiKey')) { - return json({ message: 'Unauthorized' }, { + return send({ message: 'Unauthorized' }, { status: 401, }) } const data = await request.formData() if (!data.has('_method') || !data.has('id')) { - return json({ message: 'No method or ID provided' }, { + return send({ message: 'No method or ID provided' }, { status: 400, }) } @@ -26,17 +25,17 @@ export async function menuAction(request: ActionFunctionArgs['request']) { switch (method) { case 'delete': { await del(`v1/node/${id}`, session.get('hsApiKey')!) - return json({ message: 'Machine removed' }) + return { message: 'Machine removed' } } case 'expire': { await post(`v1/node/${id}/expire`, session.get('hsApiKey')!) - return json({ message: 'Machine expired' }) + return { message: 'Machine expired' } } case 'rename': { if (!data.has('name')) { - return json({ message: 'No name provided' }, { + return send({ message: 'No name provided' }, { status: 400, }) } @@ -44,12 +43,12 @@ export async function menuAction(request: ActionFunctionArgs['request']) { const name = String(data.get('name')) await post(`v1/node/${id}/rename/${name}`, session.get('hsApiKey')!) - return json({ message: 'Machine renamed' }) + return { message: 'Machine renamed' } } case 'routes': { if (!data.has('route') || !data.has('enabled')) { - return json({ message: 'No route or enabled provided' }, { + return send({ message: 'No route or enabled provided' }, { status: 400, }) } @@ -59,12 +58,12 @@ export async function menuAction(request: ActionFunctionArgs['request']) { const postfix = enabled ? 'enable' : 'disable' await post(`v1/routes/${route}/${postfix}`, session.get('hsApiKey')!) - return json({ message: 'Route updated' }) + return { message: 'Route updated' } } case 'exit-node': { if (!data.has('routes') || !data.has('enabled')) { - return json({ message: 'No route or enabled provided' }, { + return send({ message: 'No route or enabled provided' }, { status: 400, }) } @@ -77,12 +76,12 @@ export async function menuAction(request: ActionFunctionArgs['request']) { await post(`v1/routes/${route}/${postfix}`, session.get('hsApiKey')!) })) - return json({ message: 'Exit node updated' }) + return { message: 'Exit node updated' } } case 'move': { if (!data.has('to')) { - return json({ message: 'No destination provided' }, { + return send({ message: 'No destination provided' }, { status: 400, }) } @@ -91,9 +90,9 @@ export async function menuAction(request: ActionFunctionArgs['request']) { try { await post(`v1/node/${id}/user?user=${to}`, session.get('hsApiKey')!) - return json({ message: `Moved node ${id} to ${to}` }) + return { message: `Moved node ${id} to ${to}` } } catch { - return json({ message: `Failed to move node ${id} to ${to}` }, { + return send({ message: `Failed to move node ${id} to ${to}` }, { status: 500, }) } @@ -110,10 +109,10 @@ export async function menuAction(request: ActionFunctionArgs['request']) { tags, }) - return json({ message: 'Tags updated' }) + return { message: 'Tags updated' } } catch (error) { log.debug('APIC', 'Failed to update tags: %s', error) - return json({ message: 'Failed to update tags' }, { + return send({ message: 'Failed to update tags' }, { status: 500, }) } @@ -124,13 +123,13 @@ export async function menuAction(request: ActionFunctionArgs['request']) { const user = data.get('user')?.toString() if (!key) { - return json({ message: 'No machine key provided' }, { + return send({ message: 'No machine key provided' }, { status: 400, }) } if (!user) { - return json({ message: 'No user provided' }, { + return send({ message: 'No user provided' }, { status: 400, }) } @@ -145,12 +144,12 @@ export async function menuAction(request: ActionFunctionArgs['request']) { user, key, }) - return json({ + return { success: true, message: 'Machine registered' - }) + } } catch { - return json({ + return send({ success: false, message: 'Failed to register machine' }, { @@ -160,7 +159,7 @@ export async function menuAction(request: ActionFunctionArgs['request']) { } default: { - return json({ message: 'Invalid method' }, { + return send({ message: 'Invalid method' }, { status: 400, }) } diff --git a/app/routes/_data.settings.auth-keys._index/route.tsx b/app/routes/_data.settings.auth-keys._index/route.tsx index 5118bd6..ff409b7 100644 --- a/app/routes/_data.settings.auth-keys._index/route.tsx +++ b/app/routes/_data.settings.auth-keys._index/route.tsx @@ -1,4 +1,4 @@ -import { LoaderFunctionArgs, ActionFunctionArgs, json } from '@remix-run/node' +import { LoaderFunctionArgs, ActionFunctionArgs } from '@remix-run/node' import { useLoaderData } from '@remix-run/react' import { useLiveData } from '~/utils/useLiveData' import { getSession } from '~/utils/sessions' @@ -7,6 +7,7 @@ import { PreAuthKey, User } from '~/types' import { pull, post } from '~/utils/headscale' import { loadContext } from '~/utils/config/headplane' import { useState } from 'react' +import { send } from '~/utils/res' import Link from '~/components/Link' import TableList from '~/components/TableList' @@ -19,7 +20,7 @@ import AuthKeyRow from './key' export async function action({ request }: ActionFunctionArgs) { const session = await getSession(request.headers.get('Cookie')) if (!session.has('hsApiKey')) { - return json({ message: 'Unauthorized' }, { + return send({ message: 'Unauthorized' }, { status: 401, }) } @@ -32,7 +33,7 @@ export async function action({ request }: ActionFunctionArgs) { const user = data.get('user') if (!key || !user) { - return json({ message: 'Missing parameters' }, { + return send({ message: 'Missing parameters' }, { status: 400, }) } @@ -46,7 +47,7 @@ export async function action({ request }: ActionFunctionArgs) { } ) - return json({ message: 'Pre-auth key expired' }) + return { message: 'Pre-auth key expired' } } // Creating a new pre-auth key @@ -57,7 +58,7 @@ export async function action({ request }: ActionFunctionArgs) { const ephemeral = data.get('ephemeral') if (!user || !expiry || !reusable || !ephemeral) { - return json({ message: 'Missing parameters' }, { + return send({ message: 'Missing parameters' }, { status: 400, }) } @@ -80,7 +81,7 @@ export async function action({ request }: ActionFunctionArgs) { } ) - return json({ message: 'Pre-auth key created', key }) + return { message: 'Pre-auth key created', key } } } diff --git a/app/routes/_data.users._index/route.tsx b/app/routes/_data.users._index/route.tsx index 7a5039b..4d2a4ae 100644 --- a/app/routes/_data.users._index/route.tsx +++ b/app/routes/_data.users._index/route.tsx @@ -1,7 +1,7 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ import { DataRef, DndContext, useDraggable, useDroppable } from '@dnd-kit/core' import { PersonIcon } from '@primer/octicons-react' -import { ActionFunctionArgs, json, LoaderFunctionArgs } from '@remix-run/node' +import { ActionFunctionArgs, LoaderFunctionArgs } from '@remix-run/node' import { useActionData, useLoaderData, useSubmit } from '@remix-run/react' import { useEffect, useState } from 'react' import { ClientOnly } from 'remix-utils/client-only' @@ -17,6 +17,7 @@ import { loadConfig } from '~/utils/config/headscale' import { del, post, pull } from '~/utils/headscale' import { getSession } from '~/utils/sessions' import { useLiveData } from '~/utils/useLiveData' +import { send } from '~/utils/res' import Auth from './auth' import Oidc from './oidc' @@ -56,16 +57,12 @@ export async function loader({ request }: LoaderFunctionArgs) { export async function action({ request }: ActionFunctionArgs) { const session = await getSession(request.headers.get('Cookie')) if (!session.has('hsApiKey')) { - return json({ message: 'Unauthorized' }, { - status: 401, - }) + return send({ message: 'Unauthorized' }, 401) } const data = await request.formData() if (!data.has('_method')) { - return json({ message: 'No method provided' }, { - status: 400, - }) + return send({ message: 'No method provided' }, 400) } const method = String(data.get('_method')) @@ -73,9 +70,7 @@ export async function action({ request }: ActionFunctionArgs) { switch (method) { case 'create': { if (!data.has('username')) { - return json({ message: 'No name provided' }, { - status: 400, - }) + return send({ message: 'No name provided' }, 400) } const username = String(data.get('username')) @@ -83,39 +78,33 @@ export async function action({ request }: ActionFunctionArgs) { name: username, }) - return json({ message: `User ${username} created` }) + return { message: `User ${username} created` } } case 'delete': { if (!data.has('username')) { - return json({ message: 'No name provided' }, { - status: 400, - }) + return send({ message: 'No name provided' }, 400) } const username = String(data.get('username')) await del(`v1/user/${username}`, session.get('hsApiKey')!) - return json({ message: `User ${username} deleted` }) + return { message: `User ${username} deleted` } } case 'rename': { if (!data.has('old') || !data.has('new')) { - return json({ message: 'No old or new name provided' }, { - status: 400, - }) + return send({ message: 'No old or new name provided' }, 400) } const old = String(data.get('old')) const newName = String(data.get('new')) await post(`v1/user/${old}/rename/${newName}`, session.get('hsApiKey')!) - return json({ message: `User ${old} renamed to ${newName}` }) + return { message: `User ${old} renamed to ${newName}` } } case 'move': { if (!data.has('id') || !data.has('to') || !data.has('name')) { - return json({ message: 'No ID or destination provided' }, { - status: 400, - }) + return send({ message: 'No ID or destination provided' }, 400) } const id = String(data.get('id')) @@ -124,18 +113,14 @@ export async function action({ request }: ActionFunctionArgs) { try { await post(`v1/node/${id}/user?user=${to}`, session.get('hsApiKey')!) - return json({ message: `Moved ${name} to ${to}` }) + return { message: `Moved ${name} to ${to}` } } catch { - return json({ message: `Failed to move ${name} to ${to}` }, { - status: 500, - }) + return send({ message: `Failed to move ${name} to ${to}` }, 500) } } default: { - return json({ message: 'Invalid method' }, { - status: 400, - }) + return send({ message: 'Invalid method' }, 400) } } } diff --git a/app/routes/login.tsx b/app/routes/login.tsx index 7a72a37..67a0e13 100644 --- a/app/routes/login.tsx +++ b/app/routes/login.tsx @@ -1,4 +1,4 @@ -import { type ActionFunctionArgs, json, type LoaderFunctionArgs, redirect } from '@remix-run/node' +import { ActionFunctionArgs, LoaderFunctionArgs, redirect } from '@remix-run/node' import { Form, useActionData, useLoaderData } from '@remix-run/react' import { useMemo } from 'react' @@ -6,7 +6,7 @@ import Button from '~/components/Button' import Card from '~/components/Card' import Code from '~/components/Code' import TextField from '~/components/TextField' -import { type Key } from '~/types' +import { Key } from '~/types' import { loadContext } from '~/utils/config/headplane' import { pull } from '~/utils/headscale' import { startOidc } from '~/utils/oidc' @@ -81,9 +81,9 @@ export async function action({ request }: ActionFunctionArgs) { }, }) } catch { - return json({ + return { error: 'Invalid API key', - }) + } } } diff --git a/app/utils/res.ts b/app/utils/res.ts new file mode 100644 index 0000000..5329a19 --- /dev/null +++ b/app/utils/res.ts @@ -0,0 +1,5 @@ +import { data } from '@remix-run/node' + +export function send(payload: T, init?: number | ResponseInit) { + return data(payload, init) +} diff --git a/package.json b/package.json index 15b48cf..f89d56a 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "@primer/octicons-react": "^19.12.0", "@react-aria/toast": "3.0.0-beta.12", "@react-stately/toast": "3.0.0-beta.4", - "@remix-run/node": "^2.13.1", - "@remix-run/react": "^2.13.1", + "@remix-run/node": "^2.15.0", + "@remix-run/react": "^2.15.0", "@shopify/lang-jsonc": "^1.0.0", "@uiw/codemirror-theme-github": "^4.23.6", "@uiw/react-codemirror": "^4.23.6", @@ -41,7 +41,9 @@ "zod": "^3.23.8" }, "devDependencies": { - "@remix-run/dev": "^2.13.1", + "@remix-run/dev": "^2.15.0", + "@remix-run/fs-routes": "^2.15.0", + "@remix-run/route-config": "^2.15.0", "@types/react": "npm:types-react@beta", "@types/react-dom": "npm:types-react-dom@beta", "autoprefixer": "^10.4.20", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 258ff0b..8760218 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,11 +41,11 @@ importers: specifier: 3.0.0-beta.4 version: 3.0.0-beta.4(react@19.0.0-beta-26f2496093-20240514) '@remix-run/node': - specifier: ^2.13.1 - version: 2.13.1(typescript@5.6.3) + specifier: ^2.15.0 + version: 2.15.0(typescript@5.6.3) '@remix-run/react': - specifier: ^2.13.1 - version: 2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3) + specifier: ^2.15.0 + version: 2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3) '@shopify/lang-jsonc': specifier: ^1.0.0 version: 1.0.0(patch_hash=kv4he7q622clo6pnx2dz7va2yu) @@ -87,7 +87,7 @@ importers: version: 4.1.2(react@19.0.0-beta-26f2496093-20240514) remix-utils: specifier: ^7.7.0 - version: 7.7.0(@remix-run/node@2.13.1(typescript@5.6.3))(@remix-run/react@2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@remix-run/router@1.20.0)(react@19.0.0-beta-26f2496093-20240514)(zod@3.23.8) + version: 7.7.0(@remix-run/node@2.15.0(typescript@5.6.3))(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@remix-run/router@1.21.0)(react@19.0.0-beta-26f2496093-20240514)(zod@3.23.8) tailwind-merge: specifier: ^2.5.4 version: 2.5.4 @@ -108,8 +108,14 @@ importers: version: 3.23.8 devDependencies: '@remix-run/dev': - specifier: ^2.13.1 - version: 2.13.1(@remix-run/react@2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@remix-run/serve@2.13.1(typescript@5.6.3))(@types/node@22.8.7)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.7)) + specifier: ^2.15.0 + version: 2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)) + '@remix-run/fs-routes': + specifier: ^2.15.0 + version: 2.15.0(@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)))(@remix-run/route-config@2.15.0(@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)))(typescript@5.6.3))(typescript@5.6.3) + '@remix-run/route-config': + specifier: ^2.15.0 + version: 2.15.0(@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)))(typescript@5.6.3) '@types/react': specifier: npm:types-react@beta version: types-react@19.0.0-beta.1 @@ -136,13 +142,13 @@ importers: version: 5.6.3 vite: specifier: ^5.4.10 - version: 5.4.10(@types/node@22.8.7) + version: 5.4.10(@types/node@22.10.1) vite-plugin-babel: specifier: ^1.2.0 - version: 1.2.0(@babel/core@7.26.0)(vite@5.4.10(@types/node@22.8.7)) + version: 1.2.0(@babel/core@7.26.0)(vite@5.4.10(@types/node@22.10.1)) vite-tsconfig-paths: specifier: ^5.1.0 - version: 5.1.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.7)) + version: 5.1.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)) packages: @@ -158,8 +164,8 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.2': - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + '@babel/compat-data@7.26.3': + resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': @@ -169,8 +175,8 @@ packages: '@babel/generator@7.2.0': resolution: {integrity: sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==} - '@babel/generator@7.26.2': - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + '@babel/generator@7.26.3': + resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': @@ -215,10 +221,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.25.9': - resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} - engines: {node: '>=6.9.0'} - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} @@ -247,8 +249,8 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.2': - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + '@babel/parser@7.26.3': + resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==} engines: {node: '>=6.0.0'} hasBin: true @@ -270,14 +272,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-modules-commonjs@7.25.9': - resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} + '@babel/plugin-transform-modules-commonjs@7.26.3': + resolution: {integrity: sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.25.9': - resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} + '@babel/plugin-transform-typescript@7.26.3': + resolution: {integrity: sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -300,16 +302,16 @@ packages: resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.9': - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + '@babel/traverse@7.26.4': + resolution: {integrity: sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==} engines: {node: '>=6.9.0'} '@babel/types@7.25.8': resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} - '@babel/types@7.26.0': - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + '@babel/types@7.26.3': + resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} '@codemirror/autocomplete@6.18.2': @@ -714,8 +716,8 @@ packages: peerDependencies: jsep: ^0.4.0||^1.0.0 - '@jspm/core@2.1.0': - resolution: {integrity: sha512-3sRl+pkyFY/kLmHl0cgHiFp2xEqErA8N3ECjMs7serSUBmoJ70lBa0PG5t0IM6WJgdZNyyI0R8YFfi5wM8+mzg==} + '@jspm/core@2.0.1': + resolution: {integrity: sha512-Lg3PnLp0QXpxwLIAuuJboLeRaIhrgJjeuh797QADg3xz8wGLugQOS5DpsE8A6i6Adgzf+bacllkKZG3J0tGfDw==} '@kubernetes/client-node@0.22.2': resolution: {integrity: sha512-PPyzUVunPtgISnWNkCTSLp1SoZ3I13XOanrc8XAQRKp8XTnDF7VT9Sf3/haFmgnpONe4ORCtqrWueGp5fl8yzw==} @@ -1286,13 +1288,13 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - '@remix-run/dev@2.13.1': - resolution: {integrity: sha512-7+06Dail6zMyRlRvgrZ4cmQjs2gUb+M24iP4jbmql+0B7VAAPwzCRU0x+BF5z8GSef13kDrH3iXv/BQ2O2yOgw==} + '@remix-run/dev@2.15.0': + resolution: {integrity: sha512-iXV6u9PBwFc7KriDpVcjqLGJzZZd6ZOrxewen7hoH0OBzGwjkhtm46BTQEJrZ/e/dzlU1IU/0ylH29tN9BZoyg==} engines: {node: '>=18.0.0'} hasBin: true peerDependencies: - '@remix-run/react': ^2.13.1 - '@remix-run/serve': ^2.13.1 + '@remix-run/react': ^2.15.0 + '@remix-run/serve': ^2.15.0 typescript: ^5.1.0 vite: ^5.1.0 wrangler: ^3.28.2 @@ -1306,18 +1308,19 @@ packages: wrangler: optional: true - '@remix-run/express@2.13.1': - resolution: {integrity: sha512-yl3/BSJ8eyvwUyWCLDq3NlS81mZFll9hnADNuSCCBrQgkMhEx7stk5JUmWdvmcmGqHw04Ahkq07ZqJeD4F1FMA==} + '@remix-run/fs-routes@2.15.0': + resolution: {integrity: sha512-AEGno1LRjxmiaWC64TN5gPwUwnBQr3lF5jzbm2tsRwl+qPbYCq+YPBrfVDcIIDRYOBf/PrByeoWjTMf8WPGGew==} engines: {node: '>=18.0.0'} peerDependencies: - express: ^4.20.0 + '@remix-run/dev': ^2.15.0 + '@remix-run/route-config': ^2.15.0 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@remix-run/node@2.13.1': - resolution: {integrity: sha512-2ly7bENj2n2FNBdEN60ZEbNCs5dAOex/QJoo6EZ8RNFfUQxVKAZkMwfQ4ETV2SLWDgkRLj3Jo5n/dx7O2ZGhGw==} + '@remix-run/node@2.15.0': + resolution: {integrity: sha512-tWbR7pQ6gwj+MkGf6WVIYnjgfGfpdU8EOIa6xsCIRlrm0p3BtMz4jA3GvBWEpOuEnN5MV7CarVzhduaRzkZ0SQ==} engines: {node: '>=18.0.0'} peerDependencies: typescript: ^5.1.0 @@ -1325,8 +1328,8 @@ packages: typescript: optional: true - '@remix-run/react@2.13.1': - resolution: {integrity: sha512-kZevCoKMz0ZDOOzTnG95yfM7M9ju38FkWNY1wtxCy+NnUJYrmTerGQtiBsJgMzYD6i29+w4EwoQsdqys7DmMSg==} + '@remix-run/react@2.15.0': + resolution: {integrity: sha512-puqDbi9N/WfaUhzDnw2pACXtCB7ukrtFJ9ILwpEuhlaTBpjefifJ89igokW+tt1ePphIFMivAm/YspcbZdCQsA==} engines: {node: '>=18.0.0'} peerDependencies: react: ^18.0.0 @@ -1336,17 +1339,22 @@ packages: typescript: optional: true - '@remix-run/router@1.20.0': - resolution: {integrity: sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==} + '@remix-run/route-config@2.15.0': + resolution: {integrity: sha512-i1m17W5jpOXsH5NyZfudHk89qOom/67faYX31qI8Zzv8fgj1hM2NYGoExcpumhL2tvMKSpEW4oE+95adrCGpGw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@remix-run/dev': ^2.15.0 + typescript: ^5.1.0 + peerDependenciesMeta: + typescript: + optional: true + + '@remix-run/router@1.21.0': + resolution: {integrity: sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==} engines: {node: '>=14.0.0'} - '@remix-run/serve@2.13.1': - resolution: {integrity: sha512-lKCU1ZnHaGknRAYII5PQOGch9xzK3Q68mcyN8clN6WoKQTn5fvWVE1nEDd1L7vyt5LPVI2b7HNQtVMow1g1vHg==} - engines: {node: '>=18.0.0'} - hasBin: true - - '@remix-run/server-runtime@2.13.1': - resolution: {integrity: sha512-2DfBPRcHKVzE4bCNsNkKB50BhCCKF73x+jiS836OyxSIAL+x0tguV2AEjmGXefEXc5AGGzoxkus0AUUEYa29Vg==} + '@remix-run/server-runtime@2.15.0': + resolution: {integrity: sha512-FuM8vAg1sPskf4wn0ivbuj/7s9Qdh2wnKu+sVXqYz0a95gH5b73TuMzk6n3NMSkFVKKc6+UmlG1WLYre7L2LTg==} engines: {node: '>=18.0.0'} peerDependencies: typescript: ^5.1.0 @@ -1502,8 +1510,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@22.8.7': - resolution: {integrity: sha512-LidcG+2UeYIWcMuMUpBKOnryBWG/rnmOHQR5apjn8myTQcx3rinFRn7DcIFhMnS0PPFSC6OafdIKEad0lj6U0Q==} + '@types/node@22.10.1': + resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -1555,8 +1563,8 @@ packages: '@vanilla-extract/babel-plugin-debug-ids@1.1.0': resolution: {integrity: sha512-Zy9bKjaL2P5zsrFYQJ8IjWGlFODmZrpvFmjFE0Zv8om55Pz1JtpJtL6DvlxlWUxbVaP1HKCqsmEfFOZN8fX/ZQ==} - '@vanilla-extract/css@1.16.0': - resolution: {integrity: sha512-05JTbvG1E0IrSZKZ5el2EM9CmAX0XSdsNY+d4aRZxDvYf3/hwxomvFFEz2b/awjgg9yTVHW83Wq19wE4OoTEMg==} + '@vanilla-extract/css@1.16.1': + resolution: {integrity: sha512-3jKxH5ty/ZjmGoLAx8liY7e87FRCIJfnuufX/K9fQklu0YHP3ClrNisU++LkZuD+GZleqMSAQMF0r8Otln+OPQ==} '@vanilla-extract/integration@6.5.0': resolution: {integrity: sha512-E2YcfO8vA+vs+ua+gpvy1HRqvgWbI+MTlUpxA8FvatOvybuNcWAY0CKwQ/Gpj7rswYKtC6C7+xw33emM6/ImdQ==} @@ -1678,10 +1686,6 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - basic-auth@2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} @@ -1733,8 +1737,12 @@ packages: resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + call-bind-apply-helpers@1.0.0: + resolution: {integrity: sha512-CCKAP2tkPau7D3GE8+V8R6sQubA9R5foIzGp+85EXCVSCivuxBNAWqcpn72PKYiIcqoViv/kcUDpaEIMBVi1lQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} camelcase-css@2.0.1: @@ -1831,14 +1839,6 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} - compressible@2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - - compression@1.7.5: - resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} - engines: {node: '>= 0.8.0'} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -1881,6 +1881,10 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -1918,6 +1922,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -2019,11 +2032,11 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} - esbuild-plugins-node-modules-polyfill@1.6.7: - resolution: {integrity: sha512-1lzsVFT/6OO1ZATHKZqSP+qYzyFo2d+QF9QzMKsyJR7GMRScYizYb1uEEE4NxTsBSxWviY3xnmN9dEOTaKFbJA==} + esbuild-plugins-node-modules-polyfill@1.6.8: + resolution: {integrity: sha512-bRB4qbgUDWrdY1eMk123KiaCSW9VzQ+QLZrmU7D//cCFkmksPd9mUMpmWoFK/rxjIeTfTSOpKCoGoimlvI+AWw==} engines: {node: '>=14.0.0'} peerDependencies: - esbuild: '>=0.14.0 <=0.23.x' + esbuild: '>=0.14.0 <=0.24.x' esbuild@0.17.6: resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==} @@ -2087,8 +2100,8 @@ packages: resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} engines: {node: '>=6'} - express@4.21.1: - resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} + express@4.21.2: + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} engines: {node: '>= 0.10.0'} extend@3.0.2: @@ -2222,6 +2235,10 @@ packages: gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2253,6 +2270,10 @@ packages: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -2267,8 +2288,8 @@ packages: hast-util-whitespace@2.0.1: resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} - hosted-git-info@6.1.1: - resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + hosted-git-info@6.1.3: + resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} http-errors@2.0.0: @@ -2391,8 +2412,8 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} - is-reference@3.0.2: - resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + is-reference@3.0.3: + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} @@ -2513,8 +2534,8 @@ packages: resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} engines: {node: '>= 12.13.0'} - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} locate-path@6.0.0: @@ -2708,10 +2729,6 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - mime-db@1.53.0: - resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} - engines: {node: '>= 0.6'} - mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -2782,15 +2799,11 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.2: - resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} - modern-ahocorasick@1.0.1: - resolution: {integrity: sha512-yoe+JbhTClckZ67b2itRtistFKf8yPYelHLc7e5xAwtNAXxM6wJTUx2C7QeVSJFDzKT7bCIFyBVybPMKvmB9AA==} - - morgan@1.10.0: - resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} - engines: {node: '>= 0.8.0'} + modern-ahocorasick@1.1.0: + resolution: {integrity: sha512-sEKPVl2rM+MNVkGQt3ChdmD8YsigmXdn5NifZn6jiwn9LRJpWm8F3guhaqrJT/JOat6pwpbXEk6kv+b9DMIjsQ==} mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -2818,10 +2831,6 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} - engines: {node: '>= 0.6'} - node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -2874,21 +2883,14 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - - on-finished@2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} + object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} + engines: {node: '>= 0.4'} on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} - on-headers@1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2950,8 +2952,8 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} - path-to-regexp@0.1.10: - resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + path-to-regexp@0.1.12: + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -3028,14 +3030,14 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-modules-local-by-default@4.0.5: - resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + postcss-modules-local-by-default@4.1.0: + resolution: {integrity: sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 - postcss-modules-scope@3.2.0: - resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 @@ -3046,8 +3048,8 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-modules@6.0.0: - resolution: {integrity: sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==} + postcss-modules@6.0.1: + resolution: {integrity: sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ==} peerDependencies: postcss: ^8.0.0 @@ -3061,6 +3063,10 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} + postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + engines: {node: '>=4'} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -3182,15 +3188,15 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-router-dom@6.27.0: - resolution: {integrity: sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==} + react-router-dom@6.28.0: + resolution: {integrity: sha512-kQ7Unsl5YdyOltsPGl31zOjLrDv+m2VcIEcIHqYYD3Lp0UppLjrzcfJqDJwXxFw3TH/yvapbnUvPlAj7Kx5nbg==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' - react-router@6.27.0: - resolution: {integrity: sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==} + react-router@6.28.0: + resolution: {integrity: sha512-HrYdIFqdrnhDw0PqG/AKjAqEqM7AvxCz0DQ4h2W8k6nqmc5uRBYDag0SBxx9iYz5G8gnuNVLzUe13wl9eAsXXg==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' @@ -3278,8 +3284,8 @@ packages: require-like@0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + resolve.exports@2.0.3: + resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} resolve@1.22.8: @@ -3406,8 +3412,8 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.17: - resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} @@ -3613,8 +3619,8 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} undici@6.20.1: resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==} @@ -3703,6 +3709,14 @@ packages: engines: {node: '>=8'} hasBin: true + valibot@0.41.0: + resolution: {integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3787,8 +3801,8 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + which-typed-array@1.1.16: + resolution: {integrity: sha512-g+N+GAWiRj66DngFwHvISJd+ITsyphZvD1vChfVg6cEdnzy53GzB3oy0fUNlvhz7H7+MiqhYr26qxQShCpKTTQ==} engines: {node: '>= 0.4'} which@2.0.2: @@ -3886,22 +3900,22 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.2': {} + '@babel/compat-data@7.26.3': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 + '@babel/generator': 7.26.3 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.4.0 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3916,21 +3930,21 @@ snapshots: source-map: 0.5.7 trim-right: 1.0.1 - '@babel/generator@7.26.2': + '@babel/generator@7.26.3': dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/compat-data': 7.26.2 + '@babel/compat-data': 7.26.3 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -3944,22 +3958,22 @@ snapshots: '@babel/helper-optimise-call-expression': 7.25.9 '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color @@ -3968,13 +3982,13 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@babel/helper-plugin-utils@7.25.9': {} @@ -3983,21 +3997,14 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.25.9 '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/helper-simple-access@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 transitivePeerDependencies: - supports-color @@ -4014,11 +4021,11 @@ snapshots: '@babel/helpers@7.26.0': dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 - '@babel/parser@7.26.2': + '@babel/parser@7.26.3': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.26.3 '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': dependencies: @@ -4035,16 +4042,15 @@ snapshots: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-modules-commonjs@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-simple-access': 7.25.9 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-transform-typescript@7.26.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-annotate-as-pure': 7.25.9 @@ -4061,8 +4067,8 @@ snapshots: '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-validator-option': 7.25.9 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.3(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -4077,17 +4083,17 @@ snapshots: '@babel/template@7.25.9': dependencies: '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.3 + '@babel/types': 7.26.3 - '@babel/traverse@7.25.9': + '@babel/traverse@7.26.4': dependencies: '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7 + '@babel/types': 7.26.3 + debug: 4.4.0 globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -4098,7 +4104,7 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 - '@babel/types@7.26.0': + '@babel/types@7.26.3': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 @@ -4415,7 +4421,7 @@ snapshots: dependencies: jsep: 1.3.9 - '@jspm/core@2.1.0': {} + '@jspm/core@2.0.1': {} '@kubernetes/client-node@0.22.2': dependencies: @@ -4500,7 +4506,7 @@ snapshots: dependencies: '@npmcli/git': 4.1.0 glob: 10.4.5 - hosted-git-info: 6.1.1 + hosted-git-info: 6.1.3 json-parse-even-better-errors: 3.0.2 normalize-package-data: 5.0.0 proc-log: 3.0.0 @@ -5453,36 +5459,36 @@ snapshots: '@react-types/shared': 3.23.1(react@19.0.0-beta-26f2496093-20240514) react: 19.0.0-beta-26f2496093-20240514 - '@remix-run/dev@2.13.1(@remix-run/react@2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@remix-run/serve@2.13.1(typescript@5.6.3))(@types/node@22.8.7)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.7))': + '@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1))': dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 + '@babel/generator': 7.26.3 + '@babel/parser': 7.26.3 '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/traverse': 7.26.4 + '@babel/types': 7.26.3 '@mdx-js/mdx': 2.3.0 '@npmcli/package-json': 4.0.1 - '@remix-run/node': 2.13.1(typescript@5.6.3) - '@remix-run/react': 2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3) - '@remix-run/router': 1.20.0 - '@remix-run/server-runtime': 2.13.1(typescript@5.6.3) + '@remix-run/node': 2.15.0(typescript@5.6.3) + '@remix-run/react': 2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3) + '@remix-run/router': 1.21.0 + '@remix-run/server-runtime': 2.15.0(typescript@5.6.3) '@types/mdx': 2.0.13 - '@vanilla-extract/integration': 6.5.0(@types/node@22.8.7) + '@vanilla-extract/integration': 6.5.0(@types/node@22.10.1) arg: 5.0.2 cacache: 17.1.4 chalk: 4.1.2 chokidar: 3.6.0 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 dotenv: 16.4.5 es-module-lexer: 1.5.4 esbuild: 0.17.6 - esbuild-plugins-node-modules-polyfill: 1.6.7(esbuild@0.17.6) + esbuild-plugins-node-modules-polyfill: 1.6.8(esbuild@0.17.6) execa: 5.1.1 exit-hook: 2.2.1 - express: 4.21.1 + express: 4.21.2 fs-extra: 10.1.0 get-port: 5.1.1 gunzip-maybe: 1.4.2 @@ -5498,7 +5504,7 @@ snapshots: postcss: 8.4.47 postcss-discard-duplicates: 5.1.0(postcss@8.4.47) postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-modules: 6.0.0(postcss@8.4.47) + postcss-modules: 6.0.1(postcss@8.4.47) prettier: 2.8.8 pretty-ms: 7.0.1 react-refresh: 0.14.2 @@ -5508,11 +5514,12 @@ snapshots: set-cookie-parser: 2.7.1 tar-fs: 2.1.1 tsconfig-paths: 4.2.0 + valibot: 0.41.0(typescript@5.6.3) + vite-node: 1.6.0(@types/node@22.10.1) ws: 7.5.10 optionalDependencies: - '@remix-run/serve': 2.13.1(typescript@5.6.3) typescript: 5.6.3 - vite: 5.4.10(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.10.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5529,17 +5536,16 @@ snapshots: - ts-node - utf-8-validate - '@remix-run/express@2.13.1(express@4.21.1)(typescript@5.6.3)': + '@remix-run/fs-routes@2.15.0(@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)))(@remix-run/route-config@2.15.0(@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)))(typescript@5.6.3))(typescript@5.6.3)': dependencies: - '@remix-run/node': 2.13.1(typescript@5.6.3) - express: 4.21.1 + '@remix-run/dev': 2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)) + '@remix-run/route-config': 2.15.0(@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)))(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 - optional: true - '@remix-run/node@2.13.1(typescript@5.6.3)': + '@remix-run/node@2.15.0(typescript@5.6.3)': dependencies: - '@remix-run/server-runtime': 2.13.1(typescript@5.6.3) + '@remix-run/server-runtime': 2.15.0(typescript@5.6.3) '@remix-run/web-fetch': 4.4.2 '@web3-storage/multipart-parser': 1.0.0 cookie-signature: 1.2.2 @@ -5549,38 +5555,30 @@ snapshots: optionalDependencies: typescript: 5.6.3 - '@remix-run/react@2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3)': + '@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3)': dependencies: - '@remix-run/router': 1.20.0 - '@remix-run/server-runtime': 2.13.1(typescript@5.6.3) + '@remix-run/router': 1.21.0 + '@remix-run/server-runtime': 2.15.0(typescript@5.6.3) react: 19.0.0-beta-26f2496093-20240514 react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) - react-router: 6.27.0(react@19.0.0-beta-26f2496093-20240514) - react-router-dom: 6.27.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) + react-router: 6.28.0(react@19.0.0-beta-26f2496093-20240514) + react-router-dom: 6.28.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514) turbo-stream: 2.4.0 optionalDependencies: typescript: 5.6.3 - '@remix-run/router@1.20.0': {} - - '@remix-run/serve@2.13.1(typescript@5.6.3)': + '@remix-run/route-config@2.15.0(@remix-run/dev@2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)))(typescript@5.6.3)': dependencies: - '@remix-run/express': 2.13.1(express@4.21.1)(typescript@5.6.3) - '@remix-run/node': 2.13.1(typescript@5.6.3) - chokidar: 3.6.0 - compression: 1.7.5 - express: 4.21.1 - get-port: 5.1.1 - morgan: 1.10.0 - source-map-support: 0.5.21 - transitivePeerDependencies: - - supports-color - - typescript - optional: true + '@remix-run/dev': 2.15.0(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@types/node@22.10.1)(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)) + lodash: 4.17.21 + optionalDependencies: + typescript: 5.6.3 - '@remix-run/server-runtime@2.13.1(typescript@5.6.3)': + '@remix-run/router@1.21.0': {} + + '@remix-run/server-runtime@2.15.0(typescript@5.6.3)': dependencies: - '@remix-run/router': 1.20.0 + '@remix-run/router': 1.21.0 '@types/cookie': 0.6.0 '@web3-storage/multipart-parser': 1.0.0 cookie: 0.6.0 @@ -5720,9 +5718,9 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@22.8.7': + '@types/node@22.10.1': dependencies: - undici-types: 6.19.8 + undici-types: 6.20.0 '@types/prop-types@15.7.12': {} @@ -5786,7 +5784,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@vanilla-extract/css@1.16.0': + '@vanilla-extract/css@1.16.1': dependencies: '@emotion/hash': 0.9.2 '@vanilla-extract/private': 1.0.6 @@ -5798,26 +5796,26 @@ snapshots: deepmerge: 4.3.1 lru-cache: 10.4.3 media-query-parser: 2.0.2 - modern-ahocorasick: 1.0.1 + modern-ahocorasick: 1.1.0 picocolors: 1.1.1 transitivePeerDependencies: - babel-plugin-macros - '@vanilla-extract/integration@6.5.0(@types/node@22.8.7)': + '@vanilla-extract/integration@6.5.0(@types/node@22.10.1)': dependencies: '@babel/core': 7.26.0 '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) '@vanilla-extract/babel-plugin-debug-ids': 1.1.0 - '@vanilla-extract/css': 1.16.0 + '@vanilla-extract/css': 1.16.1 esbuild: 0.17.6 eval: 0.1.8 find-up: 5.0.0 javascript-stringify: 2.1.0 lodash: 4.17.21 - mlly: 1.7.2 + mlly: 1.7.3 outdent: 0.8.0 - vite: 5.4.10(@types/node@22.8.7) - vite-node: 1.6.0(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.10.1) + vite-node: 1.6.0(@types/node@22.10.1) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5937,11 +5935,6 @@ snapshots: base64-js@1.5.1: {} - basic-auth@2.0.1: - dependencies: - safe-buffer: 5.1.2 - optional: true - bcrypt-pbkdf@1.0.2: dependencies: tweetnacl: 0.14.5 @@ -6018,11 +6011,15 @@ snapshots: tar: 6.2.1 unique-filename: 3.0.0 - call-bind@1.0.7: + call-bind-apply-helpers@1.0.0: dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.0 + es-define-property: 1.0.0 get-intrinsic: 1.2.4 set-function-length: 1.2.2 @@ -6111,24 +6108,6 @@ snapshots: commander@4.1.1: {} - compressible@2.0.18: - dependencies: - mime-db: 1.53.0 - optional: true - - compression@1.7.5: - dependencies: - bytes: 3.1.2 - compressible: 2.0.18 - debug: 2.6.9 - negotiator: 0.6.4 - on-headers: 1.0.2 - safe-buffer: 5.2.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - optional: true - confbox@0.1.8: {} content-disposition@0.5.4: @@ -6159,6 +6138,12 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + css-what@6.1.0: {} cssesc@3.0.0: {} @@ -6179,6 +6164,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.0: + dependencies: + ms: 2.1.3 + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -6255,12 +6244,12 @@ snapshots: es-module-lexer@1.5.4: {} - esbuild-plugins-node-modules-polyfill@1.6.7(esbuild@0.17.6): + esbuild-plugins-node-modules-polyfill@1.6.8(esbuild@0.17.6): dependencies: - '@jspm/core': 2.1.0 + '@jspm/core': 2.0.1 esbuild: 0.17.6 - local-pkg: 0.5.0 - resolve.exports: 2.0.2 + local-pkg: 0.5.1 + resolve.exports: 2.0.3 esbuild@0.17.6: optionalDependencies: @@ -6354,14 +6343,14 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 22.8.7 + '@types/node': 22.10.1 require-like: 0.1.2 event-target-shim@5.0.1: {} execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -6373,7 +6362,7 @@ snapshots: exit-hook@2.2.1: {} - express@4.21.1: + express@4.21.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 @@ -6394,7 +6383,7 @@ snapshots: methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.10 + path-to-regexp: 0.1.12 proxy-addr: 2.0.7 qs: 6.13.0 range-parser: 1.2.1 @@ -6547,6 +6536,8 @@ snapshots: dependencies: get-intrinsic: 1.2.4 + gopd@1.2.0: {} + graceful-fs@4.2.11: {} gunzip-maybe@1.4.2: @@ -6575,9 +6566,11 @@ snapshots: has-symbols@1.0.3: {} + has-symbols@1.1.0: {} + has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 hasown@2.0.2: dependencies: @@ -6605,7 +6598,7 @@ snapshots: hast-util-whitespace@2.0.1: {} - hosted-git-info@6.1.1: + hosted-git-info@6.1.3: dependencies: lru-cache: 7.18.3 @@ -6665,7 +6658,7 @@ snapshots: is-arguments@1.1.1: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 has-tostringtag: 1.0.2 is-binary-path@2.1.0: @@ -6708,7 +6701,7 @@ snapshots: is-plain-obj@4.1.0: {} - is-reference@3.0.2: + is-reference@3.0.3: dependencies: '@types/estree': 1.0.6 @@ -6716,7 +6709,7 @@ snapshots: is-typed-array@1.1.13: dependencies: - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 is-typedarray@1.0.0: {} @@ -6800,9 +6793,9 @@ snapshots: loader-utils@3.3.1: {} - local-pkg@0.5.0: + local-pkg@0.5.1: dependencies: - mlly: 1.7.2 + mlly: 1.7.3 pkg-types: 1.2.1 locate-path@6.0.0: @@ -7153,7 +7146,7 @@ snapshots: micromark@3.2.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.7 + debug: 4.4.0 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -7179,9 +7172,6 @@ snapshots: mime-db@1.52.0: {} - mime-db@1.53.0: - optional: true - mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -7234,25 +7224,14 @@ snapshots: mkdirp@3.0.1: {} - mlly@1.7.2: + mlly@1.7.3: dependencies: acorn: 8.14.0 pathe: 1.1.2 pkg-types: 1.2.1 ufo: 1.5.4 - modern-ahocorasick@1.0.1: {} - - morgan@1.10.0: - dependencies: - basic-auth: 2.0.1 - debug: 2.6.9 - depd: 2.0.0 - on-finished: 2.3.0 - on-headers: 1.0.2 - transitivePeerDependencies: - - supports-color - optional: true + modern-ahocorasick@1.1.0: {} mri@1.2.0: {} @@ -7272,14 +7251,11 @@ snapshots: negotiator@0.6.3: {} - negotiator@0.6.4: - optional: true - node-releases@2.0.18: {} normalize-package-data@5.0.0: dependencies: - hosted-git-info: 6.1.1 + hosted-git-info: 6.1.3 is-core-module: 2.15.1 semver: 7.6.3 validate-npm-package-license: 3.0.4 @@ -7296,7 +7272,7 @@ snapshots: npm-package-arg@10.1.0: dependencies: - hosted-git-info: 6.1.1 + hosted-git-info: 6.1.3 proc-log: 3.0.0 semver: 7.6.3 validate-npm-package-name: 5.0.1 @@ -7323,20 +7299,12 @@ snapshots: object-hash@3.0.0: {} - object-inspect@1.13.1: {} - - on-finished@2.3.0: - dependencies: - ee-first: 1.1.1 - optional: true + object-inspect@1.13.3: {} on-finished@2.4.1: dependencies: ee-first: 1.1.1 - on-headers@1.0.2: - optional: true - once@1.4.0: dependencies: wrappy: 1.0.2 @@ -7407,7 +7375,7 @@ snapshots: lru-cache: 10.2.2 minipass: 7.1.2 - path-to-regexp@0.1.10: {} + path-to-regexp@0.1.12: {} pathe@1.1.2: {} @@ -7423,7 +7391,7 @@ snapshots: dependencies: '@types/estree': 1.0.6 estree-walker: 3.0.3 - is-reference: 3.0.2 + is-reference: 3.0.3 picocolors@1.1.1: {} @@ -7438,7 +7406,7 @@ snapshots: pkg-types@1.2.1: dependencies: confbox: 0.1.8 - mlly: 1.7.2 + mlly: 1.7.3 pathe: 1.1.2 possible-typed-array-names@1.0.0: {} @@ -7470,32 +7438,32 @@ snapshots: dependencies: postcss: 8.4.47 - postcss-modules-local-by-default@4.0.5(postcss@8.4.47): + postcss-modules-local-by-default@4.1.0(postcss@8.4.47): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.0(postcss@8.4.47): + postcss-modules-scope@3.2.1(postcss@8.4.47): dependencies: postcss: 8.4.47 - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.0.0 postcss-modules-values@4.0.0(postcss@8.4.47): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 - postcss-modules@6.0.0(postcss@8.4.47): + postcss-modules@6.0.1(postcss@8.4.47): dependencies: generic-names: 4.0.0 icss-utils: 5.1.0(postcss@8.4.47) lodash.camelcase: 4.3.0 postcss: 8.4.47 postcss-modules-extract-imports: 3.1.0(postcss@8.4.47) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.47) - postcss-modules-scope: 3.2.0(postcss@8.4.47) + postcss-modules-local-by-default: 4.1.0(postcss@8.4.47) + postcss-modules-scope: 3.2.1(postcss@8.4.47) postcss-modules-values: 4.0.0(postcss@8.4.47) string-hash: 1.1.3 @@ -7509,6 +7477,11 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-selector-parser@7.0.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-value-parser@4.2.0: {} postcss@8.4.47: @@ -7686,16 +7659,16 @@ snapshots: react-refresh@0.14.2: {} - react-router-dom@6.27.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): + react-router-dom@6.28.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514): dependencies: - '@remix-run/router': 1.20.0 + '@remix-run/router': 1.21.0 react: 19.0.0-beta-26f2496093-20240514 react-dom: 19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514) - react-router: 6.27.0(react@19.0.0-beta-26f2496093-20240514) + react-router: 6.28.0(react@19.0.0-beta-26f2496093-20240514) - react-router@6.27.0(react@19.0.0-beta-26f2496093-20240514): + react-router@6.28.0(react@19.0.0-beta-26f2496093-20240514): dependencies: - '@remix-run/router': 1.20.0 + '@remix-run/router': 1.21.0 react: 19.0.0-beta-26f2496093-20240514 react-stately@3.31.1(react@19.0.0-beta-26f2496093-20240514): @@ -7789,13 +7762,13 @@ snapshots: mdast-util-to-hast: 12.3.0 unified: 10.1.2 - remix-utils@7.7.0(@remix-run/node@2.13.1(typescript@5.6.3))(@remix-run/react@2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@remix-run/router@1.20.0)(react@19.0.0-beta-26f2496093-20240514)(zod@3.23.8): + remix-utils@7.7.0(@remix-run/node@2.15.0(typescript@5.6.3))(@remix-run/react@2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3))(@remix-run/router@1.21.0)(react@19.0.0-beta-26f2496093-20240514)(zod@3.23.8): dependencies: type-fest: 4.26.1 optionalDependencies: - '@remix-run/node': 2.13.1(typescript@5.6.3) - '@remix-run/react': 2.13.1(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3) - '@remix-run/router': 1.20.0 + '@remix-run/node': 2.15.0(typescript@5.6.3) + '@remix-run/react': 2.15.0(react-dom@19.0.0-beta-26f2496093-20240514(react@19.0.0-beta-26f2496093-20240514))(react@19.0.0-beta-26f2496093-20240514)(typescript@5.6.3) + '@remix-run/router': 1.21.0 react: 19.0.0-beta-26f2496093-20240514 zod: 3.23.8 @@ -7824,7 +7797,7 @@ snapshots: require-like@0.1.2: {} - resolve.exports@2.0.2: {} + resolve.exports@2.0.3: {} resolve@1.22.8: dependencies: @@ -7939,10 +7912,10 @@ snapshots: side-channel@1.0.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.3 signal-exit@3.0.7: {} @@ -7966,16 +7939,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.20 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.20 - spdx-license-ids@3.0.17: {} + spdx-license-ids@3.0.20: {} sshpk@1.18.0: dependencies: @@ -8209,7 +8182,7 @@ snapshots: ufo@1.5.4: {} - undici-types@6.19.8: {} + undici-types@6.20.0: {} undici@6.20.1: {} @@ -8296,7 +8269,7 @@ snapshots: is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.13 - which-typed-array: 1.1.15 + which-typed-array: 1.1.16 utils-merge@1.0.1: {} @@ -8309,6 +8282,10 @@ snapshots: kleur: 4.1.5 sade: 1.8.1 + valibot@0.41.0(typescript@5.6.3): + optionalDependencies: + typescript: 5.6.3 + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -8336,13 +8313,13 @@ snapshots: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - vite-node@1.6.0(@types/node@22.8.7): + vite-node@1.6.0(@types/node@22.10.1): dependencies: cac: 6.7.14 - debug: 4.3.7 + debug: 4.4.0 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.10(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.10.1) transitivePeerDependencies: - '@types/node' - less @@ -8354,29 +8331,29 @@ snapshots: - supports-color - terser - vite-plugin-babel@1.2.0(@babel/core@7.26.0)(vite@5.4.10(@types/node@22.8.7)): + vite-plugin-babel@1.2.0(@babel/core@7.26.0)(vite@5.4.10(@types/node@22.10.1)): dependencies: '@babel/core': 7.26.0 - vite: 5.4.10(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.10.1) - vite-tsconfig-paths@5.1.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.7)): + vite-tsconfig-paths@5.1.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.10.1)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.4(typescript@5.6.3) optionalDependencies: - vite: 5.4.10(@types/node@22.8.7) + vite: 5.4.10(@types/node@22.10.1) transitivePeerDependencies: - supports-color - typescript - vite@5.4.10(@types/node@22.8.7): + vite@5.4.10(@types/node@22.10.1): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.24.4 optionalDependencies: - '@types/node': 22.8.7 + '@types/node': 22.10.1 fsevents: 2.3.3 w3c-keyname@2.2.8: {} @@ -8393,12 +8370,12 @@ snapshots: web-streams-polyfill@3.3.3: {} - which-typed-array@1.1.15: + which-typed-array@1.1.16: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 + call-bind: 1.0.8 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which@2.0.2: diff --git a/vite.config.ts b/vite.config.ts index 668b574..5b97cd9 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,12 +1,9 @@ import { vitePlugin as remix } from '@remix-run/dev' -import { installGlobals } from '@remix-run/node' import { defineConfig } from 'vite' import babel from 'vite-plugin-babel' import tsconfigPaths from 'vite-tsconfig-paths' import { execSync } from 'node:child_process' -installGlobals() - const prefix = process.env.__INTERNAL_PREFIX || '/admin' if (prefix.endsWith('/')) { throw new Error('Prefix must not end with a slash') @@ -58,6 +55,14 @@ export default defineConfig(({ isSsrBuild }) => { plugins: [ remix({ basename: `${prefix}/`, + future: { + v3_fetcherPersist: true, + v3_relativeSplatPath: true, + v3_throwAbortReason: true, + v3_lazyRouteDiscovery: true, + v3_singleFetch: true, + v3_routeConfig: true + }, }), tsconfigPaths(), babel({