Store your runs on ATProto

Move to fly.io

+33
.dockerignore
··· 1 + # React Router 2 + .react-router 3 + build 4 + README.md 5 + 6 + # Logs 7 + logs 8 + *.log 9 + npm-debug.log* 10 + yarn-debug.log* 11 + yarn-error.log* 12 + pnpm-debug.log* 13 + lerna-debug.log* 14 + 15 + node_modules 16 + dist 17 + dist-ssr 18 + *.local 19 + 20 + # Editor directories and files 21 + .vscode/* 22 + !.vscode/extensions.json 23 + .idea 24 + .DS_Store 25 + *.suo 26 + *.ntvs* 27 + *.njsproj 28 + *.sln 29 + *.sw? 30 + 31 + # wrangler files 32 + .wrangler 33 + .dev.vars*
+7
.gitignore
··· 1 + .DS_Store 2 + /node_modules/ 3 + 4 + # React Router 5 + /.react-router/ 6 + /build/ 7 + 1 8 # Logs 2 9 logs 3 10 *.log
+19
Dockerfile
··· 1 + FROM node:22-slim AS base 2 + ENV PNPM_HOME="/pnpm" 3 + ENV PATH="$PNPM_HOME:$PATH" 4 + RUN npm install -g pnpm 5 + COPY . /app 6 + WORKDIR /app 7 + 8 + FROM base AS prod-deps 9 + RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile 10 + 11 + FROM base AS build 12 + RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile 13 + RUN pnpm run build 14 + 15 + FROM base 16 + COPY --from=prod-deps /app/node_modules /app/node_modules 17 + COPY --from=build /app/build /app/build 18 + EXPOSE 3000 19 + CMD [ "pnpm", "start" ]
+15
app/app.css
··· 1 + @import "tailwindcss"; 2 + 3 + @theme { 4 + --font-sans: "Inter", ui-sans-serif, system-ui, sans-serif, 5 + "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 6 + } 7 + 8 + html, 9 + body { 10 + @apply bg-white dark:bg-gray-950; 11 + 12 + @media (prefers-color-scheme: dark) { 13 + color-scheme: dark; 14 + } 15 + }
+71
app/components/RunList.tsx
··· 1 + import { AtUri, BlobRef } from "@atproto/api"; 2 + import { useCallback, useContext, useEffect, useState } from "react"; 3 + import { ATProtoContext } from "../shared/context"; 4 + import { type Run } from "../shared/run_lexicon"; 5 + 6 + type RunsResponse = { 7 + records: { 8 + uri: string; 9 + value: Run; 10 + }[] 11 + } 12 + 13 + export function RunList() { 14 + const { session, agent } = useContext(ATProtoContext); 15 + const [runsResponse, setRunsResponse] = useState<RunsResponse | undefined>(undefined); 16 + 17 + const fetchRuns = useCallback(() => session && agent?.com.atproto.repo 18 + .listRecords({ collection: "me.wilb.test.run", repo: session.did }) 19 + .then(res => setRunsResponse(res.data as unknown as RunsResponse)), [agent?.com.atproto.repo, session]) 20 + 21 + const deleteRun = useCallback((rkey: string) => session && agent?.com.atproto.repo 22 + .deleteRecord({ collection: "me.wilb.test.run", repo: session.did, rkey }) 23 + .then(() => fetchRuns()), [agent?.com.atproto.repo, fetchRuns, session]) 24 + 25 + useEffect(() => { 26 + if (!runsResponse) { 27 + fetchRuns(); 28 + } 29 + }, [session, agent, runsResponse, fetchRuns]) 30 + 31 + const loadGPX = (uri: string, gpx: BlobRef) => { 32 + if (typeof window !== 'undefined') { 33 + // @ts-expect-error GPX 34 + const map = window?.L.map(`map-${uri}`); 35 + // @ts-expect-error GPX 36 + window?.L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 37 + attribution: 'Map data &copy; <a href="http://www.osm.org">OpenStreetMap</a>' 38 + }).addTo(map); 39 + 40 + const options = { 41 + async: true, 42 + polyline_options: { color: 'red' }, 43 + }; 44 + 45 + // @ts-expect-error GPX 46 + new window.L.GPX(`${session?.server.issuer}/xrpc/com.atproto.sync.getBlob?did=${session?.did}&cid=${gpx.ref}`, options).on('loaded', (e: unknown) => { map.fitBounds(e.target.getBounds()) }).addTo(map); 47 + } 48 + }; 49 + 50 + return ( 51 + <div className="flex flex-col gap-2 p-2"> 52 + {runsResponse?.records.map(({ uri, value: { note, date_iso, distance_meters, duration_seconds, gpx } }) => ( 53 + <div className="flex flex-row" key={uri}> 54 + <div className="flex flex-col w-full gap-2 p-2"> 55 + <p>distance (kilometers): {distance_meters / 1000}</p> 56 + <p>duration (minutes): {duration_seconds ?? 0 / 60}</p> 57 + <p>date: {date_iso}</p> 58 + <p>note: {note}</p> 59 + <div className="flex flex-row gap-2 p-2"> 60 + {gpx && <button type="button" onClick={() => loadGPX(uri, gpx)}>Load gpx</button>} 61 + <button type="button" onClick={() => deleteRun(new AtUri(uri).rkey)}> 62 + delete 63 + </button> 64 + </div> 65 + </div> 66 + <div id={`map-${uri}`} data-active={!!gpx} className="flex w-full h-2 data-[active=true]:h-[180px]"></div> 67 + </div> 68 + ))} 69 + </div> 70 + ); 71 + }
+38
app/landing/landing.css
··· 1 + @import url('https://fonts.cdnfonts.com/css/poppins'); 2 + 3 + body { 4 + background-color: #ff8311; 5 + font-family: 'Poppins', sans-serif; 6 + margin: 0; 7 + padding: 0; 8 + } 9 + 10 + .background { 11 + position: absolute; 12 + top: 0; 13 + left: 0; 14 + width: 100%; 15 + height: 100%; 16 + z-index: -1; 17 + object-fit: cover; 18 + } 19 + 20 + main { 21 + display: flex; 22 + flex-direction: column; 23 + align-items: center; 24 + justify-content: center; 25 + height: 100vh; 26 + color: black; 27 + padding-left: 2rem; 28 + padding-right: 2rem; 29 + outline-color: black; 30 + } 31 + 32 + .container { 33 + text-align: center; 34 + background-color: rgba(255, 255, 255, 0.8); 35 + border-radius: 10px; 36 + padding: 2rem; 37 + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); 38 + }
+24
app/landing/landing.tsx
··· 1 + import './landing.css' 2 + 3 + import background from './mapped_at_background.png' 4 + 5 + export default function Landing() { 6 + return ( 7 + // <head> 8 + // <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 9 + // <link rel="icon" type="image/png" href="/map.png" /> 10 + // <title>Mapped.at</title> 11 + // </head> 12 + <body> 13 + <img className="background" src={background} width="1536px" height="1024px" /> 14 + <main> 15 + <div className="container"> 16 + <h1>Mapped.at</h1> 17 + <p>Welcome to Mapped.at!</p> 18 + <p>A social network for sharing your active lifestyle through maps</p> 19 + <a href="/" id="start-button">Start</a> 20 + </div> 21 + </main> 22 + </body> 23 + ) 24 + }
+84
app/root.tsx
··· 1 + import { 2 + isRouteErrorResponse, 3 + Links, 4 + Meta, 5 + Outlet, 6 + Scripts, 7 + ScrollRestoration, 8 + } from "react-router"; 9 + 10 + import logo from './landing/map.png' 11 + 12 + import type { Route } from "./+types/root"; 13 + import "./app.css"; 14 + 15 + export const links: Route.LinksFunction = () => [ 16 + { rel: "preconnect", href: "https://fonts.googleapis.com" }, 17 + { 18 + rel: "preconnect", 19 + href: "https://fonts.gstatic.com", 20 + crossOrigin: "anonymous", 21 + }, 22 + { 23 + rel: "stylesheet", 24 + href: "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap", 25 + }, 26 + ]; 27 + 28 + export function Layout({ children }: { children: React.ReactNode }) { 29 + return ( 30 + <html lang="en"> 31 + <head> 32 + <meta charSet="UTF-8" /> 33 + <link rel="icon" type="image/png" href={logo} /> 34 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 35 + <title>MappedAt</title> 36 + <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /> 37 + <Meta /> 38 + <Links /> 39 + </head> 40 + <body> 41 + <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> 42 + <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/2.1.2/gpx.min.js" defer></script> 43 + {children} 44 + <ScrollRestoration /> 45 + <Scripts /> 46 + </body> 47 + </html> 48 + ); 49 + } 50 + 51 + export default function App() { 52 + return ( 53 + <Outlet /> 54 + ); 55 + } 56 + 57 + export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { 58 + let message = "Oops!"; 59 + let details = "An unexpected error occurred."; 60 + let stack: string | undefined; 61 + 62 + if (isRouteErrorResponse(error)) { 63 + message = error.status === 404 ? "404" : "Error"; 64 + details = 65 + error.status === 404 66 + ? "The requested page could not be found." 67 + : error.statusText || details; 68 + } else if (import.meta.env.DEV && error && error instanceof Error) { 69 + details = error.message; 70 + stack = error.stack; 71 + } 72 + 73 + return ( 74 + <main className="pt-16 p-4 container mx-auto"> 75 + <h1>{message}</h1> 76 + <p>{details}</p> 77 + {stack && ( 78 + <pre className="w-full p-4 overflow-x-auto"> 79 + <code>{stack}</code> 80 + </pre> 81 + )} 82 + </main> 83 + ); 84 + }
+7
app/routes.ts
··· 1 + import { type RouteConfig, index, route } from "@react-router/dev/routes"; 2 + 3 + export default [ 4 + index("routes/home.tsx"), 5 + route("/landing", "routes/landing.tsx"), 6 + route("/client_metadata.json", "routes/client_metadata_json.ts"), 7 + ] satisfies RouteConfig;
+13
app/routes/client_metadata_json.ts
··· 1 + import { getClientMetadata } from "~/shared/client_metadata"; 2 + import type { Route } from "./+types/client_metadata_json"; 3 + 4 + export function loader({ request: { url } }: Route.LoaderArgs) { 5 + return new Response( 6 + JSON.stringify(getClientMetadata(`https://${new URL(url).hostname}`)), 7 + { 8 + headers: { 9 + "Content-Type": "application/json", 10 + }, 11 + } 12 + ); 13 + }
+41
app/routes/home.tsx
··· 1 + import { useContext } from "react"; 2 + import { RunForm } from "~/components/RunForm"; 3 + import { RunList } from "~/components/RunList"; 4 + import { SignIn } from "~/components/SignIn"; 5 + import { ATProtoContext } from "~/shared/context"; 6 + import { ATProtoContextProvider } from "~/shared/contextProvider.client"; 7 + 8 + function App() { 9 + const { session } = useContext(ATProtoContext); 10 + 11 + return ( 12 + <div className="flex flex-col gap-2 p-2 items-center"> 13 + <aside className="w-full flex justify-between bg-amber-50 gap-2"> 14 + <h1 className="text-xl">MappedAt: map your runs and more</h1> 15 + <SignIn /> 16 + </aside> 17 + <main className="w-full flex flex-col gap-2 p-2 max-w-3xl"> 18 + {session && 19 + <details> 20 + <summary> 21 + New run form 22 + </summary> 23 + <RunForm /> 24 + </details> 25 + } 26 + <RunList /> 27 + </main> 28 + </div> 29 + ) 30 + } 31 + 32 + export default function Home() { 33 + if (typeof window === 'undefined') { 34 + return <div>Loading...</div> 35 + } 36 + return ( 37 + <ATProtoContextProvider> 38 + <App /> 39 + </ATProtoContextProvider> 40 + ) 41 + }
+7
app/routes/landing.tsx
··· 1 + import Landing from "~/landing/landing"; 2 + 3 + export default function LandingPage() { 4 + return ( 5 + <Landing /> 6 + ) 7 + }
+16
app/shared/context.tsx
··· 1 + import { createContext } from "react"; 2 + import { 3 + BrowserOAuthClient, 4 + OAuthSession, 5 + } from "@atproto/oauth-client-browser"; 6 + import { Agent } from "@atproto/api"; 7 + 8 + export const ATProtoContext = createContext<{ 9 + session?: OAuthSession; 10 + agent?: Agent; 11 + client?: BrowserOAuthClient; 12 + }>({ 13 + session: undefined, 14 + agent: undefined, 15 + client: undefined, 16 + });
+7
compose.yaml
··· 1 + services: 2 + app: 3 + ports: 4 + - 3000:3000 5 + build: 6 + context: . 7 + dockerfile: Dockerfile
-28
eslint.config.js
··· 1 - import js from '@eslint/js' 2 - import globals from 'globals' 3 - import reactHooks from 'eslint-plugin-react-hooks' 4 - import reactRefresh from 'eslint-plugin-react-refresh' 5 - import tseslint from 'typescript-eslint' 6 - 7 - export default tseslint.config( 8 - { ignores: ['dist'] }, 9 - { 10 - extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 - files: ['**/*.{ts,tsx}'], 12 - languageOptions: { 13 - ecmaVersion: 2020, 14 - globals: globals.browser, 15 - }, 16 - plugins: { 17 - 'react-hooks': reactHooks, 18 - 'react-refresh': reactRefresh, 19 - }, 20 - rules: { 21 - ...reactHooks.configs.recommended.rules, 22 - 'react-refresh/only-export-components': [ 23 - 'warn', 24 - { allowConstantExport: true }, 25 - ], 26 - }, 27 - }, 28 - )
+22
fly.toml
··· 1 + # fly.toml app configuration file generated for mapped-at on 2025-05-12T18:54:08+02:00 2 + # 3 + # See https://fly.io/docs/reference/configuration/ for information about how to use this file. 4 + # 5 + 6 + app = 'mapped-at' 7 + primary_region = 'arn' 8 + 9 + [build] 10 + 11 + [http_service] 12 + internal_port = 3000 13 + force_https = true 14 + auto_stop_machines = 'stop' 15 + auto_start_machines = true 16 + min_machines_running = 0 17 + processes = ['app'] 18 + 19 + [[vm]] 20 + memory = '256mb' 21 + cpu_kind = 'shared' 22 + cpus = 1
-20
index.html
··· 1 - <!doctype html> 2 - <html lang="en"> 3 - 4 - <head> 5 - <meta charset="UTF-8" /> 6 - <link rel="icon" type="image/png" href="/map.png" /> 7 - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 8 - <title>MappedAt</title> 9 - <link href="/src/index.css" rel="stylesheet"> 10 - <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /> 11 - </head> 12 - 13 - <body> 14 - <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> 15 - <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/2.1.2/gpx.min.js" defer></script> 16 - <div id="root"></div> 17 - <script type="module" src="/src/main.tsx"></script> 18 - </body> 19 - 20 - </html>
-58
landing.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 5 - <link rel="icon" type="image/png" href="/map.png" /> 6 - <title>Mapped.at</title> 7 - <style> 8 - @import url('https://fonts.cdnfonts.com/css/poppins'); 9 - 10 - body { 11 - background-color: #ff8311; 12 - font-family: 'Poppins', sans-serif; 13 - margin: 0; 14 - padding: 0; 15 - } 16 - 17 - .background { 18 - position: absolute; 19 - top: 0; 20 - left: 0; 21 - width: 100%; 22 - height: 100%; 23 - z-index: -1; 24 - object-fit: cover; 25 - } 26 - 27 - main { 28 - display: flex; 29 - flex-direction: column; 30 - align-items: center; 31 - justify-content: center; 32 - height: 100vh; 33 - color: black; 34 - padding-left: 2rem; 35 - padding-right: 2rem; 36 - outline-color: black; 37 - } 38 - 39 - .container { 40 - text-align: center; 41 - background-color: rgba(255, 255, 255, 0.8); 42 - border-radius: 10px; 43 - padding: 2rem; 44 - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); 45 - } 46 - </style> 47 - </head> 48 - <body> 49 - <img class="background" src="/mapped_at_background.png" width="1536px" height="1024px" /> 50 - <main> 51 - <div class="container"> 52 - <h1>Mapped.at</h1> 53 - <p>Welcome to Mapped.at!</p> 54 - <p>A social network for sharing your active lifestyle through maps</p> 55 - <a href="/" id="start-button">Start</a> 56 - </div> 57 - </main> 58 - </html>
+31 -38
package.json
··· 1 1 { 2 - "name": "mapped", 3 - "private": true, 4 - "version": "0.0.0", 5 - "type": "module", 6 - "scripts": { 7 - "dev": "vite", 8 - "build": "tsc -b && vite build", 9 - "lint": "eslint .", 10 - "preview": "npm run build && vite preview", 11 - "deploy": "npm run build && wrangler deploy", 12 - "cf-typegen": "wrangler types" 13 - }, 14 - "dependencies": { 15 - "@atproto/api": "^0.15.6", 16 - "@atproto/oauth-client-browser": "^0.3.16", 17 - "@tailwindcss/vite": "^4.1.6", 18 - "hono": "^4.7.9", 19 - "react": "^19.0.0", 20 - "react-dom": "^19.0.0", 21 - "tailwindcss": "^4.1.6" 22 - }, 23 - "devDependencies": { 24 - "@atproto/oauth-types": "^0.2.7", 25 - "@cloudflare/vite-plugin": "^1.1.1", 26 - "@cloudflare/workers-types": "^4.20250510.0", 27 - "@eslint/js": "^9.22.0", 28 - "@types/react": "^19.0.10", 29 - "@types/react-dom": "^19.0.4", 30 - "@vitejs/plugin-react": "^4.3.4", 31 - "eslint": "^9.22.0", 32 - "eslint-plugin-react-hooks": "^5.2.0", 33 - "eslint-plugin-react-refresh": "^0.4.19", 34 - "globals": "^16.0.0", 35 - "typescript": "~5.7.2", 36 - "typescript-eslint": "^8.26.1", 37 - "vite": "^6.3.1", 38 - "wrangler": "^4.14.4" 39 - } 2 + "name": "mapped", 3 + "private": true, 4 + "type": "module", 5 + "scripts": { 6 + "build": "react-router build", 7 + "dev": "react-router dev", 8 + "start": "react-router-serve ./build/server/index.js", 9 + "typecheck": "react-router typegen && tsc" 10 + }, 11 + "dependencies": { 12 + "@atproto/api": "^0.15.6", 13 + "@atproto/oauth-client-browser": "^0.3.16", 14 + "@atproto/oauth-types": "^0.2.7", 15 + "@react-router/node": "^7.5.3", 16 + "@react-router/serve": "^7.5.3", 17 + "isbot": "^5.1.27", 18 + "react": "^19.1.0", 19 + "react-dom": "^19.1.0", 20 + "react-router": "^7.5.3" 21 + }, 22 + "devDependencies": { 23 + "@react-router/dev": "^7.5.3", 24 + "@tailwindcss/vite": "^4.1.4", 25 + "@types/node": "^20", 26 + "@types/react": "^19.1.2", 27 + "@types/react-dom": "^19.1.2", 28 + "tailwindcss": "^4.1.4", 29 + "typescript": "^5.8.3", 30 + "vite": "^6.3.3", 31 + "vite-tsconfig-paths": "^5.1.4" 32 + } 40 33 }
+1002 -1782
pnpm-lock.yaml
··· 14 14 '@atproto/oauth-client-browser': 15 15 specifier: ^0.3.16 16 16 version: 0.3.16 17 - '@tailwindcss/vite': 18 - specifier: ^4.1.6 19 - version: 4.1.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) 20 - hono: 21 - specifier: ^4.7.9 22 - version: 4.7.9 17 + '@atproto/oauth-types': 18 + specifier: ^0.2.7 19 + version: 0.2.7 20 + '@react-router/node': 21 + specifier: ^7.5.3 22 + version: 7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) 23 + '@react-router/serve': 24 + specifier: ^7.5.3 25 + version: 7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) 26 + isbot: 27 + specifier: ^5.1.27 28 + version: 5.1.28 23 29 react: 24 - specifier: ^19.0.0 30 + specifier: ^19.1.0 25 31 version: 19.1.0 26 32 react-dom: 27 - specifier: ^19.0.0 33 + specifier: ^19.1.0 28 34 version: 19.1.0(react@19.1.0) 29 - tailwindcss: 30 - specifier: ^4.1.6 31 - version: 4.1.6 35 + react-router: 36 + specifier: ^7.5.3 37 + version: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 32 38 devDependencies: 33 - '@atproto/oauth-types': 34 - specifier: ^0.2.7 35 - version: 0.2.7 36 - '@cloudflare/vite-plugin': 37 - specifier: ^1.1.1 38 - version: 1.1.1(rollup@4.40.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))(workerd@1.20250507.0)(wrangler@4.14.4(@cloudflare/workers-types@4.20250510.0)) 39 - '@cloudflare/workers-types': 40 - specifier: ^4.20250510.0 41 - version: 4.20250510.0 42 - '@eslint/js': 43 - specifier: ^9.22.0 44 - version: 9.26.0 39 + '@react-router/dev': 40 + specifier: ^7.5.3 41 + version: 7.6.0(@react-router/serve@7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3))(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2)) 42 + '@tailwindcss/vite': 43 + specifier: ^4.1.4 44 + version: 4.1.6(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2)) 45 + '@types/node': 46 + specifier: ^20 47 + version: 20.17.46 45 48 '@types/react': 46 - specifier: ^19.0.10 49 + specifier: ^19.1.2 47 50 version: 19.1.3 48 51 '@types/react-dom': 49 - specifier: ^19.0.4 50 - version: 19.1.3(@types/react@19.1.3) 51 - '@vitejs/plugin-react': 52 - specifier: ^4.3.4 53 - version: 4.4.1(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2)) 54 - eslint: 55 - specifier: ^9.22.0 56 - version: 9.26.0(jiti@2.4.2) 57 - eslint-plugin-react-hooks: 58 - specifier: ^5.2.0 59 - version: 5.2.0(eslint@9.26.0(jiti@2.4.2)) 60 - eslint-plugin-react-refresh: 61 - specifier: ^0.4.19 62 - version: 0.4.20(eslint@9.26.0(jiti@2.4.2)) 63 - globals: 64 - specifier: ^16.0.0 65 - version: 16.1.0 52 + specifier: ^19.1.2 53 + version: 19.1.4(@types/react@19.1.3) 54 + tailwindcss: 55 + specifier: ^4.1.4 56 + version: 4.1.6 66 57 typescript: 67 - specifier: ~5.7.2 68 - version: 5.7.3 69 - typescript-eslint: 70 - specifier: ^8.26.1 71 - version: 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 58 + specifier: ^5.8.3 59 + version: 5.8.3 72 60 vite: 73 - specifier: ^6.3.1 74 - version: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) 75 - wrangler: 76 - specifier: ^4.14.4 77 - version: 4.14.4(@cloudflare/workers-types@4.20250510.0) 61 + specifier: ^6.3.3 62 + version: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2) 63 + vite-tsconfig-paths: 64 + specifier: ^5.1.4 65 + version: 5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2)) 78 66 79 67 packages: 80 68 ··· 155 143 resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} 156 144 engines: {node: '>=6.9.0'} 157 145 146 + '@babel/helper-annotate-as-pure@7.27.1': 147 + resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} 148 + engines: {node: '>=6.9.0'} 149 + 158 150 '@babel/helper-compilation-targets@7.27.2': 159 151 resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 160 152 engines: {node: '>=6.9.0'} 161 153 154 + '@babel/helper-create-class-features-plugin@7.27.1': 155 + resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} 156 + engines: {node: '>=6.9.0'} 157 + peerDependencies: 158 + '@babel/core': ^7.0.0 159 + 160 + '@babel/helper-member-expression-to-functions@7.27.1': 161 + resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} 162 + engines: {node: '>=6.9.0'} 163 + 162 164 '@babel/helper-module-imports@7.27.1': 163 165 resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 164 166 engines: {node: '>=6.9.0'} ··· 169 171 peerDependencies: 170 172 '@babel/core': ^7.0.0 171 173 174 + '@babel/helper-optimise-call-expression@7.27.1': 175 + resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} 176 + engines: {node: '>=6.9.0'} 177 + 172 178 '@babel/helper-plugin-utils@7.27.1': 173 179 resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 174 180 engines: {node: '>=6.9.0'} 175 181 182 + '@babel/helper-replace-supers@7.27.1': 183 + resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} 184 + engines: {node: '>=6.9.0'} 185 + peerDependencies: 186 + '@babel/core': ^7.0.0 187 + 188 + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 189 + resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} 190 + engines: {node: '>=6.9.0'} 191 + 176 192 '@babel/helper-string-parser@7.27.1': 177 193 resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 178 194 engines: {node: '>=6.9.0'} ··· 194 210 engines: {node: '>=6.0.0'} 195 211 hasBin: true 196 212 197 - '@babel/plugin-transform-react-jsx-self@7.27.1': 198 - resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} 213 + '@babel/plugin-syntax-decorators@7.27.1': 214 + resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} 199 215 engines: {node: '>=6.9.0'} 200 216 peerDependencies: 201 217 '@babel/core': ^7.0.0-0 202 218 203 - '@babel/plugin-transform-react-jsx-source@7.27.1': 204 - resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} 219 + '@babel/plugin-syntax-jsx@7.27.1': 220 + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} 205 221 engines: {node: '>=6.9.0'} 206 222 peerDependencies: 207 223 '@babel/core': ^7.0.0-0 208 224 209 - '@babel/template@7.27.2': 210 - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 225 + '@babel/plugin-syntax-typescript@7.27.1': 226 + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} 211 227 engines: {node: '>=6.9.0'} 228 + peerDependencies: 229 + '@babel/core': ^7.0.0-0 212 230 213 - '@babel/traverse@7.27.1': 214 - resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} 231 + '@babel/plugin-transform-modules-commonjs@7.27.1': 232 + resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} 215 233 engines: {node: '>=6.9.0'} 234 + peerDependencies: 235 + '@babel/core': ^7.0.0-0 216 236 217 - '@babel/types@7.27.1': 218 - resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} 237 + '@babel/plugin-transform-typescript@7.27.1': 238 + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} 219 239 engines: {node: '>=6.9.0'} 220 - 221 - '@cloudflare/kv-asset-handler@0.4.0': 222 - resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} 223 - engines: {node: '>=18.0.0'} 224 - 225 - '@cloudflare/unenv-preset@2.3.1': 226 - resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==} 227 240 peerDependencies: 228 - unenv: 2.0.0-rc.15 229 - workerd: ^1.20250320.0 230 - peerDependenciesMeta: 231 - workerd: 232 - optional: true 241 + '@babel/core': ^7.0.0-0 233 242 234 - '@cloudflare/vite-plugin@1.1.1': 235 - resolution: {integrity: sha512-ZzLtAiN/XMxsOKrjF3S7VdKrj3fRMF7wZHUNUjbaZXnW9MSPgndp//edjYl4nzIkX0ZDeAG/iWzAhW1AFsw5HQ==} 243 + '@babel/preset-typescript@7.27.1': 244 + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} 245 + engines: {node: '>=6.9.0'} 236 246 peerDependencies: 237 - vite: ^6.1.0 238 - wrangler: ^3.101.0 || ^4.0.0 239 - 240 - '@cloudflare/workerd-darwin-64@1.20250507.0': 241 - resolution: {integrity: sha512-xC+8hmQuOUUNCVT9DWpLMfxhR4Xs4kI8v7Bkybh4pzGC85moH6fMfCBNaP0YQCNAA/BR56aL/AwfvMVGskTK/A==} 242 - engines: {node: '>=16'} 243 - cpu: [x64] 244 - os: [darwin] 245 - 246 - '@cloudflare/workerd-darwin-arm64@1.20250507.0': 247 - resolution: {integrity: sha512-Oynff5H8yM4trfUFaKdkOvPV3jac8mg7QC19ILZluCVgLx/JGEVLEJ7do1Na9rLqV8CK4gmUXPrUMX7uerhQgg==} 248 - engines: {node: '>=16'} 249 - cpu: [arm64] 250 - os: [darwin] 247 + '@babel/core': ^7.0.0-0 251 248 252 - '@cloudflare/workerd-linux-64@1.20250507.0': 253 - resolution: {integrity: sha512-/HAA+Zg/R7Q/Smyl835FUFKjotZN1UzN9j/BHBd0xKmKov97QkXAX8gsyGnyKqRReIOinp8x/8+UebTICR7VJw==} 254 - engines: {node: '>=16'} 255 - cpu: [x64] 256 - os: [linux] 249 + '@babel/template@7.27.2': 250 + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 251 + engines: {node: '>=6.9.0'} 257 252 258 - '@cloudflare/workerd-linux-arm64@1.20250507.0': 259 - resolution: {integrity: sha512-NMPibSdOYeycU0IrKkgOESFJQy7dEpHvuatZxQxlT+mIQK0INzI3irp2kKxhF99s25kPC4p+xg9bU3ugTrs3VQ==} 260 - engines: {node: '>=16'} 261 - cpu: [arm64] 262 - os: [linux] 253 + '@babel/traverse@7.27.1': 254 + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} 255 + engines: {node: '>=6.9.0'} 263 256 264 - '@cloudflare/workerd-windows-64@1.20250507.0': 265 - resolution: {integrity: sha512-c91fhNP8ufycdIDqjVyKTqeb4ewkbAYXFQbLreMVgh4LLQQPDDEte8wCdmaFy5bIL0M9d85PpdCq51RCzq/FaQ==} 266 - engines: {node: '>=16'} 267 - cpu: [x64] 268 - os: [win32] 269 - 270 - '@cloudflare/workers-types@4.20250510.0': 271 - resolution: {integrity: sha512-VLdSYUooX2QhdlzyBnnLAqa5B3xWyr5vdvya9NZk2BJNmRt2iblSLunj7iBKiW9J+SIBHz7c+kUzUJKoFLKRjg==} 272 - 273 - '@cspotcode/source-map-support@0.8.1': 274 - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 275 - engines: {node: '>=12'} 276 - 277 - '@emnapi/runtime@1.4.3': 278 - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} 257 + '@babel/types@7.27.1': 258 + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} 259 + engines: {node: '>=6.9.0'} 279 260 280 261 '@esbuild/aix-ppc64@0.25.4': 281 262 resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} ··· 427 408 cpu: [x64] 428 409 os: [win32] 429 410 430 - '@eslint-community/eslint-utils@4.7.0': 431 - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 432 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 433 - peerDependencies: 434 - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 435 - 436 - '@eslint-community/regexpp@4.12.1': 437 - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 438 - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 439 - 440 - '@eslint/config-array@0.20.0': 441 - resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 442 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 443 - 444 - '@eslint/config-helpers@0.2.2': 445 - resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} 446 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 447 - 448 - '@eslint/core@0.13.0': 449 - resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 450 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 451 - 452 - '@eslint/eslintrc@3.3.1': 453 - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 454 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 455 - 456 - '@eslint/js@9.26.0': 457 - resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} 458 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 459 - 460 - '@eslint/object-schema@2.1.6': 461 - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 462 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 463 - 464 - '@eslint/plugin-kit@0.2.8': 465 - resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 466 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 467 - 468 - '@fastify/busboy@2.1.1': 469 - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 470 - engines: {node: '>=14'} 471 - 472 - '@hattip/adapter-node@0.0.49': 473 - resolution: {integrity: sha512-BE+Y8Q4U0YcH34FZUYU4DssGKOaZLbNL0zK57Z41UZp0m9kS79ZIolBmjjpPhTVpIlRY3Rs+uhXbVXKk7mUcJA==} 474 - 475 - '@hattip/core@0.0.49': 476 - resolution: {integrity: sha512-3/ZJtC17cv8m6Sph8+nw4exUp9yhEf2Shi7HK6AHSUSBtaaQXZ9rJBVxTfZj3PGNOR/P49UBXOym/52WYKFTJQ==} 477 - 478 - '@hattip/headers@0.0.49': 479 - resolution: {integrity: sha512-rrB2lEhTf0+MNVt5WdW184Ky706F1Ze9Aazn/R8c+/FMUYF9yjem2CgXp49csPt3dALsecrnAUOHFiV0LrrHXA==} 480 - 481 - '@hattip/polyfills@0.0.49': 482 - resolution: {integrity: sha512-5g7W5s6Gq+HDxwULGFQ861yAnEx3yd9V8GDwS96HBZ1nM1u93vN+KTuwXvNsV7Z3FJmCrD/pgU8WakvchclYuA==} 483 - 484 - '@hattip/walk@0.0.49': 485 - resolution: {integrity: sha512-AgJgKLooZyQnzMfoFg5Mo/aHM+HGBC9ExpXIjNqGimYTRgNbL/K7X5EM1kR2JY90BNKk9lo6Usq1T/nWFdT7TQ==} 486 - hasBin: true 487 - 488 - '@humanfs/core@0.19.1': 489 - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 490 - engines: {node: '>=18.18.0'} 491 - 492 - '@humanfs/node@0.16.6': 493 - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 494 - engines: {node: '>=18.18.0'} 495 - 496 - '@humanwhocodes/module-importer@1.0.1': 497 - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 498 - engines: {node: '>=12.22'} 499 - 500 - '@humanwhocodes/retry@0.3.1': 501 - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 502 - engines: {node: '>=18.18'} 503 - 504 - '@humanwhocodes/retry@0.4.3': 505 - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 506 - engines: {node: '>=18.18'} 507 - 508 - '@img/sharp-darwin-arm64@0.33.5': 509 - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 510 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 511 - cpu: [arm64] 512 - os: [darwin] 513 - 514 - '@img/sharp-darwin-x64@0.33.5': 515 - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 516 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 517 - cpu: [x64] 518 - os: [darwin] 519 - 520 - '@img/sharp-libvips-darwin-arm64@1.0.4': 521 - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 522 - cpu: [arm64] 523 - os: [darwin] 524 - 525 - '@img/sharp-libvips-darwin-x64@1.0.4': 526 - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 527 - cpu: [x64] 528 - os: [darwin] 529 - 530 - '@img/sharp-libvips-linux-arm64@1.0.4': 531 - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 532 - cpu: [arm64] 533 - os: [linux] 534 - 535 - '@img/sharp-libvips-linux-arm@1.0.5': 536 - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 537 - cpu: [arm] 538 - os: [linux] 539 - 540 - '@img/sharp-libvips-linux-s390x@1.0.4': 541 - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 542 - cpu: [s390x] 543 - os: [linux] 544 - 545 - '@img/sharp-libvips-linux-x64@1.0.4': 546 - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 547 - cpu: [x64] 548 - os: [linux] 549 - 550 - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 551 - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 552 - cpu: [arm64] 553 - os: [linux] 554 - 555 - '@img/sharp-libvips-linuxmusl-x64@1.0.4': 556 - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 557 - cpu: [x64] 558 - os: [linux] 559 - 560 - '@img/sharp-linux-arm64@0.33.5': 561 - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 562 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 563 - cpu: [arm64] 564 - os: [linux] 565 - 566 - '@img/sharp-linux-arm@0.33.5': 567 - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 568 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 569 - cpu: [arm] 570 - os: [linux] 571 - 572 - '@img/sharp-linux-s390x@0.33.5': 573 - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 574 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 575 - cpu: [s390x] 576 - os: [linux] 577 - 578 - '@img/sharp-linux-x64@0.33.5': 579 - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 580 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 581 - cpu: [x64] 582 - os: [linux] 583 - 584 - '@img/sharp-linuxmusl-arm64@0.33.5': 585 - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 586 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 587 - cpu: [arm64] 588 - os: [linux] 589 - 590 - '@img/sharp-linuxmusl-x64@0.33.5': 591 - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 592 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 593 - cpu: [x64] 594 - os: [linux] 595 - 596 - '@img/sharp-wasm32@0.33.5': 597 - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 598 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 599 - cpu: [wasm32] 600 - 601 - '@img/sharp-win32-ia32@0.33.5': 602 - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 603 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 604 - cpu: [ia32] 605 - os: [win32] 606 - 607 - '@img/sharp-win32-x64@0.33.5': 608 - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 609 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 610 - cpu: [x64] 611 - os: [win32] 411 + '@isaacs/cliui@8.0.2': 412 + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 413 + engines: {node: '>=12'} 612 414 613 415 '@isaacs/fs-minipass@4.0.1': 614 416 resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} ··· 632 434 '@jridgewell/trace-mapping@0.3.25': 633 435 resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 634 436 635 - '@jridgewell/trace-mapping@0.3.9': 636 - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 437 + '@mjackson/node-fetch-server@0.2.0': 438 + resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} 637 439 638 - '@kamilkisiela/fast-url-parser@1.1.4': 639 - resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} 440 + '@npmcli/git@4.1.0': 441 + resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==} 442 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 640 443 641 - '@modelcontextprotocol/sdk@1.11.1': 642 - resolution: {integrity: sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==} 643 - engines: {node: '>=18'} 444 + '@npmcli/package-json@4.0.1': 445 + resolution: {integrity: sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==} 446 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 644 447 645 - '@nodelib/fs.scandir@2.1.5': 646 - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 647 - engines: {node: '>= 8'} 448 + '@npmcli/promise-spawn@6.0.2': 449 + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} 450 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 648 451 649 - '@nodelib/fs.stat@2.0.5': 650 - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 651 - engines: {node: '>= 8'} 452 + '@pkgjs/parseargs@0.11.0': 453 + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 454 + engines: {node: '>=14'} 652 455 653 - '@nodelib/fs.walk@1.2.8': 654 - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 655 - engines: {node: '>= 8'} 456 + '@react-router/dev@7.6.0': 457 + resolution: {integrity: sha512-XSxEslex0ddJPxNNgdU1Eqmc9lsY/lhcLNCcRLAtlrOPyOz3Y8kIPpAf5T/U2AG3HGXFVBa9f8aQ7wXU3wTJSw==} 458 + engines: {node: '>=20.0.0'} 459 + hasBin: true 460 + peerDependencies: 461 + '@react-router/serve': ^7.6.0 462 + react-router: ^7.6.0 463 + typescript: ^5.1.0 464 + vite: ^5.1.0 || ^6.0.0 465 + wrangler: ^3.28.2 || ^4.0.0 466 + peerDependenciesMeta: 467 + '@react-router/serve': 468 + optional: true 469 + typescript: 470 + optional: true 471 + wrangler: 472 + optional: true 656 473 657 - '@rollup/plugin-replace@6.0.2': 658 - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} 659 - engines: {node: '>=14.0.0'} 474 + '@react-router/express@7.6.0': 475 + resolution: {integrity: sha512-nxSTCcTsVx94bXOI9JjG7Cg338myi8EdQWTOjA97v2ApX35wZm/ZDYos5MbrvZiMi0aB4KgAD62o4byNqF9Z1A==} 476 + engines: {node: '>=20.0.0'} 660 477 peerDependencies: 661 - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 478 + express: ^4.17.1 || ^5 479 + react-router: 7.6.0 480 + typescript: ^5.1.0 662 481 peerDependenciesMeta: 663 - rollup: 482 + typescript: 664 483 optional: true 665 484 666 - '@rollup/pluginutils@5.1.4': 667 - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} 668 - engines: {node: '>=14.0.0'} 485 + '@react-router/node@7.6.0': 486 + resolution: {integrity: sha512-agjDPUzisLdGJ7Q2lx/Z3OfdS2t1k6qv/nTvA45iahGsQJCMDvMqVoIi7iIULKQJwrn4HWjM9jqEp75+WsMOXg==} 487 + engines: {node: '>=20.0.0'} 669 488 peerDependencies: 670 - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 489 + react-router: 7.6.0 490 + typescript: ^5.1.0 671 491 peerDependenciesMeta: 672 - rollup: 492 + typescript: 673 493 optional: true 494 + 495 + '@react-router/serve@7.6.0': 496 + resolution: {integrity: sha512-2O8ALEYgJfimvEdNRqMpnZb2N+DQ5UK/SKo9Xo3mTkt3no0rNTcNxzmhzD2tm92Q/HI7kHmMY1nBegNB2i1abA==} 497 + engines: {node: '>=20.0.0'} 498 + hasBin: true 499 + peerDependencies: 500 + react-router: 7.6.0 674 501 675 502 '@rollup/rollup-android-arm-eabi@4.40.2': 676 503 resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} ··· 862 689 peerDependencies: 863 690 vite: ^5.2.0 || ^6 864 691 865 - '@types/babel__core@7.20.5': 866 - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 867 - 868 - '@types/babel__generator@7.27.0': 869 - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 870 - 871 - '@types/babel__template@7.4.4': 872 - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 873 - 874 - '@types/babel__traverse@7.20.7': 875 - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} 876 - 877 692 '@types/estree@1.0.7': 878 693 resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 879 694 880 - '@types/json-schema@7.0.15': 881 - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 695 + '@types/node@20.17.46': 696 + resolution: {integrity: sha512-0PQHLhZPWOxGW4auogW0eOQAuNIlCYvibIpG67ja0TOJ6/sehu+1en7sfceUn+QQtx4Rk3GxbLNwPh0Cav7TWw==} 882 697 883 - '@types/react-dom@19.1.3': 884 - resolution: {integrity: sha512-rJXC08OG0h3W6wDMFxQrZF00Kq6qQvw0djHRdzl3U5DnIERz0MRce3WVc7IS6JYBwtaP/DwYtRRjVlvivNveKg==} 698 + '@types/react-dom@19.1.4': 699 + resolution: {integrity: sha512-WxYAszDYgsMV31OVyoG4jbAgJI1Gw0Xq9V19zwhy6+hUUJlJIdZ3r/cbdmTqFv++SktQkZ/X+46yGFxp5XJBEg==} 885 700 peerDependencies: 886 701 '@types/react': ^19.0.0 887 702 888 703 '@types/react@19.1.3': 889 704 resolution: {integrity: sha512-dLWQ+Z0CkIvK1J8+wrDPwGxEYFA4RAyHoZPxHVGspYmFVnwGSNT24cGIhFJrtfRnWVuW8X7NO52gCXmhkVUWGQ==} 890 705 891 - '@typescript-eslint/eslint-plugin@8.32.0': 892 - resolution: {integrity: sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==} 893 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 894 - peerDependencies: 895 - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 896 - eslint: ^8.57.0 || ^9.0.0 897 - typescript: '>=4.8.4 <5.9.0' 898 - 899 - '@typescript-eslint/parser@8.32.0': 900 - resolution: {integrity: sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==} 901 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 902 - peerDependencies: 903 - eslint: ^8.57.0 || ^9.0.0 904 - typescript: '>=4.8.4 <5.9.0' 905 - 906 - '@typescript-eslint/scope-manager@8.32.0': 907 - resolution: {integrity: sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==} 908 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 909 - 910 - '@typescript-eslint/type-utils@8.32.0': 911 - resolution: {integrity: sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==} 912 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 913 - peerDependencies: 914 - eslint: ^8.57.0 || ^9.0.0 915 - typescript: '>=4.8.4 <5.9.0' 916 - 917 - '@typescript-eslint/types@8.32.0': 918 - resolution: {integrity: sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==} 919 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 920 - 921 - '@typescript-eslint/typescript-estree@8.32.0': 922 - resolution: {integrity: sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==} 923 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 924 - peerDependencies: 925 - typescript: '>=4.8.4 <5.9.0' 926 - 927 - '@typescript-eslint/utils@8.32.0': 928 - resolution: {integrity: sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==} 929 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 930 - peerDependencies: 931 - eslint: ^8.57.0 || ^9.0.0 932 - typescript: '>=4.8.4 <5.9.0' 933 - 934 - '@typescript-eslint/visitor-keys@8.32.0': 935 - resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==} 936 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 937 - 938 - '@vitejs/plugin-react@4.4.1': 939 - resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} 940 - engines: {node: ^14.18.0 || >=16.0.0} 941 - peerDependencies: 942 - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 943 - 944 - '@whatwg-node/fetch@0.9.23': 945 - resolution: {integrity: sha512-7xlqWel9JsmxahJnYVUj/LLxWcnA93DR4c9xlw3U814jWTiYalryiH1qToik1hOxweKKRLi4haXHM5ycRksPBA==} 946 - engines: {node: '>=18.0.0'} 947 - 948 - '@whatwg-node/node-fetch@0.6.0': 949 - resolution: {integrity: sha512-tcZAhrpx6oVlkEsRngeTEEE7I5/QdLjeEz4IlekabGaESP7+Dkm/6a9KcF1KdCBB7mO9PXtBkwCuTCt8+UPg8Q==} 950 - engines: {node: '>=18.0.0'} 951 - 952 - accepts@2.0.0: 953 - resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} 706 + accepts@1.3.8: 707 + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 954 708 engines: {node: '>= 0.6'} 955 709 956 - acorn-jsx@5.3.2: 957 - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 958 - peerDependencies: 959 - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 710 + ansi-regex@5.0.1: 711 + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 712 + engines: {node: '>=8'} 960 713 961 - acorn-walk@8.3.2: 962 - resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 963 - engines: {node: '>=0.4.0'} 964 - 965 - acorn@8.14.0: 966 - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 967 - engines: {node: '>=0.4.0'} 968 - hasBin: true 969 - 970 - acorn@8.14.1: 971 - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 972 - engines: {node: '>=0.4.0'} 973 - hasBin: true 974 - 975 - ajv@6.12.6: 976 - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 714 + ansi-regex@6.1.0: 715 + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 716 + engines: {node: '>=12'} 977 717 978 718 ansi-styles@4.3.0: 979 719 resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 980 720 engines: {node: '>=8'} 981 721 982 - argparse@2.0.1: 983 - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 722 + ansi-styles@6.2.1: 723 + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 724 + engines: {node: '>=12'} 725 + 726 + arg@5.0.2: 727 + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 984 728 985 - as-table@1.0.55: 986 - resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 729 + array-flatten@1.1.1: 730 + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 987 731 988 732 await-lock@2.2.2: 989 733 resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 990 734 735 + babel-dead-code-elimination@1.0.10: 736 + resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} 737 + 991 738 balanced-match@1.0.2: 992 739 resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 993 740 994 - blake3-wasm@2.1.5: 995 - resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 996 - 997 - body-parser@2.2.0: 998 - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} 999 - engines: {node: '>=18'} 741 + basic-auth@2.0.1: 742 + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} 743 + engines: {node: '>= 0.8'} 1000 744 1001 - brace-expansion@1.1.11: 1002 - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 745 + body-parser@1.20.3: 746 + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} 747 + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1003 748 1004 749 brace-expansion@2.0.1: 1005 750 resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1006 - 1007 - braces@3.0.3: 1008 - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1009 - engines: {node: '>=8'} 1010 751 1011 752 browserslist@4.24.5: 1012 753 resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} 1013 754 engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1014 755 hasBin: true 1015 756 1016 - busboy@1.6.0: 1017 - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 1018 - engines: {node: '>=10.16.0'} 757 + buffer-from@1.1.2: 758 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1019 759 1020 760 bytes@3.1.2: 1021 761 resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} ··· 1033 773 resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 1034 774 engines: {node: '>= 0.4'} 1035 775 1036 - callsites@3.1.0: 1037 - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1038 - engines: {node: '>=6'} 1039 - 1040 776 caniuse-lite@1.0.30001717: 1041 777 resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} 1042 778 1043 - chalk@4.1.2: 1044 - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1045 - engines: {node: '>=10'} 779 + chokidar@4.0.3: 780 + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 781 + engines: {node: '>= 14.16.0'} 1046 782 1047 783 chownr@3.0.0: 1048 784 resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} ··· 1055 791 color-name@1.1.4: 1056 792 resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1057 793 1058 - color-string@1.9.1: 1059 - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 794 + compressible@2.0.18: 795 + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} 796 + engines: {node: '>= 0.6'} 1060 797 1061 - color@4.2.3: 1062 - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 1063 - engines: {node: '>=12.5.0'} 1064 - 1065 - concat-map@0.0.1: 1066 - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 798 + compression@1.8.0: 799 + resolution: {integrity: sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==} 800 + engines: {node: '>= 0.8.0'} 1067 801 1068 - content-disposition@1.0.0: 1069 - resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} 802 + content-disposition@0.5.4: 803 + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 1070 804 engines: {node: '>= 0.6'} 1071 805 1072 806 content-type@1.0.5: ··· 1076 810 convert-source-map@2.0.0: 1077 811 resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1078 812 1079 - cookie-signature@1.2.2: 1080 - resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} 1081 - engines: {node: '>=6.6.0'} 813 + cookie-signature@1.0.6: 814 + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 1082 815 1083 - cookie@0.7.2: 1084 - resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 816 + cookie@0.7.1: 817 + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} 1085 818 engines: {node: '>= 0.6'} 1086 819 1087 - cors@2.8.5: 1088 - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 1089 - engines: {node: '>= 0.10'} 820 + cookie@1.0.2: 821 + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 822 + engines: {node: '>=18'} 1090 823 1091 824 cross-spawn@7.0.6: 1092 825 resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} ··· 1095 828 csstype@3.1.3: 1096 829 resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1097 830 1098 - data-uri-to-buffer@2.0.2: 1099 - resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 831 + debug@2.6.9: 832 + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 833 + peerDependencies: 834 + supports-color: '*' 835 + peerDependenciesMeta: 836 + supports-color: 837 + optional: true 1100 838 1101 839 debug@4.4.0: 1102 840 resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} ··· 1107 845 supports-color: 1108 846 optional: true 1109 847 1110 - deep-is@0.1.4: 1111 - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1112 - 1113 - defu@6.1.4: 1114 - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 848 + dedent@1.6.0: 849 + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} 850 + peerDependencies: 851 + babel-plugin-macros: ^3.1.0 852 + peerDependenciesMeta: 853 + babel-plugin-macros: 854 + optional: true 1115 855 1116 856 depd@2.0.0: 1117 857 resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 1118 858 engines: {node: '>= 0.8'} 1119 859 860 + destroy@1.2.0: 861 + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 862 + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 863 + 1120 864 detect-libc@2.0.4: 1121 865 resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} 1122 866 engines: {node: '>=8'} ··· 1124 868 dunder-proto@1.0.1: 1125 869 resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 1126 870 engines: {node: '>= 0.4'} 871 + 872 + eastasianwidth@0.2.0: 873 + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1127 874 1128 875 ee-first@1.1.1: 1129 876 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} ··· 1131 878 electron-to-chromium@1.5.151: 1132 879 resolution: {integrity: sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA==} 1133 880 881 + emoji-regex@8.0.0: 882 + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 883 + 884 + emoji-regex@9.2.2: 885 + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 886 + 887 + encodeurl@1.0.2: 888 + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 889 + engines: {node: '>= 0.8'} 890 + 1134 891 encodeurl@2.0.0: 1135 892 resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 1136 893 engines: {node: '>= 0.8'} ··· 1139 896 resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} 1140 897 engines: {node: '>=10.13.0'} 1141 898 899 + err-code@2.0.3: 900 + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} 901 + 1142 902 es-define-property@1.0.1: 1143 903 resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 1144 904 engines: {node: '>= 0.4'} ··· 1146 906 es-errors@1.3.0: 1147 907 resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1148 908 engines: {node: '>= 0.4'} 909 + 910 + es-module-lexer@1.7.0: 911 + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1149 912 1150 913 es-object-atoms@1.1.1: 1151 914 resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} ··· 1163 926 escape-html@1.0.3: 1164 927 resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1165 928 1166 - escape-string-regexp@4.0.0: 1167 - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1168 - engines: {node: '>=10'} 1169 - 1170 - eslint-plugin-react-hooks@5.2.0: 1171 - resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} 1172 - engines: {node: '>=10'} 1173 - peerDependencies: 1174 - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 1175 - 1176 - eslint-plugin-react-refresh@0.4.20: 1177 - resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} 1178 - peerDependencies: 1179 - eslint: '>=8.40' 1180 - 1181 - eslint-scope@8.3.0: 1182 - resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 1183 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1184 - 1185 - eslint-visitor-keys@3.4.3: 1186 - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1187 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1188 - 1189 - eslint-visitor-keys@4.2.0: 1190 - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 1191 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1192 - 1193 - eslint@9.26.0: 1194 - resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} 1195 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1196 - hasBin: true 1197 - peerDependencies: 1198 - jiti: '*' 1199 - peerDependenciesMeta: 1200 - jiti: 1201 - optional: true 1202 - 1203 - espree@10.3.0: 1204 - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 1205 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1206 - 1207 - esquery@1.6.0: 1208 - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1209 - engines: {node: '>=0.10'} 1210 - 1211 - esrecurse@4.3.0: 1212 - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1213 - engines: {node: '>=4.0'} 1214 - 1215 - estraverse@5.3.0: 1216 - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1217 - engines: {node: '>=4.0'} 1218 - 1219 - estree-walker@2.0.2: 1220 - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1221 - 1222 - esutils@2.0.3: 1223 - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1224 - engines: {node: '>=0.10.0'} 1225 - 1226 929 etag@1.8.1: 1227 930 resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1228 931 engines: {node: '>= 0.6'} 1229 932 1230 - eventsource-parser@3.0.1: 1231 - resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} 1232 - engines: {node: '>=18.0.0'} 1233 - 1234 - eventsource@3.0.7: 1235 - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} 1236 - engines: {node: '>=18.0.0'} 1237 - 1238 933 exit-hook@2.2.1: 1239 934 resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 1240 935 engines: {node: '>=6'} 1241 936 1242 - express-rate-limit@7.5.0: 1243 - resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} 1244 - engines: {node: '>= 16'} 1245 - peerDependencies: 1246 - express: ^4.11 || 5 || ^5.0.0-beta.1 1247 - 1248 - express@5.1.0: 1249 - resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} 1250 - engines: {node: '>= 18'} 1251 - 1252 - exsolve@1.0.5: 1253 - resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} 1254 - 1255 - fast-decode-uri-component@1.0.1: 1256 - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 1257 - 1258 - fast-deep-equal@3.1.3: 1259 - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1260 - 1261 - fast-glob@3.3.3: 1262 - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1263 - engines: {node: '>=8.6.0'} 1264 - 1265 - fast-json-stable-stringify@2.1.0: 1266 - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1267 - 1268 - fast-levenshtein@2.0.6: 1269 - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1270 - 1271 - fast-querystring@1.1.2: 1272 - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 1273 - 1274 - fastq@1.19.1: 1275 - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 937 + express@4.21.2: 938 + resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==} 939 + engines: {node: '>= 0.10.0'} 1276 940 1277 941 fdir@6.4.4: 1278 942 resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} ··· 1282 946 picomatch: 1283 947 optional: true 1284 948 1285 - file-entry-cache@8.0.0: 1286 - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1287 - engines: {node: '>=16.0.0'} 1288 - 1289 - fill-range@7.1.1: 1290 - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1291 - engines: {node: '>=8'} 1292 - 1293 - finalhandler@2.1.0: 1294 - resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} 949 + finalhandler@1.3.1: 950 + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} 1295 951 engines: {node: '>= 0.8'} 1296 952 1297 - find-up@5.0.0: 1298 - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1299 - engines: {node: '>=10'} 1300 - 1301 - flat-cache@4.0.1: 1302 - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1303 - engines: {node: '>=16'} 1304 - 1305 - flatted@3.3.3: 1306 - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 953 + foreground-child@3.3.1: 954 + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 955 + engines: {node: '>=14'} 1307 956 1308 957 forwarded@0.2.0: 1309 958 resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1310 959 engines: {node: '>= 0.6'} 1311 960 1312 - fresh@2.0.0: 1313 - resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 1314 - engines: {node: '>= 0.8'} 961 + fresh@0.5.2: 962 + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 963 + engines: {node: '>= 0.6'} 964 + 965 + fs-extra@10.1.0: 966 + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 967 + engines: {node: '>=12'} 1315 968 1316 969 fsevents@2.3.3: 1317 970 resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} ··· 1329 982 resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 1330 983 engines: {node: '>= 0.4'} 1331 984 1332 - get-port@7.1.0: 1333 - resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} 1334 - engines: {node: '>=16'} 985 + get-port@5.1.1: 986 + resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} 987 + engines: {node: '>=8'} 1335 988 1336 989 get-proto@1.0.1: 1337 990 resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 1338 991 engines: {node: '>= 0.4'} 1339 992 1340 - get-source@2.0.12: 1341 - resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 1342 - 1343 - glob-parent@5.1.2: 1344 - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1345 - engines: {node: '>= 6'} 1346 - 1347 - glob-parent@6.0.2: 1348 - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1349 - engines: {node: '>=10.13.0'} 1350 - 1351 - glob-to-regexp@0.4.1: 1352 - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 993 + glob@10.4.5: 994 + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 995 + hasBin: true 1353 996 1354 997 globals@11.12.0: 1355 998 resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1356 999 engines: {node: '>=4'} 1357 1000 1358 - globals@14.0.0: 1359 - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1360 - engines: {node: '>=18'} 1361 - 1362 - globals@16.1.0: 1363 - resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} 1364 - engines: {node: '>=18'} 1001 + globrex@0.1.2: 1002 + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1365 1003 1366 1004 gopd@1.2.0: 1367 1005 resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} ··· 1373 1011 graphemer@1.4.0: 1374 1012 resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1375 1013 1376 - has-flag@4.0.0: 1377 - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1378 - engines: {node: '>=8'} 1379 - 1380 1014 has-symbols@1.1.0: 1381 1015 resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 1382 1016 engines: {node: '>= 0.4'} ··· 1385 1019 resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1386 1020 engines: {node: '>= 0.4'} 1387 1021 1388 - hono@4.7.9: 1389 - resolution: {integrity: sha512-/EsCoR5h7N4yu01TDu9GMCCJa6ZLk5ZJIWFFGNawAXmd1Tp53+Wir4xm0D2X19bbykWUlzQG0+BvPAji6p9E8Q==} 1390 - engines: {node: '>=16.9.0'} 1022 + hosted-git-info@6.1.3: 1023 + resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} 1024 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1391 1025 1392 1026 http-errors@2.0.0: 1393 1027 resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1394 1028 engines: {node: '>= 0.8'} 1395 1029 1396 - iconv-lite@0.6.3: 1397 - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1030 + iconv-lite@0.4.24: 1031 + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1398 1032 engines: {node: '>=0.10.0'} 1399 1033 1400 - ignore@5.3.2: 1401 - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1402 - engines: {node: '>= 4'} 1403 - 1404 - import-fresh@3.3.1: 1405 - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1406 - engines: {node: '>=6'} 1407 - 1408 - imurmurhash@0.1.4: 1409 - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1410 - engines: {node: '>=0.8.19'} 1411 - 1412 1034 inherits@2.0.4: 1413 1035 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1414 1036 ··· 1416 1038 resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1417 1039 engines: {node: '>= 0.10'} 1418 1040 1419 - is-arrayish@0.3.2: 1420 - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} 1041 + is-core-module@2.16.1: 1042 + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1043 + engines: {node: '>= 0.4'} 1421 1044 1422 - is-extglob@2.1.1: 1423 - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1424 - engines: {node: '>=0.10.0'} 1045 + is-fullwidth-code-point@3.0.0: 1046 + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1047 + engines: {node: '>=8'} 1425 1048 1426 - is-glob@4.0.3: 1427 - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1428 - engines: {node: '>=0.10.0'} 1429 - 1430 - is-number@7.0.0: 1431 - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1432 - engines: {node: '>=0.12.0'} 1433 - 1434 - is-promise@4.0.0: 1435 - resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 1049 + isbot@5.1.28: 1050 + resolution: {integrity: sha512-qrOp4g3xj8YNse4biorv6O5ZShwsJM0trsoda4y7j/Su7ZtTTfVXFzbKkpgcSoDrHS8FcTuUwcU04YimZlZOxw==} 1051 + engines: {node: '>=18'} 1436 1052 1437 1053 isexe@2.0.0: 1438 1054 resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1439 1055 1440 1056 iso-datestring-validator@2.2.2: 1441 1057 resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 1058 + 1059 + jackspeak@3.4.3: 1060 + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1442 1061 1443 1062 jiti@2.4.2: 1444 1063 resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} ··· 1450 1069 js-tokens@4.0.0: 1451 1070 resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1452 1071 1453 - js-yaml@4.1.0: 1454 - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1455 - hasBin: true 1456 - 1457 - jsesc@3.1.0: 1458 - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1072 + jsesc@3.0.2: 1073 + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1459 1074 engines: {node: '>=6'} 1460 1075 hasBin: true 1461 1076 1462 - json-buffer@3.0.1: 1463 - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1464 - 1465 - json-schema-traverse@0.4.1: 1466 - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1467 - 1468 - json-stable-stringify-without-jsonify@1.0.1: 1469 - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1077 + json-parse-even-better-errors@3.0.2: 1078 + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} 1079 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1470 1080 1471 1081 json5@2.2.3: 1472 1082 resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1473 1083 engines: {node: '>=6'} 1474 1084 hasBin: true 1475 1085 1476 - keyv@4.5.4: 1477 - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1478 - 1479 - levn@0.4.1: 1480 - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1481 - engines: {node: '>= 0.8.0'} 1086 + jsonfile@6.1.0: 1087 + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1482 1088 1483 1089 lightningcss-darwin-arm64@1.29.2: 1484 1090 resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==} ··· 1544 1150 resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==} 1545 1151 engines: {node: '>= 12.0.0'} 1546 1152 1547 - locate-path@6.0.0: 1548 - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1549 - engines: {node: '>=10'} 1550 - 1551 - lodash.merge@4.6.2: 1552 - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1153 + lodash@4.17.21: 1154 + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1553 1155 1554 1156 lru-cache@10.4.3: 1555 1157 resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} ··· 1557 1159 lru-cache@5.1.1: 1558 1160 resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1559 1161 1162 + lru-cache@7.18.3: 1163 + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} 1164 + engines: {node: '>=12'} 1165 + 1560 1166 magic-string@0.30.17: 1561 1167 resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1562 1168 ··· 1564 1170 resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1565 1171 engines: {node: '>= 0.4'} 1566 1172 1567 - media-typer@1.1.0: 1568 - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 1569 - engines: {node: '>= 0.8'} 1173 + media-typer@0.3.0: 1174 + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 1175 + engines: {node: '>= 0.6'} 1570 1176 1571 - merge-descriptors@2.0.0: 1572 - resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} 1573 - engines: {node: '>=18'} 1177 + merge-descriptors@1.0.3: 1178 + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} 1574 1179 1575 - merge2@1.4.1: 1576 - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1577 - engines: {node: '>= 8'} 1578 - 1579 - micromatch@4.0.8: 1580 - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1581 - engines: {node: '>=8.6'} 1180 + methods@1.1.2: 1181 + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1182 + engines: {node: '>= 0.6'} 1582 1183 1583 1184 mime-db@1.52.0: 1584 1185 resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} ··· 1592 1193 resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1593 1194 engines: {node: '>= 0.6'} 1594 1195 1595 - mime-types@3.0.1: 1596 - resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} 1597 - engines: {node: '>= 0.6'} 1598 - 1599 - mime@3.0.0: 1600 - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1601 - engines: {node: '>=10.0.0'} 1196 + mime@1.6.0: 1197 + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 1198 + engines: {node: '>=4'} 1602 1199 hasBin: true 1603 1200 1604 - miniflare@4.20250507.0: 1605 - resolution: {integrity: sha512-EgbQRt/Hnr8HCmW2J/4LRNE3yOzJTdNd98XJ8gnGXFKcimXxUFPiWP3k1df+ZPCtEHp6cXxi8+jP7v9vuIbIsg==} 1606 - engines: {node: '>=18.0.0'} 1607 - hasBin: true 1608 - 1609 - minimatch@3.1.2: 1610 - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1611 - 1612 1201 minimatch@9.0.5: 1613 1202 resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1614 1203 engines: {node: '>=16 || 14 >=14.17'} ··· 1626 1215 engines: {node: '>=10'} 1627 1216 hasBin: true 1628 1217 1218 + morgan@1.10.0: 1219 + resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} 1220 + engines: {node: '>= 0.8.0'} 1221 + 1222 + ms@2.0.0: 1223 + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1224 + 1629 1225 ms@2.1.3: 1630 1226 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1631 1227 1632 1228 multiformats@9.9.0: 1633 1229 resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 1634 1230 1635 - mustache@4.2.0: 1636 - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 1637 - hasBin: true 1638 - 1639 1231 nanoid@3.3.11: 1640 1232 resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1641 1233 engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1642 1234 hasBin: true 1643 1235 1644 - natural-compare@1.4.0: 1645 - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1236 + negotiator@0.6.3: 1237 + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1238 + engines: {node: '>= 0.6'} 1646 1239 1647 - negotiator@1.0.0: 1648 - resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 1240 + negotiator@0.6.4: 1241 + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} 1649 1242 engines: {node: '>= 0.6'} 1650 1243 1651 - node-fetch-native@1.6.6: 1652 - resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} 1653 - 1654 1244 node-releases@2.0.19: 1655 1245 resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1656 1246 1657 - object-assign@4.1.1: 1658 - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1659 - engines: {node: '>=0.10.0'} 1247 + normalize-package-data@5.0.0: 1248 + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} 1249 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1250 + 1251 + npm-install-checks@6.3.0: 1252 + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} 1253 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1254 + 1255 + npm-normalize-package-bin@3.0.1: 1256 + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} 1257 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1258 + 1259 + npm-package-arg@10.1.0: 1260 + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} 1261 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1262 + 1263 + npm-pick-manifest@8.0.2: 1264 + resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==} 1265 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1660 1266 1661 1267 object-inspect@1.13.4: 1662 1268 resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1663 1269 engines: {node: '>= 0.4'} 1664 1270 1665 - ohash@2.0.11: 1666 - resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1271 + on-finished@2.3.0: 1272 + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} 1273 + engines: {node: '>= 0.8'} 1667 1274 1668 1275 on-finished@2.4.1: 1669 1276 resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1670 1277 engines: {node: '>= 0.8'} 1671 1278 1672 - once@1.4.0: 1673 - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1674 - 1675 - optionator@0.9.4: 1676 - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1677 - engines: {node: '>= 0.8.0'} 1678 - 1679 - p-limit@3.1.0: 1680 - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1681 - engines: {node: '>=10'} 1279 + on-headers@1.0.2: 1280 + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} 1281 + engines: {node: '>= 0.8'} 1682 1282 1683 - p-locate@5.0.0: 1684 - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1685 - engines: {node: '>=10'} 1686 - 1687 - parent-module@1.0.1: 1688 - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1689 - engines: {node: '>=6'} 1283 + package-json-from-dist@1.0.1: 1284 + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1690 1285 1691 1286 parseurl@1.3.3: 1692 1287 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1693 1288 engines: {node: '>= 0.8'} 1694 1289 1695 - path-exists@4.0.0: 1696 - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1697 - engines: {node: '>=8'} 1698 - 1699 1290 path-key@3.1.1: 1700 1291 resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1701 1292 engines: {node: '>=8'} 1702 1293 1703 - path-to-regexp@6.3.0: 1704 - resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 1294 + path-scurry@1.11.1: 1295 + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1296 + engines: {node: '>=16 || 14 >=14.18'} 1705 1297 1706 - path-to-regexp@8.2.0: 1707 - resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} 1708 - engines: {node: '>=16'} 1298 + path-to-regexp@0.1.12: 1299 + resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} 1709 1300 1710 - pathe@2.0.3: 1711 - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1301 + pathe@1.1.2: 1302 + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1712 1303 1713 1304 picocolors@1.1.1: 1714 1305 resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1715 1306 1716 - picomatch@2.3.1: 1717 - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1718 - engines: {node: '>=8.6'} 1719 - 1720 1307 picomatch@4.0.2: 1721 1308 resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1722 1309 engines: {node: '>=12'} 1723 1310 1724 - pkce-challenge@5.0.0: 1725 - resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} 1726 - engines: {node: '>=16.20.0'} 1727 - 1728 1311 postcss@8.5.3: 1729 1312 resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 1730 1313 engines: {node: ^10 || ^12 || >=14} 1731 1314 1732 - prelude-ls@1.2.1: 1733 - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1734 - engines: {node: '>= 0.8.0'} 1315 + prettier@2.8.8: 1316 + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1317 + engines: {node: '>=10.13.0'} 1318 + hasBin: true 1319 + 1320 + proc-log@3.0.0: 1321 + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} 1322 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1323 + 1324 + promise-inflight@1.0.1: 1325 + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} 1326 + peerDependencies: 1327 + bluebird: '*' 1328 + peerDependenciesMeta: 1329 + bluebird: 1330 + optional: true 1735 1331 1736 - printable-characters@1.0.42: 1737 - resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 1332 + promise-retry@2.0.1: 1333 + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} 1334 + engines: {node: '>=10'} 1738 1335 1739 1336 proxy-addr@2.0.7: 1740 1337 resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1741 1338 engines: {node: '>= 0.10'} 1742 1339 1743 - punycode@2.3.1: 1744 - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1745 - engines: {node: '>=6'} 1746 - 1747 - qs@6.14.0: 1748 - resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} 1340 + qs@6.13.0: 1341 + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 1749 1342 engines: {node: '>=0.6'} 1750 - 1751 - queue-microtask@1.2.3: 1752 - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1753 1343 1754 1344 range-parser@1.2.1: 1755 1345 resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1756 1346 engines: {node: '>= 0.6'} 1757 1347 1758 - raw-body@3.0.0: 1759 - resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} 1348 + raw-body@2.5.2: 1349 + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} 1760 1350 engines: {node: '>= 0.8'} 1761 1351 1762 1352 react-dom@19.1.0: ··· 1764 1354 peerDependencies: 1765 1355 react: ^19.1.0 1766 1356 1767 - react-refresh@0.17.0: 1768 - resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} 1357 + react-refresh@0.14.2: 1358 + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 1769 1359 engines: {node: '>=0.10.0'} 1770 1360 1361 + react-router@7.6.0: 1362 + resolution: {integrity: sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==} 1363 + engines: {node: '>=20.0.0'} 1364 + peerDependencies: 1365 + react: '>=18' 1366 + react-dom: '>=18' 1367 + peerDependenciesMeta: 1368 + react-dom: 1369 + optional: true 1370 + 1771 1371 react@19.1.0: 1772 1372 resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} 1773 1373 engines: {node: '>=0.10.0'} 1774 1374 1775 - resolve-from@4.0.0: 1776 - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1777 - engines: {node: '>=4'} 1375 + readdirp@4.1.2: 1376 + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1377 + engines: {node: '>= 14.18.0'} 1778 1378 1779 - reusify@1.1.0: 1780 - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1781 - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1379 + retry@0.12.0: 1380 + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} 1381 + engines: {node: '>= 4'} 1782 1382 1783 1383 rollup@4.40.2: 1784 1384 resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} 1785 1385 engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1786 1386 hasBin: true 1787 1387 1788 - router@2.2.0: 1789 - resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} 1790 - engines: {node: '>= 18'} 1791 - 1792 - run-parallel@1.2.0: 1793 - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1388 + safe-buffer@5.1.2: 1389 + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 1794 1390 1795 1391 safe-buffer@5.2.1: 1796 1392 resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} ··· 1810 1406 engines: {node: '>=10'} 1811 1407 hasBin: true 1812 1408 1813 - send@1.2.0: 1814 - resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} 1815 - engines: {node: '>= 18'} 1409 + send@0.19.0: 1410 + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} 1411 + engines: {node: '>= 0.8.0'} 1412 + 1413 + serve-static@1.16.2: 1414 + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} 1415 + engines: {node: '>= 0.8.0'} 1816 1416 1817 - serve-static@2.2.0: 1818 - resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} 1819 - engines: {node: '>= 18'} 1417 + set-cookie-parser@2.7.1: 1418 + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} 1820 1419 1821 1420 setprototypeof@1.2.0: 1822 1421 resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1823 1422 1824 - sharp@0.33.5: 1825 - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1826 - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1827 - 1828 1423 shebang-command@2.0.0: 1829 1424 resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1830 1425 engines: {node: '>=8'} ··· 1849 1444 resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1850 1445 engines: {node: '>= 0.4'} 1851 1446 1852 - simple-swizzle@0.2.2: 1853 - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 1447 + signal-exit@4.1.0: 1448 + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1449 + engines: {node: '>=14'} 1854 1450 1855 1451 source-map-js@1.2.1: 1856 1452 resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1857 1453 engines: {node: '>=0.10.0'} 1858 1454 1455 + source-map-support@0.5.21: 1456 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1457 + 1859 1458 source-map@0.6.1: 1860 1459 resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1861 1460 engines: {node: '>=0.10.0'} 1862 1461 1863 - stacktracey@2.1.8: 1864 - resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 1462 + spdx-correct@3.2.0: 1463 + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 1464 + 1465 + spdx-exceptions@2.5.0: 1466 + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 1467 + 1468 + spdx-expression-parse@3.0.1: 1469 + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1470 + 1471 + spdx-license-ids@3.0.21: 1472 + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} 1865 1473 1866 1474 statuses@2.0.1: 1867 1475 resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1868 1476 engines: {node: '>= 0.8'} 1869 1477 1870 - stoppable@1.1.0: 1871 - resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 1872 - engines: {node: '>=4', npm: '>=6'} 1873 - 1874 - streamsearch@1.1.0: 1875 - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1876 - engines: {node: '>=10.0.0'} 1478 + stream-slice@0.1.2: 1479 + resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} 1877 1480 1878 - strip-json-comments@3.1.1: 1879 - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1481 + string-width@4.2.3: 1482 + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1880 1483 engines: {node: '>=8'} 1881 1484 1882 - supports-color@7.2.0: 1883 - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1485 + string-width@5.1.2: 1486 + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1487 + engines: {node: '>=12'} 1488 + 1489 + strip-ansi@6.0.1: 1490 + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1884 1491 engines: {node: '>=8'} 1492 + 1493 + strip-ansi@7.1.0: 1494 + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1495 + engines: {node: '>=12'} 1885 1496 1886 1497 tailwindcss@4.1.6: 1887 1498 resolution: {integrity: sha512-j0cGLTreM6u4OWzBeLBpycK0WIh8w7kSwcUsQZoGLHZ7xDTdM69lN64AgoIEEwFi0tnhs4wSykUa5YWxAzgFYg==} ··· 1902 1513 resolution: {integrity: sha512-XGhStWuOlBA5D8QnyN2xtgB2cUOdJ3ztisne1DYVWMcVH29qh8eQIpRmP3HnuJLdgyzG0HpdGzRMu1lm/Oictw==} 1903 1514 hasBin: true 1904 1515 1905 - to-regex-range@5.0.1: 1906 - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1907 - engines: {node: '>=8.0'} 1908 - 1909 1516 toidentifier@1.0.1: 1910 1517 resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1911 1518 engines: {node: '>=0.6'} 1912 1519 1913 - ts-api-utils@2.1.0: 1914 - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1915 - engines: {node: '>=18.12'} 1520 + tsconfck@3.1.5: 1521 + resolution: {integrity: sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==} 1522 + engines: {node: ^18 || >=20} 1523 + hasBin: true 1916 1524 peerDependencies: 1917 - typescript: '>=4.8.4' 1525 + typescript: ^5.0.0 1526 + peerDependenciesMeta: 1527 + typescript: 1528 + optional: true 1918 1529 1919 - tslib@2.8.1: 1920 - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1921 - 1922 - type-check@0.4.0: 1923 - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1924 - engines: {node: '>= 0.8.0'} 1925 - 1926 - type-is@2.0.1: 1927 - resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} 1530 + type-is@1.6.18: 1531 + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 1928 1532 engines: {node: '>= 0.6'} 1929 1533 1930 - typescript-eslint@8.32.0: 1931 - resolution: {integrity: sha512-UMq2kxdXCzinFFPsXc9o2ozIpYCCOiEC46MG3yEh5Vipq6BO27otTtEBZA1fQ66DulEUgE97ucQ/3YY66CPg0A==} 1932 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1933 - peerDependencies: 1934 - eslint: ^8.57.0 || ^9.0.0 1935 - typescript: '>=4.8.4 <5.9.0' 1936 - 1937 - typescript@5.7.3: 1938 - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} 1534 + typescript@5.8.3: 1535 + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} 1939 1536 engines: {node: '>=14.17'} 1940 1537 hasBin: true 1941 1538 1942 - ufo@1.6.1: 1943 - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1944 - 1945 1539 uint8arrays@3.0.0: 1946 1540 resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 1947 1541 1948 - undici@5.29.0: 1949 - resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 1950 - engines: {node: '>=14.0'} 1542 + undici-types@6.19.8: 1543 + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 1544 + 1545 + undici@6.21.2: 1546 + resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} 1547 + engines: {node: '>=18.17'} 1951 1548 1952 - unenv@2.0.0-rc.15: 1953 - resolution: {integrity: sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==} 1549 + universalify@2.0.1: 1550 + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 1551 + engines: {node: '>= 10.0.0'} 1954 1552 1955 1553 unpipe@1.0.0: 1956 1554 resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} ··· 1962 1560 peerDependencies: 1963 1561 browserslist: '>= 4.21.0' 1964 1562 1965 - uri-js@4.4.1: 1966 - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1563 + utils-merge@1.0.1: 1564 + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 1565 + engines: {node: '>= 0.4.0'} 1967 1566 1968 - urlpattern-polyfill@10.1.0: 1969 - resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} 1567 + valibot@0.41.0: 1568 + resolution: {integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==} 1569 + peerDependencies: 1570 + typescript: '>=5' 1571 + peerDependenciesMeta: 1572 + typescript: 1573 + optional: true 1574 + 1575 + validate-npm-package-license@3.0.4: 1576 + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 1577 + 1578 + validate-npm-package-name@5.0.1: 1579 + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} 1580 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1970 1581 1971 1582 vary@1.1.2: 1972 1583 resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1973 1584 engines: {node: '>= 0.8'} 1585 + 1586 + vite-node@3.0.0-beta.2: 1587 + resolution: {integrity: sha512-ofTf6cfRdL30Wbl9n/BX81EyIR5s4PReLmSurrxQ+koLaWUNOEo8E0lCM53OJkb8vpa2URM2nSrxZsIFyvY1rg==} 1588 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1589 + hasBin: true 1590 + 1591 + vite-tsconfig-paths@5.1.4: 1592 + resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} 1593 + peerDependencies: 1594 + vite: '*' 1595 + peerDependenciesMeta: 1596 + vite: 1597 + optional: true 1974 1598 1975 1599 vite@6.3.5: 1976 1600 resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} ··· 2017 1641 engines: {node: '>= 8'} 2018 1642 hasBin: true 2019 1643 2020 - word-wrap@1.2.5: 2021 - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 2022 - engines: {node: '>=0.10.0'} 2023 - 2024 - workerd@1.20250507.0: 2025 - resolution: {integrity: sha512-OXaGjEh5THT9iblwWIyPrYBoaPe/d4zN03Go7/w8CmS8sma7//O9hjbk43sboWkc89taGPmU0/LNyZUUiUlHeQ==} 2026 - engines: {node: '>=16'} 1644 + which@3.0.1: 1645 + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} 1646 + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 2027 1647 hasBin: true 2028 1648 2029 - wrangler@4.14.4: 2030 - resolution: {integrity: sha512-HIdOdiMIcJV5ymw80RKsr3Uzen/p1kRX4jnCEmR2XVeoEhV2Qw6GABxS5WMTlSES2/vEX0Y+ezUAdsprcUhJ5g==} 2031 - engines: {node: '>=18.0.0'} 2032 - hasBin: true 2033 - peerDependencies: 2034 - '@cloudflare/workers-types': ^4.20250507.0 2035 - peerDependenciesMeta: 2036 - '@cloudflare/workers-types': 2037 - optional: true 1649 + wrap-ansi@7.0.0: 1650 + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1651 + engines: {node: '>=10'} 2038 1652 2039 - wrappy@1.0.2: 2040 - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2041 - 2042 - ws@8.18.0: 2043 - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 2044 - engines: {node: '>=10.0.0'} 2045 - peerDependencies: 2046 - bufferutil: ^4.0.1 2047 - utf-8-validate: '>=5.0.2' 2048 - peerDependenciesMeta: 2049 - bufferutil: 2050 - optional: true 2051 - utf-8-validate: 2052 - optional: true 1653 + wrap-ansi@8.1.0: 1654 + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1655 + engines: {node: '>=12'} 2053 1656 2054 1657 yallist@3.1.1: 2055 1658 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} ··· 2057 1660 yallist@5.0.0: 2058 1661 resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} 2059 1662 engines: {node: '>=18'} 2060 - 2061 - yocto-queue@0.1.0: 2062 - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2063 - engines: {node: '>=10'} 2064 - 2065 - youch@3.3.4: 2066 - resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} 2067 - 2068 - zod-to-json-schema@3.24.5: 2069 - resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} 2070 - peerDependencies: 2071 - zod: ^3.24.1 2072 - 2073 - zod@3.22.3: 2074 - resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} 2075 1663 2076 1664 zod@3.24.4: 2077 1665 resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} ··· 2236 1824 '@babel/types': 7.27.1 2237 1825 '@jridgewell/gen-mapping': 0.3.8 2238 1826 '@jridgewell/trace-mapping': 0.3.25 2239 - jsesc: 3.1.0 1827 + jsesc: 3.0.2 1828 + 1829 + '@babel/helper-annotate-as-pure@7.27.1': 1830 + dependencies: 1831 + '@babel/types': 7.27.1 2240 1832 2241 1833 '@babel/helper-compilation-targets@7.27.2': 2242 1834 dependencies: ··· 2245 1837 browserslist: 4.24.5 2246 1838 lru-cache: 5.1.1 2247 1839 semver: 6.3.1 1840 + 1841 + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)': 1842 + dependencies: 1843 + '@babel/core': 7.27.1 1844 + '@babel/helper-annotate-as-pure': 7.27.1 1845 + '@babel/helper-member-expression-to-functions': 7.27.1 1846 + '@babel/helper-optimise-call-expression': 7.27.1 1847 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) 1848 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 1849 + '@babel/traverse': 7.27.1 1850 + semver: 6.3.1 1851 + transitivePeerDependencies: 1852 + - supports-color 1853 + 1854 + '@babel/helper-member-expression-to-functions@7.27.1': 1855 + dependencies: 1856 + '@babel/traverse': 7.27.1 1857 + '@babel/types': 7.27.1 1858 + transitivePeerDependencies: 1859 + - supports-color 2248 1860 2249 1861 '@babel/helper-module-imports@7.27.1': 2250 1862 dependencies: ··· 2262 1874 transitivePeerDependencies: 2263 1875 - supports-color 2264 1876 1877 + '@babel/helper-optimise-call-expression@7.27.1': 1878 + dependencies: 1879 + '@babel/types': 7.27.1 1880 + 2265 1881 '@babel/helper-plugin-utils@7.27.1': {} 2266 1882 1883 + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)': 1884 + dependencies: 1885 + '@babel/core': 7.27.1 1886 + '@babel/helper-member-expression-to-functions': 7.27.1 1887 + '@babel/helper-optimise-call-expression': 7.27.1 1888 + '@babel/traverse': 7.27.1 1889 + transitivePeerDependencies: 1890 + - supports-color 1891 + 1892 + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': 1893 + dependencies: 1894 + '@babel/traverse': 7.27.1 1895 + '@babel/types': 7.27.1 1896 + transitivePeerDependencies: 1897 + - supports-color 1898 + 2267 1899 '@babel/helper-string-parser@7.27.1': {} 2268 1900 2269 1901 '@babel/helper-validator-identifier@7.27.1': {} ··· 2279 1911 dependencies: 2280 1912 '@babel/types': 7.27.1 2281 1913 2282 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.1)': 1914 + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.27.1)': 1915 + dependencies: 1916 + '@babel/core': 7.27.1 1917 + '@babel/helper-plugin-utils': 7.27.1 1918 + 1919 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.1)': 1920 + dependencies: 1921 + '@babel/core': 7.27.1 1922 + '@babel/helper-plugin-utils': 7.27.1 1923 + 1924 + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.1)': 1925 + dependencies: 1926 + '@babel/core': 7.27.1 1927 + '@babel/helper-plugin-utils': 7.27.1 1928 + 1929 + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)': 1930 + dependencies: 1931 + '@babel/core': 7.27.1 1932 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) 1933 + '@babel/helper-plugin-utils': 7.27.1 1934 + transitivePeerDependencies: 1935 + - supports-color 1936 + 1937 + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.1)': 2283 1938 dependencies: 2284 1939 '@babel/core': 7.27.1 1940 + '@babel/helper-annotate-as-pure': 7.27.1 1941 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) 2285 1942 '@babel/helper-plugin-utils': 7.27.1 1943 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 1944 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.1) 1945 + transitivePeerDependencies: 1946 + - supports-color 2286 1947 2287 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.1)': 1948 + '@babel/preset-typescript@7.27.1(@babel/core@7.27.1)': 2288 1949 dependencies: 2289 1950 '@babel/core': 7.27.1 2290 1951 '@babel/helper-plugin-utils': 7.27.1 1952 + '@babel/helper-validator-option': 7.27.1 1953 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) 1954 + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) 1955 + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.1) 1956 + transitivePeerDependencies: 1957 + - supports-color 2291 1958 2292 1959 '@babel/template@7.27.2': 2293 1960 dependencies: ··· 2312 1979 '@babel/helper-string-parser': 7.27.1 2313 1980 '@babel/helper-validator-identifier': 7.27.1 2314 1981 2315 - '@cloudflare/kv-asset-handler@0.4.0': 2316 - dependencies: 2317 - mime: 3.0.0 2318 - 2319 - '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0)': 2320 - dependencies: 2321 - unenv: 2.0.0-rc.15 2322 - optionalDependencies: 2323 - workerd: 1.20250507.0 2324 - 2325 - '@cloudflare/vite-plugin@1.1.1(rollup@4.40.2)(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))(workerd@1.20250507.0)(wrangler@4.14.4(@cloudflare/workers-types@4.20250510.0))': 2326 - dependencies: 2327 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0) 2328 - '@hattip/adapter-node': 0.0.49 2329 - '@rollup/plugin-replace': 6.0.2(rollup@4.40.2) 2330 - get-port: 7.1.0 2331 - miniflare: 4.20250507.0 2332 - picocolors: 1.1.1 2333 - tinyglobby: 0.2.13 2334 - unenv: 2.0.0-rc.15 2335 - vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) 2336 - wrangler: 4.14.4(@cloudflare/workers-types@4.20250510.0) 2337 - ws: 8.18.0 2338 - transitivePeerDependencies: 2339 - - bufferutil 2340 - - rollup 2341 - - utf-8-validate 2342 - - workerd 2343 - 2344 - '@cloudflare/workerd-darwin-64@1.20250507.0': 2345 - optional: true 2346 - 2347 - '@cloudflare/workerd-darwin-arm64@1.20250507.0': 2348 - optional: true 2349 - 2350 - '@cloudflare/workerd-linux-64@1.20250507.0': 2351 - optional: true 2352 - 2353 - '@cloudflare/workerd-linux-arm64@1.20250507.0': 2354 - optional: true 2355 - 2356 - '@cloudflare/workerd-windows-64@1.20250507.0': 2357 - optional: true 2358 - 2359 - '@cloudflare/workers-types@4.20250510.0': {} 2360 - 2361 - '@cspotcode/source-map-support@0.8.1': 2362 - dependencies: 2363 - '@jridgewell/trace-mapping': 0.3.9 2364 - 2365 - '@emnapi/runtime@1.4.3': 2366 - dependencies: 2367 - tslib: 2.8.1 2368 - optional: true 2369 - 2370 1982 '@esbuild/aix-ppc64@0.25.4': 2371 1983 optional: true 2372 1984 ··· 2442 2054 '@esbuild/win32-x64@0.25.4': 2443 2055 optional: true 2444 2056 2445 - '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0(jiti@2.4.2))': 2446 - dependencies: 2447 - eslint: 9.26.0(jiti@2.4.2) 2448 - eslint-visitor-keys: 3.4.3 2449 - 2450 - '@eslint-community/regexpp@4.12.1': {} 2451 - 2452 - '@eslint/config-array@0.20.0': 2453 - dependencies: 2454 - '@eslint/object-schema': 2.1.6 2455 - debug: 4.4.0 2456 - minimatch: 3.1.2 2457 - transitivePeerDependencies: 2458 - - supports-color 2459 - 2460 - '@eslint/config-helpers@0.2.2': {} 2461 - 2462 - '@eslint/core@0.13.0': 2463 - dependencies: 2464 - '@types/json-schema': 7.0.15 2465 - 2466 - '@eslint/eslintrc@3.3.1': 2467 - dependencies: 2468 - ajv: 6.12.6 2469 - debug: 4.4.0 2470 - espree: 10.3.0 2471 - globals: 14.0.0 2472 - ignore: 5.3.2 2473 - import-fresh: 3.3.1 2474 - js-yaml: 4.1.0 2475 - minimatch: 3.1.2 2476 - strip-json-comments: 3.1.1 2477 - transitivePeerDependencies: 2478 - - supports-color 2479 - 2480 - '@eslint/js@9.26.0': {} 2481 - 2482 - '@eslint/object-schema@2.1.6': {} 2483 - 2484 - '@eslint/plugin-kit@0.2.8': 2485 - dependencies: 2486 - '@eslint/core': 0.13.0 2487 - levn: 0.4.1 2488 - 2489 - '@fastify/busboy@2.1.1': {} 2490 - 2491 - '@hattip/adapter-node@0.0.49': 2492 - dependencies: 2493 - '@hattip/core': 0.0.49 2494 - '@hattip/polyfills': 0.0.49 2495 - '@hattip/walk': 0.0.49 2496 - 2497 - '@hattip/core@0.0.49': {} 2498 - 2499 - '@hattip/headers@0.0.49': 2500 - dependencies: 2501 - '@hattip/core': 0.0.49 2502 - 2503 - '@hattip/polyfills@0.0.49': 2504 - dependencies: 2505 - '@hattip/core': 0.0.49 2506 - '@whatwg-node/fetch': 0.9.23 2507 - node-fetch-native: 1.6.6 2508 - 2509 - '@hattip/walk@0.0.49': 2510 - dependencies: 2511 - '@hattip/headers': 0.0.49 2512 - cac: 6.7.14 2513 - mime-types: 2.1.35 2514 - 2515 - '@humanfs/core@0.19.1': {} 2516 - 2517 - '@humanfs/node@0.16.6': 2518 - dependencies: 2519 - '@humanfs/core': 0.19.1 2520 - '@humanwhocodes/retry': 0.3.1 2521 - 2522 - '@humanwhocodes/module-importer@1.0.1': {} 2523 - 2524 - '@humanwhocodes/retry@0.3.1': {} 2525 - 2526 - '@humanwhocodes/retry@0.4.3': {} 2527 - 2528 - '@img/sharp-darwin-arm64@0.33.5': 2529 - optionalDependencies: 2530 - '@img/sharp-libvips-darwin-arm64': 1.0.4 2531 - optional: true 2532 - 2533 - '@img/sharp-darwin-x64@0.33.5': 2534 - optionalDependencies: 2535 - '@img/sharp-libvips-darwin-x64': 1.0.4 2536 - optional: true 2537 - 2538 - '@img/sharp-libvips-darwin-arm64@1.0.4': 2539 - optional: true 2540 - 2541 - '@img/sharp-libvips-darwin-x64@1.0.4': 2542 - optional: true 2543 - 2544 - '@img/sharp-libvips-linux-arm64@1.0.4': 2545 - optional: true 2546 - 2547 - '@img/sharp-libvips-linux-arm@1.0.5': 2548 - optional: true 2549 - 2550 - '@img/sharp-libvips-linux-s390x@1.0.4': 2551 - optional: true 2552 - 2553 - '@img/sharp-libvips-linux-x64@1.0.4': 2554 - optional: true 2555 - 2556 - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 2557 - optional: true 2558 - 2559 - '@img/sharp-libvips-linuxmusl-x64@1.0.4': 2560 - optional: true 2561 - 2562 - '@img/sharp-linux-arm64@0.33.5': 2563 - optionalDependencies: 2564 - '@img/sharp-libvips-linux-arm64': 1.0.4 2565 - optional: true 2566 - 2567 - '@img/sharp-linux-arm@0.33.5': 2568 - optionalDependencies: 2569 - '@img/sharp-libvips-linux-arm': 1.0.5 2570 - optional: true 2571 - 2572 - '@img/sharp-linux-s390x@0.33.5': 2573 - optionalDependencies: 2574 - '@img/sharp-libvips-linux-s390x': 1.0.4 2575 - optional: true 2576 - 2577 - '@img/sharp-linux-x64@0.33.5': 2578 - optionalDependencies: 2579 - '@img/sharp-libvips-linux-x64': 1.0.4 2580 - optional: true 2581 - 2582 - '@img/sharp-linuxmusl-arm64@0.33.5': 2583 - optionalDependencies: 2584 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 2585 - optional: true 2586 - 2587 - '@img/sharp-linuxmusl-x64@0.33.5': 2588 - optionalDependencies: 2589 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 2590 - optional: true 2591 - 2592 - '@img/sharp-wasm32@0.33.5': 2057 + '@isaacs/cliui@8.0.2': 2593 2058 dependencies: 2594 - '@emnapi/runtime': 1.4.3 2595 - optional: true 2596 - 2597 - '@img/sharp-win32-ia32@0.33.5': 2598 - optional: true 2599 - 2600 - '@img/sharp-win32-x64@0.33.5': 2601 - optional: true 2059 + string-width: 5.1.2 2060 + string-width-cjs: string-width@4.2.3 2061 + strip-ansi: 7.1.0 2062 + strip-ansi-cjs: strip-ansi@6.0.1 2063 + wrap-ansi: 8.1.0 2064 + wrap-ansi-cjs: wrap-ansi@7.0.0 2602 2065 2603 2066 '@isaacs/fs-minipass@4.0.1': 2604 2067 dependencies: ··· 2621 2084 '@jridgewell/resolve-uri': 3.1.2 2622 2085 '@jridgewell/sourcemap-codec': 1.5.0 2623 2086 2624 - '@jridgewell/trace-mapping@0.3.9': 2087 + '@mjackson/node-fetch-server@0.2.0': {} 2088 + 2089 + '@npmcli/git@4.1.0': 2625 2090 dependencies: 2626 - '@jridgewell/resolve-uri': 3.1.2 2627 - '@jridgewell/sourcemap-codec': 1.5.0 2628 - 2629 - '@kamilkisiela/fast-url-parser@1.1.4': {} 2091 + '@npmcli/promise-spawn': 6.0.2 2092 + lru-cache: 7.18.3 2093 + npm-pick-manifest: 8.0.2 2094 + proc-log: 3.0.0 2095 + promise-inflight: 1.0.1 2096 + promise-retry: 2.0.1 2097 + semver: 7.7.1 2098 + which: 3.0.1 2099 + transitivePeerDependencies: 2100 + - bluebird 2630 2101 2631 - '@modelcontextprotocol/sdk@1.11.1': 2102 + '@npmcli/package-json@4.0.1': 2632 2103 dependencies: 2633 - content-type: 1.0.5 2634 - cors: 2.8.5 2635 - cross-spawn: 7.0.6 2636 - eventsource: 3.0.7 2637 - express: 5.1.0 2638 - express-rate-limit: 7.5.0(express@5.1.0) 2639 - pkce-challenge: 5.0.0 2640 - raw-body: 3.0.0 2641 - zod: 3.24.4 2642 - zod-to-json-schema: 3.24.5(zod@3.24.4) 2104 + '@npmcli/git': 4.1.0 2105 + glob: 10.4.5 2106 + hosted-git-info: 6.1.3 2107 + json-parse-even-better-errors: 3.0.2 2108 + normalize-package-data: 5.0.0 2109 + proc-log: 3.0.0 2110 + semver: 7.7.1 2643 2111 transitivePeerDependencies: 2644 - - supports-color 2112 + - bluebird 2645 2113 2646 - '@nodelib/fs.scandir@2.1.5': 2114 + '@npmcli/promise-spawn@6.0.2': 2647 2115 dependencies: 2648 - '@nodelib/fs.stat': 2.0.5 2649 - run-parallel: 1.2.0 2116 + which: 3.0.1 2650 2117 2651 - '@nodelib/fs.stat@2.0.5': {} 2118 + '@pkgjs/parseargs@0.11.0': 2119 + optional: true 2652 2120 2653 - '@nodelib/fs.walk@1.2.8': 2121 + '@react-router/dev@7.6.0(@react-router/serve@7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3))(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2)(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2))': 2654 2122 dependencies: 2655 - '@nodelib/fs.scandir': 2.1.5 2656 - fastq: 1.19.1 2123 + '@babel/core': 7.27.1 2124 + '@babel/generator': 7.27.1 2125 + '@babel/parser': 7.27.2 2126 + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.27.1) 2127 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) 2128 + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.1) 2129 + '@babel/traverse': 7.27.1 2130 + '@babel/types': 7.27.1 2131 + '@npmcli/package-json': 4.0.1 2132 + '@react-router/node': 7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) 2133 + arg: 5.0.2 2134 + babel-dead-code-elimination: 1.0.10 2135 + chokidar: 4.0.3 2136 + dedent: 1.6.0 2137 + es-module-lexer: 1.7.0 2138 + exit-hook: 2.2.1 2139 + fs-extra: 10.1.0 2140 + jsesc: 3.0.2 2141 + lodash: 4.17.21 2142 + pathe: 1.1.2 2143 + picocolors: 1.1.1 2144 + prettier: 2.8.8 2145 + react-refresh: 0.14.2 2146 + react-router: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 2147 + semver: 7.7.1 2148 + set-cookie-parser: 2.7.1 2149 + valibot: 0.41.0(typescript@5.8.3) 2150 + vite: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2) 2151 + vite-node: 3.0.0-beta.2(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2) 2152 + optionalDependencies: 2153 + '@react-router/serve': 7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) 2154 + typescript: 5.8.3 2155 + transitivePeerDependencies: 2156 + - '@types/node' 2157 + - babel-plugin-macros 2158 + - bluebird 2159 + - jiti 2160 + - less 2161 + - lightningcss 2162 + - sass 2163 + - sass-embedded 2164 + - stylus 2165 + - sugarss 2166 + - supports-color 2167 + - terser 2168 + - tsx 2169 + - yaml 2657 2170 2658 - '@rollup/plugin-replace@6.0.2(rollup@4.40.2)': 2171 + '@react-router/express@7.6.0(express@4.21.2)(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': 2659 2172 dependencies: 2660 - '@rollup/pluginutils': 5.1.4(rollup@4.40.2) 2661 - magic-string: 0.30.17 2173 + '@react-router/node': 7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) 2174 + express: 4.21.2 2175 + react-router: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 2662 2176 optionalDependencies: 2663 - rollup: 4.40.2 2177 + typescript: 5.8.3 2664 2178 2665 - '@rollup/pluginutils@5.1.4(rollup@4.40.2)': 2179 + '@react-router/node@7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': 2666 2180 dependencies: 2667 - '@types/estree': 1.0.7 2668 - estree-walker: 2.0.2 2669 - picomatch: 4.0.2 2181 + '@mjackson/node-fetch-server': 0.2.0 2182 + react-router: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 2183 + source-map-support: 0.5.21 2184 + stream-slice: 0.1.2 2185 + undici: 6.21.2 2670 2186 optionalDependencies: 2671 - rollup: 4.40.2 2187 + typescript: 5.8.3 2188 + 2189 + '@react-router/serve@7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': 2190 + dependencies: 2191 + '@react-router/express': 7.6.0(express@4.21.2)(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) 2192 + '@react-router/node': 7.6.0(react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) 2193 + compression: 1.8.0 2194 + express: 4.21.2 2195 + get-port: 5.1.1 2196 + morgan: 1.10.0 2197 + react-router: 7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) 2198 + source-map-support: 0.5.21 2199 + transitivePeerDependencies: 2200 + - supports-color 2201 + - typescript 2672 2202 2673 2203 '@rollup/rollup-android-arm-eabi@4.40.2': 2674 2204 optional: true ··· 2794 2324 '@tailwindcss/oxide-win32-arm64-msvc': 4.1.6 2795 2325 '@tailwindcss/oxide-win32-x64-msvc': 4.1.6 2796 2326 2797 - '@tailwindcss/vite@4.1.6(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': 2327 + '@tailwindcss/vite@4.1.6(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2))': 2798 2328 dependencies: 2799 2329 '@tailwindcss/node': 4.1.6 2800 2330 '@tailwindcss/oxide': 4.1.6 2801 2331 tailwindcss: 4.1.6 2802 - vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) 2332 + vite: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2) 2803 2333 2804 - '@types/babel__core@7.20.5': 2805 - dependencies: 2806 - '@babel/parser': 7.27.2 2807 - '@babel/types': 7.27.1 2808 - '@types/babel__generator': 7.27.0 2809 - '@types/babel__template': 7.4.4 2810 - '@types/babel__traverse': 7.20.7 2334 + '@types/estree@1.0.7': {} 2811 2335 2812 - '@types/babel__generator@7.27.0': 2336 + '@types/node@20.17.46': 2813 2337 dependencies: 2814 - '@babel/types': 7.27.1 2338 + undici-types: 6.19.8 2815 2339 2816 - '@types/babel__template@7.4.4': 2817 - dependencies: 2818 - '@babel/parser': 7.27.2 2819 - '@babel/types': 7.27.1 2820 - 2821 - '@types/babel__traverse@7.20.7': 2822 - dependencies: 2823 - '@babel/types': 7.27.1 2824 - 2825 - '@types/estree@1.0.7': {} 2826 - 2827 - '@types/json-schema@7.0.15': {} 2828 - 2829 - '@types/react-dom@19.1.3(@types/react@19.1.3)': 2340 + '@types/react-dom@19.1.4(@types/react@19.1.3)': 2830 2341 dependencies: 2831 2342 '@types/react': 19.1.3 2832 2343 ··· 2834 2345 dependencies: 2835 2346 csstype: 3.1.3 2836 2347 2837 - '@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': 2348 + accepts@1.3.8: 2838 2349 dependencies: 2839 - '@eslint-community/regexpp': 4.12.1 2840 - '@typescript-eslint/parser': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 2841 - '@typescript-eslint/scope-manager': 8.32.0 2842 - '@typescript-eslint/type-utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 2843 - '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 2844 - '@typescript-eslint/visitor-keys': 8.32.0 2845 - eslint: 9.26.0(jiti@2.4.2) 2846 - graphemer: 1.4.0 2847 - ignore: 5.3.2 2848 - natural-compare: 1.4.0 2849 - ts-api-utils: 2.1.0(typescript@5.7.3) 2850 - typescript: 5.7.3 2851 - transitivePeerDependencies: 2852 - - supports-color 2350 + mime-types: 2.1.35 2351 + negotiator: 0.6.3 2853 2352 2854 - '@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': 2855 - dependencies: 2856 - '@typescript-eslint/scope-manager': 8.32.0 2857 - '@typescript-eslint/types': 8.32.0 2858 - '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) 2859 - '@typescript-eslint/visitor-keys': 8.32.0 2860 - debug: 4.4.0 2861 - eslint: 9.26.0(jiti@2.4.2) 2862 - typescript: 5.7.3 2863 - transitivePeerDependencies: 2864 - - supports-color 2353 + ansi-regex@5.0.1: {} 2865 2354 2866 - '@typescript-eslint/scope-manager@8.32.0': 2867 - dependencies: 2868 - '@typescript-eslint/types': 8.32.0 2869 - '@typescript-eslint/visitor-keys': 8.32.0 2355 + ansi-regex@6.1.0: {} 2870 2356 2871 - '@typescript-eslint/type-utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': 2357 + ansi-styles@4.3.0: 2872 2358 dependencies: 2873 - '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) 2874 - '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 2875 - debug: 4.4.0 2876 - eslint: 9.26.0(jiti@2.4.2) 2877 - ts-api-utils: 2.1.0(typescript@5.7.3) 2878 - typescript: 5.7.3 2879 - transitivePeerDependencies: 2880 - - supports-color 2359 + color-convert: 2.0.1 2881 2360 2882 - '@typescript-eslint/types@8.32.0': {} 2361 + ansi-styles@6.2.1: {} 2883 2362 2884 - '@typescript-eslint/typescript-estree@8.32.0(typescript@5.7.3)': 2885 - dependencies: 2886 - '@typescript-eslint/types': 8.32.0 2887 - '@typescript-eslint/visitor-keys': 8.32.0 2888 - debug: 4.4.0 2889 - fast-glob: 3.3.3 2890 - is-glob: 4.0.3 2891 - minimatch: 9.0.5 2892 - semver: 7.7.1 2893 - ts-api-utils: 2.1.0(typescript@5.7.3) 2894 - typescript: 5.7.3 2895 - transitivePeerDependencies: 2896 - - supports-color 2363 + arg@5.0.2: {} 2897 2364 2898 - '@typescript-eslint/utils@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3)': 2899 - dependencies: 2900 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) 2901 - '@typescript-eslint/scope-manager': 8.32.0 2902 - '@typescript-eslint/types': 8.32.0 2903 - '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) 2904 - eslint: 9.26.0(jiti@2.4.2) 2905 - typescript: 5.7.3 2906 - transitivePeerDependencies: 2907 - - supports-color 2365 + array-flatten@1.1.1: {} 2908 2366 2909 - '@typescript-eslint/visitor-keys@8.32.0': 2910 - dependencies: 2911 - '@typescript-eslint/types': 8.32.0 2912 - eslint-visitor-keys: 4.2.0 2367 + await-lock@2.2.2: {} 2913 2368 2914 - '@vitejs/plugin-react@4.4.1(vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2))': 2369 + babel-dead-code-elimination@1.0.10: 2915 2370 dependencies: 2916 2371 '@babel/core': 7.27.1 2917 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1) 2918 - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1) 2919 - '@types/babel__core': 7.20.5 2920 - react-refresh: 0.17.0 2921 - vite: 6.3.5(jiti@2.4.2)(lightningcss@1.29.2) 2372 + '@babel/parser': 7.27.2 2373 + '@babel/traverse': 7.27.1 2374 + '@babel/types': 7.27.1 2922 2375 transitivePeerDependencies: 2923 2376 - supports-color 2924 2377 2925 - '@whatwg-node/fetch@0.9.23': 2926 - dependencies: 2927 - '@whatwg-node/node-fetch': 0.6.0 2928 - urlpattern-polyfill: 10.1.0 2378 + balanced-match@1.0.2: {} 2929 2379 2930 - '@whatwg-node/node-fetch@0.6.0': 2380 + basic-auth@2.0.1: 2931 2381 dependencies: 2932 - '@kamilkisiela/fast-url-parser': 1.1.4 2933 - busboy: 1.6.0 2934 - fast-querystring: 1.1.2 2935 - tslib: 2.8.1 2382 + safe-buffer: 5.1.2 2936 2383 2937 - accepts@2.0.0: 2938 - dependencies: 2939 - mime-types: 3.0.1 2940 - negotiator: 1.0.0 2941 - 2942 - acorn-jsx@5.3.2(acorn@8.14.1): 2943 - dependencies: 2944 - acorn: 8.14.1 2945 - 2946 - acorn-walk@8.3.2: {} 2947 - 2948 - acorn@8.14.0: {} 2949 - 2950 - acorn@8.14.1: {} 2951 - 2952 - ajv@6.12.6: 2953 - dependencies: 2954 - fast-deep-equal: 3.1.3 2955 - fast-json-stable-stringify: 2.1.0 2956 - json-schema-traverse: 0.4.1 2957 - uri-js: 4.4.1 2958 - 2959 - ansi-styles@4.3.0: 2960 - dependencies: 2961 - color-convert: 2.0.1 2962 - 2963 - argparse@2.0.1: {} 2964 - 2965 - as-table@1.0.55: 2966 - dependencies: 2967 - printable-characters: 1.0.42 2968 - 2969 - await-lock@2.2.2: {} 2970 - 2971 - balanced-match@1.0.2: {} 2972 - 2973 - blake3-wasm@2.1.5: {} 2974 - 2975 - body-parser@2.2.0: 2384 + body-parser@1.20.3: 2976 2385 dependencies: 2977 2386 bytes: 3.1.2 2978 2387 content-type: 1.0.5 2979 - debug: 4.4.0 2388 + debug: 2.6.9 2389 + depd: 2.0.0 2390 + destroy: 1.2.0 2980 2391 http-errors: 2.0.0 2981 - iconv-lite: 0.6.3 2392 + iconv-lite: 0.4.24 2982 2393 on-finished: 2.4.1 2983 - qs: 6.14.0 2984 - raw-body: 3.0.0 2985 - type-is: 2.0.1 2394 + qs: 6.13.0 2395 + raw-body: 2.5.2 2396 + type-is: 1.6.18 2397 + unpipe: 1.0.0 2986 2398 transitivePeerDependencies: 2987 2399 - supports-color 2988 2400 2989 - brace-expansion@1.1.11: 2990 - dependencies: 2991 - balanced-match: 1.0.2 2992 - concat-map: 0.0.1 2993 - 2994 2401 brace-expansion@2.0.1: 2995 2402 dependencies: 2996 2403 balanced-match: 1.0.2 2997 - 2998 - braces@3.0.3: 2999 - dependencies: 3000 - fill-range: 7.1.1 3001 2404 3002 2405 browserslist@4.24.5: 3003 2406 dependencies: ··· 3006 2409 node-releases: 2.0.19 3007 2410 update-browserslist-db: 1.1.3(browserslist@4.24.5) 3008 2411 3009 - busboy@1.6.0: 3010 - dependencies: 3011 - streamsearch: 1.1.0 2412 + buffer-from@1.1.2: {} 3012 2413 3013 2414 bytes@3.1.2: {} 3014 2415 ··· 3023 2424 dependencies: 3024 2425 call-bind-apply-helpers: 1.0.2 3025 2426 get-intrinsic: 1.3.0 3026 - 3027 - callsites@3.1.0: {} 3028 2427 3029 2428 caniuse-lite@1.0.30001717: {} 3030 2429 3031 - chalk@4.1.2: 2430 + chokidar@4.0.3: 3032 2431 dependencies: 3033 - ansi-styles: 4.3.0 3034 - supports-color: 7.2.0 2432 + readdirp: 4.1.2 3035 2433 3036 2434 chownr@3.0.0: {} 3037 2435 ··· 3041 2439 3042 2440 color-name@1.1.4: {} 3043 2441 3044 - color-string@1.9.1: 2442 + compressible@2.0.18: 3045 2443 dependencies: 3046 - color-name: 1.1.4 3047 - simple-swizzle: 0.2.2 3048 - optional: true 2444 + mime-db: 1.54.0 3049 2445 3050 - color@4.2.3: 2446 + compression@1.8.0: 3051 2447 dependencies: 3052 - color-convert: 2.0.1 3053 - color-string: 1.9.1 3054 - optional: true 2448 + bytes: 3.1.2 2449 + compressible: 2.0.18 2450 + debug: 2.6.9 2451 + negotiator: 0.6.4 2452 + on-headers: 1.0.2 2453 + safe-buffer: 5.2.1 2454 + vary: 1.1.2 2455 + transitivePeerDependencies: 2456 + - supports-color 3055 2457 3056 - concat-map@0.0.1: {} 3057 - 3058 - content-disposition@1.0.0: 2458 + content-disposition@0.5.4: 3059 2459 dependencies: 3060 2460 safe-buffer: 5.2.1 3061 2461 ··· 3063 2463 3064 2464 convert-source-map@2.0.0: {} 3065 2465 3066 - cookie-signature@1.2.2: {} 2466 + cookie-signature@1.0.6: {} 3067 2467 3068 - cookie@0.7.2: {} 2468 + cookie@0.7.1: {} 3069 2469 3070 - cors@2.8.5: 3071 - dependencies: 3072 - object-assign: 4.1.1 3073 - vary: 1.1.2 2470 + cookie@1.0.2: {} 3074 2471 3075 2472 cross-spawn@7.0.6: 3076 2473 dependencies: ··· 3080 2477 3081 2478 csstype@3.1.3: {} 3082 2479 3083 - data-uri-to-buffer@2.0.2: {} 2480 + debug@2.6.9: 2481 + dependencies: 2482 + ms: 2.0.0 3084 2483 3085 2484 debug@4.4.0: 3086 2485 dependencies: 3087 2486 ms: 2.1.3 3088 2487 3089 - deep-is@0.1.4: {} 3090 - 3091 - defu@6.1.4: {} 2488 + dedent@1.6.0: {} 3092 2489 3093 2490 depd@2.0.0: {} 2491 + 2492 + destroy@1.2.0: {} 3094 2493 3095 2494 detect-libc@2.0.4: {} 3096 2495 ··· 3099 2498 call-bind-apply-helpers: 1.0.2 3100 2499 es-errors: 1.3.0 3101 2500 gopd: 1.2.0 2501 + 2502 + eastasianwidth@0.2.0: {} 3102 2503 3103 2504 ee-first@1.1.1: {} 3104 2505 3105 2506 electron-to-chromium@1.5.151: {} 3106 2507 2508 + emoji-regex@8.0.0: {} 2509 + 2510 + emoji-regex@9.2.2: {} 2511 + 2512 + encodeurl@1.0.2: {} 2513 + 3107 2514 encodeurl@2.0.0: {} 3108 2515 3109 2516 enhanced-resolve@5.18.1: 3110 2517 dependencies: 3111 2518 graceful-fs: 4.2.11 3112 2519 tapable: 2.2.1 2520 + 2521 + err-code@2.0.3: {} 3113 2522 3114 2523 es-define-property@1.0.1: {} 3115 2524 3116 2525 es-errors@1.3.0: {} 2526 + 2527 + es-module-lexer@1.7.0: {} 3117 2528 3118 2529 es-object-atoms@1.1.1: 3119 2530 dependencies: ··· 3151 2562 3152 2563 escape-html@1.0.3: {} 3153 2564 3154 - escape-string-regexp@4.0.0: {} 3155 - 3156 - eslint-plugin-react-hooks@5.2.0(eslint@9.26.0(jiti@2.4.2)): 3157 - dependencies: 3158 - eslint: 9.26.0(jiti@2.4.2) 3159 - 3160 - eslint-plugin-react-refresh@0.4.20(eslint@9.26.0(jiti@2.4.2)): 3161 - dependencies: 3162 - eslint: 9.26.0(jiti@2.4.2) 3163 - 3164 - eslint-scope@8.3.0: 3165 - dependencies: 3166 - esrecurse: 4.3.0 3167 - estraverse: 5.3.0 3168 - 3169 - eslint-visitor-keys@3.4.3: {} 3170 - 3171 - eslint-visitor-keys@4.2.0: {} 3172 - 3173 - eslint@9.26.0(jiti@2.4.2): 3174 - dependencies: 3175 - '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0(jiti@2.4.2)) 3176 - '@eslint-community/regexpp': 4.12.1 3177 - '@eslint/config-array': 0.20.0 3178 - '@eslint/config-helpers': 0.2.2 3179 - '@eslint/core': 0.13.0 3180 - '@eslint/eslintrc': 3.3.1 3181 - '@eslint/js': 9.26.0 3182 - '@eslint/plugin-kit': 0.2.8 3183 - '@humanfs/node': 0.16.6 3184 - '@humanwhocodes/module-importer': 1.0.1 3185 - '@humanwhocodes/retry': 0.4.3 3186 - '@modelcontextprotocol/sdk': 1.11.1 3187 - '@types/estree': 1.0.7 3188 - '@types/json-schema': 7.0.15 3189 - ajv: 6.12.6 3190 - chalk: 4.1.2 3191 - cross-spawn: 7.0.6 3192 - debug: 4.4.0 3193 - escape-string-regexp: 4.0.0 3194 - eslint-scope: 8.3.0 3195 - eslint-visitor-keys: 4.2.0 3196 - espree: 10.3.0 3197 - esquery: 1.6.0 3198 - esutils: 2.0.3 3199 - fast-deep-equal: 3.1.3 3200 - file-entry-cache: 8.0.0 3201 - find-up: 5.0.0 3202 - glob-parent: 6.0.2 3203 - ignore: 5.3.2 3204 - imurmurhash: 0.1.4 3205 - is-glob: 4.0.3 3206 - json-stable-stringify-without-jsonify: 1.0.1 3207 - lodash.merge: 4.6.2 3208 - minimatch: 3.1.2 3209 - natural-compare: 1.4.0 3210 - optionator: 0.9.4 3211 - zod: 3.24.4 3212 - optionalDependencies: 3213 - jiti: 2.4.2 3214 - transitivePeerDependencies: 3215 - - supports-color 3216 - 3217 - espree@10.3.0: 3218 - dependencies: 3219 - acorn: 8.14.1 3220 - acorn-jsx: 5.3.2(acorn@8.14.1) 3221 - eslint-visitor-keys: 4.2.0 3222 - 3223 - esquery@1.6.0: 3224 - dependencies: 3225 - estraverse: 5.3.0 3226 - 3227 - esrecurse@4.3.0: 3228 - dependencies: 3229 - estraverse: 5.3.0 3230 - 3231 - estraverse@5.3.0: {} 3232 - 3233 - estree-walker@2.0.2: {} 3234 - 3235 - esutils@2.0.3: {} 3236 - 3237 2565 etag@1.8.1: {} 3238 2566 3239 - eventsource-parser@3.0.1: {} 3240 - 3241 - eventsource@3.0.7: 3242 - dependencies: 3243 - eventsource-parser: 3.0.1 3244 - 3245 2567 exit-hook@2.2.1: {} 3246 2568 3247 - express-rate-limit@7.5.0(express@5.1.0): 3248 - dependencies: 3249 - express: 5.1.0 3250 - 3251 - express@5.1.0: 2569 + express@4.21.2: 3252 2570 dependencies: 3253 - accepts: 2.0.0 3254 - body-parser: 2.2.0 3255 - content-disposition: 1.0.0 2571 + accepts: 1.3.8 2572 + array-flatten: 1.1.1 2573 + body-parser: 1.20.3 2574 + content-disposition: 0.5.4 3256 2575 content-type: 1.0.5 3257 - cookie: 0.7.2 3258 - cookie-signature: 1.2.2 3259 - debug: 4.4.0 2576 + cookie: 0.7.1 2577 + cookie-signature: 1.0.6 2578 + debug: 2.6.9 2579 + depd: 2.0.0 3260 2580 encodeurl: 2.0.0 3261 2581 escape-html: 1.0.3 3262 2582 etag: 1.8.1 3263 - finalhandler: 2.1.0 3264 - fresh: 2.0.0 2583 + finalhandler: 1.3.1 2584 + fresh: 0.5.2 3265 2585 http-errors: 2.0.0 3266 - merge-descriptors: 2.0.0 3267 - mime-types: 3.0.1 2586 + merge-descriptors: 1.0.3 2587 + methods: 1.1.2 3268 2588 on-finished: 2.4.1 3269 - once: 1.4.0 3270 2589 parseurl: 1.3.3 2590 + path-to-regexp: 0.1.12 3271 2591 proxy-addr: 2.0.7 3272 - qs: 6.14.0 2592 + qs: 6.13.0 3273 2593 range-parser: 1.2.1 3274 - router: 2.2.0 3275 - send: 1.2.0 3276 - serve-static: 2.2.0 2594 + safe-buffer: 5.2.1 2595 + send: 0.19.0 2596 + serve-static: 1.16.2 2597 + setprototypeof: 1.2.0 3277 2598 statuses: 2.0.1 3278 - type-is: 2.0.1 2599 + type-is: 1.6.18 2600 + utils-merge: 1.0.1 3279 2601 vary: 1.1.2 3280 2602 transitivePeerDependencies: 3281 2603 - supports-color 3282 2604 3283 - exsolve@1.0.5: {} 3284 - 3285 - fast-decode-uri-component@1.0.1: {} 3286 - 3287 - fast-deep-equal@3.1.3: {} 3288 - 3289 - fast-glob@3.3.3: 3290 - dependencies: 3291 - '@nodelib/fs.stat': 2.0.5 3292 - '@nodelib/fs.walk': 1.2.8 3293 - glob-parent: 5.1.2 3294 - merge2: 1.4.1 3295 - micromatch: 4.0.8 3296 - 3297 - fast-json-stable-stringify@2.1.0: {} 3298 - 3299 - fast-levenshtein@2.0.6: {} 3300 - 3301 - fast-querystring@1.1.2: 3302 - dependencies: 3303 - fast-decode-uri-component: 1.0.1 3304 - 3305 - fastq@1.19.1: 3306 - dependencies: 3307 - reusify: 1.1.0 3308 - 3309 2605 fdir@6.4.4(picomatch@4.0.2): 3310 2606 optionalDependencies: 3311 2607 picomatch: 4.0.2 3312 2608 3313 - file-entry-cache@8.0.0: 2609 + finalhandler@1.3.1: 3314 2610 dependencies: 3315 - flat-cache: 4.0.1 3316 - 3317 - fill-range@7.1.1: 3318 - dependencies: 3319 - to-regex-range: 5.0.1 3320 - 3321 - finalhandler@2.1.0: 3322 - dependencies: 3323 - debug: 4.4.0 2611 + debug: 2.6.9 3324 2612 encodeurl: 2.0.0 3325 2613 escape-html: 1.0.3 3326 2614 on-finished: 2.4.1 3327 2615 parseurl: 1.3.3 3328 2616 statuses: 2.0.1 2617 + unpipe: 1.0.0 3329 2618 transitivePeerDependencies: 3330 2619 - supports-color 3331 2620 3332 - find-up@5.0.0: 3333 - dependencies: 3334 - locate-path: 6.0.0 3335 - path-exists: 4.0.0 3336 - 3337 - flat-cache@4.0.1: 2621 + foreground-child@3.3.1: 3338 2622 dependencies: 3339 - flatted: 3.3.3 3340 - keyv: 4.5.4 3341 - 3342 - flatted@3.3.3: {} 2623 + cross-spawn: 7.0.6 2624 + signal-exit: 4.1.0 3343 2625 3344 2626 forwarded@0.2.0: {} 3345 2627 3346 - fresh@2.0.0: {} 2628 + fresh@0.5.2: {} 2629 + 2630 + fs-extra@10.1.0: 2631 + dependencies: 2632 + graceful-fs: 4.2.11 2633 + jsonfile: 6.1.0 2634 + universalify: 2.0.1 3347 2635 3348 2636 fsevents@2.3.3: 3349 2637 optional: true ··· 3365 2653 hasown: 2.0.2 3366 2654 math-intrinsics: 1.1.0 3367 2655 3368 - get-port@7.1.0: {} 2656 + get-port@5.1.1: {} 3369 2657 3370 2658 get-proto@1.0.1: 3371 2659 dependencies: 3372 2660 dunder-proto: 1.0.1 3373 2661 es-object-atoms: 1.1.1 3374 2662 3375 - get-source@2.0.12: 3376 - dependencies: 3377 - data-uri-to-buffer: 2.0.2 3378 - source-map: 0.6.1 3379 - 3380 - glob-parent@5.1.2: 3381 - dependencies: 3382 - is-glob: 4.0.3 3383 - 3384 - glob-parent@6.0.2: 2663 + glob@10.4.5: 3385 2664 dependencies: 3386 - is-glob: 4.0.3 3387 - 3388 - glob-to-regexp@0.4.1: {} 2665 + foreground-child: 3.3.1 2666 + jackspeak: 3.4.3 2667 + minimatch: 9.0.5 2668 + minipass: 7.1.2 2669 + package-json-from-dist: 1.0.1 2670 + path-scurry: 1.11.1 3389 2671 3390 2672 globals@11.12.0: {} 3391 2673 3392 - globals@14.0.0: {} 3393 - 3394 - globals@16.1.0: {} 2674 + globrex@0.1.2: {} 3395 2675 3396 2676 gopd@1.2.0: {} 3397 2677 ··· 3399 2679 3400 2680 graphemer@1.4.0: {} 3401 2681 3402 - has-flag@4.0.0: {} 3403 - 3404 2682 has-symbols@1.1.0: {} 3405 2683 3406 2684 hasown@2.0.2: 3407 2685 dependencies: 3408 2686 function-bind: 1.1.2 3409 2687 3410 - hono@4.7.9: {} 2688 + hosted-git-info@6.1.3: 2689 + dependencies: 2690 + lru-cache: 7.18.3 3411 2691 3412 2692 http-errors@2.0.0: 3413 2693 dependencies: ··· 3417 2697 statuses: 2.0.1 3418 2698 toidentifier: 1.0.1 3419 2699 3420 - iconv-lite@0.6.3: 2700 + iconv-lite@0.4.24: 3421 2701 dependencies: 3422 2702 safer-buffer: 2.1.2 3423 - 3424 - ignore@5.3.2: {} 3425 - 3426 - import-fresh@3.3.1: 3427 - dependencies: 3428 - parent-module: 1.0.1 3429 - resolve-from: 4.0.0 3430 - 3431 - imurmurhash@0.1.4: {} 3432 2703 3433 2704 inherits@2.0.4: {} 3434 2705 3435 2706 ipaddr.js@1.9.1: {} 3436 2707 3437 - is-arrayish@0.3.2: 3438 - optional: true 3439 - 3440 - is-extglob@2.1.1: {} 3441 - 3442 - is-glob@4.0.3: 2708 + is-core-module@2.16.1: 3443 2709 dependencies: 3444 - is-extglob: 2.1.1 2710 + hasown: 2.0.2 3445 2711 3446 - is-number@7.0.0: {} 2712 + is-fullwidth-code-point@3.0.0: {} 3447 2713 3448 - is-promise@4.0.0: {} 2714 + isbot@5.1.28: {} 3449 2715 3450 2716 isexe@2.0.0: {} 3451 2717 3452 2718 iso-datestring-validator@2.2.2: {} 3453 2719 2720 + jackspeak@3.4.3: 2721 + dependencies: 2722 + '@isaacs/cliui': 8.0.2 2723 + optionalDependencies: 2724 + '@pkgjs/parseargs': 0.11.0 2725 + 3454 2726 jiti@2.4.2: {} 3455 2727 3456 2728 jose@5.10.0: {} 3457 2729 3458 2730 js-tokens@4.0.0: {} 3459 2731 3460 - js-yaml@4.1.0: 3461 - dependencies: 3462 - argparse: 2.0.1 3463 - 3464 - jsesc@3.1.0: {} 3465 - 3466 - json-buffer@3.0.1: {} 2732 + jsesc@3.0.2: {} 3467 2733 3468 - json-schema-traverse@0.4.1: {} 3469 - 3470 - json-stable-stringify-without-jsonify@1.0.1: {} 2734 + json-parse-even-better-errors@3.0.2: {} 3471 2735 3472 2736 json5@2.2.3: {} 3473 2737 3474 - keyv@4.5.4: 3475 - dependencies: 3476 - json-buffer: 3.0.1 3477 - 3478 - levn@0.4.1: 2738 + jsonfile@6.1.0: 3479 2739 dependencies: 3480 - prelude-ls: 1.2.1 3481 - type-check: 0.4.0 2740 + universalify: 2.0.1 2741 + optionalDependencies: 2742 + graceful-fs: 4.2.11 3482 2743 3483 2744 lightningcss-darwin-arm64@1.29.2: 3484 2745 optional: true ··· 3525 2786 lightningcss-win32-arm64-msvc: 1.29.2 3526 2787 lightningcss-win32-x64-msvc: 1.29.2 3527 2788 3528 - locate-path@6.0.0: 3529 - dependencies: 3530 - p-locate: 5.0.0 3531 - 3532 - lodash.merge@4.6.2: {} 2789 + lodash@4.17.21: {} 3533 2790 3534 2791 lru-cache@10.4.3: {} 3535 2792 ··· 3537 2794 dependencies: 3538 2795 yallist: 3.1.1 3539 2796 2797 + lru-cache@7.18.3: {} 2798 + 3540 2799 magic-string@0.30.17: 3541 2800 dependencies: 3542 2801 '@jridgewell/sourcemap-codec': 1.5.0 3543 2802 3544 2803 math-intrinsics@1.1.0: {} 3545 2804 3546 - media-typer@1.1.0: {} 3547 - 3548 - merge-descriptors@2.0.0: {} 2805 + media-typer@0.3.0: {} 3549 2806 3550 - merge2@1.4.1: {} 2807 + merge-descriptors@1.0.3: {} 3551 2808 3552 - micromatch@4.0.8: 3553 - dependencies: 3554 - braces: 3.0.3 3555 - picomatch: 2.3.1 2809 + methods@1.1.2: {} 3556 2810 3557 2811 mime-db@1.52.0: {} 3558 2812 ··· 3562 2816 dependencies: 3563 2817 mime-db: 1.52.0 3564 2818 3565 - mime-types@3.0.1: 3566 - dependencies: 3567 - mime-db: 1.54.0 3568 - 3569 - mime@3.0.0: {} 3570 - 3571 - miniflare@4.20250507.0: 3572 - dependencies: 3573 - '@cspotcode/source-map-support': 0.8.1 3574 - acorn: 8.14.0 3575 - acorn-walk: 8.3.2 3576 - exit-hook: 2.2.1 3577 - glob-to-regexp: 0.4.1 3578 - stoppable: 1.1.0 3579 - undici: 5.29.0 3580 - workerd: 1.20250507.0 3581 - ws: 8.18.0 3582 - youch: 3.3.4 3583 - zod: 3.22.3 3584 - transitivePeerDependencies: 3585 - - bufferutil 3586 - - utf-8-validate 3587 - 3588 - minimatch@3.1.2: 3589 - dependencies: 3590 - brace-expansion: 1.1.11 2819 + mime@1.6.0: {} 3591 2820 3592 2821 minimatch@9.0.5: 3593 2822 dependencies: ··· 3601 2830 3602 2831 mkdirp@3.0.1: {} 3603 2832 2833 + morgan@1.10.0: 2834 + dependencies: 2835 + basic-auth: 2.0.1 2836 + debug: 2.6.9 2837 + depd: 2.0.0 2838 + on-finished: 2.3.0 2839 + on-headers: 1.0.2 2840 + transitivePeerDependencies: 2841 + - supports-color 2842 + 2843 + ms@2.0.0: {} 2844 + 3604 2845 ms@2.1.3: {} 3605 2846 3606 2847 multiformats@9.9.0: {} 3607 2848 3608 - mustache@4.2.0: {} 3609 - 3610 2849 nanoid@3.3.11: {} 3611 2850 3612 - natural-compare@1.4.0: {} 2851 + negotiator@0.6.3: {} 3613 2852 3614 - negotiator@1.0.0: {} 3615 - 3616 - node-fetch-native@1.6.6: {} 2853 + negotiator@0.6.4: {} 3617 2854 3618 2855 node-releases@2.0.19: {} 3619 2856 3620 - object-assign@4.1.1: {} 2857 + normalize-package-data@5.0.0: 2858 + dependencies: 2859 + hosted-git-info: 6.1.3 2860 + is-core-module: 2.16.1 2861 + semver: 7.7.1 2862 + validate-npm-package-license: 3.0.4 3621 2863 3622 - object-inspect@1.13.4: {} 2864 + npm-install-checks@6.3.0: 2865 + dependencies: 2866 + semver: 7.7.1 3623 2867 3624 - ohash@2.0.11: {} 2868 + npm-normalize-package-bin@3.0.1: {} 3625 2869 3626 - on-finished@2.4.1: 2870 + npm-package-arg@10.1.0: 3627 2871 dependencies: 3628 - ee-first: 1.1.1 2872 + hosted-git-info: 6.1.3 2873 + proc-log: 3.0.0 2874 + semver: 7.7.1 2875 + validate-npm-package-name: 5.0.1 3629 2876 3630 - once@1.4.0: 2877 + npm-pick-manifest@8.0.2: 3631 2878 dependencies: 3632 - wrappy: 1.0.2 2879 + npm-install-checks: 6.3.0 2880 + npm-normalize-package-bin: 3.0.1 2881 + npm-package-arg: 10.1.0 2882 + semver: 7.7.1 3633 2883 3634 - optionator@0.9.4: 3635 - dependencies: 3636 - deep-is: 0.1.4 3637 - fast-levenshtein: 2.0.6 3638 - levn: 0.4.1 3639 - prelude-ls: 1.2.1 3640 - type-check: 0.4.0 3641 - word-wrap: 1.2.5 2884 + object-inspect@1.13.4: {} 3642 2885 3643 - p-limit@3.1.0: 2886 + on-finished@2.3.0: 3644 2887 dependencies: 3645 - yocto-queue: 0.1.0 2888 + ee-first: 1.1.1 3646 2889 3647 - p-locate@5.0.0: 2890 + on-finished@2.4.1: 3648 2891 dependencies: 3649 - p-limit: 3.1.0 2892 + ee-first: 1.1.1 3650 2893 3651 - parent-module@1.0.1: 3652 - dependencies: 3653 - callsites: 3.1.0 2894 + on-headers@1.0.2: {} 2895 + 2896 + package-json-from-dist@1.0.1: {} 3654 2897 3655 2898 parseurl@1.3.3: {} 3656 2899 3657 - path-exists@4.0.0: {} 3658 - 3659 2900 path-key@3.1.1: {} 3660 2901 3661 - path-to-regexp@6.3.0: {} 2902 + path-scurry@1.11.1: 2903 + dependencies: 2904 + lru-cache: 10.4.3 2905 + minipass: 7.1.2 3662 2906 3663 - path-to-regexp@8.2.0: {} 2907 + path-to-regexp@0.1.12: {} 3664 2908 3665 - pathe@2.0.3: {} 2909 + pathe@1.1.2: {} 3666 2910 3667 2911 picocolors@1.1.1: {} 3668 2912 3669 - picomatch@2.3.1: {} 3670 - 3671 2913 picomatch@4.0.2: {} 3672 - 3673 - pkce-challenge@5.0.0: {} 3674 2914 3675 2915 postcss@8.5.3: 3676 2916 dependencies: ··· 3678 2918 picocolors: 1.1.1 3679 2919 source-map-js: 1.2.1 3680 2920 3681 - prelude-ls@1.2.1: {} 2921 + prettier@2.8.8: {} 3682 2922 3683 - printable-characters@1.0.42: {} 2923 + proc-log@3.0.0: {} 2924 + 2925 + promise-inflight@1.0.1: {} 2926 + 2927 + promise-retry@2.0.1: 2928 + dependencies: 2929 + err-code: 2.0.3 2930 + retry: 0.12.0 3684 2931 3685 2932 proxy-addr@2.0.7: 3686 2933 dependencies: 3687 2934 forwarded: 0.2.0 3688 2935 ipaddr.js: 1.9.1 3689 2936 3690 - punycode@2.3.1: {} 3691 - 3692 - qs@6.14.0: 2937 + qs@6.13.0: 3693 2938 dependencies: 3694 2939 side-channel: 1.1.0 3695 2940 3696 - queue-microtask@1.2.3: {} 3697 - 3698 2941 range-parser@1.2.1: {} 3699 2942 3700 - raw-body@3.0.0: 2943 + raw-body@2.5.2: 3701 2944 dependencies: 3702 2945 bytes: 3.1.2 3703 2946 http-errors: 2.0.0 3704 - iconv-lite: 0.6.3 2947 + iconv-lite: 0.4.24 3705 2948 unpipe: 1.0.0 3706 2949 3707 2950 react-dom@19.1.0(react@19.1.0): ··· 3709 2952 react: 19.1.0 3710 2953 scheduler: 0.26.0 3711 2954 3712 - react-refresh@0.17.0: {} 2955 + react-refresh@0.14.2: {} 2956 + 2957 + react-router@7.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): 2958 + dependencies: 2959 + cookie: 1.0.2 2960 + react: 19.1.0 2961 + set-cookie-parser: 2.7.1 2962 + optionalDependencies: 2963 + react-dom: 19.1.0(react@19.1.0) 3713 2964 3714 2965 react@19.1.0: {} 3715 2966 3716 - resolve-from@4.0.0: {} 2967 + readdirp@4.1.2: {} 3717 2968 3718 - reusify@1.1.0: {} 2969 + retry@0.12.0: {} 3719 2970 3720 2971 rollup@4.40.2: 3721 2972 dependencies: ··· 3743 2994 '@rollup/rollup-win32-x64-msvc': 4.40.2 3744 2995 fsevents: 2.3.3 3745 2996 3746 - router@2.2.0: 3747 - dependencies: 3748 - debug: 4.4.0 3749 - depd: 2.0.0 3750 - is-promise: 4.0.0 3751 - parseurl: 1.3.3 3752 - path-to-regexp: 8.2.0 3753 - transitivePeerDependencies: 3754 - - supports-color 3755 - 3756 - run-parallel@1.2.0: 3757 - dependencies: 3758 - queue-microtask: 1.2.3 2997 + safe-buffer@5.1.2: {} 3759 2998 3760 2999 safe-buffer@5.2.1: {} 3761 3000 ··· 3767 3006 3768 3007 semver@7.7.1: {} 3769 3008 3770 - send@1.2.0: 3009 + send@0.19.0: 3771 3010 dependencies: 3772 - debug: 4.4.0 3773 - encodeurl: 2.0.0 3011 + debug: 2.6.9 3012 + depd: 2.0.0 3013 + destroy: 1.2.0 3014 + encodeurl: 1.0.2 3774 3015 escape-html: 1.0.3 3775 3016 etag: 1.8.1 3776 - fresh: 2.0.0 3017 + fresh: 0.5.2 3777 3018 http-errors: 2.0.0 3778 - mime-types: 3.0.1 3019 + mime: 1.6.0 3779 3020 ms: 2.1.3 3780 3021 on-finished: 2.4.1 3781 3022 range-parser: 1.2.1 ··· 3783 3024 transitivePeerDependencies: 3784 3025 - supports-color 3785 3026 3786 - serve-static@2.2.0: 3027 + serve-static@1.16.2: 3787 3028 dependencies: 3788 3029 encodeurl: 2.0.0 3789 3030 escape-html: 1.0.3 3790 3031 parseurl: 1.3.3 3791 - send: 1.2.0 3032 + send: 0.19.0 3792 3033 transitivePeerDependencies: 3793 3034 - supports-color 3794 3035 3036 + set-cookie-parser@2.7.1: {} 3037 + 3795 3038 setprototypeof@1.2.0: {} 3796 3039 3797 - sharp@0.33.5: 3798 - dependencies: 3799 - color: 4.2.3 3800 - detect-libc: 2.0.4 3801 - semver: 7.7.1 3802 - optionalDependencies: 3803 - '@img/sharp-darwin-arm64': 0.33.5 3804 - '@img/sharp-darwin-x64': 0.33.5 3805 - '@img/sharp-libvips-darwin-arm64': 1.0.4 3806 - '@img/sharp-libvips-darwin-x64': 1.0.4 3807 - '@img/sharp-libvips-linux-arm': 1.0.5 3808 - '@img/sharp-libvips-linux-arm64': 1.0.4 3809 - '@img/sharp-libvips-linux-s390x': 1.0.4 3810 - '@img/sharp-libvips-linux-x64': 1.0.4 3811 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 3812 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 3813 - '@img/sharp-linux-arm': 0.33.5 3814 - '@img/sharp-linux-arm64': 0.33.5 3815 - '@img/sharp-linux-s390x': 0.33.5 3816 - '@img/sharp-linux-x64': 0.33.5 3817 - '@img/sharp-linuxmusl-arm64': 0.33.5 3818 - '@img/sharp-linuxmusl-x64': 0.33.5 3819 - '@img/sharp-wasm32': 0.33.5 3820 - '@img/sharp-win32-ia32': 0.33.5 3821 - '@img/sharp-win32-x64': 0.33.5 3822 - optional: true 3823 - 3824 3040 shebang-command@2.0.0: 3825 3041 dependencies: 3826 3042 shebang-regex: 3.0.0 ··· 3855 3071 side-channel-map: 1.0.1 3856 3072 side-channel-weakmap: 1.0.2 3857 3073 3858 - simple-swizzle@0.2.2: 3859 - dependencies: 3860 - is-arrayish: 0.3.2 3861 - optional: true 3074 + signal-exit@4.1.0: {} 3862 3075 3863 3076 source-map-js@1.2.1: {} 3864 3077 3078 + source-map-support@0.5.21: 3079 + dependencies: 3080 + buffer-from: 1.1.2 3081 + source-map: 0.6.1 3082 + 3865 3083 source-map@0.6.1: {} 3866 3084 3867 - stacktracey@2.1.8: 3085 + spdx-correct@3.2.0: 3868 3086 dependencies: 3869 - as-table: 1.0.55 3870 - get-source: 2.0.12 3087 + spdx-expression-parse: 3.0.1 3088 + spdx-license-ids: 3.0.21 3089 + 3090 + spdx-exceptions@2.5.0: {} 3091 + 3092 + spdx-expression-parse@3.0.1: 3093 + dependencies: 3094 + spdx-exceptions: 2.5.0 3095 + spdx-license-ids: 3.0.21 3096 + 3097 + spdx-license-ids@3.0.21: {} 3871 3098 3872 3099 statuses@2.0.1: {} 3873 3100 3874 - stoppable@1.1.0: {} 3101 + stream-slice@0.1.2: {} 3875 3102 3876 - streamsearch@1.1.0: {} 3103 + string-width@4.2.3: 3104 + dependencies: 3105 + emoji-regex: 8.0.0 3106 + is-fullwidth-code-point: 3.0.0 3107 + strip-ansi: 6.0.1 3108 + 3109 + string-width@5.1.2: 3110 + dependencies: 3111 + eastasianwidth: 0.2.0 3112 + emoji-regex: 9.2.2 3113 + strip-ansi: 7.1.0 3877 3114 3878 - strip-json-comments@3.1.1: {} 3115 + strip-ansi@6.0.1: 3116 + dependencies: 3117 + ansi-regex: 5.0.1 3879 3118 3880 - supports-color@7.2.0: 3119 + strip-ansi@7.1.0: 3881 3120 dependencies: 3882 - has-flag: 4.0.0 3121 + ansi-regex: 6.1.0 3883 3122 3884 3123 tailwindcss@4.1.6: {} 3885 3124 ··· 3901 3140 3902 3141 tlds@1.258.0: {} 3903 3142 3904 - to-regex-range@5.0.1: 3905 - dependencies: 3906 - is-number: 7.0.0 3907 - 3908 3143 toidentifier@1.0.1: {} 3909 3144 3910 - ts-api-utils@2.1.0(typescript@5.7.3): 3911 - dependencies: 3912 - typescript: 5.7.3 3913 - 3914 - tslib@2.8.1: {} 3145 + tsconfck@3.1.5(typescript@5.8.3): 3146 + optionalDependencies: 3147 + typescript: 5.8.3 3915 3148 3916 - type-check@0.4.0: 3149 + type-is@1.6.18: 3917 3150 dependencies: 3918 - prelude-ls: 1.2.1 3151 + media-typer: 0.3.0 3152 + mime-types: 2.1.35 3919 3153 3920 - type-is@2.0.1: 3921 - dependencies: 3922 - content-type: 1.0.5 3923 - media-typer: 1.1.0 3924 - mime-types: 3.0.1 3925 - 3926 - typescript-eslint@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3): 3927 - dependencies: 3928 - '@typescript-eslint/eslint-plugin': 8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 3929 - '@typescript-eslint/parser': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 3930 - '@typescript-eslint/utils': 8.32.0(eslint@9.26.0(jiti@2.4.2))(typescript@5.7.3) 3931 - eslint: 9.26.0(jiti@2.4.2) 3932 - typescript: 5.7.3 3933 - transitivePeerDependencies: 3934 - - supports-color 3935 - 3936 - typescript@5.7.3: {} 3937 - 3938 - ufo@1.6.1: {} 3154 + typescript@5.8.3: {} 3939 3155 3940 3156 uint8arrays@3.0.0: 3941 3157 dependencies: 3942 3158 multiformats: 9.9.0 3943 3159 3944 - undici@5.29.0: 3945 - dependencies: 3946 - '@fastify/busboy': 2.1.1 3160 + undici-types@6.19.8: {} 3161 + 3162 + undici@6.21.2: {} 3947 3163 3948 - unenv@2.0.0-rc.15: 3949 - dependencies: 3950 - defu: 6.1.4 3951 - exsolve: 1.0.5 3952 - ohash: 2.0.11 3953 - pathe: 2.0.3 3954 - ufo: 1.6.1 3164 + universalify@2.0.1: {} 3955 3165 3956 3166 unpipe@1.0.0: {} 3957 3167 ··· 3961 3171 escalade: 3.2.0 3962 3172 picocolors: 1.1.1 3963 3173 3964 - uri-js@4.4.1: 3174 + utils-merge@1.0.1: {} 3175 + 3176 + valibot@0.41.0(typescript@5.8.3): 3177 + optionalDependencies: 3178 + typescript: 5.8.3 3179 + 3180 + validate-npm-package-license@3.0.4: 3965 3181 dependencies: 3966 - punycode: 2.3.1 3182 + spdx-correct: 3.2.0 3183 + spdx-expression-parse: 3.0.1 3967 3184 3968 - urlpattern-polyfill@10.1.0: {} 3185 + validate-npm-package-name@5.0.1: {} 3969 3186 3970 3187 vary@1.1.2: {} 3971 3188 3972 - vite@6.3.5(jiti@2.4.2)(lightningcss@1.29.2): 3189 + vite-node@3.0.0-beta.2(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2): 3190 + dependencies: 3191 + cac: 6.7.14 3192 + debug: 4.4.0 3193 + es-module-lexer: 1.7.0 3194 + pathe: 1.1.2 3195 + vite: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2) 3196 + transitivePeerDependencies: 3197 + - '@types/node' 3198 + - jiti 3199 + - less 3200 + - lightningcss 3201 + - sass 3202 + - sass-embedded 3203 + - stylus 3204 + - sugarss 3205 + - supports-color 3206 + - terser 3207 + - tsx 3208 + - yaml 3209 + 3210 + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2)): 3211 + dependencies: 3212 + debug: 4.4.0 3213 + globrex: 0.1.2 3214 + tsconfck: 3.1.5(typescript@5.8.3) 3215 + optionalDependencies: 3216 + vite: 6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2) 3217 + transitivePeerDependencies: 3218 + - supports-color 3219 + - typescript 3220 + 3221 + vite@6.3.5(@types/node@20.17.46)(jiti@2.4.2)(lightningcss@1.29.2): 3973 3222 dependencies: 3974 3223 esbuild: 0.25.4 3975 3224 fdir: 6.4.4(picomatch@4.0.2) ··· 3978 3227 rollup: 4.40.2 3979 3228 tinyglobby: 0.2.13 3980 3229 optionalDependencies: 3230 + '@types/node': 20.17.46 3981 3231 fsevents: 2.3.3 3982 3232 jiti: 2.4.2 3983 3233 lightningcss: 1.29.2 ··· 3986 3236 dependencies: 3987 3237 isexe: 2.0.0 3988 3238 3989 - word-wrap@1.2.5: {} 3239 + which@3.0.1: 3240 + dependencies: 3241 + isexe: 2.0.0 3990 3242 3991 - workerd@1.20250507.0: 3992 - optionalDependencies: 3993 - '@cloudflare/workerd-darwin-64': 1.20250507.0 3994 - '@cloudflare/workerd-darwin-arm64': 1.20250507.0 3995 - '@cloudflare/workerd-linux-64': 1.20250507.0 3996 - '@cloudflare/workerd-linux-arm64': 1.20250507.0 3997 - '@cloudflare/workerd-windows-64': 1.20250507.0 3243 + wrap-ansi@7.0.0: 3244 + dependencies: 3245 + ansi-styles: 4.3.0 3246 + string-width: 4.2.3 3247 + strip-ansi: 6.0.1 3998 3248 3999 - wrangler@4.14.4(@cloudflare/workers-types@4.20250510.0): 3249 + wrap-ansi@8.1.0: 4000 3250 dependencies: 4001 - '@cloudflare/kv-asset-handler': 0.4.0 4002 - '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0) 4003 - blake3-wasm: 2.1.5 4004 - esbuild: 0.25.4 4005 - miniflare: 4.20250507.0 4006 - path-to-regexp: 6.3.0 4007 - unenv: 2.0.0-rc.15 4008 - workerd: 1.20250507.0 4009 - optionalDependencies: 4010 - '@cloudflare/workers-types': 4.20250510.0 4011 - fsevents: 2.3.3 4012 - sharp: 0.33.5 4013 - transitivePeerDependencies: 4014 - - bufferutil 4015 - - utf-8-validate 4016 - 4017 - wrappy@1.0.2: {} 4018 - 4019 - ws@8.18.0: {} 3251 + ansi-styles: 6.2.1 3252 + string-width: 5.1.2 3253 + strip-ansi: 7.1.0 4020 3254 4021 3255 yallist@3.1.1: {} 4022 3256 4023 3257 yallist@5.0.0: {} 4024 - 4025 - yocto-queue@0.1.0: {} 4026 - 4027 - youch@3.3.4: 4028 - dependencies: 4029 - cookie: 0.7.2 4030 - mustache: 4.2.0 4031 - stacktracey: 2.1.8 4032 - 4033 - zod-to-json-schema@3.24.5(zod@3.24.4): 4034 - dependencies: 4035 - zod: 3.24.4 4036 - 4037 - zod@3.22.3: {} 4038 3258 4039 3259 zod@3.24.4: {}
public/map.png app/landing/map.png
public/mapped_at_background.png app/landing/mapped_at_background.png
+7
react-router.config.ts
··· 1 + import type { Config } from "@react-router/dev/config"; 2 + 3 + export default { 4 + // Config options... 5 + // Server-side render by default, to enable SPA mode set this to `false` 6 + ssr: true, 7 + } satisfies Config;
shared/client_metadata.ts app/shared/client_metadata.ts
shared/run_lexicon.ts app/shared/run_lexicon.ts
-104
src/components/App.tsx
··· 1 - import { useContext, useState, useEffect } from "react"; 2 - import { ATProtoContext } from "../context.tsx"; 3 - import { RunForm } from "./RunForm.tsx"; 4 - import { SignIn } from "./SignIn.tsx"; 5 - import { AtUri, BlobRef } from "@atproto/api" 6 - import { Run } from "../../shared/run_lexicon.ts"; 7 - 8 - type RunsResponse = { 9 - records: { 10 - uri: string; 11 - value: Run; 12 - }[] 13 - } 14 - 15 - declare global { 16 - interface Window { 17 - L: { 18 - map: any; 19 - GPX: any; 20 - tileLayer: any; 21 - }; 22 - } 23 - } 24 - 25 - function RunList() { 26 - const { session, agent } = useContext(ATProtoContext); 27 - const [runsResponse, setRunsResponse] = useState<RunsResponse | undefined>(undefined); 28 - 29 - const fetchRuns = () => session && agent?.com.atproto.repo 30 - .listRecords({ collection: "me.wilb.test.run", repo: session.did }) 31 - .then(res => setRunsResponse(res.data as unknown as RunsResponse)) 32 - 33 - const deleteRun = (rkey: string) => session && agent?.com.atproto.repo 34 - .deleteRecord({ collection: "me.wilb.test.run", repo: session.did, rkey }) 35 - .then(() => fetchRuns()) 36 - 37 - useEffect(() => { 38 - if (!runsResponse) { 39 - fetchRuns(); 40 - } 41 - }, [session, agent]) 42 - 43 - const loadGPX = (uri: string, gpx: BlobRef) => { 44 - const map = window.L.map(`map-${uri}`); 45 - window.L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 46 - attribution: 'Map data &copy; <a href="http://www.osm.org">OpenStreetMap</a>' 47 - }).addTo(map); 48 - 49 - const options = { 50 - async: true, 51 - polyline_options: { color: 'red' }, 52 - }; 53 - 54 - new window.L.GPX(`${session?.server.issuer}/xrpc/com.atproto.sync.getBlob?did=${session?.did}&cid=${gpx.ref}`, options).on('loaded', (e: any) => { 55 - map.fitBounds(e.target.getBounds()); 56 - }).addTo(map); 57 - }; 58 - 59 - return ( 60 - <div className="flex flex-col gap-2 p-2"> 61 - {runsResponse?.records.map(({ uri, value: { note, date_iso, distance_meters, duration_seconds, gpx } }) => ( 62 - <div className="flex flex-row" key={uri}> 63 - <div className="flex flex-col w-full gap-2 p-2"> 64 - <p>distance (kilometers): {distance_meters / 1000}</p> 65 - <p>duration (minutes): {duration_seconds ?? 0 / 60}</p> 66 - <p>date: {date_iso}</p> 67 - <p>note: {note}</p> 68 - <div className="flex flex-row gap-2 p-2"> 69 - {gpx && <button type="button" onClick={() => loadGPX(uri, gpx)}>Load gpx</button>} 70 - <button type="button" onClick={() => deleteRun(new AtUri(uri).rkey)}> 71 - delete 72 - </button> 73 - </div> 74 - </div> 75 - <div id={`map-${uri}`} data-active={!!gpx} className="flex w-full h-2 data-[active=true]:h-[180px]"></div> 76 - </div> 77 - ))} 78 - </div> 79 - ); 80 - } 81 - 82 - export function App() { 83 - const { session } = useContext(ATProtoContext); 84 - 85 - return ( 86 - <div className="flex flex-col gap-2 p-2 items-center"> 87 - <aside className="w-full flex justify-between bg-amber-50 gap-2"> 88 - <h1 className="text-xl">MappedAt: map your runs and more</h1> 89 - <SignIn /> 90 - </aside> 91 - <main className="w-full flex flex-col gap-2 p-2 max-w-3xl"> 92 - {session && 93 - <details> 94 - <summary> 95 - New run form 96 - </summary> 97 - <RunForm /> 98 - </details> 99 - } 100 - <RunList /> 101 - </main> 102 - </div> 103 - ) 104 - }
+2 -2
src/components/RunForm.tsx app/components/RunForm.tsx
··· 1 1 import { useActionState, useContext } from "react"; 2 - import { Run } from "../../shared/run_lexicon.ts"; 3 - import { ATProtoContext } from "../context.tsx"; 2 + import { type Run } from "../shared/run_lexicon"; 3 + import { ATProtoContext } from "../shared/context"; 4 4 import { type BlobRef } from "@atproto/api"; 5 5 6 6 export function RunForm() {
+1 -1
src/components/SignIn.tsx app/components/SignIn.tsx
··· 1 1 import { useActionState, useContext } from "react"; 2 - import { ATProtoContext } from "../context.tsx"; 2 + import { ATProtoContext } from "../shared/context"; 3 3 4 4 export function SignIn() { 5 5 const { client, session } = useContext(ATProtoContext);
+10 -18
src/context.tsx app/shared/contextProvider.client.tsx
··· 1 - import { createContext, PropsWithChildren, useEffect, useState } from "react"; 1 + import { type PropsWithChildren, useEffect, useState } from "react"; 2 2 import { 3 3 BrowserOAuthClient, 4 4 OAuthSession, 5 5 } from "@atproto/oauth-client-browser"; 6 6 import { Agent } from "@atproto/api"; 7 - import { getClientMetadata } from "../shared/client_metadata.ts"; 8 - 9 - export const ATProtoContext = createContext<{ 10 - session?: OAuthSession; 11 - agent?: Agent; 12 - client?: BrowserOAuthClient; 13 - }>({ 14 - session: undefined, 15 - agent: undefined, 16 - client: undefined, 17 - }); 7 + import { getClientMetadata } from "./client_metadata"; 8 + import { ATProtoContext } from "./context"; 18 9 19 10 export const ATProtoContextProvider = ({ children }: PropsWithChildren) => { 20 - const [client] = useState<BrowserOAuthClient>(new BrowserOAuthClient({ 11 + const [client] = useState<BrowserOAuthClient | undefined>(typeof window === "undefined" ? undefined : new BrowserOAuthClient({ 21 12 clientMetadata: getClientMetadata(window.location.origin), 22 13 handleResolver: "https://bsky.social/", 23 14 })); 24 - const [result, setResult] = useState<undefined | { session: OAuthSession; state?: string | null }>(); 15 + const [result, setResult] = useState<undefined | { session: OAuthSession; state?: string | null; }>(); 25 16 const [agent, setAgent] = useState<Agent>(); 26 17 27 18 useEffect(() => { 28 19 if (client && !agent) { 29 - client.init().then(clientResult => setResult(clientResult)) 20 + client.init().then(clientResult => setResult(clientResult)); 30 21 } 31 - }, [client]); 22 + }, [client, agent]); 32 23 33 24 useEffect(() => { 34 25 if (typeof result !== "undefined") { 35 26 const { session, state } = result ?? {}; 36 27 if (state != null) { 37 28 console.log( 38 - `${session.sub} was successfully authenticated (state: ${state})`, 29 + `${session.sub} was successfully authenticated (state: ${state})` 39 30 ); 40 31 } else { 41 32 console.log(`${session.sub} was restored (last active session)`); ··· 50 41 <ATProtoContext value={{ agent, session: result?.session, client }}> 51 42 {children} 52 43 </ATProtoContext> 53 - ) 44 + ); 54 45 }; 46 +
-1
src/index.css
··· 1 - @import "tailwindcss";
-14
src/main.tsx
··· 1 - import { createRoot } from "react-dom/client"; 2 - import { App } from "./components/App.tsx"; 3 - import { ATProtoContextProvider } from "./context.tsx"; 4 - 5 - const root = document.getElementById("root"); 6 - if (!root) { 7 - throw new Error("No root element found"); 8 - } 9 - 10 - createRoot(root).render( 11 - <ATProtoContextProvider> 12 - <App /> 13 - </ATProtoContextProvider> 14 - );
-1
src/vite-env.d.ts
··· 1 - /// <reference types="vite/client" />
-26
tsconfig.app.json
··· 1 - { 2 - "compilerOptions": { 3 - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 4 - "target": "ES2020", 5 - "useDefineForClassFields": true, 6 - "lib": ["ES2020", "DOM", "DOM.Iterable"], 7 - "module": "ESNext", 8 - "skipLibCheck": true, 9 - 10 - /* Bundler mode */ 11 - "moduleResolution": "bundler", 12 - "allowImportingTsExtensions": true, 13 - "isolatedModules": true, 14 - "moduleDetection": "force", 15 - "noEmit": true, 16 - "jsx": "react-jsx", 17 - 18 - /* Linting */ 19 - "strict": true, 20 - "noUnusedLocals": true, 21 - "noUnusedParameters": true, 22 - "noFallthroughCasesInSwitch": true, 23 - "noUncheckedSideEffectImports": true 24 - }, 25 - "include": ["src"] 26 - }
+26 -18
tsconfig.json
··· 1 1 { 2 - "files": [], 3 - "references": [ 4 - { 5 - "path": "./tsconfig.app.json" 6 - }, 7 - { 8 - "path": "./tsconfig.node.json" 9 - }, 10 - { 11 - "path": "./tsconfig.worker.json" 12 - } 13 - ], 14 - "compilerOptions": { 15 - "types": [ 16 - "@cloudflare/workers-types/2023-07-01" 17 - ] 18 - } 19 - } 2 + "include": [ 3 + "**/*", 4 + "**/.server/**/*", 5 + "**/.client/**/*", 6 + ".react-router/types/**/*" 7 + ], 8 + "compilerOptions": { 9 + "lib": ["DOM", "DOM.Iterable", "ES2022"], 10 + "types": ["node", "vite/client"], 11 + "target": "ES2022", 12 + "module": "ES2022", 13 + "moduleResolution": "bundler", 14 + "jsx": "react-jsx", 15 + "rootDirs": [".", "./.react-router/types"], 16 + "baseUrl": ".", 17 + "paths": { 18 + "~/*": ["./app/*"] 19 + }, 20 + "esModuleInterop": true, 21 + "verbatimModuleSyntax": true, 22 + "noEmit": true, 23 + "resolveJsonModule": true, 24 + "skipLibCheck": true, 25 + "strict": true 26 + } 27 + }
-24
tsconfig.node.json
··· 1 - { 2 - "compilerOptions": { 3 - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 - "target": "ES2022", 5 - "lib": ["ES2023"], 6 - "module": "ESNext", 7 - "skipLibCheck": true, 8 - 9 - /* Bundler mode */ 10 - "moduleResolution": "bundler", 11 - "allowImportingTsExtensions": true, 12 - "isolatedModules": true, 13 - "moduleDetection": "force", 14 - "noEmit": true, 15 - 16 - /* Linting */ 17 - "strict": true, 18 - "noUnusedLocals": true, 19 - "noUnusedParameters": true, 20 - "noFallthroughCasesInSwitch": true, 21 - "noUncheckedSideEffectImports": true 22 - }, 23 - "include": ["vite.config.ts"] 24 - }
-8
tsconfig.worker.json
··· 1 - { 2 - "extends": "./tsconfig.node.json", 3 - "compilerOptions": { 4 - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.worker.tsbuildinfo", 5 - "types": ["@cloudflare/workers-types/2023-07-01", "vite/client"] 6 - }, 7 - "include": ["./worker-configuration.d.ts", "./worker"] 8 - }
+4 -11
vite.config.ts
··· 1 - import { defineConfig } from "vite"; 2 - import react from "@vitejs/plugin-react"; 3 - 4 - import { cloudflare } from "@cloudflare/vite-plugin"; 1 + import { reactRouter } from "@react-router/dev/vite"; 5 2 import tailwindcss from "@tailwindcss/vite"; 3 + import { defineConfig } from "vite"; 4 + import tsconfigPaths from "vite-tsconfig-paths"; 6 5 7 - // https://vite.dev/config/ 8 6 export default defineConfig({ 9 - plugins: [react(), cloudflare(), tailwindcss()], 10 - server: { 11 - allowedHosts: [ 12 - "currency-houston-arranged-scotia.trycloudflare.com", 13 - ], 14 - }, 7 + plugins: [tailwindcss(), reactRouter(), tsconfigPaths()], 15 8 });
-5
worker-configuration.d.ts
··· 1 - // Generated by Wrangler 2 - // After adding bindings to `wrangler.jsonc`, regenerate this interface via `npm run cf-typegen` 3 - interface Env { 4 - ASSETS: Fetcher; 5 - }
-24
worker/index.ts
··· 1 - import { Hono } from "hono"; 2 - import { getClientMetadata } from "../shared/client_metadata.ts"; 3 - 4 - const app = new Hono(); 5 - 6 - app.get( 7 - "client_metadata.json", 8 - (c) => c.json(getClientMetadata(`https://${new URL(c.req.url).hostname}`)), 9 - ); 10 - 11 - export default app; 12 - 13 - // export default { 14 - // fetch(request) { 15 - // const url = new URL(request.url); 16 - 17 - // if (url.pathname.startsWith("/api/")) { 18 - // return Response.json({ 19 - // name: "Cloudflare", 20 - // }); 21 - // } 22 - // return new Response(null, { status: 404 }); 23 - // }, 24 - // } satisfies ExportedHandler<Env>;
-50
wrangler.jsonc
··· 1 - /** 2 - * For more details on how to configure Wrangler, refer to: 3 - * https://developers.cloudflare.com/workers/wrangler/configuration/ 4 - */ 5 - { 6 - "$schema": "node_modules/wrangler/config-schema.json", 7 - "name": "mapped", 8 - "main": "worker/index.ts", 9 - "compatibility_date": "2025-05-10", 10 - "assets": { 11 - "not_found_handling": "single-page-application" 12 - }, 13 - "observability": { 14 - "enabled": true 15 - } 16 - /** 17 - * Smart Placement 18 - * Docs: https://developers.cloudflare.com/workers/configuration/smart-placement/#smart-placement 19 - */ 20 - // "placement": { "mode": "smart" }, 21 - 22 - /** 23 - * Bindings 24 - * Bindings allow your Worker to interact with resources on the Cloudflare Developer Platform, including 25 - * databases, object storage, AI inference, real-time communication and more. 26 - * https://developers.cloudflare.com/workers/runtime-apis/bindings/ 27 - */ 28 - 29 - /** 30 - * Environment Variables 31 - * https://developers.cloudflare.com/workers/wrangler/configuration/#environment-variables 32 - */ 33 - // "vars": { "MY_VARIABLE": "production_value" }, 34 - /** 35 - * Note: Use secrets to store sensitive data. 36 - * https://developers.cloudflare.com/workers/configuration/secrets/ 37 - */ 38 - 39 - /** 40 - * Static Assets 41 - * https://developers.cloudflare.com/workers/static-assets/binding/ 42 - */ 43 - // "assets": { "directory": "./public/", "binding": "ASSETS" }, 44 - 45 - /** 46 - * Service Bindings (communicate between multiple Workers) 47 - * https://developers.cloudflare.com/workers/wrangler/configuration/#service-bindings 48 - */ 49 - // "services": [{ "binding": "MY_SERVICE", "service": "my-service" }] 50 - }