this repo has no description
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

convert to cloudflare and initialise context in dedicated provider

+4108 -198
+28 -2
.gitignore
··· 1 - .vtignore 2 - .vt 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + pnpm-debug.log* 8 + lerna-debug.log* 9 + 10 + node_modules 11 + dist 12 + dist-ssr 13 + *.local 14 + 15 + # Editor directories and files 16 + .vscode/* 17 + !.vscode/extensions.json 18 + .idea 19 + .DS_Store 20 + *.suo 21 + *.ntvs* 22 + *.njsproj 23 + *.sln 24 + *.sw? 25 + 26 + # wrangler files 27 + .wrangler 28 + .dev.vars*
+14 -2
README.md
··· 3 3 Store your runs using ATProto! Log in with your bluesky handle (sorry) and start 4 4 saving and retrieving your runs. 5 5 6 - Press the Remix button to start storing your own records on ATProto! 6 + Demo available 7 + at:[https://mapped.wilhelmb.workers.dev](https://mapped.wilhelmb.workers.dev) 7 8 8 - Demo available at:[ https://proto-runs.val.run/](https://proto-runs.val.run/) 9 + # Local development 10 + 11 + ```sh 12 + # install dependencies 13 + pnpm install 14 + 15 + # start dev server 16 + pnpm dev 17 + 18 + # for local oauth: 19 + cloudflared tunnel --url http://localhost:5173 20 + ```
-28
backend/index.ts
··· 1 - import { serveFile } from "https://esm.town/v/std/utils@85-main/index.ts"; 2 - import { Hono } from "npm:hono"; 3 - import { getClientMetadata } from "../shared/client_metadata.ts"; 4 - 5 - const app = new Hono(); 6 - 7 - // Serve index.html at the root / 8 - app.get("/", (_c) => { 9 - return serveFile("/frontend/index.html", import.meta.url); 10 - }); 11 - 12 - // Serve all /frontend files 13 - app.get("/frontend/**/*", (c) => serveFile(c.req.path, import.meta.url)); 14 - app.get("/shared/**/*", (c) => serveFile(c.req.path, import.meta.url)); 15 - app.get("/public/*", (c) => serveFile(c.req.path, import.meta.url)); 16 - 17 - app.get( 18 - "/client_metadata.json", 19 - (c) => c.json(getClientMetadata(`https://${new URL(c.req.url).hostname}`)), 20 - ); 21 - 22 - app.onError((err, _c) => { 23 - throw err; 24 - }); 25 - 26 - // HTTP vals expect an exported "fetch handler" 27 - // This is how you "run the server" in Val Town with Hono 28 - export default app.fetch;
-37
deno.json
··· 1 - { 2 - "$schema": "https://raw.githubusercontent.com/denoland/deno/348900b8b79f4a434cab4c74b3bc8d4d2fa8ee74/cli/schemas/config-file.v1.json", 3 - "lock": false, 4 - "compilerOptions": { 5 - "noImplicitAny": false, 6 - "strict": false, 7 - "types": [ 8 - "https://www.val.town/types/valtown.d.ts" 9 - ], 10 - "lib": [ 11 - "dom", 12 - "dom.iterable", 13 - "dom.asynciterable", 14 - "deno.ns", 15 - "deno.unstable" 16 - ] 17 - }, 18 - "lint": { 19 - "files": { 20 - "include": [ 21 - "deno:/https/esm.town/**/*" 22 - ] 23 - }, 24 - "rules": { 25 - "exclude": [ 26 - "no-explicit-any" 27 - ] 28 - } 29 - }, 30 - "node_modules_dir": false, 31 - "experimental": { 32 - "unstable-node-globals": true, 33 - "unstable-temporal": true, 34 - "unstable-worker-options": true, 35 - "unstable-sloppy-imports": true 36 - } 37 - }
+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 + )
+17 -8
frontend/components/App.tsx src/components/App.tsx
··· 1 - /** @jsxImportSource https://esm.sh/react@19.1.0 */ 2 - import { useContext, useState } from "https://esm.sh/react@19.1.0"; 3 - import { ATProtoContext } from "../context.ts"; 1 + import { useContext, useState } from "react"; 2 + import { ATProtoContext } from "../context.tsx"; 4 3 import { RunForm } from "./RunForm.tsx"; 5 4 import { SignIn } from "./SignIn.tsx"; 6 - import { AtUri } from "https://esm.sh/@atproto/api@0.15.5" 5 + import { AtUri } from "@atproto/api" 7 6 import { Run } from "../../shared/run_lexicon.ts"; 8 7 9 8 type RunsResponse = { ··· 13 12 }[] 14 13 } 15 14 15 + declare global { 16 + interface Window { 17 + L: { 18 + map: any; 19 + GPX: any; 20 + tileLayer: any; 21 + }; 22 + } 23 + } 24 + 16 25 export function App() { 17 26 const { session, agent } = useContext(ATProtoContext); 18 27 const [runsResponse, setRunsResponse] = useState<RunsResponse>({ records: [] }); 19 28 20 - const fetchRuns = () => agent.com.atproto.repo 29 + const fetchRuns = () => session && agent?.com.atproto.repo 21 30 .listRecords({ collection: "me.wilb.test.run", repo: session.did }) 22 31 .then(res => setRunsResponse(res.data as unknown as RunsResponse)) 23 32 24 - const deleteRun = (rkey: string) => agent.com.atproto.repo 33 + const deleteRun = (rkey: string) => session && agent?.com.atproto.repo 25 34 .deleteRecord({ collection: "me.wilb.test.run", repo: session.did, rkey }) 26 35 .then(() => fetchRuns()) 27 36 ··· 40 49 {runsResponse?.records.map(({ uri, value: { note, date_iso, distance_meters, duration_seconds, gpx } }) => ( 41 50 <div> 42 51 <p>distance (kilometers): {distance_meters / 1000}</p> 43 - <p>duration (minutes): {duration_seconds / 60}</p> 52 + <p>duration (minutes): {duration_seconds ?? 0 / 60}</p> 44 53 <p>date: {date_iso}</p> 45 54 <p>note: {note}</p> 46 55 {gpx && <p><button type="button" onClick={() => { ··· 54 63 polyline_options: { color: 'red' }, 55 64 }; 56 65 57 - new window.L.GPX(`${session.server.issuer}/xrpc/com.atproto.sync.getBlob?did=${session.did}&cid=${gpx.ref}`, options).on('loaded', (e) => { 66 + new window.L.GPX(`${session?.server.issuer}/xrpc/com.atproto.sync.getBlob?did=${session?.did}&cid=${gpx.ref}`, options).on('loaded', (e: any) => { 58 67 map.fitBounds(e.target.getBounds()); 59 68 }).addTo(map); 60 69 }}>Load gpx</button></p>}
+10 -11
frontend/components/RunForm.tsx src/components/RunForm.tsx
··· 1 - /** @jsxImportSource https://esm.sh/react@19.1.0 */ 2 - import { useActionState, useContext } from "https://esm.sh/react@19.1.0"; 3 - import { Run, runSchemaMap } from "../../shared/run_lexicon.ts"; 4 - import { ATProtoContext } from "../context.ts"; 5 - import { type BlobRef } from "https://esm.sh/@atproto/api@0.15.5"; 1 + import { useActionState, useContext } from "react"; 2 + import { Run } from "../../shared/run_lexicon.ts"; 3 + import { ATProtoContext } from "../context.tsx"; 4 + import { type BlobRef } from "@atproto/api"; 6 5 7 6 export function RunForm() { 8 7 const { session, agent } = useContext(ATProtoContext); ··· 11 10 const gpxFile = formData.get("gpx") as File; 12 11 let gpxBlobRef: { blob: BlobRef } | undefined; 13 12 if (gpxFile) { 14 - const uploadBlobResponse = await agent.com.atproto.repo.uploadBlob(new Blob([gpxFile]), { 13 + const uploadBlobResponse = await agent?.com.atproto.repo.uploadBlob(new Blob([gpxFile]), { 15 14 encoding: "application/gpx+xml", 16 15 }); 17 16 console.log("Uploaded GPX file:", gpxFile); 18 17 console.log("Upload blob response:", uploadBlobResponse); 19 - gpxBlobRef = uploadBlobResponse.data; 18 + gpxBlobRef = uploadBlobResponse?.data; 20 19 } else { 21 20 console.log("No GPX file provided"); 22 21 } 23 22 24 23 const values: Run = { 25 24 distance_meters: Number(formData.get("distance_kilometers")) * 1000, 26 - date_iso: formData.get("date_iso").toString(), 27 - note: formData.get("note").toString(), 25 + date_iso: formData.get("date_iso")?.toString() ?? "", 26 + note: formData.get("note")?.toString(), 28 27 duration_seconds: Number(formData.get("duration_minutes")) * 60, 29 28 created_at: new Date().toISOString(), 30 - gpx: gpxFile ? gpxBlobRef.blob : undefined, 29 + gpx: gpxFile ? gpxBlobRef?.blob : undefined, 31 30 } 32 31 33 32 // const parsed = runSchemaMap.defs.main.record.safeParse(values) 34 33 35 34 // if (parsed.success) { 36 35 // console.log({ data: parsed.data }) 37 - const createRecordResponse = await agent.com.atproto.repo.createRecord({ 36 + const createRecordResponse = session && await agent?.com.atproto.repo.createRecord({ 38 37 repo: session.did, 39 38 collection: "me.wilb.test.run", 40 39 record: {
+4 -5
frontend/components/SignIn.tsx src/components/SignIn.tsx
··· 1 - /** @jsxImportSource https://esm.sh/react@19.1.0 */ 2 - import { useActionState, useContext } from "https://esm.sh/react@19.1.0"; 3 - import { ATProtoContext } from "../context.ts"; 1 + import { useActionState, useContext } from "react"; 2 + import { ATProtoContext } from "../context.tsx"; 4 3 5 4 export function SignIn() { 6 5 const { client, session } = useContext(ATProtoContext); ··· 11 10 if (handle[0] === "@") { 12 11 handle = handle.slice(1); 13 12 } 14 - await client.signIn(handle); 13 + await client?.signIn(handle); 15 14 } 16 15 catch (e) { 17 16 return e; ··· 31 30 </form> 32 31 )} 33 32 {isSigningIn && <p>Signing in...</p>} 34 - {signInError && <pre>{signInError}</pre>} 33 + {signInError && <pre>{`${signInError}`}</pre>} 35 34 </> 36 35 ); 37 36 }
-16
frontend/context.ts
··· 1 - import { createContext } from "https://esm.sh/react@19.1.0"; 2 - import { 3 - BrowserOAuthClient, 4 - OAuthSession, 5 - } from "https://esm.sh/@atproto/oauth-client-browser@0.3.15"; 6 - import { Agent } from "https://esm.sh/@atproto/api@0.15.5"; 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 - });
-20
frontend/index.html
··· 1 - <!DOCTYPE html> 2 - <html lang="en"> 3 - <head> 4 - <meta charset="UTF-8"> 5 - <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 - <title>ProtoRuns</title> 7 - <link rel="stylesheet" href="/public/style.css"> 8 - <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🏃</text></svg>"> 9 - <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /> 10 - </head> 11 - <body> 12 - <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> 13 - <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/2.1.2/gpx.min.js" defer></script> 14 - <main> 15 - <div id="root"></div> 16 - </main> 17 - <script src="https://esm.town/v/std/catch"></script> 18 - <script src="/frontend/index.tsx" type="module"></script> 19 - </body> 20 - </html>
-39
frontend/index.tsx
··· 1 - /** @jsxImportSource https://esm.sh/react@19.1.0 */ 2 - import { createRoot } from "https://esm.sh/react-dom@19.1.0/client"; 3 - import { App } from "./components/App.tsx"; 4 - import { BrowserOAuthClient, OAuthSession } from "https://esm.sh/@atproto/oauth-client-browser@0.3.15" 5 - import { Agent } from "https://esm.sh/@atproto/api@0.15.5" 6 - import { getClientMetadata } from "../shared/client_metadata.ts"; 7 - import { ATProtoContext } from "./context.ts"; 8 - 9 - const client = new BrowserOAuthClient({ 10 - clientMetadata: getClientMetadata(window.location.origin), 11 - handleResolver: "https://bsky.social/", 12 - }) 13 - 14 - const result: undefined | { session: OAuthSession; state?: string } = 15 - await client.init() 16 - 17 - if (typeof result !== "undefined") { 18 - const { session, state } = result ?? {} 19 - if (state != null) { 20 - console.log( 21 - `${session.sub} was successfully authenticated (state: ${state})`, 22 - ) 23 - } else { 24 - console.log(`${session.sub} was restored (last active session)`) 25 - } 26 - } 27 - 28 - const agent = result?.session ? new Agent(result.session) : undefined; 29 - 30 - const root = document.getElementById("root"); 31 - if (!root) { 32 - throw new Error("No root element found"); 33 - } 34 - 35 - createRoot(root).render( 36 - <ATProtoContext value={{ agent, session: result?.session, client }}> 37 - <App /> 38 - </ATProtoContext> 39 - );
+21
index.html
··· 1 + <!doctype html> 2 + <html lang="en"> 3 + 4 + <head> 5 + <meta charset="UTF-8" /> 6 + <link rel="icon" type="image/svg+xml" href="/vite.svg" /> 7 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 8 + <title>Vite + React + TS</title> 9 + <link rel="icon" 10 + href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🏃</text></svg>"> 11 + <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" /> 12 + </head> 13 + 14 + <body> 15 + <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> 16 + <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/2.1.2/gpx.min.js" defer></script> 17 + <div id="root"></div> 18 + <script type="module" src="/src/main.tsx"></script> 19 + </body> 20 + 21 + </html>
+38
package.json
··· 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 + "hono": "^4.7.9", 18 + "react": "^19.0.0", 19 + "react-dom": "^19.0.0" 20 + }, 21 + "devDependencies": { 22 + "@atproto/oauth-types": "^0.2.7", 23 + "@cloudflare/vite-plugin": "^1.1.1", 24 + "@cloudflare/workers-types": "^4.20250510.0", 25 + "@eslint/js": "^9.22.0", 26 + "@types/react": "^19.0.10", 27 + "@types/react-dom": "^19.0.4", 28 + "@vitejs/plugin-react": "^4.3.4", 29 + "eslint": "^9.22.0", 30 + "eslint-plugin-react-hooks": "^5.2.0", 31 + "eslint-plugin-react-refresh": "^0.4.19", 32 + "globals": "^16.0.0", 33 + "typescript": "~5.7.2", 34 + "typescript-eslint": "^8.26.1", 35 + "vite": "^6.3.1", 36 + "wrangler": "^4.14.4" 37 + } 38 + }
+3675
pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + dependencies: 11 + '@atproto/api': 12 + specifier: ^0.15.6 13 + version: 0.15.6 14 + '@atproto/oauth-client-browser': 15 + specifier: ^0.3.16 16 + version: 0.3.16 17 + hono: 18 + specifier: ^4.7.9 19 + version: 4.7.9 20 + react: 21 + specifier: ^19.0.0 22 + version: 19.1.0 23 + react-dom: 24 + specifier: ^19.0.0 25 + version: 19.1.0(react@19.1.0) 26 + devDependencies: 27 + '@atproto/oauth-types': 28 + specifier: ^0.2.7 29 + version: 0.2.7 30 + '@cloudflare/vite-plugin': 31 + specifier: ^1.1.1 32 + version: 1.1.1(rollup@4.40.2)(vite@6.3.5)(workerd@1.20250507.0)(wrangler@4.14.4(@cloudflare/workers-types@4.20250510.0)) 33 + '@cloudflare/workers-types': 34 + specifier: ^4.20250510.0 35 + version: 4.20250510.0 36 + '@eslint/js': 37 + specifier: ^9.22.0 38 + version: 9.26.0 39 + '@types/react': 40 + specifier: ^19.0.10 41 + version: 19.1.3 42 + '@types/react-dom': 43 + specifier: ^19.0.4 44 + version: 19.1.3(@types/react@19.1.3) 45 + '@vitejs/plugin-react': 46 + specifier: ^4.3.4 47 + version: 4.4.1(vite@6.3.5) 48 + eslint: 49 + specifier: ^9.22.0 50 + version: 9.26.0 51 + eslint-plugin-react-hooks: 52 + specifier: ^5.2.0 53 + version: 5.2.0(eslint@9.26.0) 54 + eslint-plugin-react-refresh: 55 + specifier: ^0.4.19 56 + version: 0.4.20(eslint@9.26.0) 57 + globals: 58 + specifier: ^16.0.0 59 + version: 16.1.0 60 + typescript: 61 + specifier: ~5.7.2 62 + version: 5.7.3 63 + typescript-eslint: 64 + specifier: ^8.26.1 65 + version: 8.32.0(eslint@9.26.0)(typescript@5.7.3) 66 + vite: 67 + specifier: ^6.3.1 68 + version: 6.3.5 69 + wrangler: 70 + specifier: ^4.14.4 71 + version: 4.14.4(@cloudflare/workers-types@4.20250510.0) 72 + 73 + packages: 74 + 75 + '@ampproject/remapping@2.3.0': 76 + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 77 + engines: {node: '>=6.0.0'} 78 + 79 + '@atproto-labs/did-resolver@0.1.12': 80 + resolution: {integrity: sha512-criWN7o21C5TFsauB+bGTlkqqerOU6gT2TbxdQVgZUWqNcfazUmUjT4gJAY02i+O4d3QmZa27fv9CcaRKWkSug==} 81 + 82 + '@atproto-labs/fetch@0.2.2': 83 + resolution: {integrity: sha512-QyafkedbFeVaN20DYUpnY2hcArYxjdThPXbYMqOSoZhcvkrUqaw4xDND4wZB5TBD9cq2yqe9V6mcw9P4XQKQuQ==} 84 + 85 + '@atproto-labs/handle-resolver@0.1.8': 86 + resolution: {integrity: sha512-Y0ckccoCGDo/3g4thPkgp9QcORmc+qqEaCBCYCZYtfLIQp4775u22wd+4fyEyJP4DqoReKacninkICgRGfs3dQ==} 87 + 88 + '@atproto-labs/identity-resolver@0.1.16': 89 + resolution: {integrity: sha512-pFrtKT49cYBhCDd2U1t/CcUBiMmQzaNQxh8oSkDUlGs/K3P8rJFTAGAMm8UjokfGEKwF4hX9oo7O8Kn+GkyExw==} 90 + 91 + '@atproto-labs/pipe@0.1.0': 92 + resolution: {integrity: sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==} 93 + 94 + '@atproto-labs/simple-store-memory@0.1.3': 95 + resolution: {integrity: sha512-jkitT9+AtU+0b28DoN92iURLaCt/q/q4yX8q6V+9LSwYlUTqKoj/5NFKvF7x6EBuG+gpUdlcycbH7e60gjOhRQ==} 96 + 97 + '@atproto-labs/simple-store@0.2.0': 98 + resolution: {integrity: sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA==} 99 + 100 + '@atproto/api@0.15.6': 101 + resolution: {integrity: sha512-hKwrBf60LcI4BqArWyrhWJWIpjwAWUJpW3PVvNzUB1q2W/ByC0JAuwq/F8tZpCEiiVBzHjHVRx4QNA2TA1cG3g==} 102 + 103 + '@atproto/common-web@0.4.2': 104 + resolution: {integrity: sha512-vrXwGNoFGogodjQvJDxAeP3QbGtawgZute2ed1XdRO0wMixLk3qewtikZm06H259QDJVu6voKC5mubml+WgQUw==} 105 + 106 + '@atproto/did@0.1.5': 107 + resolution: {integrity: sha512-8+1D08QdGE5TF0bB0vV8HLVrVZJeLNITpRTUVEoABNMRaUS7CoYSVb0+JNQDeJIVmqMjOL8dOjvCUDkp3gEaGQ==} 108 + 109 + '@atproto/jwk-jose@0.1.6': 110 + resolution: {integrity: sha512-r4DGMvvmazy6CxqAcnplpUxvp6Vd8UwKxQBZRpmm1aNsVonf5qj1yeDkECTiwoe/FPbvtdamlzClB3UZc7Yb5w==} 111 + 112 + '@atproto/jwk-webcrypto@0.1.6': 113 + resolution: {integrity: sha512-mxWHOvlg+HGohldfiaon1fNsr7iDvKrTrkV0/ZvymWRzxsDFPCon1hu8OtKLXUVgLh+IzDJT1D79I4fBSo4pog==} 114 + 115 + '@atproto/jwk@0.1.5': 116 + resolution: {integrity: sha512-OzZFLhX41TOcMeanP3aZlL5bLeaUIZT15MI4aU5cwflNq/rwpGOpz3uwDjZc8ytgUjuTQ8LabSz5jMmwoTSWFg==} 117 + 118 + '@atproto/lexicon@0.4.11': 119 + resolution: {integrity: sha512-btefdnvNz2Ao2I+qbmj0F06HC8IlrM/IBz6qOBS50r0S6uDf5tOO+Mv2tSVdimFkdzyDdLtBI1sV36ONxz2cOw==} 120 + 121 + '@atproto/oauth-client-browser@0.3.16': 122 + resolution: {integrity: sha512-aEfRH+P2fO4g4g+A2SddyOMR8waJR81fSx+dqMkLhEGRmFYGzSOuZE1HzsVO8QVllR5O3+837kuUABcNs96xLw==} 123 + 124 + '@atproto/oauth-client@0.3.16': 125 + resolution: {integrity: sha512-AEtGLOXRJzBcBa8LyUXwFf/M7cZc+CcOBjLsiqmVQriSwccfyTkALgiyM0UcRHJqlwtLPuf9RYtgKPc8rW5F/w==} 126 + 127 + '@atproto/oauth-types@0.2.7': 128 + resolution: {integrity: sha512-2SlDveiSI0oowC+sfuNd/npV8jw/FhokSS26qyUyldTg1g9ZlhxXUfMP4IZOPeZcVn9EszzQRHs1H9ZJqVQIew==} 129 + 130 + '@atproto/syntax@0.4.0': 131 + resolution: {integrity: sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA==} 132 + 133 + '@atproto/xrpc@0.7.0': 134 + resolution: {integrity: sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw==} 135 + 136 + '@babel/code-frame@7.27.1': 137 + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 138 + engines: {node: '>=6.9.0'} 139 + 140 + '@babel/compat-data@7.27.2': 141 + resolution: {integrity: sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==} 142 + engines: {node: '>=6.9.0'} 143 + 144 + '@babel/core@7.27.1': 145 + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} 146 + engines: {node: '>=6.9.0'} 147 + 148 + '@babel/generator@7.27.1': 149 + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} 150 + engines: {node: '>=6.9.0'} 151 + 152 + '@babel/helper-compilation-targets@7.27.2': 153 + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 154 + engines: {node: '>=6.9.0'} 155 + 156 + '@babel/helper-module-imports@7.27.1': 157 + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 158 + engines: {node: '>=6.9.0'} 159 + 160 + '@babel/helper-module-transforms@7.27.1': 161 + resolution: {integrity: sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==} 162 + engines: {node: '>=6.9.0'} 163 + peerDependencies: 164 + '@babel/core': ^7.0.0 165 + 166 + '@babel/helper-plugin-utils@7.27.1': 167 + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 168 + engines: {node: '>=6.9.0'} 169 + 170 + '@babel/helper-string-parser@7.27.1': 171 + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 172 + engines: {node: '>=6.9.0'} 173 + 174 + '@babel/helper-validator-identifier@7.27.1': 175 + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 176 + engines: {node: '>=6.9.0'} 177 + 178 + '@babel/helper-validator-option@7.27.1': 179 + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 180 + engines: {node: '>=6.9.0'} 181 + 182 + '@babel/helpers@7.27.1': 183 + resolution: {integrity: sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==} 184 + engines: {node: '>=6.9.0'} 185 + 186 + '@babel/parser@7.27.2': 187 + resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==} 188 + engines: {node: '>=6.0.0'} 189 + hasBin: true 190 + 191 + '@babel/plugin-transform-react-jsx-self@7.27.1': 192 + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} 193 + engines: {node: '>=6.9.0'} 194 + peerDependencies: 195 + '@babel/core': ^7.0.0-0 196 + 197 + '@babel/plugin-transform-react-jsx-source@7.27.1': 198 + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} 199 + engines: {node: '>=6.9.0'} 200 + peerDependencies: 201 + '@babel/core': ^7.0.0-0 202 + 203 + '@babel/template@7.27.2': 204 + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 205 + engines: {node: '>=6.9.0'} 206 + 207 + '@babel/traverse@7.27.1': 208 + resolution: {integrity: sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==} 209 + engines: {node: '>=6.9.0'} 210 + 211 + '@babel/types@7.27.1': 212 + resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} 213 + engines: {node: '>=6.9.0'} 214 + 215 + '@cloudflare/kv-asset-handler@0.4.0': 216 + resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} 217 + engines: {node: '>=18.0.0'} 218 + 219 + '@cloudflare/unenv-preset@2.3.1': 220 + resolution: {integrity: sha512-Xq57Qd+ADpt6hibcVBO0uLG9zzRgyRhfCUgBT9s+g3+3Ivg5zDyVgLFy40ES1VdNcu8rPNSivm9A+kGP5IVaPg==} 221 + peerDependencies: 222 + unenv: 2.0.0-rc.15 223 + workerd: ^1.20250320.0 224 + peerDependenciesMeta: 225 + workerd: 226 + optional: true 227 + 228 + '@cloudflare/vite-plugin@1.1.1': 229 + resolution: {integrity: sha512-ZzLtAiN/XMxsOKrjF3S7VdKrj3fRMF7wZHUNUjbaZXnW9MSPgndp//edjYl4nzIkX0ZDeAG/iWzAhW1AFsw5HQ==} 230 + peerDependencies: 231 + vite: ^6.1.0 232 + wrangler: ^3.101.0 || ^4.0.0 233 + 234 + '@cloudflare/workerd-darwin-64@1.20250507.0': 235 + resolution: {integrity: sha512-xC+8hmQuOUUNCVT9DWpLMfxhR4Xs4kI8v7Bkybh4pzGC85moH6fMfCBNaP0YQCNAA/BR56aL/AwfvMVGskTK/A==} 236 + engines: {node: '>=16'} 237 + cpu: [x64] 238 + os: [darwin] 239 + 240 + '@cloudflare/workerd-darwin-arm64@1.20250507.0': 241 + resolution: {integrity: sha512-Oynff5H8yM4trfUFaKdkOvPV3jac8mg7QC19ILZluCVgLx/JGEVLEJ7do1Na9rLqV8CK4gmUXPrUMX7uerhQgg==} 242 + engines: {node: '>=16'} 243 + cpu: [arm64] 244 + os: [darwin] 245 + 246 + '@cloudflare/workerd-linux-64@1.20250507.0': 247 + resolution: {integrity: sha512-/HAA+Zg/R7Q/Smyl835FUFKjotZN1UzN9j/BHBd0xKmKov97QkXAX8gsyGnyKqRReIOinp8x/8+UebTICR7VJw==} 248 + engines: {node: '>=16'} 249 + cpu: [x64] 250 + os: [linux] 251 + 252 + '@cloudflare/workerd-linux-arm64@1.20250507.0': 253 + resolution: {integrity: sha512-NMPibSdOYeycU0IrKkgOESFJQy7dEpHvuatZxQxlT+mIQK0INzI3irp2kKxhF99s25kPC4p+xg9bU3ugTrs3VQ==} 254 + engines: {node: '>=16'} 255 + cpu: [arm64] 256 + os: [linux] 257 + 258 + '@cloudflare/workerd-windows-64@1.20250507.0': 259 + resolution: {integrity: sha512-c91fhNP8ufycdIDqjVyKTqeb4ewkbAYXFQbLreMVgh4LLQQPDDEte8wCdmaFy5bIL0M9d85PpdCq51RCzq/FaQ==} 260 + engines: {node: '>=16'} 261 + cpu: [x64] 262 + os: [win32] 263 + 264 + '@cloudflare/workers-types@4.20250510.0': 265 + resolution: {integrity: sha512-VLdSYUooX2QhdlzyBnnLAqa5B3xWyr5vdvya9NZk2BJNmRt2iblSLunj7iBKiW9J+SIBHz7c+kUzUJKoFLKRjg==} 266 + 267 + '@cspotcode/source-map-support@0.8.1': 268 + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 269 + engines: {node: '>=12'} 270 + 271 + '@emnapi/runtime@1.4.3': 272 + resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} 273 + 274 + '@esbuild/aix-ppc64@0.25.4': 275 + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} 276 + engines: {node: '>=18'} 277 + cpu: [ppc64] 278 + os: [aix] 279 + 280 + '@esbuild/android-arm64@0.25.4': 281 + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} 282 + engines: {node: '>=18'} 283 + cpu: [arm64] 284 + os: [android] 285 + 286 + '@esbuild/android-arm@0.25.4': 287 + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} 288 + engines: {node: '>=18'} 289 + cpu: [arm] 290 + os: [android] 291 + 292 + '@esbuild/android-x64@0.25.4': 293 + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} 294 + engines: {node: '>=18'} 295 + cpu: [x64] 296 + os: [android] 297 + 298 + '@esbuild/darwin-arm64@0.25.4': 299 + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} 300 + engines: {node: '>=18'} 301 + cpu: [arm64] 302 + os: [darwin] 303 + 304 + '@esbuild/darwin-x64@0.25.4': 305 + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} 306 + engines: {node: '>=18'} 307 + cpu: [x64] 308 + os: [darwin] 309 + 310 + '@esbuild/freebsd-arm64@0.25.4': 311 + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} 312 + engines: {node: '>=18'} 313 + cpu: [arm64] 314 + os: [freebsd] 315 + 316 + '@esbuild/freebsd-x64@0.25.4': 317 + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} 318 + engines: {node: '>=18'} 319 + cpu: [x64] 320 + os: [freebsd] 321 + 322 + '@esbuild/linux-arm64@0.25.4': 323 + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} 324 + engines: {node: '>=18'} 325 + cpu: [arm64] 326 + os: [linux] 327 + 328 + '@esbuild/linux-arm@0.25.4': 329 + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} 330 + engines: {node: '>=18'} 331 + cpu: [arm] 332 + os: [linux] 333 + 334 + '@esbuild/linux-ia32@0.25.4': 335 + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} 336 + engines: {node: '>=18'} 337 + cpu: [ia32] 338 + os: [linux] 339 + 340 + '@esbuild/linux-loong64@0.25.4': 341 + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} 342 + engines: {node: '>=18'} 343 + cpu: [loong64] 344 + os: [linux] 345 + 346 + '@esbuild/linux-mips64el@0.25.4': 347 + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} 348 + engines: {node: '>=18'} 349 + cpu: [mips64el] 350 + os: [linux] 351 + 352 + '@esbuild/linux-ppc64@0.25.4': 353 + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} 354 + engines: {node: '>=18'} 355 + cpu: [ppc64] 356 + os: [linux] 357 + 358 + '@esbuild/linux-riscv64@0.25.4': 359 + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} 360 + engines: {node: '>=18'} 361 + cpu: [riscv64] 362 + os: [linux] 363 + 364 + '@esbuild/linux-s390x@0.25.4': 365 + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} 366 + engines: {node: '>=18'} 367 + cpu: [s390x] 368 + os: [linux] 369 + 370 + '@esbuild/linux-x64@0.25.4': 371 + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} 372 + engines: {node: '>=18'} 373 + cpu: [x64] 374 + os: [linux] 375 + 376 + '@esbuild/netbsd-arm64@0.25.4': 377 + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} 378 + engines: {node: '>=18'} 379 + cpu: [arm64] 380 + os: [netbsd] 381 + 382 + '@esbuild/netbsd-x64@0.25.4': 383 + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} 384 + engines: {node: '>=18'} 385 + cpu: [x64] 386 + os: [netbsd] 387 + 388 + '@esbuild/openbsd-arm64@0.25.4': 389 + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} 390 + engines: {node: '>=18'} 391 + cpu: [arm64] 392 + os: [openbsd] 393 + 394 + '@esbuild/openbsd-x64@0.25.4': 395 + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} 396 + engines: {node: '>=18'} 397 + cpu: [x64] 398 + os: [openbsd] 399 + 400 + '@esbuild/sunos-x64@0.25.4': 401 + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} 402 + engines: {node: '>=18'} 403 + cpu: [x64] 404 + os: [sunos] 405 + 406 + '@esbuild/win32-arm64@0.25.4': 407 + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} 408 + engines: {node: '>=18'} 409 + cpu: [arm64] 410 + os: [win32] 411 + 412 + '@esbuild/win32-ia32@0.25.4': 413 + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} 414 + engines: {node: '>=18'} 415 + cpu: [ia32] 416 + os: [win32] 417 + 418 + '@esbuild/win32-x64@0.25.4': 419 + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} 420 + engines: {node: '>=18'} 421 + cpu: [x64] 422 + os: [win32] 423 + 424 + '@eslint-community/eslint-utils@4.7.0': 425 + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} 426 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 427 + peerDependencies: 428 + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 429 + 430 + '@eslint-community/regexpp@4.12.1': 431 + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 432 + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 433 + 434 + '@eslint/config-array@0.20.0': 435 + resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} 436 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 437 + 438 + '@eslint/config-helpers@0.2.2': 439 + resolution: {integrity: sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==} 440 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 441 + 442 + '@eslint/core@0.13.0': 443 + resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} 444 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 445 + 446 + '@eslint/eslintrc@3.3.1': 447 + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} 448 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 449 + 450 + '@eslint/js@9.26.0': 451 + resolution: {integrity: sha512-I9XlJawFdSMvWjDt6wksMCrgns5ggLNfFwFvnShsleWruvXM514Qxk8V246efTw+eo9JABvVz+u3q2RiAowKxQ==} 452 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 453 + 454 + '@eslint/object-schema@2.1.6': 455 + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 456 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 457 + 458 + '@eslint/plugin-kit@0.2.8': 459 + resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} 460 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 461 + 462 + '@fastify/busboy@2.1.1': 463 + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 464 + engines: {node: '>=14'} 465 + 466 + '@hattip/adapter-node@0.0.49': 467 + resolution: {integrity: sha512-BE+Y8Q4U0YcH34FZUYU4DssGKOaZLbNL0zK57Z41UZp0m9kS79ZIolBmjjpPhTVpIlRY3Rs+uhXbVXKk7mUcJA==} 468 + 469 + '@hattip/core@0.0.49': 470 + resolution: {integrity: sha512-3/ZJtC17cv8m6Sph8+nw4exUp9yhEf2Shi7HK6AHSUSBtaaQXZ9rJBVxTfZj3PGNOR/P49UBXOym/52WYKFTJQ==} 471 + 472 + '@hattip/headers@0.0.49': 473 + resolution: {integrity: sha512-rrB2lEhTf0+MNVt5WdW184Ky706F1Ze9Aazn/R8c+/FMUYF9yjem2CgXp49csPt3dALsecrnAUOHFiV0LrrHXA==} 474 + 475 + '@hattip/polyfills@0.0.49': 476 + resolution: {integrity: sha512-5g7W5s6Gq+HDxwULGFQ861yAnEx3yd9V8GDwS96HBZ1nM1u93vN+KTuwXvNsV7Z3FJmCrD/pgU8WakvchclYuA==} 477 + 478 + '@hattip/walk@0.0.49': 479 + resolution: {integrity: sha512-AgJgKLooZyQnzMfoFg5Mo/aHM+HGBC9ExpXIjNqGimYTRgNbL/K7X5EM1kR2JY90BNKk9lo6Usq1T/nWFdT7TQ==} 480 + hasBin: true 481 + 482 + '@humanfs/core@0.19.1': 483 + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 484 + engines: {node: '>=18.18.0'} 485 + 486 + '@humanfs/node@0.16.6': 487 + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 488 + engines: {node: '>=18.18.0'} 489 + 490 + '@humanwhocodes/module-importer@1.0.1': 491 + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 492 + engines: {node: '>=12.22'} 493 + 494 + '@humanwhocodes/retry@0.3.1': 495 + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 496 + engines: {node: '>=18.18'} 497 + 498 + '@humanwhocodes/retry@0.4.3': 499 + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} 500 + engines: {node: '>=18.18'} 501 + 502 + '@img/sharp-darwin-arm64@0.33.5': 503 + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 504 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 505 + cpu: [arm64] 506 + os: [darwin] 507 + 508 + '@img/sharp-darwin-x64@0.33.5': 509 + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 510 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 511 + cpu: [x64] 512 + os: [darwin] 513 + 514 + '@img/sharp-libvips-darwin-arm64@1.0.4': 515 + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 516 + cpu: [arm64] 517 + os: [darwin] 518 + 519 + '@img/sharp-libvips-darwin-x64@1.0.4': 520 + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 521 + cpu: [x64] 522 + os: [darwin] 523 + 524 + '@img/sharp-libvips-linux-arm64@1.0.4': 525 + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 526 + cpu: [arm64] 527 + os: [linux] 528 + 529 + '@img/sharp-libvips-linux-arm@1.0.5': 530 + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 531 + cpu: [arm] 532 + os: [linux] 533 + 534 + '@img/sharp-libvips-linux-s390x@1.0.4': 535 + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 536 + cpu: [s390x] 537 + os: [linux] 538 + 539 + '@img/sharp-libvips-linux-x64@1.0.4': 540 + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 541 + cpu: [x64] 542 + os: [linux] 543 + 544 + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 545 + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 546 + cpu: [arm64] 547 + os: [linux] 548 + 549 + '@img/sharp-libvips-linuxmusl-x64@1.0.4': 550 + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 551 + cpu: [x64] 552 + os: [linux] 553 + 554 + '@img/sharp-linux-arm64@0.33.5': 555 + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 556 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 557 + cpu: [arm64] 558 + os: [linux] 559 + 560 + '@img/sharp-linux-arm@0.33.5': 561 + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 562 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 563 + cpu: [arm] 564 + os: [linux] 565 + 566 + '@img/sharp-linux-s390x@0.33.5': 567 + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 568 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 569 + cpu: [s390x] 570 + os: [linux] 571 + 572 + '@img/sharp-linux-x64@0.33.5': 573 + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 574 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 575 + cpu: [x64] 576 + os: [linux] 577 + 578 + '@img/sharp-linuxmusl-arm64@0.33.5': 579 + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 580 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 581 + cpu: [arm64] 582 + os: [linux] 583 + 584 + '@img/sharp-linuxmusl-x64@0.33.5': 585 + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 586 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 587 + cpu: [x64] 588 + os: [linux] 589 + 590 + '@img/sharp-wasm32@0.33.5': 591 + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 592 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 593 + cpu: [wasm32] 594 + 595 + '@img/sharp-win32-ia32@0.33.5': 596 + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 597 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 598 + cpu: [ia32] 599 + os: [win32] 600 + 601 + '@img/sharp-win32-x64@0.33.5': 602 + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 603 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 604 + cpu: [x64] 605 + os: [win32] 606 + 607 + '@jridgewell/gen-mapping@0.3.8': 608 + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 609 + engines: {node: '>=6.0.0'} 610 + 611 + '@jridgewell/resolve-uri@3.1.2': 612 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 613 + engines: {node: '>=6.0.0'} 614 + 615 + '@jridgewell/set-array@1.2.1': 616 + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 617 + engines: {node: '>=6.0.0'} 618 + 619 + '@jridgewell/sourcemap-codec@1.5.0': 620 + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 621 + 622 + '@jridgewell/trace-mapping@0.3.25': 623 + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 624 + 625 + '@jridgewell/trace-mapping@0.3.9': 626 + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 627 + 628 + '@kamilkisiela/fast-url-parser@1.1.4': 629 + resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} 630 + 631 + '@modelcontextprotocol/sdk@1.11.1': 632 + resolution: {integrity: sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==} 633 + engines: {node: '>=18'} 634 + 635 + '@nodelib/fs.scandir@2.1.5': 636 + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 637 + engines: {node: '>= 8'} 638 + 639 + '@nodelib/fs.stat@2.0.5': 640 + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 641 + engines: {node: '>= 8'} 642 + 643 + '@nodelib/fs.walk@1.2.8': 644 + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 645 + engines: {node: '>= 8'} 646 + 647 + '@rollup/plugin-replace@6.0.2': 648 + resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} 649 + engines: {node: '>=14.0.0'} 650 + peerDependencies: 651 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 652 + peerDependenciesMeta: 653 + rollup: 654 + optional: true 655 + 656 + '@rollup/pluginutils@5.1.4': 657 + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} 658 + engines: {node: '>=14.0.0'} 659 + peerDependencies: 660 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 661 + peerDependenciesMeta: 662 + rollup: 663 + optional: true 664 + 665 + '@rollup/rollup-android-arm-eabi@4.40.2': 666 + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} 667 + cpu: [arm] 668 + os: [android] 669 + 670 + '@rollup/rollup-android-arm64@4.40.2': 671 + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} 672 + cpu: [arm64] 673 + os: [android] 674 + 675 + '@rollup/rollup-darwin-arm64@4.40.2': 676 + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} 677 + cpu: [arm64] 678 + os: [darwin] 679 + 680 + '@rollup/rollup-darwin-x64@4.40.2': 681 + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} 682 + cpu: [x64] 683 + os: [darwin] 684 + 685 + '@rollup/rollup-freebsd-arm64@4.40.2': 686 + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} 687 + cpu: [arm64] 688 + os: [freebsd] 689 + 690 + '@rollup/rollup-freebsd-x64@4.40.2': 691 + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} 692 + cpu: [x64] 693 + os: [freebsd] 694 + 695 + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': 696 + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} 697 + cpu: [arm] 698 + os: [linux] 699 + 700 + '@rollup/rollup-linux-arm-musleabihf@4.40.2': 701 + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} 702 + cpu: [arm] 703 + os: [linux] 704 + 705 + '@rollup/rollup-linux-arm64-gnu@4.40.2': 706 + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} 707 + cpu: [arm64] 708 + os: [linux] 709 + 710 + '@rollup/rollup-linux-arm64-musl@4.40.2': 711 + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} 712 + cpu: [arm64] 713 + os: [linux] 714 + 715 + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': 716 + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} 717 + cpu: [loong64] 718 + os: [linux] 719 + 720 + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': 721 + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} 722 + cpu: [ppc64] 723 + os: [linux] 724 + 725 + '@rollup/rollup-linux-riscv64-gnu@4.40.2': 726 + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} 727 + cpu: [riscv64] 728 + os: [linux] 729 + 730 + '@rollup/rollup-linux-riscv64-musl@4.40.2': 731 + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} 732 + cpu: [riscv64] 733 + os: [linux] 734 + 735 + '@rollup/rollup-linux-s390x-gnu@4.40.2': 736 + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} 737 + cpu: [s390x] 738 + os: [linux] 739 + 740 + '@rollup/rollup-linux-x64-gnu@4.40.2': 741 + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} 742 + cpu: [x64] 743 + os: [linux] 744 + 745 + '@rollup/rollup-linux-x64-musl@4.40.2': 746 + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} 747 + cpu: [x64] 748 + os: [linux] 749 + 750 + '@rollup/rollup-win32-arm64-msvc@4.40.2': 751 + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} 752 + cpu: [arm64] 753 + os: [win32] 754 + 755 + '@rollup/rollup-win32-ia32-msvc@4.40.2': 756 + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} 757 + cpu: [ia32] 758 + os: [win32] 759 + 760 + '@rollup/rollup-win32-x64-msvc@4.40.2': 761 + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} 762 + cpu: [x64] 763 + os: [win32] 764 + 765 + '@types/babel__core@7.20.5': 766 + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 767 + 768 + '@types/babel__generator@7.27.0': 769 + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 770 + 771 + '@types/babel__template@7.4.4': 772 + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 773 + 774 + '@types/babel__traverse@7.20.7': 775 + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} 776 + 777 + '@types/estree@1.0.7': 778 + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} 779 + 780 + '@types/json-schema@7.0.15': 781 + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 782 + 783 + '@types/react-dom@19.1.3': 784 + resolution: {integrity: sha512-rJXC08OG0h3W6wDMFxQrZF00Kq6qQvw0djHRdzl3U5DnIERz0MRce3WVc7IS6JYBwtaP/DwYtRRjVlvivNveKg==} 785 + peerDependencies: 786 + '@types/react': ^19.0.0 787 + 788 + '@types/react@19.1.3': 789 + resolution: {integrity: sha512-dLWQ+Z0CkIvK1J8+wrDPwGxEYFA4RAyHoZPxHVGspYmFVnwGSNT24cGIhFJrtfRnWVuW8X7NO52gCXmhkVUWGQ==} 790 + 791 + '@typescript-eslint/eslint-plugin@8.32.0': 792 + resolution: {integrity: sha512-/jU9ettcntkBFmWUzzGgsClEi2ZFiikMX5eEQsmxIAWMOn4H3D4rvHssstmAHGVvrYnaMqdWWWg0b5M6IN/MTQ==} 793 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 794 + peerDependencies: 795 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 796 + eslint: ^8.57.0 || ^9.0.0 797 + typescript: '>=4.8.4 <5.9.0' 798 + 799 + '@typescript-eslint/parser@8.32.0': 800 + resolution: {integrity: sha512-B2MdzyWxCE2+SqiZHAjPphft+/2x2FlO9YBx7eKE1BCb+rqBlQdhtAEhzIEdozHd55DXPmxBdpMygFJjfjjA9A==} 801 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 802 + peerDependencies: 803 + eslint: ^8.57.0 || ^9.0.0 804 + typescript: '>=4.8.4 <5.9.0' 805 + 806 + '@typescript-eslint/scope-manager@8.32.0': 807 + resolution: {integrity: sha512-jc/4IxGNedXkmG4mx4nJTILb6TMjL66D41vyeaPWvDUmeYQzF3lKtN15WsAeTr65ce4mPxwopPSo1yUUAWw0hQ==} 808 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 809 + 810 + '@typescript-eslint/type-utils@8.32.0': 811 + resolution: {integrity: sha512-t2vouuYQKEKSLtJaa5bB4jHeha2HJczQ6E5IXPDPgIty9EqcJxpr1QHQ86YyIPwDwxvUmLfP2YADQ5ZY4qddZg==} 812 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 813 + peerDependencies: 814 + eslint: ^8.57.0 || ^9.0.0 815 + typescript: '>=4.8.4 <5.9.0' 816 + 817 + '@typescript-eslint/types@8.32.0': 818 + resolution: {integrity: sha512-O5Id6tGadAZEMThM6L9HmVf5hQUXNSxLVKeGJYWNhhVseps/0LddMkp7//VDkzwJ69lPL0UmZdcZwggj9akJaA==} 819 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 820 + 821 + '@typescript-eslint/typescript-estree@8.32.0': 822 + resolution: {integrity: sha512-pU9VD7anSCOIoBFnhTGfOzlVFQIA1XXiQpH/CezqOBaDppRwTglJzCC6fUQGpfwey4T183NKhF1/mfatYmjRqQ==} 823 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 824 + peerDependencies: 825 + typescript: '>=4.8.4 <5.9.0' 826 + 827 + '@typescript-eslint/utils@8.32.0': 828 + resolution: {integrity: sha512-8S9hXau6nQ/sYVtC3D6ISIDoJzS1NsCK+gluVhLN2YkBPX+/1wkwyUiDKnxRh15579WoOIyVWnoyIf3yGI9REw==} 829 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 830 + peerDependencies: 831 + eslint: ^8.57.0 || ^9.0.0 832 + typescript: '>=4.8.4 <5.9.0' 833 + 834 + '@typescript-eslint/visitor-keys@8.32.0': 835 + resolution: {integrity: sha512-1rYQTCLFFzOI5Nl0c8LUpJT8HxpwVRn9E4CkMsYfuN6ctmQqExjSTzzSk0Tz2apmXy7WU6/6fyaZVVA/thPN+w==} 836 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 837 + 838 + '@vitejs/plugin-react@4.4.1': 839 + resolution: {integrity: sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==} 840 + engines: {node: ^14.18.0 || >=16.0.0} 841 + peerDependencies: 842 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 843 + 844 + '@whatwg-node/fetch@0.9.23': 845 + resolution: {integrity: sha512-7xlqWel9JsmxahJnYVUj/LLxWcnA93DR4c9xlw3U814jWTiYalryiH1qToik1hOxweKKRLi4haXHM5ycRksPBA==} 846 + engines: {node: '>=18.0.0'} 847 + 848 + '@whatwg-node/node-fetch@0.6.0': 849 + resolution: {integrity: sha512-tcZAhrpx6oVlkEsRngeTEEE7I5/QdLjeEz4IlekabGaESP7+Dkm/6a9KcF1KdCBB7mO9PXtBkwCuTCt8+UPg8Q==} 850 + engines: {node: '>=18.0.0'} 851 + 852 + accepts@2.0.0: 853 + resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} 854 + engines: {node: '>= 0.6'} 855 + 856 + acorn-jsx@5.3.2: 857 + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 858 + peerDependencies: 859 + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 860 + 861 + acorn-walk@8.3.2: 862 + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 863 + engines: {node: '>=0.4.0'} 864 + 865 + acorn@8.14.0: 866 + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 867 + engines: {node: '>=0.4.0'} 868 + hasBin: true 869 + 870 + acorn@8.14.1: 871 + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 872 + engines: {node: '>=0.4.0'} 873 + hasBin: true 874 + 875 + ajv@6.12.6: 876 + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 877 + 878 + ansi-styles@4.3.0: 879 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 880 + engines: {node: '>=8'} 881 + 882 + argparse@2.0.1: 883 + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 884 + 885 + as-table@1.0.55: 886 + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 887 + 888 + await-lock@2.2.2: 889 + resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 890 + 891 + balanced-match@1.0.2: 892 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 893 + 894 + blake3-wasm@2.1.5: 895 + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 896 + 897 + body-parser@2.2.0: 898 + resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} 899 + engines: {node: '>=18'} 900 + 901 + brace-expansion@1.1.11: 902 + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 903 + 904 + brace-expansion@2.0.1: 905 + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 906 + 907 + braces@3.0.3: 908 + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 909 + engines: {node: '>=8'} 910 + 911 + browserslist@4.24.5: 912 + resolution: {integrity: sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==} 913 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 914 + hasBin: true 915 + 916 + busboy@1.6.0: 917 + resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 918 + engines: {node: '>=10.16.0'} 919 + 920 + bytes@3.1.2: 921 + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 922 + engines: {node: '>= 0.8'} 923 + 924 + cac@6.7.14: 925 + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 926 + engines: {node: '>=8'} 927 + 928 + call-bind-apply-helpers@1.0.2: 929 + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 930 + engines: {node: '>= 0.4'} 931 + 932 + call-bound@1.0.4: 933 + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 934 + engines: {node: '>= 0.4'} 935 + 936 + callsites@3.1.0: 937 + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 938 + engines: {node: '>=6'} 939 + 940 + caniuse-lite@1.0.30001717: 941 + resolution: {integrity: sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==} 942 + 943 + chalk@4.1.2: 944 + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 945 + engines: {node: '>=10'} 946 + 947 + color-convert@2.0.1: 948 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 949 + engines: {node: '>=7.0.0'} 950 + 951 + color-name@1.1.4: 952 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 953 + 954 + color-string@1.9.1: 955 + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 956 + 957 + color@4.2.3: 958 + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 959 + engines: {node: '>=12.5.0'} 960 + 961 + concat-map@0.0.1: 962 + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 963 + 964 + content-disposition@1.0.0: 965 + resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==} 966 + engines: {node: '>= 0.6'} 967 + 968 + content-type@1.0.5: 969 + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 970 + engines: {node: '>= 0.6'} 971 + 972 + convert-source-map@2.0.0: 973 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 974 + 975 + cookie-signature@1.2.2: 976 + resolution: {integrity: sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==} 977 + engines: {node: '>=6.6.0'} 978 + 979 + cookie@0.7.2: 980 + resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 981 + engines: {node: '>= 0.6'} 982 + 983 + cors@2.8.5: 984 + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} 985 + engines: {node: '>= 0.10'} 986 + 987 + cross-spawn@7.0.6: 988 + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 989 + engines: {node: '>= 8'} 990 + 991 + csstype@3.1.3: 992 + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 993 + 994 + data-uri-to-buffer@2.0.2: 995 + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 996 + 997 + debug@4.4.0: 998 + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 999 + engines: {node: '>=6.0'} 1000 + peerDependencies: 1001 + supports-color: '*' 1002 + peerDependenciesMeta: 1003 + supports-color: 1004 + optional: true 1005 + 1006 + deep-is@0.1.4: 1007 + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1008 + 1009 + defu@6.1.4: 1010 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1011 + 1012 + depd@2.0.0: 1013 + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 1014 + engines: {node: '>= 0.8'} 1015 + 1016 + detect-libc@2.0.4: 1017 + resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} 1018 + engines: {node: '>=8'} 1019 + 1020 + dunder-proto@1.0.1: 1021 + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 1022 + engines: {node: '>= 0.4'} 1023 + 1024 + ee-first@1.1.1: 1025 + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 1026 + 1027 + electron-to-chromium@1.5.151: 1028 + resolution: {integrity: sha512-Rl6uugut2l9sLojjS4H4SAr3A4IgACMLgpuEMPYCVcKydzfyPrn5absNRju38IhQOf/NwjJY8OGWjlteqYeBCA==} 1029 + 1030 + encodeurl@2.0.0: 1031 + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 1032 + engines: {node: '>= 0.8'} 1033 + 1034 + es-define-property@1.0.1: 1035 + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 1036 + engines: {node: '>= 0.4'} 1037 + 1038 + es-errors@1.3.0: 1039 + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1040 + engines: {node: '>= 0.4'} 1041 + 1042 + es-object-atoms@1.1.1: 1043 + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 1044 + engines: {node: '>= 0.4'} 1045 + 1046 + esbuild@0.25.4: 1047 + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} 1048 + engines: {node: '>=18'} 1049 + hasBin: true 1050 + 1051 + escalade@3.2.0: 1052 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1053 + engines: {node: '>=6'} 1054 + 1055 + escape-html@1.0.3: 1056 + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1057 + 1058 + escape-string-regexp@4.0.0: 1059 + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1060 + engines: {node: '>=10'} 1061 + 1062 + eslint-plugin-react-hooks@5.2.0: 1063 + resolution: {integrity: sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==} 1064 + engines: {node: '>=10'} 1065 + peerDependencies: 1066 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 1067 + 1068 + eslint-plugin-react-refresh@0.4.20: 1069 + resolution: {integrity: sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==} 1070 + peerDependencies: 1071 + eslint: '>=8.40' 1072 + 1073 + eslint-scope@8.3.0: 1074 + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} 1075 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1076 + 1077 + eslint-visitor-keys@3.4.3: 1078 + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1079 + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1080 + 1081 + eslint-visitor-keys@4.2.0: 1082 + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 1083 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1084 + 1085 + eslint@9.26.0: 1086 + resolution: {integrity: sha512-Hx0MOjPh6uK9oq9nVsATZKE/Wlbai7KFjfCuw9UHaguDW3x+HF0O5nIi3ud39TWgrTjTO5nHxmL3R1eANinWHQ==} 1087 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1088 + hasBin: true 1089 + peerDependencies: 1090 + jiti: '*' 1091 + peerDependenciesMeta: 1092 + jiti: 1093 + optional: true 1094 + 1095 + espree@10.3.0: 1096 + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 1097 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1098 + 1099 + esquery@1.6.0: 1100 + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 1101 + engines: {node: '>=0.10'} 1102 + 1103 + esrecurse@4.3.0: 1104 + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1105 + engines: {node: '>=4.0'} 1106 + 1107 + estraverse@5.3.0: 1108 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1109 + engines: {node: '>=4.0'} 1110 + 1111 + estree-walker@2.0.2: 1112 + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1113 + 1114 + esutils@2.0.3: 1115 + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1116 + engines: {node: '>=0.10.0'} 1117 + 1118 + etag@1.8.1: 1119 + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1120 + engines: {node: '>= 0.6'} 1121 + 1122 + eventsource-parser@3.0.1: 1123 + resolution: {integrity: sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==} 1124 + engines: {node: '>=18.0.0'} 1125 + 1126 + eventsource@3.0.7: 1127 + resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} 1128 + engines: {node: '>=18.0.0'} 1129 + 1130 + exit-hook@2.2.1: 1131 + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 1132 + engines: {node: '>=6'} 1133 + 1134 + express-rate-limit@7.5.0: 1135 + resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==} 1136 + engines: {node: '>= 16'} 1137 + peerDependencies: 1138 + express: ^4.11 || 5 || ^5.0.0-beta.1 1139 + 1140 + express@5.1.0: 1141 + resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==} 1142 + engines: {node: '>= 18'} 1143 + 1144 + exsolve@1.0.5: 1145 + resolution: {integrity: sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==} 1146 + 1147 + fast-decode-uri-component@1.0.1: 1148 + resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 1149 + 1150 + fast-deep-equal@3.1.3: 1151 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1152 + 1153 + fast-glob@3.3.3: 1154 + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 1155 + engines: {node: '>=8.6.0'} 1156 + 1157 + fast-json-stable-stringify@2.1.0: 1158 + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1159 + 1160 + fast-levenshtein@2.0.6: 1161 + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1162 + 1163 + fast-querystring@1.1.2: 1164 + resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 1165 + 1166 + fastq@1.19.1: 1167 + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 1168 + 1169 + fdir@6.4.4: 1170 + resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==} 1171 + peerDependencies: 1172 + picomatch: ^3 || ^4 1173 + peerDependenciesMeta: 1174 + picomatch: 1175 + optional: true 1176 + 1177 + file-entry-cache@8.0.0: 1178 + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 1179 + engines: {node: '>=16.0.0'} 1180 + 1181 + fill-range@7.1.1: 1182 + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1183 + engines: {node: '>=8'} 1184 + 1185 + finalhandler@2.1.0: 1186 + resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==} 1187 + engines: {node: '>= 0.8'} 1188 + 1189 + find-up@5.0.0: 1190 + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1191 + engines: {node: '>=10'} 1192 + 1193 + flat-cache@4.0.1: 1194 + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 1195 + engines: {node: '>=16'} 1196 + 1197 + flatted@3.3.3: 1198 + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 1199 + 1200 + forwarded@0.2.0: 1201 + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1202 + engines: {node: '>= 0.6'} 1203 + 1204 + fresh@2.0.0: 1205 + resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==} 1206 + engines: {node: '>= 0.8'} 1207 + 1208 + fsevents@2.3.3: 1209 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1210 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1211 + os: [darwin] 1212 + 1213 + function-bind@1.1.2: 1214 + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1215 + 1216 + gensync@1.0.0-beta.2: 1217 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1218 + engines: {node: '>=6.9.0'} 1219 + 1220 + get-intrinsic@1.3.0: 1221 + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 1222 + engines: {node: '>= 0.4'} 1223 + 1224 + get-port@7.1.0: 1225 + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} 1226 + engines: {node: '>=16'} 1227 + 1228 + get-proto@1.0.1: 1229 + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 1230 + engines: {node: '>= 0.4'} 1231 + 1232 + get-source@2.0.12: 1233 + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 1234 + 1235 + glob-parent@5.1.2: 1236 + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1237 + engines: {node: '>= 6'} 1238 + 1239 + glob-parent@6.0.2: 1240 + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1241 + engines: {node: '>=10.13.0'} 1242 + 1243 + glob-to-regexp@0.4.1: 1244 + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1245 + 1246 + globals@11.12.0: 1247 + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1248 + engines: {node: '>=4'} 1249 + 1250 + globals@14.0.0: 1251 + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 1252 + engines: {node: '>=18'} 1253 + 1254 + globals@16.1.0: 1255 + resolution: {integrity: sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==} 1256 + engines: {node: '>=18'} 1257 + 1258 + gopd@1.2.0: 1259 + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 1260 + engines: {node: '>= 0.4'} 1261 + 1262 + graphemer@1.4.0: 1263 + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1264 + 1265 + has-flag@4.0.0: 1266 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1267 + engines: {node: '>=8'} 1268 + 1269 + has-symbols@1.1.0: 1270 + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 1271 + engines: {node: '>= 0.4'} 1272 + 1273 + hasown@2.0.2: 1274 + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1275 + engines: {node: '>= 0.4'} 1276 + 1277 + hono@4.7.9: 1278 + resolution: {integrity: sha512-/EsCoR5h7N4yu01TDu9GMCCJa6ZLk5ZJIWFFGNawAXmd1Tp53+Wir4xm0D2X19bbykWUlzQG0+BvPAji6p9E8Q==} 1279 + engines: {node: '>=16.9.0'} 1280 + 1281 + http-errors@2.0.0: 1282 + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1283 + engines: {node: '>= 0.8'} 1284 + 1285 + iconv-lite@0.6.3: 1286 + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} 1287 + engines: {node: '>=0.10.0'} 1288 + 1289 + ignore@5.3.2: 1290 + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 1291 + engines: {node: '>= 4'} 1292 + 1293 + import-fresh@3.3.1: 1294 + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} 1295 + engines: {node: '>=6'} 1296 + 1297 + imurmurhash@0.1.4: 1298 + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1299 + engines: {node: '>=0.8.19'} 1300 + 1301 + inherits@2.0.4: 1302 + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1303 + 1304 + ipaddr.js@1.9.1: 1305 + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1306 + engines: {node: '>= 0.10'} 1307 + 1308 + is-arrayish@0.3.2: 1309 + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} 1310 + 1311 + is-extglob@2.1.1: 1312 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1313 + engines: {node: '>=0.10.0'} 1314 + 1315 + is-glob@4.0.3: 1316 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1317 + engines: {node: '>=0.10.0'} 1318 + 1319 + is-number@7.0.0: 1320 + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1321 + engines: {node: '>=0.12.0'} 1322 + 1323 + is-promise@4.0.0: 1324 + resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} 1325 + 1326 + isexe@2.0.0: 1327 + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1328 + 1329 + iso-datestring-validator@2.2.2: 1330 + resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 1331 + 1332 + jose@5.10.0: 1333 + resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} 1334 + 1335 + js-tokens@4.0.0: 1336 + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1337 + 1338 + js-yaml@4.1.0: 1339 + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1340 + hasBin: true 1341 + 1342 + jsesc@3.1.0: 1343 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1344 + engines: {node: '>=6'} 1345 + hasBin: true 1346 + 1347 + json-buffer@3.0.1: 1348 + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1349 + 1350 + json-schema-traverse@0.4.1: 1351 + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1352 + 1353 + json-stable-stringify-without-jsonify@1.0.1: 1354 + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1355 + 1356 + json5@2.2.3: 1357 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1358 + engines: {node: '>=6'} 1359 + hasBin: true 1360 + 1361 + keyv@4.5.4: 1362 + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1363 + 1364 + levn@0.4.1: 1365 + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1366 + engines: {node: '>= 0.8.0'} 1367 + 1368 + locate-path@6.0.0: 1369 + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1370 + engines: {node: '>=10'} 1371 + 1372 + lodash.merge@4.6.2: 1373 + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1374 + 1375 + lru-cache@10.4.3: 1376 + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1377 + 1378 + lru-cache@5.1.1: 1379 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1380 + 1381 + magic-string@0.30.17: 1382 + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1383 + 1384 + math-intrinsics@1.1.0: 1385 + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1386 + engines: {node: '>= 0.4'} 1387 + 1388 + media-typer@1.1.0: 1389 + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} 1390 + engines: {node: '>= 0.8'} 1391 + 1392 + merge-descriptors@2.0.0: 1393 + resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} 1394 + engines: {node: '>=18'} 1395 + 1396 + merge2@1.4.1: 1397 + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1398 + engines: {node: '>= 8'} 1399 + 1400 + micromatch@4.0.8: 1401 + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1402 + engines: {node: '>=8.6'} 1403 + 1404 + mime-db@1.52.0: 1405 + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1406 + engines: {node: '>= 0.6'} 1407 + 1408 + mime-db@1.54.0: 1409 + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} 1410 + engines: {node: '>= 0.6'} 1411 + 1412 + mime-types@2.1.35: 1413 + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1414 + engines: {node: '>= 0.6'} 1415 + 1416 + mime-types@3.0.1: 1417 + resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==} 1418 + engines: {node: '>= 0.6'} 1419 + 1420 + mime@3.0.0: 1421 + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1422 + engines: {node: '>=10.0.0'} 1423 + hasBin: true 1424 + 1425 + miniflare@4.20250507.0: 1426 + resolution: {integrity: sha512-EgbQRt/Hnr8HCmW2J/4LRNE3yOzJTdNd98XJ8gnGXFKcimXxUFPiWP3k1df+ZPCtEHp6cXxi8+jP7v9vuIbIsg==} 1427 + engines: {node: '>=18.0.0'} 1428 + hasBin: true 1429 + 1430 + minimatch@3.1.2: 1431 + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1432 + 1433 + minimatch@9.0.5: 1434 + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1435 + engines: {node: '>=16 || 14 >=14.17'} 1436 + 1437 + ms@2.1.3: 1438 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1439 + 1440 + multiformats@9.9.0: 1441 + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 1442 + 1443 + mustache@4.2.0: 1444 + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 1445 + hasBin: true 1446 + 1447 + nanoid@3.3.11: 1448 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1449 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1450 + hasBin: true 1451 + 1452 + natural-compare@1.4.0: 1453 + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1454 + 1455 + negotiator@1.0.0: 1456 + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} 1457 + engines: {node: '>= 0.6'} 1458 + 1459 + node-fetch-native@1.6.6: 1460 + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} 1461 + 1462 + node-releases@2.0.19: 1463 + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1464 + 1465 + object-assign@4.1.1: 1466 + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1467 + engines: {node: '>=0.10.0'} 1468 + 1469 + object-inspect@1.13.4: 1470 + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1471 + engines: {node: '>= 0.4'} 1472 + 1473 + ohash@2.0.11: 1474 + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1475 + 1476 + on-finished@2.4.1: 1477 + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 1478 + engines: {node: '>= 0.8'} 1479 + 1480 + once@1.4.0: 1481 + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1482 + 1483 + optionator@0.9.4: 1484 + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1485 + engines: {node: '>= 0.8.0'} 1486 + 1487 + p-limit@3.1.0: 1488 + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1489 + engines: {node: '>=10'} 1490 + 1491 + p-locate@5.0.0: 1492 + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1493 + engines: {node: '>=10'} 1494 + 1495 + parent-module@1.0.1: 1496 + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1497 + engines: {node: '>=6'} 1498 + 1499 + parseurl@1.3.3: 1500 + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 1501 + engines: {node: '>= 0.8'} 1502 + 1503 + path-exists@4.0.0: 1504 + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1505 + engines: {node: '>=8'} 1506 + 1507 + path-key@3.1.1: 1508 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1509 + engines: {node: '>=8'} 1510 + 1511 + path-to-regexp@6.3.0: 1512 + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 1513 + 1514 + path-to-regexp@8.2.0: 1515 + resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} 1516 + engines: {node: '>=16'} 1517 + 1518 + pathe@2.0.3: 1519 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1520 + 1521 + picocolors@1.1.1: 1522 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1523 + 1524 + picomatch@2.3.1: 1525 + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1526 + engines: {node: '>=8.6'} 1527 + 1528 + picomatch@4.0.2: 1529 + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1530 + engines: {node: '>=12'} 1531 + 1532 + pkce-challenge@5.0.0: 1533 + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} 1534 + engines: {node: '>=16.20.0'} 1535 + 1536 + postcss@8.5.3: 1537 + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 1538 + engines: {node: ^10 || ^12 || >=14} 1539 + 1540 + prelude-ls@1.2.1: 1541 + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1542 + engines: {node: '>= 0.8.0'} 1543 + 1544 + printable-characters@1.0.42: 1545 + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 1546 + 1547 + proxy-addr@2.0.7: 1548 + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 1549 + engines: {node: '>= 0.10'} 1550 + 1551 + punycode@2.3.1: 1552 + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1553 + engines: {node: '>=6'} 1554 + 1555 + qs@6.14.0: 1556 + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} 1557 + engines: {node: '>=0.6'} 1558 + 1559 + queue-microtask@1.2.3: 1560 + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1561 + 1562 + range-parser@1.2.1: 1563 + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 1564 + engines: {node: '>= 0.6'} 1565 + 1566 + raw-body@3.0.0: 1567 + resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==} 1568 + engines: {node: '>= 0.8'} 1569 + 1570 + react-dom@19.1.0: 1571 + resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} 1572 + peerDependencies: 1573 + react: ^19.1.0 1574 + 1575 + react-refresh@0.17.0: 1576 + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} 1577 + engines: {node: '>=0.10.0'} 1578 + 1579 + react@19.1.0: 1580 + resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} 1581 + engines: {node: '>=0.10.0'} 1582 + 1583 + resolve-from@4.0.0: 1584 + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1585 + engines: {node: '>=4'} 1586 + 1587 + reusify@1.1.0: 1588 + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1589 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1590 + 1591 + rollup@4.40.2: 1592 + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} 1593 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1594 + hasBin: true 1595 + 1596 + router@2.2.0: 1597 + resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} 1598 + engines: {node: '>= 18'} 1599 + 1600 + run-parallel@1.2.0: 1601 + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1602 + 1603 + safe-buffer@5.2.1: 1604 + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1605 + 1606 + safer-buffer@2.1.2: 1607 + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1608 + 1609 + scheduler@0.26.0: 1610 + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} 1611 + 1612 + semver@6.3.1: 1613 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1614 + hasBin: true 1615 + 1616 + semver@7.7.1: 1617 + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1618 + engines: {node: '>=10'} 1619 + hasBin: true 1620 + 1621 + send@1.2.0: 1622 + resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==} 1623 + engines: {node: '>= 18'} 1624 + 1625 + serve-static@2.2.0: 1626 + resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==} 1627 + engines: {node: '>= 18'} 1628 + 1629 + setprototypeof@1.2.0: 1630 + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 1631 + 1632 + sharp@0.33.5: 1633 + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1634 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1635 + 1636 + shebang-command@2.0.0: 1637 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1638 + engines: {node: '>=8'} 1639 + 1640 + shebang-regex@3.0.0: 1641 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1642 + engines: {node: '>=8'} 1643 + 1644 + side-channel-list@1.0.0: 1645 + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1646 + engines: {node: '>= 0.4'} 1647 + 1648 + side-channel-map@1.0.1: 1649 + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1650 + engines: {node: '>= 0.4'} 1651 + 1652 + side-channel-weakmap@1.0.2: 1653 + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1654 + engines: {node: '>= 0.4'} 1655 + 1656 + side-channel@1.1.0: 1657 + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1658 + engines: {node: '>= 0.4'} 1659 + 1660 + simple-swizzle@0.2.2: 1661 + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} 1662 + 1663 + source-map-js@1.2.1: 1664 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1665 + engines: {node: '>=0.10.0'} 1666 + 1667 + source-map@0.6.1: 1668 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1669 + engines: {node: '>=0.10.0'} 1670 + 1671 + stacktracey@2.1.8: 1672 + resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 1673 + 1674 + statuses@2.0.1: 1675 + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 1676 + engines: {node: '>= 0.8'} 1677 + 1678 + stoppable@1.1.0: 1679 + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 1680 + engines: {node: '>=4', npm: '>=6'} 1681 + 1682 + streamsearch@1.1.0: 1683 + resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1684 + engines: {node: '>=10.0.0'} 1685 + 1686 + strip-json-comments@3.1.1: 1687 + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1688 + engines: {node: '>=8'} 1689 + 1690 + supports-color@7.2.0: 1691 + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1692 + engines: {node: '>=8'} 1693 + 1694 + tinyglobby@0.2.13: 1695 + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} 1696 + engines: {node: '>=12.0.0'} 1697 + 1698 + tlds@1.258.0: 1699 + resolution: {integrity: sha512-XGhStWuOlBA5D8QnyN2xtgB2cUOdJ3ztisne1DYVWMcVH29qh8eQIpRmP3HnuJLdgyzG0HpdGzRMu1lm/Oictw==} 1700 + hasBin: true 1701 + 1702 + to-regex-range@5.0.1: 1703 + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1704 + engines: {node: '>=8.0'} 1705 + 1706 + toidentifier@1.0.1: 1707 + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 1708 + engines: {node: '>=0.6'} 1709 + 1710 + ts-api-utils@2.1.0: 1711 + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} 1712 + engines: {node: '>=18.12'} 1713 + peerDependencies: 1714 + typescript: '>=4.8.4' 1715 + 1716 + tslib@2.8.1: 1717 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1718 + 1719 + type-check@0.4.0: 1720 + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1721 + engines: {node: '>= 0.8.0'} 1722 + 1723 + type-is@2.0.1: 1724 + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} 1725 + engines: {node: '>= 0.6'} 1726 + 1727 + typescript-eslint@8.32.0: 1728 + resolution: {integrity: sha512-UMq2kxdXCzinFFPsXc9o2ozIpYCCOiEC46MG3yEh5Vipq6BO27otTtEBZA1fQ66DulEUgE97ucQ/3YY66CPg0A==} 1729 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1730 + peerDependencies: 1731 + eslint: ^8.57.0 || ^9.0.0 1732 + typescript: '>=4.8.4 <5.9.0' 1733 + 1734 + typescript@5.7.3: 1735 + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} 1736 + engines: {node: '>=14.17'} 1737 + hasBin: true 1738 + 1739 + ufo@1.6.1: 1740 + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1741 + 1742 + uint8arrays@3.0.0: 1743 + resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 1744 + 1745 + undici@5.29.0: 1746 + resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} 1747 + engines: {node: '>=14.0'} 1748 + 1749 + unenv@2.0.0-rc.15: 1750 + resolution: {integrity: sha512-J/rEIZU8w6FOfLNz/hNKsnY+fFHWnu9MH4yRbSZF3xbbGHovcetXPs7sD+9p8L6CeNC//I9bhRYAOsBt2u7/OA==} 1751 + 1752 + unpipe@1.0.0: 1753 + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 1754 + engines: {node: '>= 0.8'} 1755 + 1756 + update-browserslist-db@1.1.3: 1757 + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1758 + hasBin: true 1759 + peerDependencies: 1760 + browserslist: '>= 4.21.0' 1761 + 1762 + uri-js@4.4.1: 1763 + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1764 + 1765 + urlpattern-polyfill@10.1.0: 1766 + resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} 1767 + 1768 + vary@1.1.2: 1769 + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 1770 + engines: {node: '>= 0.8'} 1771 + 1772 + vite@6.3.5: 1773 + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} 1774 + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1775 + hasBin: true 1776 + peerDependencies: 1777 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1778 + jiti: '>=1.21.0' 1779 + less: '*' 1780 + lightningcss: ^1.21.0 1781 + sass: '*' 1782 + sass-embedded: '*' 1783 + stylus: '*' 1784 + sugarss: '*' 1785 + terser: ^5.16.0 1786 + tsx: ^4.8.1 1787 + yaml: ^2.4.2 1788 + peerDependenciesMeta: 1789 + '@types/node': 1790 + optional: true 1791 + jiti: 1792 + optional: true 1793 + less: 1794 + optional: true 1795 + lightningcss: 1796 + optional: true 1797 + sass: 1798 + optional: true 1799 + sass-embedded: 1800 + optional: true 1801 + stylus: 1802 + optional: true 1803 + sugarss: 1804 + optional: true 1805 + terser: 1806 + optional: true 1807 + tsx: 1808 + optional: true 1809 + yaml: 1810 + optional: true 1811 + 1812 + which@2.0.2: 1813 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1814 + engines: {node: '>= 8'} 1815 + hasBin: true 1816 + 1817 + word-wrap@1.2.5: 1818 + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1819 + engines: {node: '>=0.10.0'} 1820 + 1821 + workerd@1.20250507.0: 1822 + resolution: {integrity: sha512-OXaGjEh5THT9iblwWIyPrYBoaPe/d4zN03Go7/w8CmS8sma7//O9hjbk43sboWkc89taGPmU0/LNyZUUiUlHeQ==} 1823 + engines: {node: '>=16'} 1824 + hasBin: true 1825 + 1826 + wrangler@4.14.4: 1827 + resolution: {integrity: sha512-HIdOdiMIcJV5ymw80RKsr3Uzen/p1kRX4jnCEmR2XVeoEhV2Qw6GABxS5WMTlSES2/vEX0Y+ezUAdsprcUhJ5g==} 1828 + engines: {node: '>=18.0.0'} 1829 + hasBin: true 1830 + peerDependencies: 1831 + '@cloudflare/workers-types': ^4.20250507.0 1832 + peerDependenciesMeta: 1833 + '@cloudflare/workers-types': 1834 + optional: true 1835 + 1836 + wrappy@1.0.2: 1837 + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1838 + 1839 + ws@8.18.0: 1840 + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1841 + engines: {node: '>=10.0.0'} 1842 + peerDependencies: 1843 + bufferutil: ^4.0.1 1844 + utf-8-validate: '>=5.0.2' 1845 + peerDependenciesMeta: 1846 + bufferutil: 1847 + optional: true 1848 + utf-8-validate: 1849 + optional: true 1850 + 1851 + yallist@3.1.1: 1852 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1853 + 1854 + yocto-queue@0.1.0: 1855 + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1856 + engines: {node: '>=10'} 1857 + 1858 + youch@3.3.4: 1859 + resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} 1860 + 1861 + zod-to-json-schema@3.24.5: 1862 + resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==} 1863 + peerDependencies: 1864 + zod: ^3.24.1 1865 + 1866 + zod@3.22.3: 1867 + resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} 1868 + 1869 + zod@3.24.4: 1870 + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} 1871 + 1872 + snapshots: 1873 + 1874 + '@ampproject/remapping@2.3.0': 1875 + dependencies: 1876 + '@jridgewell/gen-mapping': 0.3.8 1877 + '@jridgewell/trace-mapping': 0.3.25 1878 + 1879 + '@atproto-labs/did-resolver@0.1.12': 1880 + dependencies: 1881 + '@atproto-labs/fetch': 0.2.2 1882 + '@atproto-labs/pipe': 0.1.0 1883 + '@atproto-labs/simple-store': 0.2.0 1884 + '@atproto-labs/simple-store-memory': 0.1.3 1885 + '@atproto/did': 0.1.5 1886 + zod: 3.24.4 1887 + 1888 + '@atproto-labs/fetch@0.2.2': 1889 + dependencies: 1890 + '@atproto-labs/pipe': 0.1.0 1891 + 1892 + '@atproto-labs/handle-resolver@0.1.8': 1893 + dependencies: 1894 + '@atproto-labs/simple-store': 0.2.0 1895 + '@atproto-labs/simple-store-memory': 0.1.3 1896 + '@atproto/did': 0.1.5 1897 + zod: 3.24.4 1898 + 1899 + '@atproto-labs/identity-resolver@0.1.16': 1900 + dependencies: 1901 + '@atproto-labs/did-resolver': 0.1.12 1902 + '@atproto-labs/handle-resolver': 0.1.8 1903 + '@atproto/syntax': 0.4.0 1904 + 1905 + '@atproto-labs/pipe@0.1.0': {} 1906 + 1907 + '@atproto-labs/simple-store-memory@0.1.3': 1908 + dependencies: 1909 + '@atproto-labs/simple-store': 0.2.0 1910 + lru-cache: 10.4.3 1911 + 1912 + '@atproto-labs/simple-store@0.2.0': {} 1913 + 1914 + '@atproto/api@0.15.6': 1915 + dependencies: 1916 + '@atproto/common-web': 0.4.2 1917 + '@atproto/lexicon': 0.4.11 1918 + '@atproto/syntax': 0.4.0 1919 + '@atproto/xrpc': 0.7.0 1920 + await-lock: 2.2.2 1921 + multiformats: 9.9.0 1922 + tlds: 1.258.0 1923 + zod: 3.24.4 1924 + 1925 + '@atproto/common-web@0.4.2': 1926 + dependencies: 1927 + graphemer: 1.4.0 1928 + multiformats: 9.9.0 1929 + uint8arrays: 3.0.0 1930 + zod: 3.24.4 1931 + 1932 + '@atproto/did@0.1.5': 1933 + dependencies: 1934 + zod: 3.24.4 1935 + 1936 + '@atproto/jwk-jose@0.1.6': 1937 + dependencies: 1938 + '@atproto/jwk': 0.1.5 1939 + jose: 5.10.0 1940 + 1941 + '@atproto/jwk-webcrypto@0.1.6': 1942 + dependencies: 1943 + '@atproto/jwk': 0.1.5 1944 + '@atproto/jwk-jose': 0.1.6 1945 + zod: 3.24.4 1946 + 1947 + '@atproto/jwk@0.1.5': 1948 + dependencies: 1949 + multiformats: 9.9.0 1950 + zod: 3.24.4 1951 + 1952 + '@atproto/lexicon@0.4.11': 1953 + dependencies: 1954 + '@atproto/common-web': 0.4.2 1955 + '@atproto/syntax': 0.4.0 1956 + iso-datestring-validator: 2.2.2 1957 + multiformats: 9.9.0 1958 + zod: 3.24.4 1959 + 1960 + '@atproto/oauth-client-browser@0.3.16': 1961 + dependencies: 1962 + '@atproto-labs/did-resolver': 0.1.12 1963 + '@atproto-labs/handle-resolver': 0.1.8 1964 + '@atproto-labs/simple-store': 0.2.0 1965 + '@atproto/did': 0.1.5 1966 + '@atproto/jwk': 0.1.5 1967 + '@atproto/jwk-webcrypto': 0.1.6 1968 + '@atproto/oauth-client': 0.3.16 1969 + '@atproto/oauth-types': 0.2.7 1970 + 1971 + '@atproto/oauth-client@0.3.16': 1972 + dependencies: 1973 + '@atproto-labs/did-resolver': 0.1.12 1974 + '@atproto-labs/fetch': 0.2.2 1975 + '@atproto-labs/handle-resolver': 0.1.8 1976 + '@atproto-labs/identity-resolver': 0.1.16 1977 + '@atproto-labs/simple-store': 0.2.0 1978 + '@atproto-labs/simple-store-memory': 0.1.3 1979 + '@atproto/did': 0.1.5 1980 + '@atproto/jwk': 0.1.5 1981 + '@atproto/oauth-types': 0.2.7 1982 + '@atproto/xrpc': 0.7.0 1983 + multiformats: 9.9.0 1984 + zod: 3.24.4 1985 + 1986 + '@atproto/oauth-types@0.2.7': 1987 + dependencies: 1988 + '@atproto/jwk': 0.1.5 1989 + zod: 3.24.4 1990 + 1991 + '@atproto/syntax@0.4.0': {} 1992 + 1993 + '@atproto/xrpc@0.7.0': 1994 + dependencies: 1995 + '@atproto/lexicon': 0.4.11 1996 + zod: 3.24.4 1997 + 1998 + '@babel/code-frame@7.27.1': 1999 + dependencies: 2000 + '@babel/helper-validator-identifier': 7.27.1 2001 + js-tokens: 4.0.0 2002 + picocolors: 1.1.1 2003 + 2004 + '@babel/compat-data@7.27.2': {} 2005 + 2006 + '@babel/core@7.27.1': 2007 + dependencies: 2008 + '@ampproject/remapping': 2.3.0 2009 + '@babel/code-frame': 7.27.1 2010 + '@babel/generator': 7.27.1 2011 + '@babel/helper-compilation-targets': 7.27.2 2012 + '@babel/helper-module-transforms': 7.27.1(@babel/core@7.27.1) 2013 + '@babel/helpers': 7.27.1 2014 + '@babel/parser': 7.27.2 2015 + '@babel/template': 7.27.2 2016 + '@babel/traverse': 7.27.1 2017 + '@babel/types': 7.27.1 2018 + convert-source-map: 2.0.0 2019 + debug: 4.4.0 2020 + gensync: 1.0.0-beta.2 2021 + json5: 2.2.3 2022 + semver: 6.3.1 2023 + transitivePeerDependencies: 2024 + - supports-color 2025 + 2026 + '@babel/generator@7.27.1': 2027 + dependencies: 2028 + '@babel/parser': 7.27.2 2029 + '@babel/types': 7.27.1 2030 + '@jridgewell/gen-mapping': 0.3.8 2031 + '@jridgewell/trace-mapping': 0.3.25 2032 + jsesc: 3.1.0 2033 + 2034 + '@babel/helper-compilation-targets@7.27.2': 2035 + dependencies: 2036 + '@babel/compat-data': 7.27.2 2037 + '@babel/helper-validator-option': 7.27.1 2038 + browserslist: 4.24.5 2039 + lru-cache: 5.1.1 2040 + semver: 6.3.1 2041 + 2042 + '@babel/helper-module-imports@7.27.1': 2043 + dependencies: 2044 + '@babel/traverse': 7.27.1 2045 + '@babel/types': 7.27.1 2046 + transitivePeerDependencies: 2047 + - supports-color 2048 + 2049 + '@babel/helper-module-transforms@7.27.1(@babel/core@7.27.1)': 2050 + dependencies: 2051 + '@babel/core': 7.27.1 2052 + '@babel/helper-module-imports': 7.27.1 2053 + '@babel/helper-validator-identifier': 7.27.1 2054 + '@babel/traverse': 7.27.1 2055 + transitivePeerDependencies: 2056 + - supports-color 2057 + 2058 + '@babel/helper-plugin-utils@7.27.1': {} 2059 + 2060 + '@babel/helper-string-parser@7.27.1': {} 2061 + 2062 + '@babel/helper-validator-identifier@7.27.1': {} 2063 + 2064 + '@babel/helper-validator-option@7.27.1': {} 2065 + 2066 + '@babel/helpers@7.27.1': 2067 + dependencies: 2068 + '@babel/template': 7.27.2 2069 + '@babel/types': 7.27.1 2070 + 2071 + '@babel/parser@7.27.2': 2072 + dependencies: 2073 + '@babel/types': 7.27.1 2074 + 2075 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.27.1)': 2076 + dependencies: 2077 + '@babel/core': 7.27.1 2078 + '@babel/helper-plugin-utils': 7.27.1 2079 + 2080 + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.27.1)': 2081 + dependencies: 2082 + '@babel/core': 7.27.1 2083 + '@babel/helper-plugin-utils': 7.27.1 2084 + 2085 + '@babel/template@7.27.2': 2086 + dependencies: 2087 + '@babel/code-frame': 7.27.1 2088 + '@babel/parser': 7.27.2 2089 + '@babel/types': 7.27.1 2090 + 2091 + '@babel/traverse@7.27.1': 2092 + dependencies: 2093 + '@babel/code-frame': 7.27.1 2094 + '@babel/generator': 7.27.1 2095 + '@babel/parser': 7.27.2 2096 + '@babel/template': 7.27.2 2097 + '@babel/types': 7.27.1 2098 + debug: 4.4.0 2099 + globals: 11.12.0 2100 + transitivePeerDependencies: 2101 + - supports-color 2102 + 2103 + '@babel/types@7.27.1': 2104 + dependencies: 2105 + '@babel/helper-string-parser': 7.27.1 2106 + '@babel/helper-validator-identifier': 7.27.1 2107 + 2108 + '@cloudflare/kv-asset-handler@0.4.0': 2109 + dependencies: 2110 + mime: 3.0.0 2111 + 2112 + '@cloudflare/unenv-preset@2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0)': 2113 + dependencies: 2114 + unenv: 2.0.0-rc.15 2115 + optionalDependencies: 2116 + workerd: 1.20250507.0 2117 + 2118 + '@cloudflare/vite-plugin@1.1.1(rollup@4.40.2)(vite@6.3.5)(workerd@1.20250507.0)(wrangler@4.14.4(@cloudflare/workers-types@4.20250510.0))': 2119 + dependencies: 2120 + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0) 2121 + '@hattip/adapter-node': 0.0.49 2122 + '@rollup/plugin-replace': 6.0.2(rollup@4.40.2) 2123 + get-port: 7.1.0 2124 + miniflare: 4.20250507.0 2125 + picocolors: 1.1.1 2126 + tinyglobby: 0.2.13 2127 + unenv: 2.0.0-rc.15 2128 + vite: 6.3.5 2129 + wrangler: 4.14.4(@cloudflare/workers-types@4.20250510.0) 2130 + ws: 8.18.0 2131 + transitivePeerDependencies: 2132 + - bufferutil 2133 + - rollup 2134 + - utf-8-validate 2135 + - workerd 2136 + 2137 + '@cloudflare/workerd-darwin-64@1.20250507.0': 2138 + optional: true 2139 + 2140 + '@cloudflare/workerd-darwin-arm64@1.20250507.0': 2141 + optional: true 2142 + 2143 + '@cloudflare/workerd-linux-64@1.20250507.0': 2144 + optional: true 2145 + 2146 + '@cloudflare/workerd-linux-arm64@1.20250507.0': 2147 + optional: true 2148 + 2149 + '@cloudflare/workerd-windows-64@1.20250507.0': 2150 + optional: true 2151 + 2152 + '@cloudflare/workers-types@4.20250510.0': {} 2153 + 2154 + '@cspotcode/source-map-support@0.8.1': 2155 + dependencies: 2156 + '@jridgewell/trace-mapping': 0.3.9 2157 + 2158 + '@emnapi/runtime@1.4.3': 2159 + dependencies: 2160 + tslib: 2.8.1 2161 + optional: true 2162 + 2163 + '@esbuild/aix-ppc64@0.25.4': 2164 + optional: true 2165 + 2166 + '@esbuild/android-arm64@0.25.4': 2167 + optional: true 2168 + 2169 + '@esbuild/android-arm@0.25.4': 2170 + optional: true 2171 + 2172 + '@esbuild/android-x64@0.25.4': 2173 + optional: true 2174 + 2175 + '@esbuild/darwin-arm64@0.25.4': 2176 + optional: true 2177 + 2178 + '@esbuild/darwin-x64@0.25.4': 2179 + optional: true 2180 + 2181 + '@esbuild/freebsd-arm64@0.25.4': 2182 + optional: true 2183 + 2184 + '@esbuild/freebsd-x64@0.25.4': 2185 + optional: true 2186 + 2187 + '@esbuild/linux-arm64@0.25.4': 2188 + optional: true 2189 + 2190 + '@esbuild/linux-arm@0.25.4': 2191 + optional: true 2192 + 2193 + '@esbuild/linux-ia32@0.25.4': 2194 + optional: true 2195 + 2196 + '@esbuild/linux-loong64@0.25.4': 2197 + optional: true 2198 + 2199 + '@esbuild/linux-mips64el@0.25.4': 2200 + optional: true 2201 + 2202 + '@esbuild/linux-ppc64@0.25.4': 2203 + optional: true 2204 + 2205 + '@esbuild/linux-riscv64@0.25.4': 2206 + optional: true 2207 + 2208 + '@esbuild/linux-s390x@0.25.4': 2209 + optional: true 2210 + 2211 + '@esbuild/linux-x64@0.25.4': 2212 + optional: true 2213 + 2214 + '@esbuild/netbsd-arm64@0.25.4': 2215 + optional: true 2216 + 2217 + '@esbuild/netbsd-x64@0.25.4': 2218 + optional: true 2219 + 2220 + '@esbuild/openbsd-arm64@0.25.4': 2221 + optional: true 2222 + 2223 + '@esbuild/openbsd-x64@0.25.4': 2224 + optional: true 2225 + 2226 + '@esbuild/sunos-x64@0.25.4': 2227 + optional: true 2228 + 2229 + '@esbuild/win32-arm64@0.25.4': 2230 + optional: true 2231 + 2232 + '@esbuild/win32-ia32@0.25.4': 2233 + optional: true 2234 + 2235 + '@esbuild/win32-x64@0.25.4': 2236 + optional: true 2237 + 2238 + '@eslint-community/eslint-utils@4.7.0(eslint@9.26.0)': 2239 + dependencies: 2240 + eslint: 9.26.0 2241 + eslint-visitor-keys: 3.4.3 2242 + 2243 + '@eslint-community/regexpp@4.12.1': {} 2244 + 2245 + '@eslint/config-array@0.20.0': 2246 + dependencies: 2247 + '@eslint/object-schema': 2.1.6 2248 + debug: 4.4.0 2249 + minimatch: 3.1.2 2250 + transitivePeerDependencies: 2251 + - supports-color 2252 + 2253 + '@eslint/config-helpers@0.2.2': {} 2254 + 2255 + '@eslint/core@0.13.0': 2256 + dependencies: 2257 + '@types/json-schema': 7.0.15 2258 + 2259 + '@eslint/eslintrc@3.3.1': 2260 + dependencies: 2261 + ajv: 6.12.6 2262 + debug: 4.4.0 2263 + espree: 10.3.0 2264 + globals: 14.0.0 2265 + ignore: 5.3.2 2266 + import-fresh: 3.3.1 2267 + js-yaml: 4.1.0 2268 + minimatch: 3.1.2 2269 + strip-json-comments: 3.1.1 2270 + transitivePeerDependencies: 2271 + - supports-color 2272 + 2273 + '@eslint/js@9.26.0': {} 2274 + 2275 + '@eslint/object-schema@2.1.6': {} 2276 + 2277 + '@eslint/plugin-kit@0.2.8': 2278 + dependencies: 2279 + '@eslint/core': 0.13.0 2280 + levn: 0.4.1 2281 + 2282 + '@fastify/busboy@2.1.1': {} 2283 + 2284 + '@hattip/adapter-node@0.0.49': 2285 + dependencies: 2286 + '@hattip/core': 0.0.49 2287 + '@hattip/polyfills': 0.0.49 2288 + '@hattip/walk': 0.0.49 2289 + 2290 + '@hattip/core@0.0.49': {} 2291 + 2292 + '@hattip/headers@0.0.49': 2293 + dependencies: 2294 + '@hattip/core': 0.0.49 2295 + 2296 + '@hattip/polyfills@0.0.49': 2297 + dependencies: 2298 + '@hattip/core': 0.0.49 2299 + '@whatwg-node/fetch': 0.9.23 2300 + node-fetch-native: 1.6.6 2301 + 2302 + '@hattip/walk@0.0.49': 2303 + dependencies: 2304 + '@hattip/headers': 0.0.49 2305 + cac: 6.7.14 2306 + mime-types: 2.1.35 2307 + 2308 + '@humanfs/core@0.19.1': {} 2309 + 2310 + '@humanfs/node@0.16.6': 2311 + dependencies: 2312 + '@humanfs/core': 0.19.1 2313 + '@humanwhocodes/retry': 0.3.1 2314 + 2315 + '@humanwhocodes/module-importer@1.0.1': {} 2316 + 2317 + '@humanwhocodes/retry@0.3.1': {} 2318 + 2319 + '@humanwhocodes/retry@0.4.3': {} 2320 + 2321 + '@img/sharp-darwin-arm64@0.33.5': 2322 + optionalDependencies: 2323 + '@img/sharp-libvips-darwin-arm64': 1.0.4 2324 + optional: true 2325 + 2326 + '@img/sharp-darwin-x64@0.33.5': 2327 + optionalDependencies: 2328 + '@img/sharp-libvips-darwin-x64': 1.0.4 2329 + optional: true 2330 + 2331 + '@img/sharp-libvips-darwin-arm64@1.0.4': 2332 + optional: true 2333 + 2334 + '@img/sharp-libvips-darwin-x64@1.0.4': 2335 + optional: true 2336 + 2337 + '@img/sharp-libvips-linux-arm64@1.0.4': 2338 + optional: true 2339 + 2340 + '@img/sharp-libvips-linux-arm@1.0.5': 2341 + optional: true 2342 + 2343 + '@img/sharp-libvips-linux-s390x@1.0.4': 2344 + optional: true 2345 + 2346 + '@img/sharp-libvips-linux-x64@1.0.4': 2347 + optional: true 2348 + 2349 + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 2350 + optional: true 2351 + 2352 + '@img/sharp-libvips-linuxmusl-x64@1.0.4': 2353 + optional: true 2354 + 2355 + '@img/sharp-linux-arm64@0.33.5': 2356 + optionalDependencies: 2357 + '@img/sharp-libvips-linux-arm64': 1.0.4 2358 + optional: true 2359 + 2360 + '@img/sharp-linux-arm@0.33.5': 2361 + optionalDependencies: 2362 + '@img/sharp-libvips-linux-arm': 1.0.5 2363 + optional: true 2364 + 2365 + '@img/sharp-linux-s390x@0.33.5': 2366 + optionalDependencies: 2367 + '@img/sharp-libvips-linux-s390x': 1.0.4 2368 + optional: true 2369 + 2370 + '@img/sharp-linux-x64@0.33.5': 2371 + optionalDependencies: 2372 + '@img/sharp-libvips-linux-x64': 1.0.4 2373 + optional: true 2374 + 2375 + '@img/sharp-linuxmusl-arm64@0.33.5': 2376 + optionalDependencies: 2377 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 2378 + optional: true 2379 + 2380 + '@img/sharp-linuxmusl-x64@0.33.5': 2381 + optionalDependencies: 2382 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 2383 + optional: true 2384 + 2385 + '@img/sharp-wasm32@0.33.5': 2386 + dependencies: 2387 + '@emnapi/runtime': 1.4.3 2388 + optional: true 2389 + 2390 + '@img/sharp-win32-ia32@0.33.5': 2391 + optional: true 2392 + 2393 + '@img/sharp-win32-x64@0.33.5': 2394 + optional: true 2395 + 2396 + '@jridgewell/gen-mapping@0.3.8': 2397 + dependencies: 2398 + '@jridgewell/set-array': 1.2.1 2399 + '@jridgewell/sourcemap-codec': 1.5.0 2400 + '@jridgewell/trace-mapping': 0.3.25 2401 + 2402 + '@jridgewell/resolve-uri@3.1.2': {} 2403 + 2404 + '@jridgewell/set-array@1.2.1': {} 2405 + 2406 + '@jridgewell/sourcemap-codec@1.5.0': {} 2407 + 2408 + '@jridgewell/trace-mapping@0.3.25': 2409 + dependencies: 2410 + '@jridgewell/resolve-uri': 3.1.2 2411 + '@jridgewell/sourcemap-codec': 1.5.0 2412 + 2413 + '@jridgewell/trace-mapping@0.3.9': 2414 + dependencies: 2415 + '@jridgewell/resolve-uri': 3.1.2 2416 + '@jridgewell/sourcemap-codec': 1.5.0 2417 + 2418 + '@kamilkisiela/fast-url-parser@1.1.4': {} 2419 + 2420 + '@modelcontextprotocol/sdk@1.11.1': 2421 + dependencies: 2422 + content-type: 1.0.5 2423 + cors: 2.8.5 2424 + cross-spawn: 7.0.6 2425 + eventsource: 3.0.7 2426 + express: 5.1.0 2427 + express-rate-limit: 7.5.0(express@5.1.0) 2428 + pkce-challenge: 5.0.0 2429 + raw-body: 3.0.0 2430 + zod: 3.24.4 2431 + zod-to-json-schema: 3.24.5(zod@3.24.4) 2432 + transitivePeerDependencies: 2433 + - supports-color 2434 + 2435 + '@nodelib/fs.scandir@2.1.5': 2436 + dependencies: 2437 + '@nodelib/fs.stat': 2.0.5 2438 + run-parallel: 1.2.0 2439 + 2440 + '@nodelib/fs.stat@2.0.5': {} 2441 + 2442 + '@nodelib/fs.walk@1.2.8': 2443 + dependencies: 2444 + '@nodelib/fs.scandir': 2.1.5 2445 + fastq: 1.19.1 2446 + 2447 + '@rollup/plugin-replace@6.0.2(rollup@4.40.2)': 2448 + dependencies: 2449 + '@rollup/pluginutils': 5.1.4(rollup@4.40.2) 2450 + magic-string: 0.30.17 2451 + optionalDependencies: 2452 + rollup: 4.40.2 2453 + 2454 + '@rollup/pluginutils@5.1.4(rollup@4.40.2)': 2455 + dependencies: 2456 + '@types/estree': 1.0.7 2457 + estree-walker: 2.0.2 2458 + picomatch: 4.0.2 2459 + optionalDependencies: 2460 + rollup: 4.40.2 2461 + 2462 + '@rollup/rollup-android-arm-eabi@4.40.2': 2463 + optional: true 2464 + 2465 + '@rollup/rollup-android-arm64@4.40.2': 2466 + optional: true 2467 + 2468 + '@rollup/rollup-darwin-arm64@4.40.2': 2469 + optional: true 2470 + 2471 + '@rollup/rollup-darwin-x64@4.40.2': 2472 + optional: true 2473 + 2474 + '@rollup/rollup-freebsd-arm64@4.40.2': 2475 + optional: true 2476 + 2477 + '@rollup/rollup-freebsd-x64@4.40.2': 2478 + optional: true 2479 + 2480 + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': 2481 + optional: true 2482 + 2483 + '@rollup/rollup-linux-arm-musleabihf@4.40.2': 2484 + optional: true 2485 + 2486 + '@rollup/rollup-linux-arm64-gnu@4.40.2': 2487 + optional: true 2488 + 2489 + '@rollup/rollup-linux-arm64-musl@4.40.2': 2490 + optional: true 2491 + 2492 + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': 2493 + optional: true 2494 + 2495 + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': 2496 + optional: true 2497 + 2498 + '@rollup/rollup-linux-riscv64-gnu@4.40.2': 2499 + optional: true 2500 + 2501 + '@rollup/rollup-linux-riscv64-musl@4.40.2': 2502 + optional: true 2503 + 2504 + '@rollup/rollup-linux-s390x-gnu@4.40.2': 2505 + optional: true 2506 + 2507 + '@rollup/rollup-linux-x64-gnu@4.40.2': 2508 + optional: true 2509 + 2510 + '@rollup/rollup-linux-x64-musl@4.40.2': 2511 + optional: true 2512 + 2513 + '@rollup/rollup-win32-arm64-msvc@4.40.2': 2514 + optional: true 2515 + 2516 + '@rollup/rollup-win32-ia32-msvc@4.40.2': 2517 + optional: true 2518 + 2519 + '@rollup/rollup-win32-x64-msvc@4.40.2': 2520 + optional: true 2521 + 2522 + '@types/babel__core@7.20.5': 2523 + dependencies: 2524 + '@babel/parser': 7.27.2 2525 + '@babel/types': 7.27.1 2526 + '@types/babel__generator': 7.27.0 2527 + '@types/babel__template': 7.4.4 2528 + '@types/babel__traverse': 7.20.7 2529 + 2530 + '@types/babel__generator@7.27.0': 2531 + dependencies: 2532 + '@babel/types': 7.27.1 2533 + 2534 + '@types/babel__template@7.4.4': 2535 + dependencies: 2536 + '@babel/parser': 7.27.2 2537 + '@babel/types': 7.27.1 2538 + 2539 + '@types/babel__traverse@7.20.7': 2540 + dependencies: 2541 + '@babel/types': 7.27.1 2542 + 2543 + '@types/estree@1.0.7': {} 2544 + 2545 + '@types/json-schema@7.0.15': {} 2546 + 2547 + '@types/react-dom@19.1.3(@types/react@19.1.3)': 2548 + dependencies: 2549 + '@types/react': 19.1.3 2550 + 2551 + '@types/react@19.1.3': 2552 + dependencies: 2553 + csstype: 3.1.3 2554 + 2555 + '@typescript-eslint/eslint-plugin@8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0)(typescript@5.7.3))(eslint@9.26.0)(typescript@5.7.3)': 2556 + dependencies: 2557 + '@eslint-community/regexpp': 4.12.1 2558 + '@typescript-eslint/parser': 8.32.0(eslint@9.26.0)(typescript@5.7.3) 2559 + '@typescript-eslint/scope-manager': 8.32.0 2560 + '@typescript-eslint/type-utils': 8.32.0(eslint@9.26.0)(typescript@5.7.3) 2561 + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0)(typescript@5.7.3) 2562 + '@typescript-eslint/visitor-keys': 8.32.0 2563 + eslint: 9.26.0 2564 + graphemer: 1.4.0 2565 + ignore: 5.3.2 2566 + natural-compare: 1.4.0 2567 + ts-api-utils: 2.1.0(typescript@5.7.3) 2568 + typescript: 5.7.3 2569 + transitivePeerDependencies: 2570 + - supports-color 2571 + 2572 + '@typescript-eslint/parser@8.32.0(eslint@9.26.0)(typescript@5.7.3)': 2573 + dependencies: 2574 + '@typescript-eslint/scope-manager': 8.32.0 2575 + '@typescript-eslint/types': 8.32.0 2576 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) 2577 + '@typescript-eslint/visitor-keys': 8.32.0 2578 + debug: 4.4.0 2579 + eslint: 9.26.0 2580 + typescript: 5.7.3 2581 + transitivePeerDependencies: 2582 + - supports-color 2583 + 2584 + '@typescript-eslint/scope-manager@8.32.0': 2585 + dependencies: 2586 + '@typescript-eslint/types': 8.32.0 2587 + '@typescript-eslint/visitor-keys': 8.32.0 2588 + 2589 + '@typescript-eslint/type-utils@8.32.0(eslint@9.26.0)(typescript@5.7.3)': 2590 + dependencies: 2591 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) 2592 + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0)(typescript@5.7.3) 2593 + debug: 4.4.0 2594 + eslint: 9.26.0 2595 + ts-api-utils: 2.1.0(typescript@5.7.3) 2596 + typescript: 5.7.3 2597 + transitivePeerDependencies: 2598 + - supports-color 2599 + 2600 + '@typescript-eslint/types@8.32.0': {} 2601 + 2602 + '@typescript-eslint/typescript-estree@8.32.0(typescript@5.7.3)': 2603 + dependencies: 2604 + '@typescript-eslint/types': 8.32.0 2605 + '@typescript-eslint/visitor-keys': 8.32.0 2606 + debug: 4.4.0 2607 + fast-glob: 3.3.3 2608 + is-glob: 4.0.3 2609 + minimatch: 9.0.5 2610 + semver: 7.7.1 2611 + ts-api-utils: 2.1.0(typescript@5.7.3) 2612 + typescript: 5.7.3 2613 + transitivePeerDependencies: 2614 + - supports-color 2615 + 2616 + '@typescript-eslint/utils@8.32.0(eslint@9.26.0)(typescript@5.7.3)': 2617 + dependencies: 2618 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) 2619 + '@typescript-eslint/scope-manager': 8.32.0 2620 + '@typescript-eslint/types': 8.32.0 2621 + '@typescript-eslint/typescript-estree': 8.32.0(typescript@5.7.3) 2622 + eslint: 9.26.0 2623 + typescript: 5.7.3 2624 + transitivePeerDependencies: 2625 + - supports-color 2626 + 2627 + '@typescript-eslint/visitor-keys@8.32.0': 2628 + dependencies: 2629 + '@typescript-eslint/types': 8.32.0 2630 + eslint-visitor-keys: 4.2.0 2631 + 2632 + '@vitejs/plugin-react@4.4.1(vite@6.3.5)': 2633 + dependencies: 2634 + '@babel/core': 7.27.1 2635 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.27.1) 2636 + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.27.1) 2637 + '@types/babel__core': 7.20.5 2638 + react-refresh: 0.17.0 2639 + vite: 6.3.5 2640 + transitivePeerDependencies: 2641 + - supports-color 2642 + 2643 + '@whatwg-node/fetch@0.9.23': 2644 + dependencies: 2645 + '@whatwg-node/node-fetch': 0.6.0 2646 + urlpattern-polyfill: 10.1.0 2647 + 2648 + '@whatwg-node/node-fetch@0.6.0': 2649 + dependencies: 2650 + '@kamilkisiela/fast-url-parser': 1.1.4 2651 + busboy: 1.6.0 2652 + fast-querystring: 1.1.2 2653 + tslib: 2.8.1 2654 + 2655 + accepts@2.0.0: 2656 + dependencies: 2657 + mime-types: 3.0.1 2658 + negotiator: 1.0.0 2659 + 2660 + acorn-jsx@5.3.2(acorn@8.14.1): 2661 + dependencies: 2662 + acorn: 8.14.1 2663 + 2664 + acorn-walk@8.3.2: {} 2665 + 2666 + acorn@8.14.0: {} 2667 + 2668 + acorn@8.14.1: {} 2669 + 2670 + ajv@6.12.6: 2671 + dependencies: 2672 + fast-deep-equal: 3.1.3 2673 + fast-json-stable-stringify: 2.1.0 2674 + json-schema-traverse: 0.4.1 2675 + uri-js: 4.4.1 2676 + 2677 + ansi-styles@4.3.0: 2678 + dependencies: 2679 + color-convert: 2.0.1 2680 + 2681 + argparse@2.0.1: {} 2682 + 2683 + as-table@1.0.55: 2684 + dependencies: 2685 + printable-characters: 1.0.42 2686 + 2687 + await-lock@2.2.2: {} 2688 + 2689 + balanced-match@1.0.2: {} 2690 + 2691 + blake3-wasm@2.1.5: {} 2692 + 2693 + body-parser@2.2.0: 2694 + dependencies: 2695 + bytes: 3.1.2 2696 + content-type: 1.0.5 2697 + debug: 4.4.0 2698 + http-errors: 2.0.0 2699 + iconv-lite: 0.6.3 2700 + on-finished: 2.4.1 2701 + qs: 6.14.0 2702 + raw-body: 3.0.0 2703 + type-is: 2.0.1 2704 + transitivePeerDependencies: 2705 + - supports-color 2706 + 2707 + brace-expansion@1.1.11: 2708 + dependencies: 2709 + balanced-match: 1.0.2 2710 + concat-map: 0.0.1 2711 + 2712 + brace-expansion@2.0.1: 2713 + dependencies: 2714 + balanced-match: 1.0.2 2715 + 2716 + braces@3.0.3: 2717 + dependencies: 2718 + fill-range: 7.1.1 2719 + 2720 + browserslist@4.24.5: 2721 + dependencies: 2722 + caniuse-lite: 1.0.30001717 2723 + electron-to-chromium: 1.5.151 2724 + node-releases: 2.0.19 2725 + update-browserslist-db: 1.1.3(browserslist@4.24.5) 2726 + 2727 + busboy@1.6.0: 2728 + dependencies: 2729 + streamsearch: 1.1.0 2730 + 2731 + bytes@3.1.2: {} 2732 + 2733 + cac@6.7.14: {} 2734 + 2735 + call-bind-apply-helpers@1.0.2: 2736 + dependencies: 2737 + es-errors: 1.3.0 2738 + function-bind: 1.1.2 2739 + 2740 + call-bound@1.0.4: 2741 + dependencies: 2742 + call-bind-apply-helpers: 1.0.2 2743 + get-intrinsic: 1.3.0 2744 + 2745 + callsites@3.1.0: {} 2746 + 2747 + caniuse-lite@1.0.30001717: {} 2748 + 2749 + chalk@4.1.2: 2750 + dependencies: 2751 + ansi-styles: 4.3.0 2752 + supports-color: 7.2.0 2753 + 2754 + color-convert@2.0.1: 2755 + dependencies: 2756 + color-name: 1.1.4 2757 + 2758 + color-name@1.1.4: {} 2759 + 2760 + color-string@1.9.1: 2761 + dependencies: 2762 + color-name: 1.1.4 2763 + simple-swizzle: 0.2.2 2764 + optional: true 2765 + 2766 + color@4.2.3: 2767 + dependencies: 2768 + color-convert: 2.0.1 2769 + color-string: 1.9.1 2770 + optional: true 2771 + 2772 + concat-map@0.0.1: {} 2773 + 2774 + content-disposition@1.0.0: 2775 + dependencies: 2776 + safe-buffer: 5.2.1 2777 + 2778 + content-type@1.0.5: {} 2779 + 2780 + convert-source-map@2.0.0: {} 2781 + 2782 + cookie-signature@1.2.2: {} 2783 + 2784 + cookie@0.7.2: {} 2785 + 2786 + cors@2.8.5: 2787 + dependencies: 2788 + object-assign: 4.1.1 2789 + vary: 1.1.2 2790 + 2791 + cross-spawn@7.0.6: 2792 + dependencies: 2793 + path-key: 3.1.1 2794 + shebang-command: 2.0.0 2795 + which: 2.0.2 2796 + 2797 + csstype@3.1.3: {} 2798 + 2799 + data-uri-to-buffer@2.0.2: {} 2800 + 2801 + debug@4.4.0: 2802 + dependencies: 2803 + ms: 2.1.3 2804 + 2805 + deep-is@0.1.4: {} 2806 + 2807 + defu@6.1.4: {} 2808 + 2809 + depd@2.0.0: {} 2810 + 2811 + detect-libc@2.0.4: 2812 + optional: true 2813 + 2814 + dunder-proto@1.0.1: 2815 + dependencies: 2816 + call-bind-apply-helpers: 1.0.2 2817 + es-errors: 1.3.0 2818 + gopd: 1.2.0 2819 + 2820 + ee-first@1.1.1: {} 2821 + 2822 + electron-to-chromium@1.5.151: {} 2823 + 2824 + encodeurl@2.0.0: {} 2825 + 2826 + es-define-property@1.0.1: {} 2827 + 2828 + es-errors@1.3.0: {} 2829 + 2830 + es-object-atoms@1.1.1: 2831 + dependencies: 2832 + es-errors: 1.3.0 2833 + 2834 + esbuild@0.25.4: 2835 + optionalDependencies: 2836 + '@esbuild/aix-ppc64': 0.25.4 2837 + '@esbuild/android-arm': 0.25.4 2838 + '@esbuild/android-arm64': 0.25.4 2839 + '@esbuild/android-x64': 0.25.4 2840 + '@esbuild/darwin-arm64': 0.25.4 2841 + '@esbuild/darwin-x64': 0.25.4 2842 + '@esbuild/freebsd-arm64': 0.25.4 2843 + '@esbuild/freebsd-x64': 0.25.4 2844 + '@esbuild/linux-arm': 0.25.4 2845 + '@esbuild/linux-arm64': 0.25.4 2846 + '@esbuild/linux-ia32': 0.25.4 2847 + '@esbuild/linux-loong64': 0.25.4 2848 + '@esbuild/linux-mips64el': 0.25.4 2849 + '@esbuild/linux-ppc64': 0.25.4 2850 + '@esbuild/linux-riscv64': 0.25.4 2851 + '@esbuild/linux-s390x': 0.25.4 2852 + '@esbuild/linux-x64': 0.25.4 2853 + '@esbuild/netbsd-arm64': 0.25.4 2854 + '@esbuild/netbsd-x64': 0.25.4 2855 + '@esbuild/openbsd-arm64': 0.25.4 2856 + '@esbuild/openbsd-x64': 0.25.4 2857 + '@esbuild/sunos-x64': 0.25.4 2858 + '@esbuild/win32-arm64': 0.25.4 2859 + '@esbuild/win32-ia32': 0.25.4 2860 + '@esbuild/win32-x64': 0.25.4 2861 + 2862 + escalade@3.2.0: {} 2863 + 2864 + escape-html@1.0.3: {} 2865 + 2866 + escape-string-regexp@4.0.0: {} 2867 + 2868 + eslint-plugin-react-hooks@5.2.0(eslint@9.26.0): 2869 + dependencies: 2870 + eslint: 9.26.0 2871 + 2872 + eslint-plugin-react-refresh@0.4.20(eslint@9.26.0): 2873 + dependencies: 2874 + eslint: 9.26.0 2875 + 2876 + eslint-scope@8.3.0: 2877 + dependencies: 2878 + esrecurse: 4.3.0 2879 + estraverse: 5.3.0 2880 + 2881 + eslint-visitor-keys@3.4.3: {} 2882 + 2883 + eslint-visitor-keys@4.2.0: {} 2884 + 2885 + eslint@9.26.0: 2886 + dependencies: 2887 + '@eslint-community/eslint-utils': 4.7.0(eslint@9.26.0) 2888 + '@eslint-community/regexpp': 4.12.1 2889 + '@eslint/config-array': 0.20.0 2890 + '@eslint/config-helpers': 0.2.2 2891 + '@eslint/core': 0.13.0 2892 + '@eslint/eslintrc': 3.3.1 2893 + '@eslint/js': 9.26.0 2894 + '@eslint/plugin-kit': 0.2.8 2895 + '@humanfs/node': 0.16.6 2896 + '@humanwhocodes/module-importer': 1.0.1 2897 + '@humanwhocodes/retry': 0.4.3 2898 + '@modelcontextprotocol/sdk': 1.11.1 2899 + '@types/estree': 1.0.7 2900 + '@types/json-schema': 7.0.15 2901 + ajv: 6.12.6 2902 + chalk: 4.1.2 2903 + cross-spawn: 7.0.6 2904 + debug: 4.4.0 2905 + escape-string-regexp: 4.0.0 2906 + eslint-scope: 8.3.0 2907 + eslint-visitor-keys: 4.2.0 2908 + espree: 10.3.0 2909 + esquery: 1.6.0 2910 + esutils: 2.0.3 2911 + fast-deep-equal: 3.1.3 2912 + file-entry-cache: 8.0.0 2913 + find-up: 5.0.0 2914 + glob-parent: 6.0.2 2915 + ignore: 5.3.2 2916 + imurmurhash: 0.1.4 2917 + is-glob: 4.0.3 2918 + json-stable-stringify-without-jsonify: 1.0.1 2919 + lodash.merge: 4.6.2 2920 + minimatch: 3.1.2 2921 + natural-compare: 1.4.0 2922 + optionator: 0.9.4 2923 + zod: 3.24.4 2924 + transitivePeerDependencies: 2925 + - supports-color 2926 + 2927 + espree@10.3.0: 2928 + dependencies: 2929 + acorn: 8.14.1 2930 + acorn-jsx: 5.3.2(acorn@8.14.1) 2931 + eslint-visitor-keys: 4.2.0 2932 + 2933 + esquery@1.6.0: 2934 + dependencies: 2935 + estraverse: 5.3.0 2936 + 2937 + esrecurse@4.3.0: 2938 + dependencies: 2939 + estraverse: 5.3.0 2940 + 2941 + estraverse@5.3.0: {} 2942 + 2943 + estree-walker@2.0.2: {} 2944 + 2945 + esutils@2.0.3: {} 2946 + 2947 + etag@1.8.1: {} 2948 + 2949 + eventsource-parser@3.0.1: {} 2950 + 2951 + eventsource@3.0.7: 2952 + dependencies: 2953 + eventsource-parser: 3.0.1 2954 + 2955 + exit-hook@2.2.1: {} 2956 + 2957 + express-rate-limit@7.5.0(express@5.1.0): 2958 + dependencies: 2959 + express: 5.1.0 2960 + 2961 + express@5.1.0: 2962 + dependencies: 2963 + accepts: 2.0.0 2964 + body-parser: 2.2.0 2965 + content-disposition: 1.0.0 2966 + content-type: 1.0.5 2967 + cookie: 0.7.2 2968 + cookie-signature: 1.2.2 2969 + debug: 4.4.0 2970 + encodeurl: 2.0.0 2971 + escape-html: 1.0.3 2972 + etag: 1.8.1 2973 + finalhandler: 2.1.0 2974 + fresh: 2.0.0 2975 + http-errors: 2.0.0 2976 + merge-descriptors: 2.0.0 2977 + mime-types: 3.0.1 2978 + on-finished: 2.4.1 2979 + once: 1.4.0 2980 + parseurl: 1.3.3 2981 + proxy-addr: 2.0.7 2982 + qs: 6.14.0 2983 + range-parser: 1.2.1 2984 + router: 2.2.0 2985 + send: 1.2.0 2986 + serve-static: 2.2.0 2987 + statuses: 2.0.1 2988 + type-is: 2.0.1 2989 + vary: 1.1.2 2990 + transitivePeerDependencies: 2991 + - supports-color 2992 + 2993 + exsolve@1.0.5: {} 2994 + 2995 + fast-decode-uri-component@1.0.1: {} 2996 + 2997 + fast-deep-equal@3.1.3: {} 2998 + 2999 + fast-glob@3.3.3: 3000 + dependencies: 3001 + '@nodelib/fs.stat': 2.0.5 3002 + '@nodelib/fs.walk': 1.2.8 3003 + glob-parent: 5.1.2 3004 + merge2: 1.4.1 3005 + micromatch: 4.0.8 3006 + 3007 + fast-json-stable-stringify@2.1.0: {} 3008 + 3009 + fast-levenshtein@2.0.6: {} 3010 + 3011 + fast-querystring@1.1.2: 3012 + dependencies: 3013 + fast-decode-uri-component: 1.0.1 3014 + 3015 + fastq@1.19.1: 3016 + dependencies: 3017 + reusify: 1.1.0 3018 + 3019 + fdir@6.4.4(picomatch@4.0.2): 3020 + optionalDependencies: 3021 + picomatch: 4.0.2 3022 + 3023 + file-entry-cache@8.0.0: 3024 + dependencies: 3025 + flat-cache: 4.0.1 3026 + 3027 + fill-range@7.1.1: 3028 + dependencies: 3029 + to-regex-range: 5.0.1 3030 + 3031 + finalhandler@2.1.0: 3032 + dependencies: 3033 + debug: 4.4.0 3034 + encodeurl: 2.0.0 3035 + escape-html: 1.0.3 3036 + on-finished: 2.4.1 3037 + parseurl: 1.3.3 3038 + statuses: 2.0.1 3039 + transitivePeerDependencies: 3040 + - supports-color 3041 + 3042 + find-up@5.0.0: 3043 + dependencies: 3044 + locate-path: 6.0.0 3045 + path-exists: 4.0.0 3046 + 3047 + flat-cache@4.0.1: 3048 + dependencies: 3049 + flatted: 3.3.3 3050 + keyv: 4.5.4 3051 + 3052 + flatted@3.3.3: {} 3053 + 3054 + forwarded@0.2.0: {} 3055 + 3056 + fresh@2.0.0: {} 3057 + 3058 + fsevents@2.3.3: 3059 + optional: true 3060 + 3061 + function-bind@1.1.2: {} 3062 + 3063 + gensync@1.0.0-beta.2: {} 3064 + 3065 + get-intrinsic@1.3.0: 3066 + dependencies: 3067 + call-bind-apply-helpers: 1.0.2 3068 + es-define-property: 1.0.1 3069 + es-errors: 1.3.0 3070 + es-object-atoms: 1.1.1 3071 + function-bind: 1.1.2 3072 + get-proto: 1.0.1 3073 + gopd: 1.2.0 3074 + has-symbols: 1.1.0 3075 + hasown: 2.0.2 3076 + math-intrinsics: 1.1.0 3077 + 3078 + get-port@7.1.0: {} 3079 + 3080 + get-proto@1.0.1: 3081 + dependencies: 3082 + dunder-proto: 1.0.1 3083 + es-object-atoms: 1.1.1 3084 + 3085 + get-source@2.0.12: 3086 + dependencies: 3087 + data-uri-to-buffer: 2.0.2 3088 + source-map: 0.6.1 3089 + 3090 + glob-parent@5.1.2: 3091 + dependencies: 3092 + is-glob: 4.0.3 3093 + 3094 + glob-parent@6.0.2: 3095 + dependencies: 3096 + is-glob: 4.0.3 3097 + 3098 + glob-to-regexp@0.4.1: {} 3099 + 3100 + globals@11.12.0: {} 3101 + 3102 + globals@14.0.0: {} 3103 + 3104 + globals@16.1.0: {} 3105 + 3106 + gopd@1.2.0: {} 3107 + 3108 + graphemer@1.4.0: {} 3109 + 3110 + has-flag@4.0.0: {} 3111 + 3112 + has-symbols@1.1.0: {} 3113 + 3114 + hasown@2.0.2: 3115 + dependencies: 3116 + function-bind: 1.1.2 3117 + 3118 + hono@4.7.9: {} 3119 + 3120 + http-errors@2.0.0: 3121 + dependencies: 3122 + depd: 2.0.0 3123 + inherits: 2.0.4 3124 + setprototypeof: 1.2.0 3125 + statuses: 2.0.1 3126 + toidentifier: 1.0.1 3127 + 3128 + iconv-lite@0.6.3: 3129 + dependencies: 3130 + safer-buffer: 2.1.2 3131 + 3132 + ignore@5.3.2: {} 3133 + 3134 + import-fresh@3.3.1: 3135 + dependencies: 3136 + parent-module: 1.0.1 3137 + resolve-from: 4.0.0 3138 + 3139 + imurmurhash@0.1.4: {} 3140 + 3141 + inherits@2.0.4: {} 3142 + 3143 + ipaddr.js@1.9.1: {} 3144 + 3145 + is-arrayish@0.3.2: 3146 + optional: true 3147 + 3148 + is-extglob@2.1.1: {} 3149 + 3150 + is-glob@4.0.3: 3151 + dependencies: 3152 + is-extglob: 2.1.1 3153 + 3154 + is-number@7.0.0: {} 3155 + 3156 + is-promise@4.0.0: {} 3157 + 3158 + isexe@2.0.0: {} 3159 + 3160 + iso-datestring-validator@2.2.2: {} 3161 + 3162 + jose@5.10.0: {} 3163 + 3164 + js-tokens@4.0.0: {} 3165 + 3166 + js-yaml@4.1.0: 3167 + dependencies: 3168 + argparse: 2.0.1 3169 + 3170 + jsesc@3.1.0: {} 3171 + 3172 + json-buffer@3.0.1: {} 3173 + 3174 + json-schema-traverse@0.4.1: {} 3175 + 3176 + json-stable-stringify-without-jsonify@1.0.1: {} 3177 + 3178 + json5@2.2.3: {} 3179 + 3180 + keyv@4.5.4: 3181 + dependencies: 3182 + json-buffer: 3.0.1 3183 + 3184 + levn@0.4.1: 3185 + dependencies: 3186 + prelude-ls: 1.2.1 3187 + type-check: 0.4.0 3188 + 3189 + locate-path@6.0.0: 3190 + dependencies: 3191 + p-locate: 5.0.0 3192 + 3193 + lodash.merge@4.6.2: {} 3194 + 3195 + lru-cache@10.4.3: {} 3196 + 3197 + lru-cache@5.1.1: 3198 + dependencies: 3199 + yallist: 3.1.1 3200 + 3201 + magic-string@0.30.17: 3202 + dependencies: 3203 + '@jridgewell/sourcemap-codec': 1.5.0 3204 + 3205 + math-intrinsics@1.1.0: {} 3206 + 3207 + media-typer@1.1.0: {} 3208 + 3209 + merge-descriptors@2.0.0: {} 3210 + 3211 + merge2@1.4.1: {} 3212 + 3213 + micromatch@4.0.8: 3214 + dependencies: 3215 + braces: 3.0.3 3216 + picomatch: 2.3.1 3217 + 3218 + mime-db@1.52.0: {} 3219 + 3220 + mime-db@1.54.0: {} 3221 + 3222 + mime-types@2.1.35: 3223 + dependencies: 3224 + mime-db: 1.52.0 3225 + 3226 + mime-types@3.0.1: 3227 + dependencies: 3228 + mime-db: 1.54.0 3229 + 3230 + mime@3.0.0: {} 3231 + 3232 + miniflare@4.20250507.0: 3233 + dependencies: 3234 + '@cspotcode/source-map-support': 0.8.1 3235 + acorn: 8.14.0 3236 + acorn-walk: 8.3.2 3237 + exit-hook: 2.2.1 3238 + glob-to-regexp: 0.4.1 3239 + stoppable: 1.1.0 3240 + undici: 5.29.0 3241 + workerd: 1.20250507.0 3242 + ws: 8.18.0 3243 + youch: 3.3.4 3244 + zod: 3.22.3 3245 + transitivePeerDependencies: 3246 + - bufferutil 3247 + - utf-8-validate 3248 + 3249 + minimatch@3.1.2: 3250 + dependencies: 3251 + brace-expansion: 1.1.11 3252 + 3253 + minimatch@9.0.5: 3254 + dependencies: 3255 + brace-expansion: 2.0.1 3256 + 3257 + ms@2.1.3: {} 3258 + 3259 + multiformats@9.9.0: {} 3260 + 3261 + mustache@4.2.0: {} 3262 + 3263 + nanoid@3.3.11: {} 3264 + 3265 + natural-compare@1.4.0: {} 3266 + 3267 + negotiator@1.0.0: {} 3268 + 3269 + node-fetch-native@1.6.6: {} 3270 + 3271 + node-releases@2.0.19: {} 3272 + 3273 + object-assign@4.1.1: {} 3274 + 3275 + object-inspect@1.13.4: {} 3276 + 3277 + ohash@2.0.11: {} 3278 + 3279 + on-finished@2.4.1: 3280 + dependencies: 3281 + ee-first: 1.1.1 3282 + 3283 + once@1.4.0: 3284 + dependencies: 3285 + wrappy: 1.0.2 3286 + 3287 + optionator@0.9.4: 3288 + dependencies: 3289 + deep-is: 0.1.4 3290 + fast-levenshtein: 2.0.6 3291 + levn: 0.4.1 3292 + prelude-ls: 1.2.1 3293 + type-check: 0.4.0 3294 + word-wrap: 1.2.5 3295 + 3296 + p-limit@3.1.0: 3297 + dependencies: 3298 + yocto-queue: 0.1.0 3299 + 3300 + p-locate@5.0.0: 3301 + dependencies: 3302 + p-limit: 3.1.0 3303 + 3304 + parent-module@1.0.1: 3305 + dependencies: 3306 + callsites: 3.1.0 3307 + 3308 + parseurl@1.3.3: {} 3309 + 3310 + path-exists@4.0.0: {} 3311 + 3312 + path-key@3.1.1: {} 3313 + 3314 + path-to-regexp@6.3.0: {} 3315 + 3316 + path-to-regexp@8.2.0: {} 3317 + 3318 + pathe@2.0.3: {} 3319 + 3320 + picocolors@1.1.1: {} 3321 + 3322 + picomatch@2.3.1: {} 3323 + 3324 + picomatch@4.0.2: {} 3325 + 3326 + pkce-challenge@5.0.0: {} 3327 + 3328 + postcss@8.5.3: 3329 + dependencies: 3330 + nanoid: 3.3.11 3331 + picocolors: 1.1.1 3332 + source-map-js: 1.2.1 3333 + 3334 + prelude-ls@1.2.1: {} 3335 + 3336 + printable-characters@1.0.42: {} 3337 + 3338 + proxy-addr@2.0.7: 3339 + dependencies: 3340 + forwarded: 0.2.0 3341 + ipaddr.js: 1.9.1 3342 + 3343 + punycode@2.3.1: {} 3344 + 3345 + qs@6.14.0: 3346 + dependencies: 3347 + side-channel: 1.1.0 3348 + 3349 + queue-microtask@1.2.3: {} 3350 + 3351 + range-parser@1.2.1: {} 3352 + 3353 + raw-body@3.0.0: 3354 + dependencies: 3355 + bytes: 3.1.2 3356 + http-errors: 2.0.0 3357 + iconv-lite: 0.6.3 3358 + unpipe: 1.0.0 3359 + 3360 + react-dom@19.1.0(react@19.1.0): 3361 + dependencies: 3362 + react: 19.1.0 3363 + scheduler: 0.26.0 3364 + 3365 + react-refresh@0.17.0: {} 3366 + 3367 + react@19.1.0: {} 3368 + 3369 + resolve-from@4.0.0: {} 3370 + 3371 + reusify@1.1.0: {} 3372 + 3373 + rollup@4.40.2: 3374 + dependencies: 3375 + '@types/estree': 1.0.7 3376 + optionalDependencies: 3377 + '@rollup/rollup-android-arm-eabi': 4.40.2 3378 + '@rollup/rollup-android-arm64': 4.40.2 3379 + '@rollup/rollup-darwin-arm64': 4.40.2 3380 + '@rollup/rollup-darwin-x64': 4.40.2 3381 + '@rollup/rollup-freebsd-arm64': 4.40.2 3382 + '@rollup/rollup-freebsd-x64': 4.40.2 3383 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 3384 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 3385 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 3386 + '@rollup/rollup-linux-arm64-musl': 4.40.2 3387 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 3388 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 3389 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 3390 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 3391 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 3392 + '@rollup/rollup-linux-x64-gnu': 4.40.2 3393 + '@rollup/rollup-linux-x64-musl': 4.40.2 3394 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 3395 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 3396 + '@rollup/rollup-win32-x64-msvc': 4.40.2 3397 + fsevents: 2.3.3 3398 + 3399 + router@2.2.0: 3400 + dependencies: 3401 + debug: 4.4.0 3402 + depd: 2.0.0 3403 + is-promise: 4.0.0 3404 + parseurl: 1.3.3 3405 + path-to-regexp: 8.2.0 3406 + transitivePeerDependencies: 3407 + - supports-color 3408 + 3409 + run-parallel@1.2.0: 3410 + dependencies: 3411 + queue-microtask: 1.2.3 3412 + 3413 + safe-buffer@5.2.1: {} 3414 + 3415 + safer-buffer@2.1.2: {} 3416 + 3417 + scheduler@0.26.0: {} 3418 + 3419 + semver@6.3.1: {} 3420 + 3421 + semver@7.7.1: {} 3422 + 3423 + send@1.2.0: 3424 + dependencies: 3425 + debug: 4.4.0 3426 + encodeurl: 2.0.0 3427 + escape-html: 1.0.3 3428 + etag: 1.8.1 3429 + fresh: 2.0.0 3430 + http-errors: 2.0.0 3431 + mime-types: 3.0.1 3432 + ms: 2.1.3 3433 + on-finished: 2.4.1 3434 + range-parser: 1.2.1 3435 + statuses: 2.0.1 3436 + transitivePeerDependencies: 3437 + - supports-color 3438 + 3439 + serve-static@2.2.0: 3440 + dependencies: 3441 + encodeurl: 2.0.0 3442 + escape-html: 1.0.3 3443 + parseurl: 1.3.3 3444 + send: 1.2.0 3445 + transitivePeerDependencies: 3446 + - supports-color 3447 + 3448 + setprototypeof@1.2.0: {} 3449 + 3450 + sharp@0.33.5: 3451 + dependencies: 3452 + color: 4.2.3 3453 + detect-libc: 2.0.4 3454 + semver: 7.7.1 3455 + optionalDependencies: 3456 + '@img/sharp-darwin-arm64': 0.33.5 3457 + '@img/sharp-darwin-x64': 0.33.5 3458 + '@img/sharp-libvips-darwin-arm64': 1.0.4 3459 + '@img/sharp-libvips-darwin-x64': 1.0.4 3460 + '@img/sharp-libvips-linux-arm': 1.0.5 3461 + '@img/sharp-libvips-linux-arm64': 1.0.4 3462 + '@img/sharp-libvips-linux-s390x': 1.0.4 3463 + '@img/sharp-libvips-linux-x64': 1.0.4 3464 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 3465 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 3466 + '@img/sharp-linux-arm': 0.33.5 3467 + '@img/sharp-linux-arm64': 0.33.5 3468 + '@img/sharp-linux-s390x': 0.33.5 3469 + '@img/sharp-linux-x64': 0.33.5 3470 + '@img/sharp-linuxmusl-arm64': 0.33.5 3471 + '@img/sharp-linuxmusl-x64': 0.33.5 3472 + '@img/sharp-wasm32': 0.33.5 3473 + '@img/sharp-win32-ia32': 0.33.5 3474 + '@img/sharp-win32-x64': 0.33.5 3475 + optional: true 3476 + 3477 + shebang-command@2.0.0: 3478 + dependencies: 3479 + shebang-regex: 3.0.0 3480 + 3481 + shebang-regex@3.0.0: {} 3482 + 3483 + side-channel-list@1.0.0: 3484 + dependencies: 3485 + es-errors: 1.3.0 3486 + object-inspect: 1.13.4 3487 + 3488 + side-channel-map@1.0.1: 3489 + dependencies: 3490 + call-bound: 1.0.4 3491 + es-errors: 1.3.0 3492 + get-intrinsic: 1.3.0 3493 + object-inspect: 1.13.4 3494 + 3495 + side-channel-weakmap@1.0.2: 3496 + dependencies: 3497 + call-bound: 1.0.4 3498 + es-errors: 1.3.0 3499 + get-intrinsic: 1.3.0 3500 + object-inspect: 1.13.4 3501 + side-channel-map: 1.0.1 3502 + 3503 + side-channel@1.1.0: 3504 + dependencies: 3505 + es-errors: 1.3.0 3506 + object-inspect: 1.13.4 3507 + side-channel-list: 1.0.0 3508 + side-channel-map: 1.0.1 3509 + side-channel-weakmap: 1.0.2 3510 + 3511 + simple-swizzle@0.2.2: 3512 + dependencies: 3513 + is-arrayish: 0.3.2 3514 + optional: true 3515 + 3516 + source-map-js@1.2.1: {} 3517 + 3518 + source-map@0.6.1: {} 3519 + 3520 + stacktracey@2.1.8: 3521 + dependencies: 3522 + as-table: 1.0.55 3523 + get-source: 2.0.12 3524 + 3525 + statuses@2.0.1: {} 3526 + 3527 + stoppable@1.1.0: {} 3528 + 3529 + streamsearch@1.1.0: {} 3530 + 3531 + strip-json-comments@3.1.1: {} 3532 + 3533 + supports-color@7.2.0: 3534 + dependencies: 3535 + has-flag: 4.0.0 3536 + 3537 + tinyglobby@0.2.13: 3538 + dependencies: 3539 + fdir: 6.4.4(picomatch@4.0.2) 3540 + picomatch: 4.0.2 3541 + 3542 + tlds@1.258.0: {} 3543 + 3544 + to-regex-range@5.0.1: 3545 + dependencies: 3546 + is-number: 7.0.0 3547 + 3548 + toidentifier@1.0.1: {} 3549 + 3550 + ts-api-utils@2.1.0(typescript@5.7.3): 3551 + dependencies: 3552 + typescript: 5.7.3 3553 + 3554 + tslib@2.8.1: {} 3555 + 3556 + type-check@0.4.0: 3557 + dependencies: 3558 + prelude-ls: 1.2.1 3559 + 3560 + type-is@2.0.1: 3561 + dependencies: 3562 + content-type: 1.0.5 3563 + media-typer: 1.1.0 3564 + mime-types: 3.0.1 3565 + 3566 + typescript-eslint@8.32.0(eslint@9.26.0)(typescript@5.7.3): 3567 + dependencies: 3568 + '@typescript-eslint/eslint-plugin': 8.32.0(@typescript-eslint/parser@8.32.0(eslint@9.26.0)(typescript@5.7.3))(eslint@9.26.0)(typescript@5.7.3) 3569 + '@typescript-eslint/parser': 8.32.0(eslint@9.26.0)(typescript@5.7.3) 3570 + '@typescript-eslint/utils': 8.32.0(eslint@9.26.0)(typescript@5.7.3) 3571 + eslint: 9.26.0 3572 + typescript: 5.7.3 3573 + transitivePeerDependencies: 3574 + - supports-color 3575 + 3576 + typescript@5.7.3: {} 3577 + 3578 + ufo@1.6.1: {} 3579 + 3580 + uint8arrays@3.0.0: 3581 + dependencies: 3582 + multiformats: 9.9.0 3583 + 3584 + undici@5.29.0: 3585 + dependencies: 3586 + '@fastify/busboy': 2.1.1 3587 + 3588 + unenv@2.0.0-rc.15: 3589 + dependencies: 3590 + defu: 6.1.4 3591 + exsolve: 1.0.5 3592 + ohash: 2.0.11 3593 + pathe: 2.0.3 3594 + ufo: 1.6.1 3595 + 3596 + unpipe@1.0.0: {} 3597 + 3598 + update-browserslist-db@1.1.3(browserslist@4.24.5): 3599 + dependencies: 3600 + browserslist: 4.24.5 3601 + escalade: 3.2.0 3602 + picocolors: 1.1.1 3603 + 3604 + uri-js@4.4.1: 3605 + dependencies: 3606 + punycode: 2.3.1 3607 + 3608 + urlpattern-polyfill@10.1.0: {} 3609 + 3610 + vary@1.1.2: {} 3611 + 3612 + vite@6.3.5: 3613 + dependencies: 3614 + esbuild: 0.25.4 3615 + fdir: 6.4.4(picomatch@4.0.2) 3616 + picomatch: 4.0.2 3617 + postcss: 8.5.3 3618 + rollup: 4.40.2 3619 + tinyglobby: 0.2.13 3620 + optionalDependencies: 3621 + fsevents: 2.3.3 3622 + 3623 + which@2.0.2: 3624 + dependencies: 3625 + isexe: 2.0.0 3626 + 3627 + word-wrap@1.2.5: {} 3628 + 3629 + workerd@1.20250507.0: 3630 + optionalDependencies: 3631 + '@cloudflare/workerd-darwin-64': 1.20250507.0 3632 + '@cloudflare/workerd-darwin-arm64': 1.20250507.0 3633 + '@cloudflare/workerd-linux-64': 1.20250507.0 3634 + '@cloudflare/workerd-linux-arm64': 1.20250507.0 3635 + '@cloudflare/workerd-windows-64': 1.20250507.0 3636 + 3637 + wrangler@4.14.4(@cloudflare/workers-types@4.20250510.0): 3638 + dependencies: 3639 + '@cloudflare/kv-asset-handler': 0.4.0 3640 + '@cloudflare/unenv-preset': 2.3.1(unenv@2.0.0-rc.15)(workerd@1.20250507.0) 3641 + blake3-wasm: 2.1.5 3642 + esbuild: 0.25.4 3643 + miniflare: 4.20250507.0 3644 + path-to-regexp: 6.3.0 3645 + unenv: 2.0.0-rc.15 3646 + workerd: 1.20250507.0 3647 + optionalDependencies: 3648 + '@cloudflare/workers-types': 4.20250510.0 3649 + fsevents: 2.3.3 3650 + sharp: 0.33.5 3651 + transitivePeerDependencies: 3652 + - bufferutil 3653 + - utf-8-validate 3654 + 3655 + wrappy@1.0.2: {} 3656 + 3657 + ws@8.18.0: {} 3658 + 3659 + yallist@3.1.1: {} 3660 + 3661 + yocto-queue@0.1.0: {} 3662 + 3663 + youch@3.3.4: 3664 + dependencies: 3665 + cookie: 0.7.2 3666 + mustache: 4.2.0 3667 + stacktracey: 2.1.8 3668 + 3669 + zod-to-json-schema@3.24.5(zod@3.24.4): 3670 + dependencies: 3671 + zod: 3.24.4 3672 + 3673 + zod@3.22.3: {} 3674 + 3675 + zod@3.24.4: {}
+5 -2
public/style.css src/index.css
··· 3 3 padding: 0; 4 4 } 5 5 6 - body, form { 6 + body, 7 + form { 7 8 max-width: 400px; 8 9 margin: auto; 9 10 display: flex; ··· 12 13 margin-bottom: 2rem; 13 14 } 14 15 15 - #map { height: 180px; } 16 + #map { 17 + height: 180px; 18 + }
+1 -1
shared/client_metadata.ts
··· 1 - import type { OAuthClientMetadataInput } from "https://esm.sh/@atproto/oauth-types@0.2.6/dist/index.d.ts"; 1 + import type { OAuthClientMetadataInput } from "@atproto/oauth-types"; 2 2 3 3 export const getClientMetadata = (baseUrl: string) => ({ 4 4 client_id: baseUrl + "/client_metadata.json",
+27 -27
shared/run_lexicon.ts
··· 1 - import { lexiconToZod } from "https://esm.sh/lexicon-to-zod@1.0.2"; 2 - import { type BlobRef } from "https://esm.sh/@atproto/api@0.15.5"; 1 + // import { lexiconToZod } from "lexicon-to-zod"; 2 + import { type BlobRef } from "@atproto/api"; 3 3 4 - const lexicon = { 5 - lexicon: 1, 6 - id: "me.wilb.test.run", 7 - defs: { 8 - main: { 9 - type: "record", 10 - record: { 11 - type: "object", 12 - required: ["date_iso", "distance_meters"], 13 - properties: { 14 - distance_meters: { type: "integer" }, 15 - date_iso: { type: "string", format: "datetime" }, 16 - duration_seconds: { type: "number" }, 17 - note: { type: "string" }, 18 - createdAt: { type: "string", format: "datetime" }, 19 - gpx: { 20 - type: "blob", 21 - description: "GPX file of your run", 22 - }, 23 - }, 24 - }, 25 - }, 26 - }, 27 - }; 4 + // const lexicon = { 5 + // lexicon: 1, 6 + // id: "me.wilb.test.run", 7 + // defs: { 8 + // main: { 9 + // type: "record", 10 + // record: { 11 + // type: "object", 12 + // required: ["date_iso", "distance_meters"], 13 + // properties: { 14 + // distance_meters: { type: "integer" }, 15 + // date_iso: { type: "string", format: "datetime" }, 16 + // duration_seconds: { type: "number" }, 17 + // note: { type: "string" }, 18 + // createdAt: { type: "string", format: "datetime" }, 19 + // gpx: { 20 + // type: "blob", 21 + // description: "GPX file of your run", 22 + // }, 23 + // }, 24 + // }, 25 + // }, 26 + // }, 27 + // }; 28 28 29 29 export type Run = { 30 30 date_iso: string; ··· 35 35 gpx?: BlobRef; 36 36 }; 37 37 38 - export const runSchemaMap = lexiconToZod(lexicon); 38 + // export const runSchemaMap = lexiconToZod(lexicon);
+54
src/context.tsx
··· 1 + import { createContext, PropsWithChildren, useEffect, useState } from "react"; 2 + import { 3 + BrowserOAuthClient, 4 + OAuthSession, 5 + } from "@atproto/oauth-client-browser"; 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 + }); 18 + 19 + export const ATProtoContextProvider = ({ children }: PropsWithChildren) => { 20 + const [client] = useState<BrowserOAuthClient>(new BrowserOAuthClient({ 21 + clientMetadata: getClientMetadata(window.location.origin), 22 + handleResolver: "https://bsky.social/", 23 + })); 24 + const [result, setResult] = useState<undefined | { session: OAuthSession; state?: string | null }>(); 25 + const [agent, setAgent] = useState<Agent>(); 26 + 27 + useEffect(() => { 28 + if (client && !agent) { 29 + client.init().then(clientResult => setResult(clientResult)) 30 + } 31 + }, [client]); 32 + 33 + useEffect(() => { 34 + if (typeof result !== "undefined") { 35 + const { session, state } = result ?? {}; 36 + if (state != null) { 37 + console.log( 38 + `${session.sub} was successfully authenticated (state: ${state})`, 39 + ); 40 + } else { 41 + console.log(`${session.sub} was restored (last active session)`); 42 + } 43 + } 44 + if (result?.session) { 45 + setAgent(new Agent(result.session)); 46 + } 47 + }, [result]); 48 + 49 + return ( 50 + <ATProtoContext value={{ agent, session: result?.session, client }}> 51 + {children} 52 + </ATProtoContext> 53 + ) 54 + };
+15
src/main.tsx
··· 1 + import { createRoot } from "react-dom/client"; 2 + import { App } from "./components/App.tsx"; 3 + import { ATProtoContextProvider } from "./context.tsx"; 4 + import './index.css' 5 + 6 + const root = document.getElementById("root"); 7 + if (!root) { 8 + throw new Error("No root element found"); 9 + } 10 + 11 + createRoot(root).render( 12 + <ATProtoContextProvider> 13 + <App /> 14 + </ATProtoContextProvider> 15 + );
+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 + }
+19
tsconfig.json
··· 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 + }
+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 + }
+14
vite.config.ts
··· 1 + import { defineConfig } from "vite"; 2 + import react from "@vitejs/plugin-react"; 3 + 4 + import { cloudflare } from "@cloudflare/vite-plugin"; 5 + 6 + // https://vite.dev/config/ 7 + export default defineConfig({ 8 + plugins: [react(), cloudflare()], 9 + server: { 10 + allowedHosts: [ 11 + "currency-houston-arranged-scotia.trycloudflare.com", 12 + ], 13 + }, 14 + });
+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 + }